diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index e8303dd5a04e..310f92c11874 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,21 +23,17 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.6 (Latest release) + - 1.9.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.6 - 1.8.5 - 1.8.4 - 1.8.3 - 1.8.2 - 1.8.1 - 1.8.0 - - 1.7.4 - - 1.7.3 - - 1.7.2 - - 1.7.1 - - 1.7.0 - - pre-1.7.0 + - pre-1.8.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 29cd798da2ea..9fcb1595a27a 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,21 +23,17 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.6 (Latest release) + - 1.9.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.6 - 1.8.5 - 1.8.4 - 1.8.3 - 1.8.2 - 1.8.1 - 1.8.0 - - 1.7.4 - - 1.7.3 - - 1.7.2 - - 1.7.1 - - 1.7.0 - - pre-1.7.0 + - pre-1.8.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 871b59ef61f9..73d9fd11d31f 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,21 +23,17 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.8.6 (Latest release) + - 1.9.0 (Latest release) - master (default, unreleased bugfixes) - upcoming (Edge) + - 1.8.6 - 1.8.5 - 1.8.4 - 1.8.3 - 1.8.2 - 1.8.1 - 1.8.0 - - 1.7.4 - - 1.7.3 - - 1.7.2 - - 1.7.1 - - 1.7.0 - - pre-1.7.0 + - pre-1.8.0 validations: required: true - type: input diff --git a/CHANGELOG.md b/CHANGELOG.md index 939e09691d54..0999ae5f7ed2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Pokeemerald-Expansion Changelogs +## 1.9.x +- **[Version 1.9.0](docs/changelogs/1.9.x/1.9.0.md) - ✨ Feature Release** + ## 1.8.x - **[Version 1.8.6](docs/changelogs/1.8.x/1.8.6.md) - 🧹 Bugfix Release** - **[Version 1.8.5](docs/changelogs/1.8.x/1.8.5.md) - 🧹 Bugfix Release** diff --git a/Makefile b/Makefile index 3bf8bf456e78..055bc848b2eb 100644 --- a/Makefile +++ b/Makefile @@ -169,11 +169,12 @@ JSONPROC := tools/jsonproc/jsonproc$(EXE) PATCHELF := tools/patchelf/patchelf$(EXE) ROMTEST ?= $(shell { command -v mgba-rom-test || command -v tools/mgba/mgba-rom-test$(EXE); } 2>/dev/null) ROMTESTHYDRA := tools/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE) +TRAINERPROC := tools/trainerproc/trainerproc$(EXE) PERL := perl # Inclusive list. If you don't want a tool to be built, don't add it here. -TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc +TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc tools/trainerproc CHECKTOOLDIRS = tools/patchelf tools/mgba-rom-test-hydra TOOLBASE = $(TOOLDIRS:tools/%=%) TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE)) @@ -295,7 +296,7 @@ mostlyclean: tidynonmodern tidymodern tidycheck 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 - rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc + rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc $(DATA_SRC_SUBDIR)/map_group_count.h find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + rm -f $(AUTO_GEN_TARGETS) @$(MAKE) clean -C libagbsyscall @@ -343,6 +344,10 @@ $(CRY_SUBDIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif ; $(AIF) $< $@ $(CRY_SUBDIR)/%.bin: $(CRY_SUBDIR)/%.aif ; $(AIF) $< $@ --compress sound/%.bin: sound/%.aif ; $(AIF) $< $@ +COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/global.h | tail -n1) +ifeq ($(COMPETITIVE_PARTY_SYNTAX),1) +%.h: %.party tools ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | sed '/#[^p]/d' | $(TRAINERPROC) -o $@ -i $< - +endif ifeq ($(MODERN),0) $(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) @@ -362,6 +367,8 @@ $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet else $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast $(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init +# Annoyingly we can't turn this on just for src/data/trainers.h +$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret endif ifeq ($(DINFO),1) @@ -502,7 +509,12 @@ $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -p --silent -agbcc: all +# Uncomment the next line, and then comment the 4 lines after it to reenable agbcc. +#agbcc: all +agbcc: + @echo "'make agbcc' is deprecated as of pokeemerald-expansion 1.9 and will be removed in 1.10." + @echo "Search for 'agbcc: all' in Makefile to reenable agbcc." + @exit 1 modern: all diff --git a/README.md b/README.md index 7e447a87842c..3a87ac27f62c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ pokeemerald-expansion is a decomp hack base project based off pret's [pokeemeral If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect. You can phrase it as the following: ``` -Based off RHH's pokeemerald-expansion 1.8.6 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion 1.9.0 https://github.com/rh-hideout/pokeemerald-expansion/ ``` ## What features are included? @@ -141,6 +141,14 @@ Based off RHH's pokeemerald-expansion 1.8.6 https://github.com/rh-hideout/pokeem - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337 - [Saveblock Cleansing](https://github.com/ghoulslash/pokeemerald/tree/saveblock) by @ghoulslash + - [Followers & Expanded IDs](https://github.com/aarant/pokeemerald/tree/followers-expanded-id) by @aarant + - May be disabled. + - Includes Pokémon followers like in HGSS, including interactions. + - ***Expands the amount of possible object event IDs beyond 255.*** + - ***Includes an implementation of dynamic overworld palettes (DOWP).*** + - **Additional features**: + - *Pokémon overworld sprites up to Generation 8.* + - *Integration with our Pokémon Sprite Visualizer, allowing users to browse through the follower sprites alongside battle sprites.* - ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 367428eb5039..1b35991809e2 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -321,6 +321,19 @@ .4byte \jumpInstr .endm + .macro createdragondartsprite anim_battler:req, subpriority_offset:req, argv:vararg + .byte 0x34 + .if \anim_battler == ANIM_TARGET + .byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F) + .else + .byte (\subpriority_offset & 0x7F) + .endif + .byte (.Lsprite_\@_2 - .Lsprite_\@_1) / 2 +.Lsprite_\@_1: + .2byte \argv +.Lsprite_\@_2: + .endm + @ useful macros .macro jumpreteq value:req, ptr:req jumpargeq ARG_RET_ID, \value, \ptr diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 021dd12bcea9..12439efc4a0c 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -710,8 +710,9 @@ .byte 0x7c .endm - .macro setrain + .macro setfieldweather weather:req .byte 0x7d + .byte \weather .endm .macro setreflect @@ -833,11 +834,11 @@ .byte 0x94 .endm - .macro setsandstorm + .macro unused_95 .byte 0x95 .endm - .macro weatherdamage + .macro unused_96 .byte 0x96 .endm @@ -1006,7 +1007,7 @@ .4byte \jumpInstr .endm - .macro setsunny + .macro unused_bb .byte 0xbb .endm @@ -1081,7 +1082,7 @@ .byte 0xc7 .endm - .macro sethail + .macro unused_c8 .byte 0xc8 .endm @@ -1351,6 +1352,22 @@ .endm @ callnative macros + .macro savetarget + callnative BS_SaveTarget + .endm + + .macro restoretarget + callnative BS_RestoreTarget + .endm + + .macro saveattacker + callnative BS_SaveAttacker + .endm + + .macro restoreattacker + callnative BS_RestoreAttacker + .endm + .macro metalburstdamagecalculator failInstr:req callnative BS_CalcMetalBurstDmg .4byte \failInstr @@ -1411,10 +1428,6 @@ callnative BS_TryRevertWeatherForm .endm - .macro setsnow - callnative BS_SetSnow - .endm - .macro applysaltcure battler:req callnative BS_ApplySaltCure .byte \battler @@ -1547,10 +1560,6 @@ .4byte \failInstr .endm - .macro damagenontypes - callnative BS_DamageNonTypes - .endm - .macro trysetstatus1, ptr:req callnative BS_TrySetStatus1 .4byte \ptr @@ -1620,6 +1629,10 @@ callnative BS_TryUpdateRecoilTracker .endm + .macro tryupdateleaderscresttracker + callnative BS_TryUpdateLeadersCrestTracker + .endm + .macro trytidyup clear:req, jumpInstr:req callnative BS_TryTidyUp .byte \clear @@ -1645,6 +1658,18 @@ .4byte \failInstr .endm + .macro removeweather + callnative BS_RemoveWeather + .endm + + .macro applyterastallization + callnative BS_ApplyTerastallization + .endm + + .macro damagetoquartertargethp + callnative BS_DamageToQuarterTargetHP + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1767,14 +1792,6 @@ various \battler, VARIOUS_SWITCHIN_ABILITIES .endm - .macro savetarget - various BS_TARGET, VARIOUS_SAVE_TARGET - .endm - - .macro restoretarget - various BS_TARGET, VARIOUS_RESTORE_TARGET - .endm - .macro instanthpdrop battler:req various \battler, VARIOUS_INSTANT_HP_DROP .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 4817dd95a1a8..83338673cf17 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -776,6 +776,16 @@ trainerbattle TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT, \trainer, 0, \lose_text .endm + @ Starts a double battle with the player against two trainers + @ Takes two trainers and defeat text for each + .macro trainerbattle_two_trainers trainer_a:req, lose_text_a:req, trainer_b:req, lose_text_b:req + .byte 0x5c + .byte TRAINER_BATTLE_TWO_TRAINERS_NO_INTRO + .2byte \trainer_a + .4byte \lose_text_a + .2byte \trainer_b + .4byte \lose_text_b + .endm @ Starts a trainer battle using the battle information stored in RAM (usually by the scripts in trainer_battle.inc, which @ are run by trainerbattle), and blocks script execution until the battle finishes. @@ -987,7 +997,69 @@ @ Gives the player a Pokémon of the specified species and level, and allows to customize extra parameters. @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. .macro givemon species:req, level:req, item, ball, nature, abilityNum, gender, hpEv, atkEv, defEv, speedEv, spAtkEv, spDefEv, hpIv, atkIv, defIv, speedIv, spAtkIv, spDefIv, move1, move2, move3, move4, isShiny, ggMaxFactor, teraType - callnative ScrCmd_givemon + callnative ScrCmd_createmon + .byte 0 + .byte 6 @ PARTY_SIZE - assign to first empty slot + .set givemon_flags, 0 + .2byte \species + .2byte \level + .ifnb \item; .set givemon_flags, givemon_flags | (1 << 0); .endif + .ifnb \ball; .set givemon_flags, givemon_flags | (1 << 1); .endif + .ifnb \nature; .set givemon_flags, givemon_flags | (1 << 2); .endif + .ifnb \abilityNum; .set givemon_flags, givemon_flags | (1 << 3); .endif + .ifnb \gender; .set givemon_flags, givemon_flags | (1 << 4); .endif + .ifnb \hpEv; .set givemon_flags, givemon_flags | (1 << 5); .endif + .ifnb \atkEv; .set givemon_flags, givemon_flags | (1 << 6); .endif + .ifnb \defEv; .set givemon_flags, givemon_flags | (1 << 7); .endif + .ifnb \speedEv; .set givemon_flags, givemon_flags | (1 << 8); .endif + .ifnb \spAtkEv; .set givemon_flags, givemon_flags | (1 << 9); .endif + .ifnb \spDefEv; .set givemon_flags, givemon_flags | (1 << 10); .endif + .ifnb \hpIv; .set givemon_flags, givemon_flags | (1 << 11); .endif + .ifnb \atkIv; .set givemon_flags, givemon_flags | (1 << 12); .endif + .ifnb \defIv; .set givemon_flags, givemon_flags | (1 << 13); .endif + .ifnb \speedIv; .set givemon_flags, givemon_flags | (1 << 14); .endif + .ifnb \spAtkIv; .set givemon_flags, givemon_flags | (1 << 15); .endif + .ifnb \spDefIv; .set givemon_flags, givemon_flags | (1 << 16); .endif + .ifnb \move1; .set givemon_flags, givemon_flags | (1 << 17); .endif + .ifnb \move2; .set givemon_flags, givemon_flags | (1 << 18); .endif + .ifnb \move3; .set givemon_flags, givemon_flags | (1 << 19); .endif + .ifnb \move4; .set givemon_flags, givemon_flags | (1 << 20); .endif + .ifnb \isShiny; .set givemon_flags, givemon_flags | (1 << 21); .endif + .ifnb \ggMaxFactor; .set givemon_flags, givemon_flags | (1 << 22); .endif + .ifnb \teraType; .set givemon_flags, givemon_flags | (1 << 23); .endif + .4byte givemon_flags + .ifnb \item; .2byte \item; .endif + .ifnb \ball; .2byte \ball; .endif + .ifnb \nature; .2byte \nature; .endif + .ifnb \abilityNum; .2byte \abilityNum; .endif + .ifnb \gender; .2byte \gender; .endif + .ifnb \hpEv; .2byte \hpEv; .endif + .ifnb \atkEv; .2byte \atkEv; .endif + .ifnb \defEv; .2byte \defEv; .endif + .ifnb \speedEv; .2byte \speedEv; .endif + .ifnb \spAtkEv; .2byte \spAtkEv; .endif + .ifnb \spDefEv; .2byte \spDefEv; .endif + .ifnb \hpIv; .2byte \hpIv; .endif + .ifnb \atkIv; .2byte \atkIv; .endif + .ifnb \defIv; .2byte \defIv; .endif + .ifnb \speedIv; .2byte \speedIv; .endif + .ifnb \spAtkIv; .2byte \spAtkIv; .endif + .ifnb \spDefIv; .2byte \spDefIv; .endif + .ifnb \move1; .2byte \move1; .endif + .ifnb \move2; .2byte \move2; .endif + .ifnb \move3; .2byte \move3; .endif + .ifnb \move4; .2byte \move4; .endif + .ifnb \isShiny; .2byte \isShiny; .endif + .ifnb \ggMaxFactor; .2byte \ggMaxFactor; .endif + .ifnb \teraType; .2byte \teraType; .endif + .endm + + @ creates a mon for a given party and slot + @ otherwise + .macro createmon side:req, slot:req, species:req, level:req, item, ball, nature, abilityNum, gender, hpEv, atkEv, defEv, speedEv, spAtkEv, spDefEv, hpIv, atkIv, defIv, speedIv, spAtkIv, spDefIv, move1, move2, move3, move4, isShiny, ggMaxFactor, teraType + callnative ScrCmd_createmon + .byte \side @ 0 - player, 1 - opponent + .byte \slot @ 0-5 .set givemon_flags, 0 .2byte \species .2byte \level @@ -1393,7 +1465,7 @@ @ The specified id can be used to refer to the sprite again later with turnvobject. .macro createvobject graphicsId:req, id:req, x:req, y:req, elevation=3, direction=DIR_SOUTH .byte 0xaa - .byte \graphicsId + .2byte \graphicsId .byte \id .2byte \x .2byte \y @@ -1813,7 +1885,6 @@ _dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, \shouldSort, \initialSelected, \callbacks, NULL .endm - @ Supplementary .macro goto_if_unset flag:req, dest:req @@ -2024,6 +2095,11 @@ special CreateEnemyEventMon .endm + .macro setdynamicaifunc func:req + callnative ScriptSetDynamicAiFunc + .4byte \func + .endm + @ Set up a totem boost for the next battle. @ 'battler' is the position of the mon you want to gain a boost. see B_POSITION_xx in include/constants/battle.h. @ The rest of the arguments are the stat change values to each stat. @@ -2096,7 +2172,7 @@ setvar VAR_0x8002, \tryMultiple special TrySpecialOverworldEvo .endm - + .macro ai_vs_ai_battle trainer1:req, trainer2:req setflag B_FLAG_AI_VS_AI_BATTLE setvar VAR_0x8004, \trainer1 @@ -2172,3 +2248,76 @@ .2byte \status1 .2byte \slot .endm + + @ Sets VAR_RESULT to the Pokémon in \slot's Tera Type + .macro checkteratype slot:req + callnative CheckTeraType + .2byte \slot + .endm + + @ Sets the Pokémon in \slot's Tera Type + .macro setteratype type:req, slot:req + callnative SetTeraType + .byte \type + .2byte \slot + .endm + + @ Saves species and forms of Daycare Pokémon to specific vars. Saves the amount of Daycare mon to VAR_RESULT. + .macro getdaycaregfx varSpecies1:req varSpecies2:req varForm1:req varForm2:req + callnative GetDaycareGraphics + .2byte \varSpecies1 + .2byte \varSpecies2 + .2byte \varForm1 + .2byte \varForm2 + .endm + + @ Plays the cry of the first alive party member. + .macro playfirstmoncry + callnative PlayFirstMonCry + .endm + + @ Buffers the nickname of the first alive party member. + .macro bufferlivemonnickname out:req + callnative BufferFirstLiveMonNickname + .byte \out + .endm + + @ Executes Follower actions + .macro getfolloweraction + callnative GetFollowerAction + .endm + + @ Checks if Field move is being used by the current follower. + .macro isfollowerfieldmoveuser var:req + callnative IsFollowerFieldMoveUser + .2byte \var + .endm + + @ Saves the direction from where source object event would need to turn to to face the target into the specified var. + .macro getdirectiontoface var:req, sourceId:req, targetId:req + callnative GetDirectionToFaceScript + .2byte \var + .byte \sourceId + .byte \targetId + .endm + + @ set the wild double battle flag + @ can be used in conjunection with createmon to set up a wild battle with 2 player mons vs. 1 enemy mon + .macro setwilddoubleflag + callnative ScriptSetDoubleBattleFlag + .endm + + @ When OW_USE_FAKE_RTC and OW_FLAG_PAUSE_TIME is assigned, this macro will stop the flow of time. + .macro pausefakertc + callnative Script_PauseFakeRtc + .endm + + @ When OW_USE_FAKE_RTC and OW_FLAG_PAUSE_TIME is assigned, this macro will resume the flow of time. + .macro resumefakertc + callnative Script_ResumeFakeRtc + .endm + + @ When OW_USE_FAKE_RTC and OW_FLAG_PAUSE_TIME is assigned, this macro will resume the flow of time if paused, and stop the flow of time otherwise. + .macro togglefakertc + callnative Script_ToggleFakeRtc + .endm diff --git a/asm/macros/map.inc b/asm/macros/map.inc index eb9d205f4b03..74d2b5ff4214 100644 --- a/asm/macros/map.inc +++ b/asm/macros/map.inc @@ -22,9 +22,8 @@ @ Defines an object event template for map data, to be used by a normal object. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h .macro object_event index:req, gfx:req, x:req, y:req, elevation:req, movement_type:req, x_radius:req, y_radius:req, trainer_type:req, sight_radius_tree_etc:req, script:req, event_flag:req .byte \index - .byte \gfx + .2byte \gfx .byte OBJ_KIND_NORMAL - .space 1 @ Padding .2byte \x, \y .byte \elevation .byte \movement_type diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index b0bb1f35ee9f..7fb51ce22504 100644 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -165,4 +165,6 @@ 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 exit_pokeball, MOVEMENT_ACTION_EXIT_POKEBALL + create_movement_action enter_pokeball, MOVEMENT_ACTION_ENTER_POKEBALL create_movement_action step_end, MOVEMENT_ACTION_STEP_END diff --git a/charmap.txt b/charmap.txt index c26c07e78b9a..4c9f2e0497fa 100644 --- a/charmap.txt +++ b/charmap.txt @@ -453,6 +453,9 @@ FONT_NORMAL = FC 06 01 FONT_SHORT = FC 06 02 FONT_NARROW = FC 06 07 FONT_SMALL_NARROW = FC 06 08 +FONT_NARROWER = FC 06 0A +FONT_SMALL_NARROWER = FC 06 0B +FONT_SHORT_NARROW = FC 06 0C @ colors diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 45a957100e9c..f842b8c113da 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,4 +1,4 @@ -#include "config.h" +#include "config/general.h" #include "config/battle.h" #include "constants/battle.h" #include "constants/battle_anim.h" @@ -18,956 +18,6 @@ gMovesWithQuietBGM:: .2byte MOVE_SING, MOVE_PERISH_SONG, MOVE_GRASS_WHISTLE, 0xFFFF - .align 2 -gBattleAnims_Moves:: - .4byte Move_NONE - .4byte Move_POUND - .4byte Move_KARATE_CHOP - .4byte Move_DOUBLE_SLAP - .4byte Move_COMET_PUNCH - .4byte Move_MEGA_PUNCH - .4byte Move_PAY_DAY - .4byte Move_FIRE_PUNCH - .4byte Move_ICE_PUNCH - .4byte Move_THUNDER_PUNCH - .4byte Move_SCRATCH - .4byte Move_VICE_GRIP - .4byte Move_GUILLOTINE - .4byte Move_RAZOR_WIND - .4byte Move_SWORDS_DANCE - .4byte Move_CUT - .4byte Move_GUST - .4byte Move_WING_ATTACK - .4byte Move_WHIRLWIND - .4byte Move_FLY - .4byte Move_BIND - .4byte Move_SLAM - .4byte Move_VINE_WHIP - .4byte Move_STOMP - .4byte Move_DOUBLE_KICK - .4byte Move_MEGA_KICK - .4byte Move_JUMP_KICK - .4byte Move_ROLLING_KICK - .4byte Move_SAND_ATTACK - .4byte Move_HEADBUTT - .4byte Move_HORN_ATTACK - .4byte Move_FURY_ATTACK - .4byte Move_HORN_DRILL - .4byte Move_TACKLE - .4byte Move_BODY_SLAM - .4byte Move_WRAP - .4byte Move_TAKE_DOWN - .4byte Move_THRASH - .4byte Move_DOUBLE_EDGE - .4byte Move_TAIL_WHIP - .4byte Move_POISON_STING - .4byte Move_TWINEEDLE - .4byte Move_PIN_MISSILE - .4byte Move_LEER - .4byte Move_BITE - .4byte Move_GROWL - .4byte Move_ROAR - .4byte Move_SING - .4byte Move_SUPERSONIC - .4byte Move_SONIC_BOOM - .4byte Move_DISABLE - .4byte Move_ACID - .4byte Move_EMBER - .4byte Move_FLAMETHROWER - .4byte Move_MIST - .4byte Move_WATER_GUN - .4byte Move_HYDRO_PUMP - .4byte Move_SURF - .4byte Move_ICE_BEAM - .4byte Move_BLIZZARD - .4byte Move_PSYBEAM - .4byte Move_BUBBLE_BEAM - .4byte Move_AURORA_BEAM - .4byte Move_HYPER_BEAM - .4byte Move_PECK - .4byte Move_DRILL_PECK - .4byte Move_SUBMISSION - .4byte Move_LOW_KICK - .4byte Move_COUNTER - .4byte Move_SEISMIC_TOSS - .4byte Move_STRENGTH - .4byte Move_ABSORB - .4byte Move_MEGA_DRAIN - .4byte Move_LEECH_SEED - .4byte Move_GROWTH - .4byte Move_RAZOR_LEAF - .4byte Move_SOLAR_BEAM - .4byte Move_POISON_POWDER - .4byte Move_STUN_SPORE - .4byte Move_SLEEP_POWDER - .4byte Move_PETAL_DANCE - .4byte Move_STRING_SHOT - .4byte Move_DRAGON_RAGE - .4byte Move_FIRE_SPIN - .4byte Move_THUNDER_SHOCK - .4byte Move_THUNDERBOLT - .4byte Move_THUNDER_WAVE - .4byte Move_THUNDER - .4byte Move_ROCK_THROW - .4byte Move_EARTHQUAKE - .4byte Move_FISSURE - .4byte Move_DIG - .4byte Move_TOXIC - .4byte Move_CONFUSION - .4byte Move_PSYCHIC - .4byte Move_HYPNOSIS - .4byte Move_MEDITATE - .4byte Move_AGILITY - .4byte Move_QUICK_ATTACK - .4byte Move_RAGE - .4byte Move_TELEPORT - .4byte Move_NIGHT_SHADE - .4byte Move_MIMIC - .4byte Move_SCREECH - .4byte Move_DOUBLE_TEAM - .4byte Move_RECOVER - .4byte Move_HARDEN - .4byte Move_MINIMIZE - .4byte Move_SMOKESCREEN - .4byte Move_CONFUSE_RAY - .4byte Move_WITHDRAW - .4byte Move_DEFENSE_CURL - .4byte Move_BARRIER - .4byte Move_LIGHT_SCREEN - .4byte Move_HAZE - .4byte Move_REFLECT - .4byte Move_FOCUS_ENERGY - .4byte Move_BIDE - .4byte Move_METRONOME - .4byte Move_MIRROR_MOVE @ doesnt have an actual animation - .4byte Move_SELF_DESTRUCT - .4byte Move_EGG_BOMB - .4byte Move_LICK - .4byte Move_SMOG - .4byte Move_SLUDGE - .4byte Move_BONE_CLUB - .4byte Move_FIRE_BLAST - .4byte Move_WATERFALL - .4byte Move_CLAMP - .4byte Move_SWIFT - .4byte Move_SKULL_BASH - .4byte Move_SPIKE_CANNON - .4byte Move_CONSTRICT - .4byte Move_AMNESIA - .4byte Move_KINESIS - .4byte Move_SOFT_BOILED - .4byte Move_HIGH_JUMP_KICK - .4byte Move_GLARE - .4byte Move_DREAM_EATER - .4byte Move_POISON_GAS - .4byte Move_BARRAGE - .4byte Move_LEECH_LIFE - .4byte Move_LOVELY_KISS - .4byte Move_SKY_ATTACK - .4byte Move_TRANSFORM - .4byte Move_BUBBLE - .4byte Move_DIZZY_PUNCH - .4byte Move_SPORE - .4byte Move_FLASH - .4byte Move_PSYWAVE - .4byte Move_SPLASH - .4byte Move_ACID_ARMOR - .4byte Move_CRABHAMMER - .4byte Move_EXPLOSION - .4byte Move_FURY_SWIPES - .4byte Move_BONEMERANG - .4byte Move_REST - .4byte Move_ROCK_SLIDE - .4byte Move_HYPER_FANG - .4byte Move_SHARPEN - .4byte Move_CONVERSION - .4byte Move_TRI_ATTACK - .4byte Move_SUPER_FANG - .4byte Move_SLASH - .4byte Move_SUBSTITUTE - .4byte Move_STRUGGLE - .4byte Move_SKETCH - .4byte Move_TRIPLE_KICK - .4byte Move_THIEF - .4byte Move_SPIDER_WEB - .4byte Move_MIND_READER - .4byte Move_NIGHTMARE - .4byte Move_FLAME_WHEEL - .4byte Move_SNORE - .4byte Move_CURSE - .4byte Move_FLAIL - .4byte Move_CONVERSION_2 - .4byte Move_AEROBLAST - .4byte Move_COTTON_SPORE - .4byte Move_REVERSAL - .4byte Move_SPITE - .4byte Move_POWDER_SNOW - .4byte Move_PROTECT - .4byte Move_MACH_PUNCH - .4byte Move_SCARY_FACE - .4byte Move_FAINT_ATTACK - .4byte Move_SWEET_KISS - .4byte Move_BELLY_DRUM - .4byte Move_SLUDGE_BOMB - .4byte Move_MUD_SLAP - .4byte Move_OCTAZOOKA - .4byte Move_SPIKES - .4byte Move_ZAP_CANNON - .4byte Move_FORESIGHT - .4byte Move_DESTINY_BOND - .4byte Move_PERISH_SONG - .4byte Move_ICY_WIND - .4byte Move_DETECT - .4byte Move_BONE_RUSH - .4byte Move_LOCK_ON - .4byte Move_OUTRAGE - .4byte Move_SANDSTORM - .4byte Move_GIGA_DRAIN - .4byte Move_ENDURE - .4byte Move_CHARM - .4byte Move_ROLLOUT - .4byte Move_FALSE_SWIPE - .4byte Move_SWAGGER - .4byte Move_MILK_DRINK - .4byte Move_SPARK - .4byte Move_FURY_CUTTER - .4byte Move_STEEL_WING - .4byte Move_MEAN_LOOK - .4byte Move_ATTRACT - .4byte Move_SLEEP_TALK - .4byte Move_HEAL_BELL - .4byte Move_RETURN - .4byte Move_PRESENT - .4byte Move_FRUSTRATION - .4byte Move_SAFEGUARD - .4byte Move_PAIN_SPLIT - .4byte Move_SACRED_FIRE - .4byte Move_MAGNITUDE - .4byte Move_DYNAMIC_PUNCH - .4byte Move_MEGAHORN - .4byte Move_DRAGON_BREATH - .4byte Move_BATON_PASS - .4byte Move_ENCORE - .4byte Move_PURSUIT - .4byte Move_RAPID_SPIN - .4byte Move_SWEET_SCENT - .4byte Move_IRON_TAIL - .4byte Move_METAL_CLAW - .4byte Move_VITAL_THROW - .4byte Move_MORNING_SUN - .4byte Move_SYNTHESIS - .4byte Move_MOONLIGHT - .4byte Move_HIDDEN_POWER - .4byte Move_CROSS_CHOP - .4byte Move_TWISTER - .4byte Move_RAIN_DANCE - .4byte Move_SUNNY_DAY - .4byte Move_CRUNCH - .4byte Move_MIRROR_COAT - .4byte Move_PSYCH_UP - .4byte Move_EXTREME_SPEED - .4byte Move_ANCIENT_POWER - .4byte Move_SHADOW_BALL - .4byte Move_FUTURE_SIGHT - .4byte Move_ROCK_SMASH - .4byte Move_WHIRLPOOL - .4byte Move_BEAT_UP - .4byte Move_FAKE_OUT - .4byte Move_UPROAR - .4byte Move_STOCKPILE - .4byte Move_SPIT_UP - .4byte Move_SWALLOW - .4byte Move_HEAT_WAVE - .4byte Move_HAIL - .4byte Move_TORMENT - .4byte Move_FLATTER - .4byte Move_WILL_O_WISP - .4byte Move_MEMENTO - .4byte Move_FACADE - .4byte Move_FOCUS_PUNCH - .4byte Move_SMELLING_SALTS - .4byte Move_FOLLOW_ME - .4byte Move_NATURE_POWER - .4byte Move_CHARGE - .4byte Move_TAUNT - .4byte Move_HELPING_HAND - .4byte Move_TRICK - .4byte Move_ROLE_PLAY - .4byte Move_WISH - .4byte Move_ASSIST - .4byte Move_INGRAIN - .4byte Move_SUPERPOWER - .4byte Move_MAGIC_COAT - .4byte Move_RECYCLE - .4byte Move_REVENGE - .4byte Move_BRICK_BREAK - .4byte Move_YAWN - .4byte Move_KNOCK_OFF - .4byte Move_ENDEAVOR - .4byte Move_ERUPTION - .4byte Move_SKILL_SWAP - .4byte Move_IMPRISON - .4byte Move_REFRESH - .4byte Move_GRUDGE - .4byte Move_SNATCH - .4byte Move_SECRET_POWER - .4byte Move_DIVE - .4byte Move_ARM_THRUST - .4byte Move_CAMOUFLAGE - .4byte Move_TAIL_GLOW - .4byte Move_LUSTER_PURGE - .4byte Move_MIST_BALL - .4byte Move_FEATHER_DANCE - .4byte Move_TEETER_DANCE - .4byte Move_BLAZE_KICK - .4byte Move_MUD_SPORT - .4byte Move_ICE_BALL - .4byte Move_NEEDLE_ARM - .4byte Move_SLACK_OFF - .4byte Move_HYPER_VOICE - .4byte Move_POISON_FANG - .4byte Move_CRUSH_CLAW - .4byte Move_BLAST_BURN - .4byte Move_HYDRO_CANNON - .4byte Move_METEOR_MASH - .4byte Move_ASTONISH - .4byte Move_WEATHER_BALL - .4byte Move_AROMATHERAPY - .4byte Move_FAKE_TEARS - .4byte Move_AIR_CUTTER - .4byte Move_OVERHEAT - .4byte Move_ODOR_SLEUTH - .4byte Move_ROCK_TOMB - .4byte Move_SILVER_WIND - .4byte Move_METAL_SOUND - .4byte Move_GRASS_WHISTLE - .4byte Move_TICKLE - .4byte Move_COSMIC_POWER - .4byte Move_WATER_SPOUT - .4byte Move_SIGNAL_BEAM - .4byte Move_SHADOW_PUNCH - .4byte Move_EXTRASENSORY - .4byte Move_SKY_UPPERCUT - .4byte Move_SAND_TOMB - .4byte Move_SHEER_COLD - .4byte Move_MUDDY_WATER - .4byte Move_BULLET_SEED - .4byte Move_AERIAL_ACE - .4byte Move_ICICLE_SPEAR - .4byte Move_IRON_DEFENSE - .4byte Move_BLOCK - .4byte Move_HOWL - .4byte Move_DRAGON_CLAW - .4byte Move_FRENZY_PLANT - .4byte Move_BULK_UP - .4byte Move_BOUNCE - .4byte Move_MUD_SHOT - .4byte Move_POISON_TAIL - .4byte Move_COVET - .4byte Move_VOLT_TACKLE - .4byte Move_MAGICAL_LEAF - .4byte Move_WATER_SPORT - .4byte Move_CALM_MIND - .4byte Move_LEAF_BLADE - .4byte Move_DRAGON_DANCE - .4byte Move_ROCK_BLAST - .4byte Move_SHOCK_WAVE - .4byte Move_WATER_PULSE - .4byte Move_DOOM_DESIRE - .4byte Move_PSYCHO_BOOST -@@@@@@@@@@@@ GEN 4 @@@@@@@@@@@@ - .4byte Move_ROOST - .4byte Move_GRAVITY - .4byte Move_MIRACLE_EYE - .4byte Move_WAKE_UP_SLAP - .4byte Move_HAMMER_ARM - .4byte Move_GYRO_BALL - .4byte Move_HEALING_WISH - .4byte Move_BRINE - .4byte Move_NATURAL_GIFT - .4byte Move_FEINT - .4byte Move_PLUCK - .4byte Move_TAILWIND - .4byte Move_ACUPRESSURE - .4byte Move_METAL_BURST - .4byte Move_U_TURN - .4byte Move_CLOSE_COMBAT - .4byte Move_PAYBACK - .4byte Move_ASSURANCE - .4byte Move_EMBARGO - .4byte Move_FLING - .4byte Move_PSYCHO_SHIFT - .4byte Move_TRUMP_CARD - .4byte Move_HEAL_BLOCK - .4byte Move_WRING_OUT - .4byte Move_POWER_TRICK - .4byte Move_GASTRO_ACID - .4byte Move_LUCKY_CHANT - .4byte Move_ME_FIRST - .4byte Move_COPYCAT - .4byte Move_POWER_SWAP - .4byte Move_GUARD_SWAP - .4byte Move_PUNISHMENT - .4byte Move_LAST_RESORT - .4byte Move_WORRY_SEED - .4byte Move_SUCKER_PUNCH - .4byte Move_TOXIC_SPIKES - .4byte Move_HEART_SWAP - .4byte Move_AQUA_RING - .4byte Move_MAGNET_RISE - .4byte Move_FLARE_BLITZ - .4byte Move_FORCE_PALM - .4byte Move_AURA_SPHERE - .4byte Move_ROCK_POLISH - .4byte Move_POISON_JAB - .4byte Move_DARK_PULSE - .4byte Move_NIGHT_SLASH - .4byte Move_AQUA_TAIL - .4byte Move_SEED_BOMB - .4byte Move_AIR_SLASH - .4byte Move_XSCISSOR - .4byte Move_BUG_BUZZ - .4byte Move_DRAGON_PULSE - .4byte Move_DRAGON_RUSH - .4byte Move_POWER_GEM - .4byte Move_DRAIN_PUNCH - .4byte Move_VACUUM_WAVE - .4byte Move_FOCUS_BLAST - .4byte Move_ENERGY_BALL - .4byte Move_BRAVE_BIRD - .4byte Move_EARTH_POWER - .4byte Move_SWITCHEROO - .4byte Move_GIGA_IMPACT - .4byte Move_NASTY_PLOT - .4byte Move_BULLET_PUNCH - .4byte Move_AVALANCHE - .4byte Move_ICE_SHARD - .4byte Move_SHADOW_CLAW - .4byte Move_THUNDER_FANG - .4byte Move_ICE_FANG - .4byte Move_FIRE_FANG - .4byte Move_SHADOW_SNEAK - .4byte Move_MUD_BOMB - .4byte Move_PSYCHO_CUT - .4byte Move_ZEN_HEADBUTT - .4byte Move_MIRROR_SHOT - .4byte Move_FLASH_CANNON - .4byte Move_ROCK_CLIMB - .4byte Move_DEFOG - .4byte Move_TRICK_ROOM - .4byte Move_DRACO_METEOR - .4byte Move_DISCHARGE - .4byte Move_LAVA_PLUME - .4byte Move_LEAF_STORM - .4byte Move_POWER_WHIP - .4byte Move_ROCK_WRECKER - .4byte Move_CROSS_POISON - .4byte Move_GUNK_SHOT - .4byte Move_IRON_HEAD - .4byte Move_MAGNET_BOMB - .4byte Move_STONE_EDGE - .4byte Move_CAPTIVATE - .4byte Move_STEALTH_ROCK - .4byte Move_GRASS_KNOT - .4byte Move_CHATTER - .4byte Move_JUDGMENT - .4byte Move_BUG_BITE - .4byte Move_CHARGE_BEAM - .4byte Move_WOOD_HAMMER - .4byte Move_AQUA_JET - .4byte Move_ATTACK_ORDER - .4byte Move_DEFEND_ORDER - .4byte Move_HEAL_ORDER - .4byte Move_HEAD_SMASH - .4byte Move_DOUBLE_HIT - .4byte Move_ROAR_OF_TIME - .4byte Move_SPACIAL_REND - .4byte Move_LUNAR_DANCE - .4byte Move_CRUSH_GRIP - .4byte Move_MAGMA_STORM - .4byte Move_DARK_VOID - .4byte Move_SEED_FLARE - .4byte Move_OMINOUS_WIND - .4byte Move_SHADOW_FORCE -@@@@@@@@@@@@ GEN 5 @@@@@@@@@@@@ - .4byte Move_HONE_CLAWS - .4byte Move_WIDE_GUARD - .4byte Move_GUARD_SPLIT - .4byte Move_POWER_SPLIT - .4byte Move_WONDER_ROOM - .4byte Move_PSYSHOCK - .4byte Move_VENOSHOCK - .4byte Move_AUTOTOMIZE - .4byte Move_RAGE_POWDER - .4byte Move_TELEKINESIS - .4byte Move_MAGIC_ROOM - .4byte Move_SMACK_DOWN - .4byte Move_STORM_THROW - .4byte Move_FLAME_BURST - .4byte Move_SLUDGE_WAVE - .4byte Move_QUIVER_DANCE - .4byte Move_HEAVY_SLAM - .4byte Move_SYCHRONOISE - .4byte Move_ELECTRO_BALL - .4byte Move_SOAK - .4byte Move_FLAME_CHARGE - .4byte Move_COIL - .4byte Move_LOW_SWEEP - .4byte Move_ACID_SPRAY - .4byte Move_FOUL_PLAY - .4byte Move_SIMPLE_BEAM - .4byte Move_ENTRAINMENT - .4byte Move_AFTER_YOU - .4byte Move_ROUND - .4byte Move_ECHOED_VOICE - .4byte Move_CHIP_AWAY - .4byte Move_CLEAR_SMOG - .4byte Move_STORED_POWER - .4byte Move_QUICK_GUARD - .4byte Move_ALLY_SWITCH - .4byte Move_SCALD - .4byte Move_SHELL_SMASH - .4byte Move_HEAL_PULSE - .4byte Move_HEX - .4byte Move_SKY_DROP - .4byte Move_SHIFT_GEAR - .4byte Move_CIRCLE_THROW - .4byte Move_INCINERATE - .4byte Move_QUASH - .4byte Move_ACROBATICS - .4byte Move_REFLECT_TYPE - .4byte Move_RETALIATE - .4byte Move_FINAL_GAMBIT - .4byte Move_BESTOW - .4byte Move_INFERNO - .4byte Move_WATER_PLEDGE - .4byte Move_FIRE_PLEDGE - .4byte Move_GRASS_PLEDGE - .4byte Move_VOLT_SWITCH - .4byte Move_STRUGGLE_BUG - .4byte Move_BULLDOZE - .4byte Move_FROST_BREATH - .4byte Move_DRAGON_TAIL - .4byte Move_WORK_UP - .4byte Move_ELECTROWEB - .4byte Move_WILD_CHARGE - .4byte Move_DRILL_RUN - .4byte Move_DUAL_CHOP - .4byte Move_HEART_STAMP - .4byte Move_HORN_LEECH - .4byte Move_SACRED_SWORD - .4byte Move_RAZOR_SHELL - .4byte Move_HEAT_CRASH - .4byte Move_LEAF_TORNADO - .4byte Move_STEAMROLLER - .4byte Move_COTTON_GUARD - .4byte Move_NIGHT_DAZE - .4byte Move_PSYSTRIKE - .4byte Move_TAIL_SLAP - .4byte Move_HURRICANE - .4byte Move_HEAD_CHARGE - .4byte Move_GEAR_GRIND - .4byte Move_SEARING_SHOT - .4byte Move_TECHNO_BLAST - .4byte Move_RELIC_SONG - .4byte Move_SECRET_SWORD - .4byte Move_GLACIATE - .4byte Move_BOLT_STRIKE - .4byte Move_BLUE_FLARE - .4byte Move_FIERY_DANCE - .4byte Move_FREEZE_SHOCK - .4byte Move_ICE_BURN - .4byte Move_SNARL - .4byte Move_ICICLE_CRASH - .4byte Move_V_CREATE - .4byte Move_FUSION_FLARE - .4byte Move_FUSION_BOLT -@@@@@@@@@@@@ GEN 6 @@@@@@@@@@@@ - .4byte Move_FLYING_PRESS - .4byte Move_MAT_BLOCK - .4byte Move_BELCH - .4byte Move_ROTOTILLER - .4byte Move_STICKY_WEB - .4byte Move_FELL_STINGER - .4byte Move_PHANTOM_FORCE - .4byte Move_TRICK_OR_TREAT - .4byte Move_NOBLE_ROAR - .4byte Move_ION_DELUGE - .4byte Move_PARABOLIC_CHARGE - .4byte Move_FORESTS_CURSE - .4byte Move_PETAL_BLIZZARD - .4byte Move_FREEZE_DRY - .4byte Move_DISARMING_VOICE - .4byte Move_PARTING_SHOT - .4byte Move_TOPSY_TURVY - .4byte Move_DRAINING_KISS - .4byte Move_CRAFTY_SHIELD - .4byte Move_FLOWER_SHIELD - .4byte Move_GRASSY_TERRAIN - .4byte Move_MISTY_TERRAIN - .4byte Move_ELECTRIFY - .4byte Move_PLAY_ROUGH - .4byte Move_FAIRY_WIND - .4byte Move_MOONBLAST - .4byte Move_BOOMBURST - .4byte Move_FAIRY_LOCK - .4byte Move_KINGS_SHIELD - .4byte Move_PLAY_NICE - .4byte Move_CONFIDE - .4byte Move_DIAMOND_STORM - .4byte Move_STEAM_ERUPTION - .4byte Move_HYPERSPACE_HOLE - .4byte Move_WATER_SHURIKEN - .4byte Move_MYSTICAL_FIRE - .4byte Move_SPIKY_SHIELD - .4byte Move_AROMATIC_MIST - .4byte Move_EERIE_IMPULSE - .4byte Move_VENOM_DRENCH - .4byte Move_POWDER - .4byte Move_GEOMANCY - .4byte Move_MAGNETIC_FLUX - .4byte Move_HAPPY_HOUR - .4byte Move_ELECTRIC_TERRAIN - .4byte Move_DAZZLING_GLEAM - .4byte Move_CELEBRATE - .4byte Move_HOLD_HANDS - .4byte Move_BABY_DOLL_EYES - .4byte Move_NUZZLE - .4byte Move_HOLD_BACK - .4byte Move_INFESTATION - .4byte Move_POWER_UP_PUNCH - .4byte Move_OBLIVION_WING - .4byte Move_THOUSAND_ARROWS - .4byte Move_THOUSAND_WAVES - .4byte Move_LANDS_WRATH - .4byte Move_LIGHT_OF_RUIN - .4byte Move_ORIGIN_PULSE - .4byte Move_PRECIPICE_BLADES - .4byte Move_DRAGON_ASCENT - .4byte Move_HYPERSPACE_FURY -@@@@@@@@@@@@ GEN 7 @@@@@@@@@@@@ - .4byte Move_SHORE_UP - .4byte Move_FIRST_IMPRESSION - .4byte Move_BANEFUL_BUNKER - .4byte Move_SPIRIT_SHACKLE - .4byte Move_DARKEST_LARIAT - .4byte Move_SPARKLING_ARIA - .4byte Move_ICE_HAMMER - .4byte Move_FLORAL_HEALING - .4byte Move_HIGH_HORSEPOWER - .4byte Move_STRENGTH_SAP - .4byte Move_SOLAR_BLADE - .4byte Move_LEAFAGE - .4byte Move_SPOTLIGHT - .4byte Move_TOXIC_THREAD - .4byte Move_LASER_FOCUS - .4byte Move_GEAR_UP - .4byte Move_THROAT_CHOP - .4byte Move_POLLEN_PUFF - .4byte Move_ANCHOR_SHOT - .4byte Move_PSYCHIC_TERRAIN - .4byte Move_LUNGE - .4byte Move_FIRE_LASH - .4byte Move_POWER_TRIP - .4byte Move_BURN_UP - .4byte Move_SPEED_SWAP - .4byte Move_SMART_STRIKE - .4byte Move_PURIFY - .4byte Move_REVELATION_DANCE - .4byte Move_CORE_ENFORCER - .4byte Move_TROP_KICK - .4byte Move_INSTRUCT - .4byte Move_BEAK_BLAST - .4byte Move_CLANGING_SCALES - .4byte Move_DRAGON_HAMMER - .4byte Move_BRUTAL_SWING - .4byte Move_AURORA_VEIL - .4byte Move_SHELL_TRAP - .4byte Move_FLEUR_CANNON - .4byte Move_PSYCHIC_FANGS - .4byte Move_STOMPING_TANTRUM - .4byte Move_SHADOW_BONE - .4byte Move_ACCELEROCK - .4byte Move_LIQUIDATION - .4byte Move_PRISMATIC_LASER - .4byte Move_SPECTRAL_THIEF - .4byte Move_SUNSTEEL_STRIKE - .4byte Move_MOONGEIST_BEAM - .4byte Move_TEARFUL_LOOK - .4byte Move_ZING_ZAP - .4byte Move_NATURES_MADNESS - .4byte Move_MULTI_ATTACK - .4byte Move_MIND_BLOWN - .4byte Move_PLASMA_FISTS - .4byte Move_PHOTON_GEYSER - .4byte Move_ZIPPY_ZAP - .4byte Move_SPLISHY_SPLASH - .4byte Move_FLOATY_FALL - .4byte Move_PIKA_PAPOW - .4byte Move_BOUNCY_BUBBLE - .4byte Move_BUZZY_BUZZ - .4byte Move_SIZZLY_SLIDE - .4byte Move_GLITZY_GLOW - .4byte Move_BADDY_BAD - .4byte Move_SAPPY_SEED - .4byte Move_FREEZY_FROST - .4byte Move_SPARKLY_SWIRL - .4byte Move_VEEVEE_VOLLEY - .4byte Move_DOUBLE_IRON_BASH -@@@@@@@@@@@@ GEN 8 @@@@@@@@@@@@ - .4byte Move_DYNAMAX_CANNON - .4byte Move_SNIPE_SHOT - .4byte Move_JAW_LOCK - .4byte Move_STUFF_CHEEKS - .4byte Move_NO_RETREAT - .4byte Move_TAR_SHOT - .4byte Move_MAGIC_POWDER - .4byte Move_DRAGON_DARTS - .4byte Move_TEATIME - .4byte Move_OCTOLOCK - .4byte Move_BOLT_BEAK - .4byte Move_FISHIOUS_REND - .4byte Move_COURT_CHANGE - .4byte Move_CLANGOROUS_SOUL - .4byte Move_BODY_PRESS - .4byte Move_DECORATE - .4byte Move_DRUM_BEATING - .4byte Move_SNAP_TRAP - .4byte Move_PYRO_BALL - .4byte Move_BEHEMOTH_BLADE - .4byte Move_BEHEMOTH_BASH - .4byte Move_AURA_WHEEL - .4byte Move_BREAKING_SWIPE - .4byte Move_BRANCH_POKE - .4byte Move_OVERDRIVE - .4byte Move_APPLE_ACID - .4byte Move_GRAV_APPLE - .4byte Move_SPIRIT_BREAK - .4byte Move_STRANGE_STEAM - .4byte Move_LIFE_DEW - .4byte Move_OBSTRUCT - .4byte Move_FALSE_SURRENDER - .4byte Move_METEOR_ASSAULT - .4byte Move_ETERNA_BEAM - .4byte Move_STEEL_BEAM - .4byte Move_EXPANDING_FORCE - .4byte Move_STEEL_ROLLER - .4byte Move_SCALE_SHOT - .4byte Move_METEOR_BEAM - .4byte Move_SHELL_SIDE_ARM - .4byte Move_MISTY_EXPLOSION - .4byte Move_GRASSY_GLIDE - .4byte Move_RISING_VOLTAGE - .4byte Move_TERRAIN_PULSE - .4byte Move_SKITTER_SMACK - .4byte Move_BURNING_JEALOUSY - .4byte Move_LASH_OUT - .4byte Move_POLTERGEIST - .4byte Move_CORROSIVE_GAS - .4byte Move_COACHING - .4byte Move_FLIP_TURN - .4byte Move_TRIPLE_AXEL - .4byte Move_DUAL_WINGBEAT - .4byte Move_SCORCHING_SANDS - .4byte Move_JUNGLE_HEALING - .4byte Move_WICKED_BLOW - .4byte Move_SURGING_STRIKES - .4byte Move_THUNDER_CAGE - .4byte Move_DRAGON_ENERGY - .4byte Move_FREEZING_GLARE - .4byte Move_FIERY_WRATH - .4byte Move_THUNDEROUS_KICK - .4byte Move_GLACIAL_LANCE - .4byte Move_ASTRAL_BARRAGE - .4byte Move_EERIE_SPELL -@@@@ LA MOVES - .4byte Move_DIRE_CLAW - .4byte Move_PSYSHIELD_BASH - .4byte Move_POWER_SHIFT - .4byte Move_STONE_AXE - .4byte Move_SPRINGTIDE_STORM - .4byte Move_MYSTICAL_POWER - .4byte Move_RAGING_FURY - .4byte Move_WAVE_CRASH - .4byte Move_CHLOROBLAST - .4byte Move_MOUNTAIN_GALE - .4byte Move_VICTORY_DANCE - .4byte Move_HEADLONG_RUSH - .4byte Move_BARB_BARRAGE - .4byte Move_ESPER_WING - .4byte Move_BITTER_MALICE - .4byte Move_SHELTER - .4byte Move_TRIPLE_ARROWS - .4byte Move_INFERNAL_PARADE - .4byte Move_CEASELESS_EDGE - .4byte Move_BLEAKWIND_STORM - .4byte Move_WILDBOLT_STORM - .4byte Move_SANDSEAR_STORM - .4byte Move_LUNAR_BLESSING - .4byte Move_TAKE_HEART -@@@@@@@@@@@@ GEN 9 @@@@@@@@@@@@ - .4byte Move_TERA_BLAST - .4byte Move_SILK_TRAP - .4byte Move_AXE_KICK - .4byte Move_LAST_RESPECTS - .4byte Move_LUMINA_CRASH - .4byte Move_ORDER_UP - .4byte Move_JET_PUNCH - .4byte Move_SPICY_EXTRACT - .4byte Move_SPIN_OUT - .4byte Move_POPULATION_BOMB - .4byte Move_ICE_SPINNER - .4byte Move_GLAIVE_RUSH - .4byte Move_REVIVAL_BLESSING - .4byte Move_SALT_CURE - .4byte Move_TRIPLE_DIVE - .4byte Move_MORTAL_SPIN - .4byte Move_DOODLE - .4byte Move_FILLET_AWAY - .4byte Move_KOWTOW_CLEAVE - .4byte Move_FLOWER_TRICK - .4byte Move_TORCH_SONG - .4byte Move_AQUA_STEP - .4byte Move_RAGING_BULL - .4byte Move_MAKE_IT_RAIN - .4byte Move_RUINATION - .4byte Move_COLLISION_COURSE - .4byte Move_ELECTRO_DRIFT - .4byte Move_SHED_TAIL - .4byte Move_CHILLY_RECEPTION - .4byte Move_TIDY_UP - .4byte Move_SNOWSCAPE - .4byte Move_POUNCE - .4byte Move_TRAILBLAZE - .4byte Move_CHILLING_WATER - .4byte Move_HYPER_DRILL - .4byte Move_TWIN_BEAM - .4byte Move_RAGE_FIST - .4byte Move_ARMOR_CANNON - .4byte Move_BITTER_BLADE - .4byte Move_DOUBLE_SHOCK - .4byte Move_GIGATON_HAMMER - .4byte Move_COMEUPPANCE - .4byte Move_AQUA_CUTTER - .4byte Move_BLAZING_TORQUE - .4byte Move_WICKED_TORQUE - .4byte Move_NOXIOUS_TORQUE - .4byte Move_COMBAT_TORQUE - .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 - .4byte Move_ELECTRO_SHOT - .4byte Move_TERA_STARSTORM - .4byte Move_FICKLE_BEAM - .4byte Move_BURNING_BULWARK - .4byte Move_THUNDERCLAP - .4byte Move_MIGHTY_CLEAVE - .4byte Move_TACHYON_CUTTER - .4byte Move_HARD_PRESS - .4byte Move_DRAGON_CHEER - .4byte Move_ALLURING_VOICE - .4byte Move_TEMPER_FLARE - .4byte Move_SUPERCELL_SLAM - .4byte Move_PSYCHIC_NOISE - .4byte Move_UPPER_HAND - .4byte Move_MALIGNANT_CHAIN -@@@@ Z MOVES - .4byte Move_BREAKNECK_BLITZ - .4byte Move_ALL_OUT_PUMMELING - .4byte Move_SUPERSONIC_SKYSTRIKE - .4byte Move_ACID_DOWNPOUR - .4byte Move_TECTONIC_RAGE - .4byte Move_CONTINENTAL_CRUSH - .4byte Move_SAVAGE_SPIN_OUT - .4byte Move_NEVER_ENDING_NIGHTMARE - .4byte Move_CORKSCREW_CRASH - .4byte Move_INFERNO_OVERDRIVE - .4byte Move_HYDRO_VORTEX - .4byte Move_BLOOM_DOOM - .4byte Move_GIGAVOLT_HAVOC - .4byte Move_SHATTERED_PSYCHE - .4byte Move_SUBZERO_SLAMMER - .4byte Move_DEVASTATING_DRAKE - .4byte Move_BLACK_HOLE_ECLIPSE - .4byte Move_TWINKLE_TACKLE - .4byte Move_CATASTROPIKA - .4byte Move_10000000_VOLT_THUNDERBOLT - .4byte Move_STOKED_SPARKSURFER - .4byte Move_EXTREME_EVOBOOST - .4byte Move_PULVERIZING_PANCAKE - .4byte Move_GENESIS_SUPERNOVA - .4byte Move_SINISTER_ARROW_RAID - .4byte Move_MALICIOUS_MOONSAULT - .4byte Move_OCEANIC_OPERETTA - .4byte Move_SPLINTERED_STORMSHARDS - .4byte Move_LETS_SNUGGLE_FOREVER - .4byte Move_CLANGOROUS_SOULBLAZE - .4byte Move_GUARDIAN_OF_ALOLA - .4byte Move_SEARING_SUNRAZE_SMASH - .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 - .align 2 gBattleAnims_StatusConditions:: .4byte Status_Poison @ B_ANIM_STATUS_PSN @@ -1032,6 +82,10 @@ gBattleAnims_General:: .4byte General_WonderRoom @ B_ANIM_WONDER_ROOM .4byte General_MagicRoom @ B_ANIM_MAGIC_ROOM .4byte General_Tailwind @ B_ANIM_TAILLWIND + .4byte General_Fog @ B_ANIM_FOG_CONTINUES + .4byte General_TeraCharge @ B_ANIM_TERA_CHARGE + .4byte General_TeraActivate @ B_ANIM_TERA_ACTIVATE + .4byte General_SimpleHeal @ B_ANIM_SIMPLE_HEAL .align 2 gBattleAnims_Special:: @@ -1045,7 +99,7 @@ gBattleAnims_Special:: .4byte Special_CriticalCaptureBallThrow @ B_ANIM_CRITICAL_CAPTURE_THROW @@@@@@@@@@@@@@@@@@@@@@@ GEN 4 @@@@@@@@@@@@@@@@@@@@@@@ -Move_ROOST: +Move_ROOST:: loadspritegfx ANIM_TAG_WHITE_FEATHER loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATTACKER @@ -1070,7 +124,7 @@ Move_ROOST: waitforvisualfinish end -Move_GRAVITY: +Move_GRAVITY:: fadetobg BG_COSMIC waitbgfadein createvisualtask AnimTask_SetAnimTargetToAttackerOpposite, 1 @@ -1091,7 +145,7 @@ Move_GRAVITY: waitforvisualfinish end -Move_MIRACLE_EYE: +Move_MIRACLE_EYE:: loadspritegfx ANIM_TAG_TEAL_ALERT loadspritegfx ANIM_TAG_OPENING_EYE loadspritegfx ANIM_TAG_ROUND_WHITE_HALO @@ -1109,7 +163,7 @@ Move_MIRACLE_EYE: clearmonbg ANIM_DEF_PARTNER end -Move_WAKE_UP_SLAP: +Move_WAKE_UP_SLAP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SMELLINGSALT_EFFECT @@ -1129,7 +183,7 @@ Move_WAKE_UP_SLAP: blendoff end -Move_HAMMER_ARM: +Move_HAMMER_ARM:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_SLAM_HIT @@ -1153,7 +207,7 @@ Move_HAMMER_ARM: blendoff end -Move_GYRO_BALL: +Move_GYRO_BALL:: loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK @@ -1183,7 +237,7 @@ Move_GYRO_BALL: waitforvisualfinish end -Move_HEALING_WISH: +Move_HEALING_WISH:: loadspritegfx ANIM_TAG_GREEN_SPARKLE setalpha 0, 16 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -1203,7 +257,7 @@ Move_HEALING_WISH: waitforvisualfinish end -Move_BRINE: +Move_BRINE:: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -1217,7 +271,7 @@ Move_BRINE: blendoff end -Move_NATURAL_GIFT: +Move_NATURAL_GIFT:: loadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_HOLLOW_ORB monbg ANIM_ATTACKER @@ -1246,7 +300,7 @@ Move_NATURAL_GIFT: delay 1 end -Move_FEINT: +Move_FEINT:: loadspritegfx ANIM_TAG_FEINT createsprite gFeintSwipeSpriteTemplate, ANIM_ATTACKER, 10, -32, 0, 15 playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER @@ -1260,7 +314,7 @@ Move_FEINT: waitforvisualfinish end -Move_PLUCK: +Move_PLUCK:: loadspritegfx ANIM_TAG_SEED_BROWN loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER @@ -1286,7 +340,7 @@ Move_PLUCK: waitforvisualfinish end -Move_TAILWIND: +Move_TAILWIND:: loadspritegfx ANIM_TAG_FLYING_DIRT playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER call SetHighSpeedBg @@ -1349,7 +403,7 @@ General_Tailwind: delay 1 end -Move_ACUPRESSURE: +Move_ACUPRESSURE:: loadspritegfx ANIM_TAG_ACUPRESSURE loadspritegfx ANIM_TAG_SPARK_2 createsprite gAcupressureSpriteTemplate, ANIM_ATTACKER, 40, 0, -40, 40 @@ -1357,7 +411,7 @@ Move_ACUPRESSURE: call ElectricityEffect end -Move_METAL_BURST: +Move_METAL_BURST:: loadspritegfx ANIM_TAG_ECLIPSING_ORB loadspritegfx ANIM_TAG_RED_ORB loopsewithpan SE_M_TRI_ATTACK, -64, 18, 3 @@ -1380,7 +434,7 @@ Move_METAL_BURST: waitforvisualfinish end -Move_U_TURN: +Move_U_TURN:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -1409,7 +463,7 @@ UTurnVisible: createsprite gFlyBallAttackSpriteTemplate, ANIM_ATTACKER, 2, 20, FALSE goto UTurnContinue -Move_CLOSE_COMBAT: +Move_CLOSE_COMBAT:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET call SetHighSpeedBg @@ -1445,7 +499,7 @@ Move_CLOSE_COMBAT: delay 1 end -Move_PAYBACK: +Move_PAYBACK:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET fadetobg BG_DARK @@ -1477,7 +531,7 @@ Move_PAYBACK: waitbgfadein end -Move_ASSURANCE: +Move_ASSURANCE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE monbg ANIM_TARGET @@ -1496,7 +550,7 @@ Move_ASSURANCE: waitbgfadein end -Move_EMBARGO: +Move_EMBARGO:: loadspritegfx ANIM_TAG_RED_ORB monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -1518,7 +572,7 @@ EmbargoOrbs1: delay 12 return -Move_FLING: +Move_FLING:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_BLACK_BALL monbg ANIM_DEF_PARTNER @@ -1534,7 +588,7 @@ Move_FLING: blendoff end -Move_PSYCHO_SHIFT: +Move_PSYCHO_SHIFT:: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_HOLLOW_ORB loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @@ -1560,7 +614,7 @@ Move_PSYCHO_SHIFT: blendoff end -Move_TRUMP_CARD: +Move_TRUMP_CARD:: loadspritegfx ANIM_TAG_TRUMP_CARD loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_TRUMP_CARD_PARTICLES @@ -1604,7 +658,7 @@ Move_TRUMP_CARD: waitforvisualfinish end -Move_HEAL_BLOCK: +Move_HEAL_BLOCK:: loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_TARGET createsoundtask SoundTask_PlaySeChangingVolume, SE_M_ABSORB_2, SOUND_PAN_TARGET, 256, -16, 0, 2 @@ -1628,7 +682,7 @@ Move_HEAL_BLOCK: clearmonbg ANIM_TARGET end -Move_WRING_OUT: +Move_WRING_OUT:: loadspritegfx ANIM_TAG_WRING_OUT monbg ANIM_TARGET setalpha 12, 8 @@ -1649,7 +703,7 @@ Move_WRING_OUT: waitforvisualfinish end -Move_POWER_TRICK: +Move_POWER_TRICK:: loadspritegfx ANIM_TAG_POWER_TRICK loopsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET 0xa 0x3 createvisualtask AnimTask_UproarDistortion 0x2, 0x0 @@ -1661,7 +715,7 @@ Move_POWER_TRICK: waitforvisualfinish end -Move_GASTRO_ACID: +Move_GASTRO_ACID:: loadspritegfx ANIM_TAG_GREEN_POISON_BUBBLE monbg ANIM_DEF_PARTNER createsprite gGreenPoisonBubble, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0, FALSE @@ -1693,7 +747,7 @@ Move_GASTRO_ACID: clearmonbg ANIM_DEF_PARTNER end -Move_LUCKY_CHANT: +Move_LUCKY_CHANT:: loadspritegfx ANIM_TAG_GOLD_STARS monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -1720,10 +774,10 @@ Move_LUCKY_CHANT: unloadspritegfx ANIM_TAG_GOLD_STARS end -Move_ME_FIRST: +Move_ME_FIRST:: end -Move_COPYCAT: +Move_COPYCAT:: loadspritegfx ANIM_TAG_GRAY_ORB loadspritegfx ANIM_TAG_THIN_RING playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER @@ -1745,7 +799,7 @@ Move_COPYCAT: waitforvisualfinish end -Move_POWER_SWAP: +Move_POWER_SWAP:: loadspritegfx ANIM_TAG_COLORED_ORBS playsewithpan SE_M_DOUBLE_TEAM, 0 createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 0, 42, -32 @@ -1787,7 +841,7 @@ Move_POWER_SWAP: waitforvisualfinish end -Move_GUARD_SWAP: +Move_GUARD_SWAP:: loadspritegfx ANIM_TAG_COLORED_ORBS playsewithpan SE_M_DOUBLE_TEAM, 0 createsprite gPowerSwapGuardSwapSpriteTemplate, ANIM_TARGET, 3, 0, 0, 2, 0, 42, -32 @@ -1829,7 +883,7 @@ Move_GUARD_SWAP: waitforvisualfinish end -Move_PUNISHMENT: +Move_PUNISHMENT:: loadspritegfx ANIM_TAG_SCRATCH loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_TARGET @@ -1852,7 +906,7 @@ Move_PUNISHMENT: blendoff end -Move_LAST_RESORT: +Move_LAST_RESORT:: fadetobg BG_COSMIC waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 2, 4, 0, 128, 0, -1 @@ -1890,7 +944,7 @@ Move_LAST_RESORT: call UnsetHighSpeedBg end -Move_WORRY_SEED: +Move_WORRY_SEED:: loadspritegfx ANIM_TAG_WORRY_SEED loadspritegfx ANIM_TAG_SMALL_CLOUD playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER @@ -1904,7 +958,7 @@ Move_WORRY_SEED: waitforvisualfinish end -Move_SUCKER_PUNCH: +Move_SUCKER_PUNCH:: loadspritegfx ANIM_TAG_POISON_JAB loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 0, 20, 0, 0, 4 @@ -1917,7 +971,7 @@ Move_SUCKER_PUNCH: createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 1, 4 end -Move_TOXIC_SPIKES: +Move_TOXIC_SPIKES:: loadspritegfx ANIM_TAG_TOXIC_SPIKES loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_DEF_PARTNER @@ -1937,10 +991,10 @@ Move_TOXIC_SPIKES: clearmonbg ANIM_DEF_PARTNER end -Move_HEART_SWAP: +Move_HEART_SWAP:: end -Move_AQUA_RING: +Move_AQUA_RING:: General_AquaRingHeal: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SMALL_BUBBLES @@ -1989,7 +1043,7 @@ General_AquaRingHeal: blendoff end -Move_MAGNET_RISE: +Move_MAGNET_RISE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 @@ -2026,7 +1080,7 @@ Move_MAGNET_RISE: waitforvisualfinish end -Move_FLARE_BLITZ: +Move_FLARE_BLITZ:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER @@ -2103,7 +1157,7 @@ Move_FLARE_BLITZ: waitbgfadein end -Move_FORCE_PALM: +Move_FORCE_PALM:: loadspritegfx ANIM_TAG_SHADOW_BALL loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT @@ -2121,7 +1175,7 @@ Move_FORCE_PALM: blendoff end -Move_AURA_SPHERE: +Move_AURA_SPHERE:: loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATK_PARTNER @@ -2146,7 +1200,7 @@ SetAuraSphereBG: fadetobg BG_AURA_SPHERE goto SetHighSpeedBgFade -Move_ROCK_POLISH: +Move_ROCK_POLISH:: loadspritegfx ANIM_TAG_WHITE_STREAK loadspritegfx ANIM_TAG_SPARKLE_3 setalpha 12, 8 @@ -2213,7 +1267,7 @@ Move_ROCK_POLISH: blendoff end -Move_POISON_JAB: +Move_POISON_JAB:: loadspritegfx ANIM_TAG_PURPLE_JAB loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE @@ -2267,7 +1321,7 @@ Move_POISON_JAB: blendoff end -Move_DARK_PULSE: +Move_DARK_PULSE:: loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_TARGET fadetobg BG_DARK @@ -2295,7 +1349,7 @@ Move_DARK_PULSE: waitbgfadein end -Move_NIGHT_SLASH: +Move_NIGHT_SLASH:: loadspritegfx ANIM_TAG_SLASH createvisualtask AnimTask_BlendNightSlash, 2, ANIM_TARGET, 2, 0, 8, 1 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 3, 0, 12, RGB_BLACK @@ -2315,7 +1369,7 @@ Move_NIGHT_SLASH: waitforvisualfinish end -Move_AQUA_TAIL: +Move_AQUA_TAIL:: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_ICE_CRYSTALS @@ -2369,7 +1423,7 @@ Move_AQUA_TAIL: blendoff end -Move_SEED_BOMB: +Move_SEED_BOMB:: loadspritegfx ANIM_TAG_SEED loadspritegfx ANIM_TAG_EXPLOSION createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 @@ -2418,7 +1472,7 @@ Move_SEED_BOMB: waitforvisualfinish end -Move_AIR_SLASH: +Move_AIR_SLASH:: loadspritegfx ANIM_TAG_SLASH call SetSkyBg createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 @@ -2431,7 +1485,7 @@ Move_AIR_SLASH: call UnsetSkyBg end -Move_XSCISSOR: +Move_X_SCISSOR:: loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET setalpha 12, 8 @@ -2449,7 +1503,7 @@ Move_XSCISSOR: blendoff end -Move_BUG_BUZZ: +Move_BUG_BUZZ:: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_DEF_PARTNER @@ -2476,7 +1530,7 @@ Move_BUG_BUZZ: call UnsetBugBg end -Move_DRAGON_PULSE: +Move_DRAGON_PULSE:: loadspritegfx ANIM_TAG_DRAGON_PULSE monbg ANIM_TARGET setalpha 12, 8 @@ -2509,7 +1563,7 @@ DragonPulseParticle: delay 4 return -Move_DRAGON_RUSH: +Move_DRAGON_RUSH:: loadspritegfx ANIM_TAG_SLAM_HIT_2 loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS @@ -2538,7 +1592,7 @@ Move_DRAGON_RUSH: blendoff end -Move_POWER_GEM: @ Copy of Hidden Power with background blackened +Move_POWER_GEM:: @ Copy of Hidden Power with background blackened loadspritegfx ANIM_TAG_POWER_GEM createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 1, 0, 7, RGB_BLACK waitforvisualfinish @@ -2572,7 +1626,7 @@ Move_POWER_GEM: @ Copy of Hidden Power with background blackened waitforvisualfinish end -Move_DRAIN_PUNCH: +Move_DRAIN_PUNCH:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_BLUE_STAR @@ -2593,7 +1647,7 @@ Move_DRAIN_PUNCH: blendoff end -Move_VACUUM_WAVE: +Move_VACUUM_WAVE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_THIN_RING @@ -2609,7 +1663,7 @@ Move_VACUUM_WAVE: blendoff end -Move_FOCUS_BLAST: +Move_FOCUS_BLAST:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK @@ -2633,7 +1687,7 @@ SetFocusBlastBG: fadetobg BG_FOCUS_BLAST goto SetHighSpeedBgFade -Move_ENERGY_BALL: +Move_ENERGY_BALL:: loadspritegfx ANIM_TAG_ENERGY_BALL monbg ANIM_TARGET setalpha 12, 8 @@ -2651,7 +1705,7 @@ Move_ENERGY_BALL: blendoff end -Move_BRAVE_BIRD: +Move_BRAVE_BIRD:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_BIRD call SetSkyBg @@ -2674,7 +1728,7 @@ Move_BRAVE_BIRD: call UnsetSkyBg end -Move_EARTH_POWER: +Move_EARTH_POWER:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_FIRE_PLUME createvisualtask AnimTask_HorizontalShake, 3, ANIM_DEF_PARTNER, 10, 50 @@ -2703,7 +1757,7 @@ Move_EARTH_POWER: waitforvisualfinish end -Move_SWITCHEROO: +Move_SWITCHEROO:: fadetobg BG_DARK waitbgfadein loadspritegfx ANIM_TAG_ITEM_BAG @@ -2735,7 +1789,7 @@ Move_SWITCHEROO: waitbgfadein end -Move_GIGA_IMPACT: +Move_GIGA_IMPACT:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -2779,7 +1833,7 @@ GigaImpactContinuity: waitforvisualfinish end -Move_NASTY_PLOT: +Move_NASTY_PLOT:: loadspritegfx ANIM_TAG_AMNESIA fadetobg BG_DARK waitbgfadeout @@ -2794,7 +1848,7 @@ Move_NASTY_PLOT: call UnsetPsychicBg end -Move_BULLET_PUNCH: +Move_BULLET_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET @@ -2848,7 +1902,7 @@ Move_BULLET_PUNCH: blendoff end -Move_AVALANCHE: +Move_AVALANCHE:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_ICE_CHUNK monbg ANIM_DEF_PARTNER @@ -2899,7 +1953,7 @@ SnowSlide1: delay 2 return -Move_ICE_SHARD: +Move_ICE_SHARD:: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 @@ -2935,7 +1989,7 @@ Move_ICE_SHARD: blendoff end -Move_SHADOW_CLAW: +Move_SHADOW_CLAW:: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_TORN_METAL @@ -2961,7 +2015,7 @@ Move_SHADOW_CLAW: clearmonbg ANIM_TARGET end -Move_THUNDER_FANG: +Move_THUNDER_FANG:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_LIGHTNING loadspritegfx ANIM_TAG_SHARP_TEETH @@ -2995,7 +2049,7 @@ Move_THUNDER_FANG: delay 1 end -Move_ICE_FANG: +Move_ICE_FANG:: monbg ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS @@ -3032,7 +2086,7 @@ Move_ICE_FANG: delay 1 end -Move_FIRE_FANG: +Move_FIRE_FANG:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT @@ -3061,7 +2115,7 @@ Move_FIRE_FANG: delay 1 end -Move_SHADOW_SNEAK: +Move_SHADOW_SNEAK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour @@ -3099,7 +2153,7 @@ ShadowSneakMovement: delay 0x4 return -Move_MUD_BOMB: +Move_MUD_BOMB:: loadspritegfx ANIM_TAG_MUD_SAND playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gMudBombToss, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 @@ -3150,7 +2204,7 @@ Move_MUD_BOMB: waitforvisualfinish end -Move_PSYCHO_CUT: +Move_PSYCHO_CUT:: loadspritegfx ANIM_TAG_SPIRAL loadspritegfx ANIM_TAG_PSYCHO_CUT loadspritegfx ANIM_TAG_CROSS_IMPACT @@ -3178,7 +2232,7 @@ Move_PSYCHO_CUT: waitforvisualfinish end -Move_ZEN_HEADBUTT: +Move_ZEN_HEADBUTT:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_ATTACKER @@ -3210,7 +2264,7 @@ Move_ZEN_HEADBUTT: delay 1 end -Move_MIRROR_SHOT: +Move_MIRROR_SHOT:: loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK waitforvisualfinish @@ -3244,7 +2298,7 @@ Move_MIRROR_SHOT: blendoff end -Move_FLASH_CANNON: +Move_FLASH_CANNON:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRIC_ORBS @@ -3281,7 +2335,7 @@ Move_FLASH_CANNON: clearmonbg ANIM_TARGET end -Move_ROCK_CLIMB: +Move_ROCK_CLIMB:: delay 8 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 3 waitforvisualfinish @@ -3316,7 +2370,7 @@ Move_ROCK_CLIMB: blendoff end -Move_DEFOG: +Move_DEFOG:: loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 @@ -3351,7 +2405,7 @@ InitRoomAnimation: return @ Credits to Skeli -Move_DRACO_METEOR: +Move_DRACO_METEOR:: loadspritegfx ANIM_TAG_ROCKS @Rocks loadspritegfx ANIM_TAG_FAIRY_LOCK_CHAINS @Gray Colour loadspritegfx ANIM_TAG_WATER_GUN @Sparkles Trail @@ -3436,7 +2490,7 @@ DracoMeteor4: createsprite gDracoMeteorTailSpriteTemplate 0x83, 5, 0xffb0, 0xffc0, 0xFFF8, 0x20, 0x19 return -Move_DISCHARGE: +Move_DISCHARGE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 @@ -3541,7 +2595,7 @@ DischargeElectrify: createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1, ANIM_ATK_PARTNER return -Move_LAVA_PLUME: +Move_LAVA_PLUME:: loadspritegfx ANIM_TAG_FIRE_PLUME loopsewithpan 152, SOUND_PAN_ATTACKER, 9, 2 createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED @@ -3561,7 +2615,7 @@ Move_LAVA_PLUME: waitforvisualfinish end -Move_LEAF_STORM: +Move_LEAF_STORM:: loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_LEAF @@ -3673,7 +2727,7 @@ Move_LEAF_STORM: clearmonbg ANIM_DEF_PARTNER end -Move_POWER_WHIP: +Move_POWER_WHIP:: loadspritegfx ANIM_TAG_WHIP_HIT playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 10 @@ -3687,7 +2741,7 @@ Move_POWER_WHIP: waitbgfadein end -Move_ROCK_WRECKER: +Move_ROCK_WRECKER:: jumpargeq 7, 1, RockWrecker_1 fadetobg BG_ROCK_WRECKER waitbgfadeout @@ -3733,7 +2787,7 @@ RockWrecker_2: call UnsetPsychicBg end -Move_CROSS_POISON: +Move_CROSS_POISON:: loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_CROSS_IMPACT monbg ANIM_TARGET @@ -3749,7 +2803,7 @@ Move_CROSS_POISON: blendoff end -Move_GUNK_SHOT: +Move_GUNK_SHOT:: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_WATER_IMPACT @@ -3806,7 +2860,7 @@ SetGunkShotBG: goto SetHighSpeedBgFade -Move_IRON_HEAD: +Move_IRON_HEAD:: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 @@ -3828,7 +2882,7 @@ Move_IRON_HEAD: waitforvisualfinish end -Move_MAGNET_BOMB: +Move_MAGNET_BOMB:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 @@ -3893,7 +2947,7 @@ Move_MAGNET_BOMB: waitforvisualfinish end -Move_STONE_EDGE: +Move_STONE_EDGE:: loadspritegfx ANIM_TAG_STONE_EDGE loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_ROCK_THROW SOUND_PAN_TARGET @@ -3952,7 +3006,7 @@ Move_STONE_EDGE: blendoff end -Move_CAPTIVATE: +Move_CAPTIVATE:: loadspritegfx ANIM_TAG_MAGENTA_HEART loadspritegfx ANIM_TAG_SPARKLE_2 createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_DEF_PARTNER, 0, 2, 0 @@ -3968,7 +3022,7 @@ Move_CAPTIVATE: waitforvisualfinish end -Move_STEALTH_ROCK: +Move_STEALTH_ROCK:: loadspritegfx ANIM_TAG_STEALTH_ROCK monbg ANIM_DEF_PARTNER playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER @@ -3985,7 +3039,7 @@ Move_STEALTH_ROCK: clearmonbg ANIM_DEF_PARTNER end -Move_GRASS_KNOT: +Move_GRASS_KNOT:: loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, 2, 5, 0, 20, 0, 0, 4 @@ -3998,7 +3052,7 @@ Move_GRASS_KNOT: createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 3, 0, 1, 4 end -Move_CHATTER: +Move_CHATTER:: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_MUSIC_NOTES @@ -4038,7 +3092,7 @@ Move_CHATTER: clearmonbg ANIM_DEF_PARTNER end -Move_JUDGMENT: +Move_JUDGMENT:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_GREEN_SPIKE @@ -4134,7 +3188,7 @@ JudgmentInwardSpikes2: createsprite gJudgmentGrayInwardOrbsTemplate, ANIM_TARGET, 2, 1, 0, 0xFFDA, 0xFF94, 16 @between up and upper left return -Move_BUG_BITE: +Move_BUG_BITE:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -4175,7 +3229,7 @@ Move_BUG_BITE: blendoff end -Move_CHARGE_BEAM: +Move_CHARGE_BEAM:: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY @@ -4227,7 +3281,7 @@ SparkBeam: delay 1 return -Move_WOOD_HAMMER: +Move_WOOD_HAMMER:: loadspritegfx ANIM_TAG_WOOD_HAMMER loadspritegfx ANIM_TAG_WOOD_HAMMER_HAMMER loadspritegfx ANIM_TAG_IMPACT @@ -4256,7 +3310,7 @@ WoodHammerImpact: createsprite gWoodHammerSmallSpriteTemplate, ANIM_TARGET, 2, -5, 0, -20, -24, 20, 2 return -Move_AQUA_JET: +Move_AQUA_JET:: loadspritegfx ANIM_TAG_SPARKLE_6 loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_SPLASH @@ -4289,7 +3343,7 @@ Move_AQUA_JET: blendoff end -Move_ATTACK_ORDER: +Move_ATTACK_ORDER:: loadspritegfx ANIM_TAG_ATTACK_ORDER loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS @@ -4335,7 +3389,7 @@ Move_ATTACK_ORDER: blendoff end -Move_DEFEND_ORDER: +Move_DEFEND_ORDER:: loadspritegfx ANIM_TAG_ATTACK_ORDER loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS @@ -4372,7 +3426,7 @@ Move_DEFEND_ORDER: waitforvisualfinish end -Move_HEAL_ORDER: +Move_HEAL_ORDER:: loadspritegfx ANIM_TAG_ATTACK_ORDER loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS @@ -4409,7 +3463,7 @@ Move_HEAL_ORDER: waitforvisualfinish end -Move_HEAD_SMASH: +Move_HEAD_SMASH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS createvisualtask AnimTask_SkullBashPosition, 2, 0 @@ -4431,7 +3485,7 @@ Move_HEAD_SMASH: waitbgfadein end -Move_DOUBLE_HIT: +Move_DOUBLE_HIT:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -4453,7 +3507,7 @@ Move_DOUBLE_HIT: blendoff end -Move_ROAR_OF_TIME: +Move_ROAR_OF_TIME:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_WATER_GUN @@ -4494,7 +3548,7 @@ Move_ROAR_OF_TIME: waitforvisualfinish end -Move_SPACIAL_REND: +Move_SPACIAL_REND:: loadspritegfx ANIM_TAG_PUNISHMENT_BLADES loadspritegfx ANIM_TAG_PINK_HEART_2 @ANIM_TAG_BERRY_EATEN monbg ANIM_ATK_PARTNER @@ -4528,7 +3582,7 @@ Move_SPACIAL_REND: blendoff end -Move_LUNAR_DANCE: +Move_LUNAR_DANCE:: loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_HOLLOW_ORB @@ -4569,7 +3623,7 @@ Move_LUNAR_DANCE: delay 1 end -Move_CRUSH_GRIP: +Move_CRUSH_GRIP:: loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_ACUPRESSURE loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE @@ -4594,7 +3648,7 @@ Move_CRUSH_GRIP: blendoff end -Move_MAGMA_STORM: +Move_MAGMA_STORM:: loadspritegfx ANIM_TAG_SMALL_EMBER fadetobg BG_MAGMA_STORM @Add new bg waitbgfadeout @@ -4619,7 +3673,7 @@ Move_MAGMA_STORM: blendoff end -Move_DARK_VOID: +Move_DARK_VOID:: loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @Black Colour loadspritegfx ANIM_TAG_SPARKLE_2 @Healing Stars @@ -4646,7 +3700,7 @@ Move_DARK_VOID: visible ANIM_DEF_PARTNER end -Move_SEED_FLARE: +Move_SEED_FLARE:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge animation loadspritegfx ANIM_TAG_LEAF @green color loadspritegfx ANIM_TAG_RAZOR_LEAF @green color 2 @@ -4731,7 +3785,7 @@ Move_SEED_FLARE: blendoff end -Move_OMINOUS_WIND: +Move_OMINOUS_WIND:: loadspritegfx ANIM_TAG_SPARKLE_6 panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET 2, 0 playsewithpan 228, 0 @@ -4790,7 +3844,7 @@ OminousWindHit: waitbgfadein end -Move_SHADOW_FORCE: +Move_SHADOW_FORCE:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim ShadowForcePrep ShadowForceAttack @@ -4844,7 +3898,7 @@ ShadowForceBg: return @@@@@@@@@@@@@@@@@@@@@@@ GEN 5 @@@@@@@@@@@@@@@@@@@@@@@ -Move_HONE_CLAWS: +Move_HONE_CLAWS:: loadspritegfx ANIM_TAG_SWIPE call HoneClawsAnim createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SWIPE, 0, 6, 6, RGB_BLACK @@ -4865,7 +3919,7 @@ HoneClawsAnim: delay 10 return -Move_WIDE_GUARD: +Move_WIDE_GUARD:: loadspritegfx ANIM_TAG_ICE_SPIKES @motion from icy wind loadspritegfx ANIM_TAG_PINK_PETAL @pink color loadspritegfx ANIM_TAG_SMALL_EMBER @yellow color @@ -4976,7 +4030,7 @@ General_WonderRoom: blendoff end -Move_PSYSHOCK: +Move_PSYSHOCK:: loadspritegfx ANIM_TAG_RED_ORB_2 loadspritegfx ANIM_TAG_POISON_JAB loadspritegfx ANIM_TAG_GRAY_SMOKE @@ -5053,7 +4107,7 @@ PsyshockConverge: delay 2 return -Move_VENOSHOCK: +Move_VENOSHOCK:: loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_TOXIC_BUBBLE createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, -24, 16, 1, 1 @@ -5081,7 +4135,7 @@ Move_VENOSHOCK: delay 15 end -Move_AUTOTOMIZE: +Move_AUTOTOMIZE:: loadspritegfx ANIM_TAG_METAL_BITS @Metal Bits setalpha 12, 8 monbg ANIM_ATK_PARTNER @@ -5171,7 +4225,7 @@ Move_SMACK_DOWN:: createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3 goto SeismicTossWeak -Move_STORM_THROW: +Move_STORM_THROW:: call StormThorwAnim call StormThorwAnim call StormThorwAnim @@ -5194,7 +4248,7 @@ StormThorwAnim: delay 8 return -Move_FLAME_BURST: +Move_FLAME_BURST:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_EXPLOSION playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER @@ -5227,13 +4281,13 @@ FlameBurstSpread: return -Move_SLUDGE_WAVE: +Move_SLUDGE_WAVE:: panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SLUDGE_WAVE waitforvisualfinish end -Move_QUIVER_DANCE: +Move_QUIVER_DANCE:: loadspritegfx ANIM_TAG_HOLLOW_ORB monbg ANIM_ATTACKER call SetBugBg @@ -5256,7 +4310,7 @@ Move_QUIVER_DANCE: call UnsetBugBg end -Move_HEAVY_SLAM: +Move_HEAVY_SLAM:: loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 @@ -5286,7 +4340,7 @@ Move_HEAVY_SLAM: blendoff end -Move_SYCHRONOISE: +Move_SYNCHRONOISE:: loadspritegfx ANIM_TAG_THIN_RING @hypervoice ring loadspritegfx ANIM_TAG_SPARK_2 @yellow color loadspritegfx ANIM_TAG_WATER_ORB @blue color @@ -5325,7 +4379,7 @@ Move_SYCHRONOISE: clearmonbg ANIM_DEF_PARTNER end -Move_ELECTRO_BALL: +Move_ELECTRO_BALL:: loadspritegfx ANIM_TAG_SPARK_2 @yelow loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge loadspritegfx ANIM_TAG_FLASH_CANNON_BALL @ball @@ -5352,7 +4406,7 @@ Move_ELECTRO_BALL: blendoff end -Move_SOAK: +Move_SOAK:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_TARGET @@ -5387,7 +4441,7 @@ Move_SOAK: blendoff end -Move_FLAME_CHARGE: +Move_FLAME_CHARGE:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -5420,7 +4474,7 @@ FlameChargeSwirl: createsprite gFlameChargeEmberTemplate, ANIM_ATTACKER, 2, 0x0, 0xffe8, 0x8, 0x8c return -Move_COIL: +Move_COIL:: loadspritegfx ANIM_TAG_TENDRILS loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 0x6, 0x4 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0x0, 0x10, 0x0, 0x2 @@ -5439,7 +4493,7 @@ Move_COIL: waitforvisualfinish end -Move_LOW_SWEEP: +Move_LOW_SWEEP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 @@ -5451,7 +4505,7 @@ Move_LOW_SWEEP: createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end -Move_ACID_SPRAY: +Move_ACID_SPRAY:: loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_TARGET createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, -20, FALSE @@ -5477,7 +4531,7 @@ Move_ACID_SPRAY: clearmonbg ANIM_TARGET end -Move_FOUL_PLAY: +Move_FOUL_PLAY:: loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_IMPACT @@ -5500,7 +4554,7 @@ Move_FOUL_PLAY: blendoff end -Move_SIMPLE_BEAM: +Move_SIMPLE_BEAM:: loadspritegfx ANIM_TAG_GOLD_RING @psybeam loadspritegfx ANIM_TAG_ROCKS @brown color loadspritegfx ANIM_TAG_PINK_PETAL @pink color @@ -5546,7 +4600,7 @@ SimpleBeamWithRings: delay 0x2 return -Move_ENTRAINMENT: +Move_ENTRAINMENT:: createvisualtask AnimTask_TeeterDanceMovement, 5 playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 0x18 @@ -5561,7 +4615,7 @@ Move_ENTRAINMENT: waitforvisualfinish end -Move_AFTER_YOU: +Move_AFTER_YOU:: loadspritegfx ANIM_TAG_ANGER @rage loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @green color createvisualtask AnimTask_SwayMon, 5, 1, 15, 1536, 2, ANIM_ATTACKER @@ -5576,7 +4630,7 @@ Move_AFTER_YOU: waitforvisualfinish end -Move_ROUND: +Move_ROUND:: loadspritegfx ANIM_TAG_MUSIC_NOTES createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish @@ -5598,7 +4652,7 @@ Move_ROUND: waitforvisualfinish end -Move_ECHOED_VOICE: +Move_ECHOED_VOICE:: loadspritegfx ANIM_TAG_METAL_SOUND_WAVES monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET @@ -5618,7 +4672,7 @@ MetalSoundPlayNote: delay 0x2 return -Move_CHIP_AWAY: +Move_CHIP_AWAY:: loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_ATTACKER, 0x2, 0x0, 0x9, 0x7FFF waitforvisualfinish @@ -5636,7 +4690,7 @@ Move_CHIP_AWAY: blendoff end -Move_CLEAR_SMOG: +Move_CLEAR_SMOG:: loadspritegfx ANIM_TAG_MIST_CLOUD monbg ANIM_TARGET splitbgprio_all @@ -5664,7 +4718,7 @@ ClearSmogCloud: delay 7 return -Move_STORED_POWER: +Move_STORED_POWER:: loadspritegfx ANIM_TAG_RED_ORB_2 loadspritegfx ANIM_TAG_IMPACT call SetPsychicBackground @@ -5694,7 +4748,7 @@ Move_STORED_POWER: waitforvisualfinish end -Move_QUICK_GUARD: +Move_QUICK_GUARD:: loadspritegfx ANIM_TAG_QUICK_GUARD_HAND @hand loadspritegfx ANIM_TAG_SPARKLE_4 @sparkles setalpha 12, 8 @@ -5724,7 +4778,7 @@ Move_QUICK_GUARD: clearmonbg ANIM_ATTACKER end -Move_ALLY_SWITCH: +Move_ALLY_SWITCH:: call SetPsychicBackground createvisualtask AnimTask_AllySwitchAttacker, 2 createvisualtask AnimTask_AllySwitchPartner, 2 @@ -5732,7 +4786,7 @@ Move_ALLY_SWITCH: call UnsetPsychicBg end -Move_SCALD: +Move_SCALD:: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -5778,7 +4832,7 @@ ScaldHitSplats: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 1 return -Move_SHELL_SMASH: +Move_SHELL_SMASH:: loadspritegfx ANIM_TAG_SHELL_RIGHT loadspritegfx ANIM_TAG_SHELL_LEFT loadspritegfx ANIM_TAG_IMPACT @@ -5806,7 +4860,7 @@ Move_SHELL_SMASH: waitforvisualfinish end -Move_HEAL_PULSE: +Move_HEAL_PULSE:: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_THIN_RING @@ -5837,7 +4891,7 @@ Move_HEAL_PULSE: call HealingEffect2 end -Move_HEX: +Move_HEX:: loadspritegfx ANIM_TAG_PURPLE_FLAME loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x0, 0x0, 0x10, 0x4C4A @;Deep purple @@ -5858,7 +4912,7 @@ Move_HEX: waitforvisualfinish end -Move_SKY_DROP: +Move_SKY_DROP:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim SkyDropSetup SkyDropUnleash @@ -5891,7 +4945,7 @@ SkyDropUnleash: blendoff end -Move_SHIFT_GEAR: +Move_SHIFT_GEAR:: loadspritegfx ANIM_TAG_GEAR @Gear monbg ANIM_ATTACKER playsewithpan SE_ESCALATOR, SOUND_PAN_ATTACKER @@ -5901,7 +4955,7 @@ Move_SHIFT_GEAR: clearmonbg ANIM_ATTACKER end -Move_CIRCLE_THROW: +Move_CIRCLE_THROW:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_ICE_CHUNK @@ -5928,7 +4982,7 @@ Move_CIRCLE_THROW: blendoff end -Move_INCINERATE: +Move_INCINERATE:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_TARGET splitbgprio ANIM_TARGET @@ -5968,7 +5022,7 @@ Move_INCINERATE: blendoff end -Move_QUASH: +Move_QUASH:: loadspritegfx ANIM_TAG_ASSURANCE_HAND @hand fadetobg BG_DARK waitbgfadein @@ -5985,7 +5039,7 @@ Move_QUASH: waitbgfadein end -Move_ACROBATICS: +Move_ACROBATICS:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_WHITE_STREAK loadspritegfx ANIM_TAG_IMPACT @@ -6060,7 +5114,7 @@ AcrobaticsSlashes: delay 2 return -Move_REFLECT_TYPE: +Move_REFLECT_TYPE:: loadspritegfx ANIM_TAG_GUARD_RING @ring around user loadspritegfx ANIM_TAG_ICE_CHUNK @blue green color loadspritegfx ANIM_TAG_PURPLE_FLAME @violet color @@ -6098,7 +5152,7 @@ Move_REFLECT_TYPE: blendoff end -Move_RETALIATE: +Move_RETALIATE:: loadspritegfx ANIM_TAG_CUT @Cut monbg ANIM_DEF_PARTNER setalpha 9, 8 @@ -6119,7 +5173,7 @@ Move_RETALIATE: blendoff end -Move_FINAL_GAMBIT: +Move_FINAL_GAMBIT:: loadspritegfx ANIM_TAG_PINK_CLOUD @yawn animation loadspritegfx ANIM_TAG_WATER_IMPACT @blue colour loadspritegfx ANIM_TAG_EXPLOSION @explosion animation @@ -6146,7 +5200,7 @@ Move_FINAL_GAMBIT: waitforvisualfinish end -Move_BESTOW: +Move_BESTOW:: monbg ANIM_TARGET splitbgprio ANIM_TARGET panse SE_M_METRONOME, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0 @@ -6156,7 +5210,7 @@ Move_BESTOW: clearmonbg ANIM_TARGET end -Move_INFERNO: +Move_INFERNO:: loadspritegfx ANIM_TAG_SMALL_EMBER call SetImpactBackground loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET, 40, 4 @@ -6200,7 +5254,7 @@ InfernoAnim: delay 1 return -Move_WATER_PLEDGE: +Move_WATER_PLEDGE:: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -6320,7 +5374,7 @@ Move_WATER_PLEDGE: blendoff end -Move_FIRE_PLEDGE: +Move_FIRE_PLEDGE:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -6419,7 +5473,7 @@ Move_FIRE_PLEDGE: blendoff end -Move_GRASS_PLEDGE: +Move_GRASS_PLEDGE:: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_WHIP_HIT monbg ANIM_DEF_PARTNER @@ -6526,7 +5580,7 @@ GrassPledgeMiddleFountain: delay 4 return -Move_VOLT_SWITCH: +Move_VOLT_SWITCH:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_THIN_RING @@ -6565,7 +5619,7 @@ VoltSwitchAgainstPartner: createvisualtask AnimTask_SlideOffScreen, 5, ANIM_ATTACKER, 2 goto VoltSwitchContinue -Move_STRUGGLE_BUG: +Move_STRUGGLE_BUG:: loadspritegfx ANIM_TAG_MOVEMENT_WAVES loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -6591,12 +5645,12 @@ Move_STRUGGLE_BUG: blendoff end -Move_BULLDOZE: +Move_BULLDOZE:: createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3 delay 0x8 goto Move_EARTHQUAKE -Move_FROST_BREATH: +Move_FROST_BREATH:: loadspritegfx ANIM_TAG_ICE_CHUNK loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_FIRE_PLUME @@ -6634,7 +5688,7 @@ Move_FROST_BREATH: call UnsetPsychicBg end -Move_DRAGON_TAIL: +Move_DRAGON_TAIL:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_SLAM_HIT loadspritegfx ANIM_TAG_IMPACT @@ -6670,7 +5724,7 @@ TailWhackDown: createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 return -Move_WORK_UP: +Move_WORK_UP:: loadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -28, 26, 2 @@ -6704,7 +5758,7 @@ Move_WORK_UP: waitforvisualfinish end -Move_ELECTROWEB: +Move_ELECTROWEB:: loadspritegfx ANIM_TAG_SPIDER_WEB loadspritegfx ANIM_TAG_WEB_THREAD loadspritegfx ANIM_TAG_SPARK_2 @@ -6722,11 +5776,11 @@ Move_ELECTROWEB: delay 1 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK call ElectricityEffect_OnTargets -Move_ELECTROWEB_Wait: +Move_ELECTROWEB_Wait:: waitforvisualfinish end -Move_WILD_CHARGE: +Move_WILD_CHARGE:: loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_IMPACT @@ -6761,7 +5815,7 @@ ScreenFlash: createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0xC, 0x0, 0x07FE return -Move_DRILL_RUN: +Move_DRILL_RUN:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT setalpha 12, 8 @@ -6816,7 +5870,7 @@ Move_DRILL_RUN: call UnsetPsychicBg end -Move_DUAL_CHOP: +Move_DUAL_CHOP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET @hand loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_POISON_BUBBLE @purple @@ -6838,7 +5892,7 @@ Move_DUAL_CHOP: blendoff end -Move_HEART_STAMP: +Move_HEART_STAMP:: loadspritegfx ANIM_TAG_HEART_STAMP monbg ANIM_TARGET loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 0xc, 0x3 @@ -6851,7 +5905,7 @@ Move_HEART_STAMP: waitforvisualfinish end -Move_HORN_LEECH: +Move_HORN_LEECH:: loadspritegfx ANIM_TAG_HORN_LEECH @Horn loadspritegfx ANIM_TAG_IMPACT @hit loadspritegfx ANIM_TAG_ORBS @@ -6868,7 +5922,7 @@ Move_HORN_LEECH: waitforvisualfinish end -Move_SACRED_SWORD: +Move_SACRED_SWORD:: loadspritegfx ANIM_TAG_CUT @Cut loadspritegfx ANIM_TAG_SWORD @Sword loadspritegfx ANIM_TAG_HYDRO_PUMP @Blue Colour @@ -6894,7 +5948,7 @@ Move_SACRED_SWORD: waitforvisualfinish end -Move_RAZOR_SHELL: +Move_RAZOR_SHELL:: loadspritegfx ANIM_TAG_RAZOR_SHELL loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET @@ -6908,7 +5962,7 @@ Move_RAZOR_SHELL: waitforvisualfinish end -Move_HEAT_CRASH: +Move_HEAT_CRASH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WARM_ROCK loadspritegfx ANIM_TAG_ROCKS @@ -6932,7 +5986,7 @@ Move_HEAT_CRASH: blendoff end -Move_LEAF_TORNADO: +Move_LEAF_TORNADO:: loadspritegfx ANIM_TAG_GUST @Gust loadspritegfx ANIM_TAG_LEAF @Leaves monbg ANIM_DEF_PARTNER @@ -6963,7 +6017,7 @@ LeafTornadoVortex: delay 0x2 return -Move_STEAMROLLER: +Move_STEAMROLLER:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -6989,7 +6043,7 @@ Move_STEAMROLLER: blendoff end -Move_COTTON_GUARD: +Move_COTTON_GUARD:: loadspritegfx ANIM_TAG_SPORE monbg ANIM_ATK_PARTNER setalpha 12, 8 @@ -7019,7 +6073,7 @@ CottonSporesSpiralInward: delay 0x3 return -Move_NIGHT_DAZE: +Move_NIGHT_DAZE:: loadspritegfx ANIM_TAG_THIN_RING @uproar loadspritegfx ANIM_TAG_PURPLE_FLAME @dark violet color loadspritegfx ANIM_TAG_RED_ORB @circles @@ -7057,7 +6111,7 @@ Move_NIGHT_DAZE: waitforvisualfinish end -Move_PSYSTRIKE: +Move_PSYSTRIKE:: monbg ANIM_TARGET setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 @@ -7074,7 +6128,7 @@ Move_PSYSTRIKE: blendoff end -Move_TAIL_SLAP: +Move_TAIL_SLAP:: loadspritegfx ANIM_TAG_IMPACT @Hit loadspritegfx ANIM_TAG_AIR_WAVE_2 @Aeroblast loadspritegfx ANIM_TAG_PUNISHMENT_BLADES @Punishment Blades @@ -7095,7 +6149,7 @@ TailSlapLeft: createsprite gTailSlapTemplate, ANIM_ATTACKER, 2, 0x8, 0x0, 0x1, 0x0 goto TailSlapContinue -Move_HURRICANE: +Move_HURRICANE:: loadspritegfx ANIM_TAG_GUST monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -7132,7 +6186,7 @@ HurricaneGustCentered: createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 return -Move_HEAD_CHARGE: +Move_HEAD_CHARGE:: loadspritegfx ANIM_TAG_IMPACT fadetobgfromset BG_GIGA_IMPACT_OPPONENT, BG_GIGA_IMPACT_PLAYER, BG_GIGA_IMPACT_OPPONENT waitbgfadein @@ -7152,7 +6206,7 @@ Move_HEAD_CHARGE: waitbgfadeout end -Move_GEAR_GRIND: +Move_GEAR_GRIND:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_GEAR @Gear monbg ANIM_TARGET @@ -7175,7 +6229,7 @@ Move_GEAR_GRIND: blendoff end -Move_SEARING_SHOT: +Move_SEARING_SHOT:: loadspritegfx ANIM_TAG_SPARK_2 @yellow color loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE @red color loadspritegfx ANIM_TAG_ELECTRIC_ORBS @charge @@ -7261,7 +6315,7 @@ Move_SEARING_SHOT: blendoff end -Move_TECHNO_BLAST: +Move_TECHNO_BLAST:: createvisualtask AnimTask_TechnoBlast, 0x5 jumpargeq 0x0, TYPE_FIRE, TechnoBlastFire jumpargeq 0x0, TYPE_WATER, TechnoBlastWater @@ -7724,7 +6778,7 @@ TechnoBlastIceChargeParticles: delay 0x4 return -Move_RELIC_SONG: +Move_RELIC_SONG:: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_MUSIC_NOTES @@ -7805,7 +6859,7 @@ Move_RELIC_SONG: waitforvisualfinish end -Move_SECRET_SWORD: +Move_SECRET_SWORD:: loadspritegfx ANIM_TAG_CUT @Cut loadspritegfx ANIM_TAG_SWORD @Sword loadspritegfx ANIM_TAG_HYDRO_PUMP @Blue Colour @@ -7834,7 +6888,7 @@ Move_SECRET_SWORD: waitforvisualfinish end -Move_GLACIATE: +Move_GLACIATE:: loadspritegfx ANIM_TAG_ICE_CRYSTALS @ice loadspritegfx ANIM_TAG_BLACK_SMOKE @smoke loadspritegfx ANIM_TAG_ICE_CHUNK @White Colour @@ -8498,7 +7552,7 @@ Move_ROTOTILLER:: waitforvisualfinish end -Move_STICKY_WEB: +Move_STICKY_WEB:: loadspritegfx ANIM_TAG_SPIDER_WEB loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER @@ -8536,7 +7590,7 @@ Move_STICKY_WEB: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, RGB_BLACK end -Move_FELL_STINGER: +Move_FELL_STINGER:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -8557,7 +7611,7 @@ Move_FELL_STINGER: clearmonbg ANIM_TARGET end -Move_PHANTOM_FORCE: +Move_PHANTOM_FORCE:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim PhantomForcePrep PhantomForceAttack @@ -8629,7 +7683,7 @@ PhantomForceBg: waitbgfadein return -Move_TRICK_OR_TREAT: +Move_TRICK_OR_TREAT:: loadspritegfx ANIM_TAG_EYE_SPARKLE loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT fadetobg BG_NIGHTMARE @@ -8653,7 +7707,7 @@ Move_TRICK_OR_TREAT: waitbgfadein end -Move_NOBLE_ROAR: +Move_NOBLE_ROAR:: loadspritegfx ANIM_TAG_NOISE_LINE monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER @@ -8674,10 +7728,10 @@ Move_NOBLE_ROAR: delay 20 end -Move_ION_DELUGE: +Move_ION_DELUGE:: end -Move_PARABOLIC_CHARGE: +Move_PARABOLIC_CHARGE:: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_SPARK @@ -8732,7 +7786,7 @@ ParabolicChargeDouble: createvisualtask AnimTask_BlendBattleAnimPal, 5, 4 | 8 | 0x10, 0, 0, 0, RGB_BLACK goto ParabolicChargeHeal; -Move_FORESTS_CURSE: +Move_FORESTS_CURSE:: loadspritegfx ANIM_TAG_ROOTS @frenzy plant loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT @curse monbg ANIM_ATTACKER @@ -8869,7 +7923,7 @@ Move_DISARMING_VOICE:: waitforvisualfinish end -Move_PARTING_SHOT: +Move_PARTING_SHOT:: loadspritegfx ANIM_TAG_NOISE_LINE fadetobg BG_DARK waitbgfadein @@ -8887,7 +7941,7 @@ Move_PARTING_SHOT: waitbgfadein end -Move_TOPSY_TURVY: +Move_TOPSY_TURVY:: loadspritegfx ANIM_TAG_SWEAT_DROP setalpha 12, 8 createsprite gSimplePaletteBlendSpriteTemplate ANIM_TARGET, 2, 1, 2, 0, 4, RGB_BLACK @@ -8904,7 +7958,7 @@ Move_TOPSY_TURVY: blendoff end -Move_DRAINING_KISS: +Move_DRAINING_KISS:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT @@ -9240,7 +8294,7 @@ Move_FAIRY_WIND:: blendoff end -Move_MOONBLAST: +Move_MOONBLAST:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE @@ -9263,7 +8317,7 @@ Move_MOONBLAST: blendoff end -Move_BOOMBURST: +Move_BOOMBURST:: loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_THIN_RING createvisualtask AnimTask_InvertScreenColor, 2, 0x1 | 0x4 | 0x8 | 0x10 @@ -10147,7 +9201,7 @@ InfestationVortex: delay 0x1 return -Move_POWER_UP_PUNCH: +Move_POWER_UP_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_BREATH @@ -13861,10 +12915,12 @@ Move_MAGIC_POWDER:: end Move_DRAGON_DARTS:: + loadspritegfx ANIM_TAG_DREEPY_SHINY loadspritegfx ANIM_TAG_DREEPY + loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_EXPLOSION playsewithpan SE_FALL, SOUND_PAN_ATTACKER - createsprite gDreepyMissileTemplate, ANIM_TARGET, 2, 0x0, 0x0, 0x19 + createdragondartsprite ANIM_TARGET, 2, 0x0, 0x0, 0x19 delay 0x19 playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 16, 1 @@ -14556,7 +13612,7 @@ BasicExplosion: createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, 0x1, 0x1 return -Move_ETERNA_BEAM:: +Move_ETERNABEAM:: goto Move_HYPER_BEAM Move_STEEL_BEAM:: @@ -14834,7 +13890,7 @@ Move_SHELL_SIDE_ARM:: createvisualtask AnimTask_ShellSideArm, 0x5 jumpargeq 0x0, TRUE, Move_SHELL_SIDE_ARM_PHYSICAL jumpargeq 0x0, FALSE, Move_SHELL_SIDE_ARM_SPECIAL -Move_SHELL_SIDE_ARM_PHYSICAL: @ Modified Body Slam, placeholder +Move_SHELL_SIDE_ARM_PHYSICAL:: @ Modified Body Slam, placeholder loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 6, 6, RGB_MAGENTA monbg ANIM_DEF_PARTNER @@ -14860,7 +13916,7 @@ Move_SHELL_SIDE_ARM_PHYSICAL: @ Modified Body Slam, placeholder clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SHELL_SIDE_ARM_SPECIAL: @ Modified Snipe Shot, placeholder +Move_SHELL_SIDE_ARM_SPECIAL:: @ Modified Snipe Shot, placeholder loadspritegfx ANIM_TAG_IMPACT_2 loadspritegfx ANIM_TAG_LEER createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT_2, 0, 6, 6, RGB_MAGENTA @@ -16852,7 +15908,7 @@ Move_SYRUP_BOMB:: jumpargeq 0x0, TRUE, Move_SYRUP_BOMB_YELLOW @ Credits to Dat.H A -Move_SYRUP_BOMB_RED: +Move_SYRUP_BOMB_RED:: loadspritegfx ANIM_TAG_SYRUP_BLOB_RED loadspritegfx ANIM_TAG_SYRUP_SPLAT_RED loadspritegfx ANIM_TAG_SYRUP_SHELL_RED @@ -16890,7 +15946,7 @@ SyrupBombProjectileRed: delay 3 return -Move_SYRUP_BOMB_YELLOW: +Move_SYRUP_BOMB_YELLOW:: loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW loadspritegfx ANIM_TAG_SYRUP_SPLAT_YELLOW loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW @@ -17223,7 +16279,7 @@ Move_UPPER_HAND:: blendoff end -Move_JET_PUNCH: +Move_JET_PUNCH:: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT @@ -17897,6 +16953,51 @@ IvyCudgelWater: waitforvisualfinish end +Move_SPICY_EXTRACT:: + loadspritegfx ANIM_TAG_SMALL_EMBER + loadspritegfx ANIM_TAG_POISON_BUBBLE + loadspritegfx ANIM_TAG_SMALL_BUBBLES + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_POISON_BUBBLE, 0, 12, 12, 0x061D @Orange + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + call SludgeBombProjectile + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 9, RGB_RED + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET + delay 5 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET + delay 5 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 0, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -43, -12, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 16, -46, 20 + createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -16, 44, 20 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET + call LetsSnuggleForeverTears + delay 0x8 + call LetsSnuggleForeverTears + delay 0x8 + call LetsSnuggleForeverTears + waitsound + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 9, 0, RGB_RED + waitforvisualfinish + end + Move_AXE_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT @@ -17914,7 +17015,6 @@ Move_AXE_KICK:: Move_TERA_BLAST:: Move_ORDER_UP:: -Move_SPICY_EXTRACT:: Move_SPIN_OUT:: Move_POPULATION_BOMB:: Move_GLAIVE_RUSH:: @@ -17954,9 +17054,9 @@ Move_MALIGNANT_CHAIN:: end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ -Move_NONE: -Move_MIRROR_MOVE: -Move_POUND: +Move_NONE:: +Move_MIRROR_MOVE:: +Move_POUND:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -17968,7 +17068,7 @@ Move_POUND: blendoff end -Move_DOUBLE_SLAP: +Move_DOUBLE_SLAP:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -17987,7 +17087,7 @@ DoubleSlapRight: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 2 goto DoubleSlapContinue -Move_POISON_POWDER: +Move_POISON_POWDER:: loadspritegfx ANIM_TAG_POISON_POWDER loadspritegfx ANIM_TAG_POISON_BUBBLE loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 @@ -18012,7 +17112,7 @@ Move_POISON_POWDER: waitforvisualfinish end -Move_STUN_SPORE: +Move_STUN_SPORE:: loadspritegfx ANIM_TAG_STUN_SPORE loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 @@ -18036,7 +17136,7 @@ Move_STUN_SPORE: waitforvisualfinish end -Move_SLEEP_POWDER: +Move_SLEEP_POWDER:: loadspritegfx ANIM_TAG_SLEEP_POWDER loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 @@ -18060,7 +17160,7 @@ Move_SLEEP_POWDER: waitforvisualfinish end -Move_SWIFT: +Move_SWIFT:: loadspritegfx ANIM_TAG_YELLOW_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -18087,7 +17187,7 @@ Move_SWIFT: blendoff end -Move_STRENGTH: +Move_STRENGTH:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -18113,7 +17213,7 @@ Move_STRENGTH: blendoff end -Move_TACKLE: +Move_TACKLE:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -18127,7 +17227,7 @@ Move_TACKLE: blendoff end -Move_BODY_SLAM: +Move_BODY_SLAM:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -18153,7 +17253,7 @@ Move_BODY_SLAM: blendoff end -Move_SUPERSONIC: +Move_SUPERSONIC:: loadspritegfx ANIM_TAG_GOLD_RING monbg ANIM_ATK_PARTNER splitbgprio_foes ANIM_ATTACKER @@ -18175,7 +17275,7 @@ SupersonicRing: delay 2 return -Move_SCREECH: +Move_SCREECH:: loadspritegfx ANIM_TAG_PURPLE_RING createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 2, 1 call ScreechRing @@ -18190,7 +17290,7 @@ ScreechRing: delay 2 return -Move_FLAME_WHEEL: +Move_FLAME_WHEEL:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET @@ -18232,7 +17332,7 @@ FlameWheel1: @ Unused delay 4 return -Move_PIN_MISSILE: +Move_PIN_MISSILE:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -18261,7 +17361,7 @@ Move_PIN_MISSILE: blendoff end -Move_ICICLE_SPEAR: +Move_ICICLE_SPEAR:: loadspritegfx ANIM_TAG_ICICLE_SPEAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -18290,7 +17390,7 @@ Move_ICICLE_SPEAR: blendoff end -Move_TAKE_DOWN: +Move_TAKE_DOWN:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -18313,7 +17413,7 @@ Move_TAKE_DOWN: blendoff end -Move_DOUBLE_EDGE: +Move_DOUBLE_EDGE:: loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 @@ -18346,7 +17446,7 @@ Move_DOUBLE_EDGE: waitforvisualfinish end -Move_POISON_STING: +Move_POISON_STING:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE @@ -18366,7 +17466,7 @@ Move_POISON_STING: blendoff end -Move_TWINEEDLE: +Move_TWINEEDLE:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -18386,7 +17486,7 @@ Move_TWINEEDLE: blendoff end -Move_FIRE_BLAST: +Move_FIRE_BLAST:: loadspritegfx ANIM_TAG_SMALL_EMBER createsoundtask SoundTask_FireBlast, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 call FireBlastRing @@ -18434,7 +17534,7 @@ FireBlastCross: createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2 return -Move_LEECH_SEED: +Move_LEECH_SEED:: loadspritegfx ANIM_TAG_SEED playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 @@ -18449,7 +17549,7 @@ Move_LEECH_SEED: waitforvisualfinish end -Move_EMBER: +Move_EMBER:: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 5, 2 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, -16, 24, 20, 1 @@ -18488,7 +17588,7 @@ SetImpactContestsBG: changebg BG_IMPACT_CONTESTS goto SetImpactBackgroundRet -Move_MEGA_PUNCH: +Move_MEGA_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET @@ -18513,7 +17613,7 @@ Move_MEGA_PUNCH: waitbgfadein end -Move_MEGA_KICK: +Move_MEGA_KICK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET @@ -18538,7 +17638,7 @@ Move_MEGA_KICK: waitbgfadein end -Move_COMET_PUNCH: +Move_COMET_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET @@ -18560,7 +17660,7 @@ CometPunchRight: createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, 0, 8, 1, 0 goto CometPunchContinue -Move_SONIC_BOOM: +Move_SONIC_BOOM:: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -18585,7 +17685,7 @@ SonicBoomHit: delay 4 return -Move_THUNDER_SHOCK: +Move_THUNDER_SHOCK:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK @@ -18606,7 +17706,7 @@ Move_THUNDER_SHOCK: waitforvisualfinish end -Move_THUNDERBOLT: +Move_THUNDERBOLT:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 @@ -18655,7 +17755,7 @@ Move_THUNDERBOLT: waitforvisualfinish end -Move_THUNDER_WAVE: +Move_THUNDER_WAVE:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H @@ -18676,7 +17776,7 @@ Move_THUNDER_WAVE: waitforvisualfinish end -Move_BEAT_UP: +Move_BEAT_UP:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_TARGET @@ -18710,7 +17810,7 @@ BeatUpRight: playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET goto BeatUpContinue -Move_STOMP: +Move_STOMP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -18726,13 +17826,13 @@ Move_STOMP: blendoff end -Move_TAIL_WHIP: +Move_TAIL_WHIP:: loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 3 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 3 waitforvisualfinish end -Move_CUT: +Move_CUT:: loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET setalpha 12, 8 @@ -18746,7 +17846,7 @@ Move_CUT: waitforvisualfinish end -Move_HIDDEN_POWER: +Move_HIDDEN_POWER:: loadspritegfx ANIM_TAG_RED_ORB playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 @@ -18776,7 +17876,7 @@ Move_HIDDEN_POWER: createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 end -Move_REVERSAL: +Move_REVERSAL:: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT @@ -18804,7 +17904,7 @@ Move_REVERSAL: createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 end -Move_PURSUIT: +Move_PURSUIT:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET fadetobg BG_DARK @@ -18831,7 +17931,7 @@ PursuitOnSwitchout: createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 6, 1, 0 goto PursuitContinue -Move_SPIKE_CANNON: +Move_SPIKE_CANNON:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -18855,7 +17955,7 @@ Move_SPIKE_CANNON: blendoff end -Move_SWORDS_DANCE: +Move_SWORDS_DANCE:: loadspritegfx ANIM_TAG_SWORD monbg ANIM_ATTACKER setalpha 12, 8 @@ -18870,7 +17970,7 @@ Move_SWORDS_DANCE: delay 1 end -Move_PSYCH_UP: +Move_PSYCH_UP:: loadspritegfx ANIM_TAG_SPIRAL monbg ANIM_ATK_PARTNER createvisualtask AnimTask_BlendColorCycleExclude, 2, 1, 2, 6, 1, 11, RGB_BLACK @@ -18889,7 +17989,7 @@ Move_PSYCH_UP: waitforvisualfinish end -Move_DIZZY_PUNCH: +Move_DIZZY_PUNCH:: loadspritegfx ANIM_TAG_DUCK loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT @@ -18926,7 +18026,7 @@ DizzyPunchLunge: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 7, 1 return -Move_FIRE_SPIN: +Move_FIRE_SPIN:: loadspritegfx ANIM_TAG_SMALL_EMBER playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1 @@ -18951,7 +18051,7 @@ FireSpinEffect: delay 2 return -Move_FURY_CUTTER: +Move_FURY_CUTTER:: loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET setalpha 12, 8 @@ -18989,7 +18089,7 @@ FuryCutterStrongest: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -Move_SELF_DESTRUCT: +Move_SELF_DESTRUCT:: loadspritegfx ANIM_TAG_EXPLOSION createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_LEFT, 6, 0, 38, 1 @@ -19020,7 +18120,7 @@ SelfDestructExplode: delay 6 return -Move_SLAM: +Move_SLAM:: loadspritegfx ANIM_TAG_SLAM_HIT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -19044,7 +18144,7 @@ Move_SLAM: blendoff end -Move_VINE_WHIP: +Move_VINE_WHIP:: loadspritegfx ANIM_TAG_WHIP_HIT playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -19055,7 +18155,7 @@ Move_VINE_WHIP: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 6, 1 end -Move_DRILL_PECK: +Move_DRILL_PECK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WHIRLWIND_LINES createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 @@ -19074,7 +18174,7 @@ Move_DRILL_PECK: waitforvisualfinish end -Move_WATERFALL: +Move_WATERFALL:: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_ICE_CRYSTALS @@ -19159,7 +18259,7 @@ RisingWaterHitEffect: createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -20 return -Move_EXPLOSION: +Move_EXPLOSION:: loadspritegfx ANIM_TAG_EXPLOSION createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, ANIM_PLAYER_LEFT, 8, 0, 40, 1 @@ -19192,7 +18292,7 @@ Explosion1: delay 6 return -Move_DEFENSE_CURL: +Move_DEFENSE_CURL:: loadspritegfx ANIM_TAG_ECLIPSING_ORB loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, FALSE @@ -19204,7 +18304,7 @@ Move_DEFENSE_CURL: waitforvisualfinish end -Move_PROTECT: +Move_PROTECT:: loadspritegfx ANIM_TAG_PROTECT monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER @@ -19214,7 +18314,7 @@ Move_PROTECT: clearmonbg ANIM_ATK_PARTNER end -Move_DETECT: +Move_DETECT:: loadspritegfx ANIM_TAG_SPARKLE_4 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish @@ -19229,7 +18329,7 @@ Move_DETECT: waitforvisualfinish end -Move_FRUSTRATION: +Move_FRUSTRATION:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER monbg ANIM_DEF_PARTNER @@ -19334,7 +18434,7 @@ Frustration_Weak: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 goto Frustration_Continue -Move_SAFEGUARD: +Move_SAFEGUARD:: loadspritegfx ANIM_TAG_GUARD_RING monbg ANIM_ATK_PARTNER setalpha 8, 8 @@ -19352,7 +18452,7 @@ Move_SAFEGUARD: blendoff end -Move_PAIN_SPLIT: +Move_PAIN_SPLIT:: loadspritegfx ANIM_TAG_PAIN_SPLIT createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, ANIM_ATTACKER createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, ANIM_TARGET @@ -19376,7 +18476,7 @@ Move_PAIN_SPLIT: createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 2 end -Move_VICE_GRIP: +Move_VISE_GRIP:: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -19392,7 +18492,7 @@ Move_VICE_GRIP: blendoff end -Move_GUILLOTINE: +Move_GUILLOTINE:: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -19417,7 +18517,7 @@ Move_GUILLOTINE: waitbgfadein end -Move_PAY_DAY: +Move_PAY_DAY:: loadspritegfx ANIM_TAG_COIN loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -19435,7 +18535,7 @@ Move_PAY_DAY: blendoff end -Move_OUTRAGE: +Move_OUTRAGE:: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET), 2, 5, 3, 8, RGB(14, 13, 0) @@ -19480,7 +18580,7 @@ OutrageFlames: createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3 return -Move_SPARK: +Move_SPARK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 @@ -19526,7 +18626,7 @@ Move_SPARK: waitforvisualfinish end -Move_ATTRACT: +Move_ATTRACT:: loadspritegfx ANIM_TAG_RED_HEART loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER @@ -19555,7 +18655,7 @@ Move_ATTRACT: createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) end -Move_GROWTH: +Move_GROWTH:: call GrowthEffect waitforvisualfinish call GrowthEffect @@ -19567,7 +18667,7 @@ GrowthEffect: createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return -Move_WHIRLWIND: +Move_WHIRLWIND:: loadspritegfx ANIM_TAG_WHIRLWIND_LINES createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 60, 0 createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 60, 1 @@ -19586,7 +18686,7 @@ Move_WHIRLWIND: waitforvisualfinish end -Move_CONFUSE_RAY: +Move_CONFUSE_RAY:: loadspritegfx ANIM_TAG_YELLOW_BALL monbg ANIM_DEF_PARTNER fadetobg BG_GHOST @@ -19606,7 +18706,7 @@ Move_CONFUSE_RAY: waitbgfadein end -Move_LOCK_ON: +Move_LOCK_ON:: loadspritegfx ANIM_TAG_LOCK_ON createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 1 @@ -19618,7 +18718,7 @@ Move_LOCK_ON: waitforvisualfinish end -Move_MEAN_LOOK: +Move_MEAN_LOOK:: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -19633,7 +18733,7 @@ Move_MEAN_LOOK: waitforvisualfinish end -Move_ROCK_THROW: +Move_ROCK_THROW:: loadspritegfx ANIM_TAG_ROCKS createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0 @@ -19654,7 +18754,7 @@ Move_ROCK_THROW: waitforvisualfinish end -Move_ROCK_SLIDE: +Move_ROCK_SLIDE:: loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 @@ -19705,7 +18805,7 @@ RockSlideRocks: delay 2 return -Move_THIEF: +Move_THIEF:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET delay 1 @@ -19725,7 +18825,7 @@ Move_THIEF: waitbgfadein end -Move_BUBBLE_BEAM: +Move_BUBBLE_BEAM:: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES monbg ANIM_TARGET @@ -19763,7 +18863,7 @@ BulbblebeamCreateBubbles: delay 3 return -Move_ICY_WIND: +Move_ICY_WIND:: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER @@ -19799,7 +18899,7 @@ IcyWindSwirlingSnowballs: createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, -5, 0, -5, 72, 1 return -Move_SMOKESCREEN: +Move_SMOKESCREEN:: loadspritegfx ANIM_TAG_BLACK_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER @@ -19823,7 +18923,7 @@ Move_SMOKESCREEN: waitforvisualfinish end -Move_CONVERSION: +Move_CONVERSION:: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER @@ -19875,7 +18975,7 @@ Move_CONVERSION: blendoff end -Move_CONVERSION_2: +Move_CONVERSION_2:: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET @@ -19920,7 +19020,7 @@ Move_CONVERSION_2: blendoff end -Move_ROLLING_KICK: +Move_ROLLING_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -19942,7 +19042,7 @@ Move_ROLLING_KICK: blendoff end -Move_HEADBUTT: +Move_HEADBUTT:: loadspritegfx ANIM_TAG_IMPACT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER @@ -19958,7 +19058,7 @@ Move_HEADBUTT: waitforvisualfinish end -Move_HORN_ATTACK: +Move_HORN_ATTACK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 @@ -19976,7 +19076,7 @@ Move_HORN_ATTACK: waitforvisualfinish end -Move_FURY_ATTACK: +Move_FURY_ATTACK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2 @@ -20000,7 +19100,7 @@ FuryAttackLeft: playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET goto FuryAttackContinue -Move_HORN_DRILL: +Move_HORN_DRILL:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT jumpifcontest HornDrillInContest @@ -20067,7 +19167,7 @@ HornDrillInContest: createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto HornDrillContinue -Move_THRASH: +Move_THRASH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET createvisualtask AnimTask_ThrashMoveMonHorizontal, 2 @@ -20085,7 +19185,7 @@ Move_THRASH: playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET end -Move_SING: +Move_SING:: loadspritegfx ANIM_TAG_MUSIC_NOTES monbg ANIM_DEF_PARTNER createvisualtask AnimTask_MusicNotesRainbowBlend, 2 @@ -20121,7 +19221,7 @@ Move_SING: waitforvisualfinish end -Move_LOW_KICK: +Move_LOW_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 @@ -20134,7 +19234,7 @@ Move_LOW_KICK: createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end -Move_EARTHQUAKE: +Move_EARTHQUAKE:: createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50 createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 @@ -20144,7 +19244,7 @@ Move_EARTHQUAKE: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end -Move_FISSURE: +Move_FISSURE:: loadspritegfx ANIM_TAG_MUD_SAND createvisualtask AnimTask_HorizontalShake, 3, ANIM_PLAYER_RIGHT, 10, 50 createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50 @@ -20187,7 +19287,7 @@ FissureDirtPlumeClose: playsewithpan SE_M_DIG, SOUND_PAN_TARGET return -Move_DIG: +Move_DIG:: choosetwoturnanim DigSetUp, DigUnleash DigEnd: end @@ -20235,7 +19335,7 @@ DigThrowDirt: delay 32 return -Move_MEDITATE: +Move_MEDITATE:: call SetPsychicBackground createvisualtask AnimTask_MeditateStretchAttacker, 2 playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER @@ -20245,7 +19345,7 @@ Move_MEDITATE: call UnsetPsychicBg end -Move_AGILITY: +Move_AGILITY:: monbg ANIM_ATK_PARTNER setalpha 12, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 4, 4 @@ -20266,7 +19366,7 @@ Move_AGILITY: delay 1 end -Move_QUICK_ATTACK: +Move_QUICK_ATTACK:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATK_PARTNER setalpha 12, 8 @@ -20283,7 +19383,7 @@ Move_QUICK_ATTACK: waitforvisualfinish end -Move_RAGE: +Move_RAGE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER monbg ANIM_TARGET @@ -20304,7 +19404,7 @@ Move_RAGE: clearmonbg ANIM_TARGET end -Move_TELEPORT: +Move_TELEPORT:: call SetPsychicBackground createvisualtask AnimTask_Teleport, 2 playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER @@ -20339,12 +19439,12 @@ DoubleTeamAnimRet: delay 1 return -Move_DOUBLE_TEAM: +Move_DOUBLE_TEAM:: createvisualtask AnimTask_DoubleTeam, 2 call DoubleTeamAnimRet end -Move_MINIMIZE: +Move_MINIMIZE:: setalpha 10, 8 createvisualtask AnimTask_Minimize, 2 loopsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 34, 3 @@ -20352,7 +19452,7 @@ Move_MINIMIZE: blendoff end -Move_METRONOME: +Move_METRONOME:: loadspritegfx ANIM_TAG_FINGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 100 @@ -20364,7 +19464,7 @@ Move_METRONOME: waitforvisualfinish end -Move_SKULL_BASH: +Move_SKULL_BASH:: choosetwoturnanim SkullBashSetUp, SkullBashAttack SkullBashEnd: end @@ -20397,7 +19497,7 @@ SkullBashAttack: createvisualtask AnimTask_SkullBashPosition, 2, 1 goto SkullBashEnd -Move_AMNESIA: +Move_AMNESIA:: loadspritegfx ANIM_TAG_AMNESIA call SetPsychicBackground delay 8 @@ -20409,7 +19509,7 @@ Move_AMNESIA: call UnsetPsychicBg end -Move_KINESIS: +Move_KINESIS:: loadspritegfx ANIM_TAG_ALERT loadspritegfx ANIM_TAG_BENT_SPOON playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -20428,7 +19528,7 @@ Move_KINESIS: call UnsetPsychicBg end -Move_GLARE: +Move_GLARE:: loadspritegfx ANIM_TAG_SMALL_RED_EYE loadspritegfx ANIM_TAG_EYE_SPARKLE createvisualtask AnimTask_GlareEyeDots, 5, 0 @@ -20446,7 +19546,7 @@ Move_GLARE: createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK end -Move_BARRAGE: +Move_BARRAGE:: loadspritegfx ANIM_TAG_RED_BALL createvisualtask AnimTask_BarrageBall, 3 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER @@ -20457,7 +19557,7 @@ Move_BARRAGE: loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2 end -Move_SKY_ATTACK: +Move_SKY_ATTACK:: choosetwoturnanim SkyAttackSetUp, SkyAttackUnleash SkyAttackEnd: end @@ -20523,20 +19623,20 @@ SkyAttackUnleash: call UnsetSkyBg goto SkyAttackEnd -Move_FLASH: +Move_FLASH:: playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_Flash, 2 waitforvisualfinish end -Move_SPLASH: +Move_SPLASH:: createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3 delay 8 loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 3 waitforvisualfinish end -Move_ACID_ARMOR: +Move_ACID_ARMOR:: monbg ANIM_ATTACKER setalpha 15, 0 createvisualtask AnimTask_AcidArmor, 2, ANIM_ATTACKER @@ -20547,13 +19647,13 @@ Move_ACID_ARMOR: delay 1 end -Move_SHARPEN: +Move_SHARPEN:: loadspritegfx ANIM_TAG_SPHERE_TO_CUBE createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish end -Move_SUPER_FANG: +Move_SUPER_FANG:: loadspritegfx ANIM_TAG_FANG_ATTACK createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 1, 0, 20, 1 playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER @@ -20573,7 +19673,7 @@ Move_SUPER_FANG: blendoff end -Move_SLASH: +Move_SLASH:: loadspritegfx ANIM_TAG_SLASH createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET @@ -20584,7 +19684,7 @@ Move_SLASH: waitforvisualfinish end -Move_STRUGGLE: +Move_STRUGGLE:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MOVEMENT_WAVES monbg ANIM_TARGET @@ -20602,7 +19702,7 @@ Move_STRUGGLE: blendoff end -Move_SKETCH: +Move_SKETCH:: loadspritegfx ANIM_TAG_PENCIL monbg ANIM_TARGET createvisualtask AnimTask_SketchDrawMon, 2 @@ -20613,7 +19713,7 @@ Move_SKETCH: loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 2 end -Move_NIGHTMARE: +Move_NIGHTMARE:: fadetobg BG_GHOST waitbgfadein jumpifcontest NightmareInContest @@ -20635,7 +19735,7 @@ NightmareInContest: waitbgfadein end -Move_FLAIL: +Move_FLAIL:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -20650,7 +19750,7 @@ Move_FLAIL: blendoff end -Move_SPITE: +Move_SPITE:: fadetobg BG_GHOST playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein @@ -20684,7 +19784,7 @@ UnsetHighSpeedBg: waitbgfadein return -Move_MACH_PUNCH: +Move_MACH_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_ATK_PARTNER @@ -20704,7 +19804,7 @@ Move_MACH_PUNCH: call UnsetHighSpeedBg end -Move_FORESIGHT: +Move_FORESIGHT:: loadspritegfx ANIM_TAG_MAGNIFYING_GLASS monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -20723,7 +19823,7 @@ Move_FORESIGHT: clearmonbg ANIM_DEF_PARTNER end -Move_DESTINY_BOND: +Move_DESTINY_BOND:: loadspritegfx ANIM_TAG_WHITE_SHADOW fadetobg BG_GHOST playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -20743,7 +19843,7 @@ Move_DESTINY_BOND: clearmonbg 5 end -Move_ENDURE: +Move_ENDURE:: loadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect @@ -20768,7 +19868,7 @@ EndureEffect: createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1 return -Move_CHARM: +Move_CHARM:: loadspritegfx ANIM_TAG_MAGENTA_HEART createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 @@ -20782,7 +19882,7 @@ Move_CHARM: waitforvisualfinish end -Move_ROLLOUT: +Move_ROLLOUT:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_ROCKS @@ -20799,7 +19899,7 @@ Move_ROLLOUT: blendoff end -Move_FALSE_SWIPE: +Move_FALSE_SWIPE:: loadspritegfx ANIM_TAG_SLASH_2 loadspritegfx ANIM_TAG_IMPACT createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2 @@ -20826,7 +19926,7 @@ Move_FALSE_SWIPE: playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_SWAGGER: +Move_SWAGGER:: loadspritegfx ANIM_TAG_BREATH loadspritegfx ANIM_TAG_ANGER createvisualtask AnimTask_GrowAndShrink, 2 @@ -20844,7 +19944,7 @@ Move_SWAGGER: waitforvisualfinish end -Move_MILK_DRINK: +Move_MILK_DRINK:: loadspritegfx ANIM_TAG_MILK_BOTTLE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR @@ -20865,7 +19965,7 @@ Move_MILK_DRINK: waitforvisualfinish end -Move_MAGNITUDE: +Move_MAGNITUDE:: createvisualtask AnimTask_IsPowerOver99, 2 waitforvisualfinish jumpreteq FALSE, MagnitudeRegular @@ -20887,7 +19987,7 @@ MagnitudeIntense: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd -Move_RAPID_SPIN: +Move_RAPID_SPIN:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_RAPID_SPIN monbg ANIM_ATTACKER @@ -20906,7 +20006,7 @@ Move_RAPID_SPIN: clearmonbg ANIM_ATTACKER end -Move_MOONLIGHT: +Move_MOONLIGHT:: loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR @@ -20933,7 +20033,7 @@ Move_MOONLIGHT: waitforvisualfinish end -Move_EXTREME_SPEED: +Move_EXTREME_SPEED:: loadspritegfx ANIM_TAG_SPEED_DUST loadspritegfx ANIM_TAG_IMPACT call SetHighSpeedBg @@ -20969,7 +20069,7 @@ Move_EXTREME_SPEED: delay 1 end -Move_UPROAR: +Move_UPROAR:: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_DEF_PARTNER @@ -20994,7 +20094,7 @@ Move_UPROAR: clearmonbg ANIM_DEF_PARTNER end -Move_HEAT_WAVE: +Move_HEAT_WAVE:: loadspritegfx ANIM_TAG_FLYING_DIRT createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE @@ -21019,7 +20119,7 @@ Move_HEAT_WAVE: end @ Also used by Hail weather -Move_HAIL: +Move_HAIL:: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK @@ -21030,7 +20130,7 @@ Move_HAIL: createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end -Move_TORMENT: +Move_TORMENT:: loadspritegfx ANIM_TAG_ANGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE createvisualtask AnimTask_TormentAttacker, 2 @@ -21043,7 +20143,7 @@ Move_TORMENT: playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_MEMENTO: +Move_MEMENTO:: setalpha 0, 16 delay 1 createvisualtask AnimTask_InitMementoShadow, 2 @@ -21067,14 +20167,14 @@ Move_MEMENTO: delay 1 end -Move_FACADE: +Move_FACADE:: loadspritegfx ANIM_TAG_SWEAT_DROP createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 3 createvisualtask AnimTask_FacadeColorBlend, 2, ANIM_ATTACKER, 72 loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 24, 3 end -Move_SMELLING_SALTS: +Move_SMELLING_SALTS:: loadspritegfx ANIM_TAG_TAG_HAND loadspritegfx ANIM_TAG_SMELLINGSALT_EFFECT createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 2 @@ -21089,7 +20189,7 @@ Move_SMELLING_SALTS: loopsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET, 16, 3 end -Move_FOLLOW_ME: +Move_FOLLOW_ME:: loadspritegfx ANIM_TAG_FINGER createsprite gFollowMeFingerSpriteTemplate, ANIM_ATTACKER, 2, 0 playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER @@ -21099,7 +20199,7 @@ Move_FOLLOW_ME: loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3 end -Move_CHARGE: +Move_CHARGE:: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY @@ -21134,7 +20234,7 @@ Move_CHARGE: blendoff end -Move_TAUNT: +Move_TAUNT:: loadspritegfx ANIM_TAG_FINGER_2 loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_ANGER @@ -21154,7 +20254,7 @@ Move_TAUNT: playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_HELPING_HAND: +Move_HELPING_HAND:: loadspritegfx ANIM_TAG_TAG_HAND createvisualtask AnimTask_HelpingHandAttackerMovement, 5 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 @@ -21171,7 +20271,7 @@ Move_HELPING_HAND: createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATK_PARTNER, RGB_YELLOW, 12, 1, 1 end -Move_ASSIST: +Move_ASSIST:: loadspritegfx ANIM_TAG_PAW_PRINT createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 delay 2 @@ -21188,7 +20288,7 @@ Move_ASSIST: playsewithpan SE_M_SCRATCH, 0 end -Move_SUPERPOWER: +Move_SUPERPOWER:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK @@ -21222,7 +20322,7 @@ Move_SUPERPOWER: delay 1 end -Move_RECYCLE: +Move_RECYCLE:: loadspritegfx ANIM_TAG_RECYCLE monbg ANIM_ATTACKER setalpha 0, 16 @@ -21238,7 +20338,7 @@ Move_RECYCLE: delay 1 end -Move_BRICK_BREAK: +Move_BRICK_BREAK:: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -21302,7 +20402,7 @@ BrickBreakShatteredWall: clearmonbg ANIM_TARGET end -Move_YAWN: +Move_YAWN:: loadspritegfx ANIM_TAG_PINK_CLOUD createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER @@ -21318,7 +20418,7 @@ Move_YAWN: playsewithpan SE_M_YAWN, SOUND_PAN_TARGET end -Move_ENDEAVOR: +Move_ENDEAVOR:: loadspritegfx ANIM_TAG_SWEAT_DROP loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 2 @@ -21334,7 +20434,7 @@ Move_ENDEAVOR: playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_ERUPTION: +Move_ERUPTION:: loadspritegfx ANIM_TAG_WARM_ROCK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED waitforvisualfinish @@ -21359,7 +20459,7 @@ Move_ERUPTION: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED end -Move_SKILL_SWAP: +Move_SKILL_SWAP:: loadspritegfx ANIM_TAG_BLUEGREEN_ORB call SetPsychicBackground createvisualtask AnimTask_SkillSwap, 3, ANIM_TARGET @@ -21372,7 +20472,7 @@ Move_SKILL_SWAP: call UnsetPsychicBg end -Move_IMPRISON: +Move_IMPRISON:: loadspritegfx ANIM_TAG_HOLLOW_ORB loadspritegfx ANIM_TAG_X_SIGN call SetPsychicBackground @@ -21389,7 +20489,7 @@ Move_IMPRISON: call UnsetPsychicBg end -Move_GRUDGE: +Move_GRUDGE:: loadspritegfx ANIM_TAG_PURPLE_FLAME monbg ANIM_ATTACKER splitbgprio_all @@ -21407,7 +20507,7 @@ Move_GRUDGE: clearmonbg ANIM_ATTACKER end -Move_CAMOUFLAGE: +Move_CAMOUFLAGE:: monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER setalpha 16, 0 @@ -21425,7 +20525,7 @@ Move_CAMOUFLAGE: clearmonbg ANIM_ATK_PARTNER end -Move_TAIL_GLOW: +Move_TAIL_GLOW:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 @@ -21441,7 +20541,7 @@ Move_TAIL_GLOW: delay 1 end -Move_LUSTER_PURGE: +Move_LUSTER_PURGE:: loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_IMPACT fadetobg BG_PSYCHIC @@ -21484,7 +20584,7 @@ Move_LUSTER_PURGE: call UnsetPsychicBg end -Move_MIST_BALL: +Move_MIST_BALL:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WHITE_FEATHER delay 0 @@ -21504,7 +20604,7 @@ Move_MIST_BALL: createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE end -Move_FEATHER_DANCE: +Move_FEATHER_DANCE:: loadspritegfx ANIM_TAG_WHITE_FEATHER monbg ANIM_DEF_PARTNER splitbgprio_all @@ -21526,7 +20626,7 @@ Move_FEATHER_DANCE: clearmonbg ANIM_DEF_PARTNER end -Move_TEETER_DANCE: +Move_TEETER_DANCE:: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_DUCK createvisualtask AnimTask_TeeterDanceMovement, 5 @@ -21546,7 +20646,7 @@ Move_TEETER_DANCE: playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER end -Move_MUD_SPORT: +Move_MUD_SPORT:: loadspritegfx ANIM_TAG_MUD_SAND createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 6 delay 24 @@ -21593,7 +20693,7 @@ Move_MUD_SPORT: waitplaysewithpan SE_M_BUBBLE2, 0, 10 end -Move_NEEDLE_ARM: +Move_NEEDLE_ARM:: loadspritegfx ANIM_TAG_GREEN_SPIKE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -21636,7 +20736,7 @@ Move_NEEDLE_ARM: createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -17, -17, 10 end -Move_SLACK_OFF: +Move_SLACK_OFF:: loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_SlackOffSquish, 2, ANIM_ATTACKER playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER @@ -21645,7 +20745,7 @@ Move_SLACK_OFF: waitforvisualfinish end -Move_CRUSH_CLAW: +Move_CRUSH_CLAW:: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_TORN_METAL @@ -21666,7 +20766,7 @@ Move_CRUSH_CLAW: clearmonbg ANIM_TARGET end -Move_AROMATHERAPY: +Move_AROMATHERAPY:: playsewithpan SE_M_PETAL_DANCE, 0 loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING @@ -21705,7 +20805,7 @@ Move_AROMATHERAPY: waitforvisualfinish end -Move_FAKE_TEARS: +Move_FAKE_TEARS:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_MUSIC_NOTES @@ -21728,7 +20828,7 @@ Move_FAKE_TEARS: waitforvisualfinish end -Move_AIR_CUTTER: +Move_AIR_CUTTER:: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT @@ -21749,7 +20849,7 @@ Move_AIR_CUTTER: delay 0 end -Move_ODOR_SLEUTH: +Move_ODOR_SLEUTH:: monbg ANIM_TARGET createvisualtask AnimTask_OdorSleuthMovement, 5 delay 24 @@ -21765,7 +20865,7 @@ Move_ODOR_SLEUTH: playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end -Move_GRASS_WHISTLE: +Move_GRASS_WHISTLE:: loadspritegfx ANIM_TAG_MUSIC_NOTES createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish @@ -21802,7 +20902,7 @@ Move_GRASS_WHISTLE: waitforvisualfinish end -Move_TICKLE: +Move_TICKLE:: loadspritegfx ANIM_TAG_EYE_SPARKLE createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish @@ -21820,7 +20920,7 @@ Move_TICKLE: waitforvisualfinish end -Move_WATER_SPOUT: +Move_WATER_SPOUT:: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -21837,7 +20937,7 @@ Move_WATER_SPOUT: blendoff end -Move_SHADOW_PUNCH: +Move_SHADOW_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET fadetobg BG_GHOST @@ -21858,7 +20958,7 @@ Move_SHADOW_PUNCH: waitbgfadein end -Move_EXTRASENSORY: +Move_EXTRASENSORY:: call SetPsychicBackground monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -21879,7 +20979,7 @@ Move_EXTRASENSORY: call UnsetPsychicBg end -Move_AERIAL_ACE: +Move_AERIAL_ACE:: loadspritegfx ANIM_TAG_CUT monbg ANIM_TARGET setalpha 12, 8 @@ -21896,20 +20996,20 @@ Move_AERIAL_ACE: blendoff end -Move_IRON_DEFENSE: +Move_IRON_DEFENSE:: loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end -Move_BLOCK: +Move_BLOCK:: loadspritegfx ANIM_TAG_X_SIGN createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET end -Move_HOWL: +Move_HOWL:: loadspritegfx ANIM_TAG_NOISE_LINE createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER delay 12 @@ -21919,7 +21019,7 @@ Move_HOWL: delay 30 end -Move_BULK_UP: +Move_BULK_UP:: loadspritegfx ANIM_TAG_BREATH createvisualtask AnimTask_GrowAndShrink, 2 playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER @@ -21929,7 +21029,7 @@ Move_BULK_UP: waitforvisualfinish end -Move_COVET: +Move_COVET:: loadspritegfx ANIM_TAG_MAGENTA_HEART loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 @@ -21946,7 +21046,7 @@ Move_COVET: loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_TARGET, 4, 3 end -Move_VOLT_TACKLE: +Move_VOLT_TACKLE:: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY @@ -21993,7 +21093,7 @@ Move_VOLT_TACKLE: waitforvisualfinish end -Move_WATER_SPORT: +Move_WATER_SPORT:: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB createvisualtask AnimTask_WaterSport, 5 delay 8 @@ -22006,7 +21106,7 @@ Move_WATER_SPORT: panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 end -Move_CALM_MIND: +Move_CALM_MIND:: loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_ATK_PARTNER createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 0, 16, RGB_BLACK @@ -22029,7 +21129,7 @@ Move_CALM_MIND: clearmonbg ANIM_ATK_PARTNER end -Move_LEAF_BLADE: +Move_LEAF_BLADE:: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_CROSS_IMPACT createvisualtask AnimTask_LeafBlade, 5 @@ -22054,7 +21154,7 @@ Move_LEAF_BLADE: blendoff end -Move_DRAGON_DANCE: +Move_DRAGON_DANCE:: loadspritegfx ANIM_TAG_HOLLOW_ORB monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER @@ -22078,7 +21178,7 @@ Move_DRAGON_DANCE: delay 1 end -Move_SHOCK_WAVE: +Move_SHOCK_WAVE:: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_SPARK @@ -22108,13 +21208,13 @@ Move_SHOCK_WAVE: blendoff end -Move_HARDEN: +Move_HARDEN:: loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK waitforvisualfinish end -Move_BELLY_DRUM: +Move_BELLY_DRUM:: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE createvisualtask AnimTask_MusicNotesRainbowBlend, 2 @@ -22157,7 +21257,7 @@ BellyDrumRight: createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 8, 2, 1 return -Move_MIND_READER: +Move_MIND_READER:: loadspritegfx ANIM_TAG_TEAL_ALERT loadspritegfx ANIM_TAG_OPENING_EYE loadspritegfx ANIM_TAG_ROUND_WHITE_HALO @@ -22197,7 +21297,7 @@ MindReaderEyeSpikeEffect: delay 2 return -Move_ICE_PUNCH: +Move_ICE_PUNCH:: monbg ANIM_DEF_PARTNER setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS @@ -22234,7 +21334,7 @@ Move_ICE_PUNCH: blendoff end -Move_REST: +Move_REST:: playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_LETTER_Z createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 @@ -22245,7 +21345,7 @@ Move_REST: waitforvisualfinish end -Move_CONFUSION: +Move_CONFUSION:: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 @@ -22262,7 +21362,7 @@ Move_CONFUSION: call UnsetPsychicBg end -Move_PSYCHIC: +Move_PSYCHIC:: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 @@ -22279,7 +21379,7 @@ Move_PSYCHIC: call UnsetPsychicBg end -Move_FUTURE_SIGHT: +Move_FUTURE_SIGHT:: goto FutureSight FutureSightContinue: waitforvisualfinish @@ -22299,7 +21399,7 @@ FutureSight: blendoff goto FutureSightContinue -Move_THUNDER: +Move_THUNDER:: loadspritegfx ANIM_TAG_LIGHTNING fadetobg BG_THUNDER waitbgfadeout @@ -22357,7 +21457,7 @@ Move_THUNDER: waitbgfadein end -Move_THUNDER_PUNCH: +Move_THUNDER_PUNCH:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_LIGHTNING @@ -22390,7 +21490,7 @@ Move_THUNDER_PUNCH: blendoff end -Move_SACRED_FIRE: +Move_SACRED_FIRE:: loadspritegfx ANIM_TAG_FIRE loadspritegfx ANIM_TAG_FIRE_PLUME loopsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER, 7, 5 @@ -22447,7 +21547,7 @@ Move_SACRED_FIRE: waitforvisualfinish end -Move_SCRATCH: +Move_SCRATCH:: loadspritegfx ANIM_TAG_SCRATCH monbg ANIM_TARGET setalpha 12, 8 @@ -22460,7 +21560,7 @@ Move_SCRATCH: waitforvisualfinish end -Move_DRAGON_BREATH: +Move_DRAGON_BREATH:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -22494,7 +21594,7 @@ Move_DRAGON_BREATH: clearmonbg ANIM_DEF_PARTNER end -Move_ROAR: +Move_ROAR:: loadspritegfx ANIM_TAG_NOISE_LINE monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER @@ -22522,7 +21622,7 @@ RoarEffect: createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 return -Move_GROWL: +Move_GROWL:: loadspritegfx ANIM_TAG_NOISE_LINE createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL call RoarEffect @@ -22534,7 +21634,7 @@ Move_GROWL: waitforvisualfinish end -Move_SNORE: +Move_SNORE:: loadspritegfx ANIM_TAG_SNORE_Z monbg ANIM_ATK_PARTNER setalpha 8, 8 @@ -22555,7 +21655,7 @@ SnoreEffect: createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 return -Move_LIGHT_SCREEN: +Move_LIGHT_SCREEN:: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_GREEN_LIGHT_WALL setalpha 0, 16 @@ -22582,7 +21682,7 @@ SpecialScreenSparkle: createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE return -Move_MIRROR_COAT: +Move_MIRROR_COAT:: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_RED_LIGHT_WALL setalpha 0, 16 @@ -22595,7 +21695,7 @@ Move_MIRROR_COAT: blendoff end -Move_REFLECT: +Move_REFLECT:: loadspritegfx ANIM_TAG_SPARKLE_4 loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL setalpha 0, 16 @@ -22612,7 +21712,7 @@ Move_REFLECT: blendoff end -Move_BARRIER: +Move_BARRIER:: loadspritegfx ANIM_TAG_GRAY_LIGHT_WALL setalpha 0, 16 waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 @@ -22622,7 +21722,7 @@ Move_BARRIER: blendoff end -Move_BUBBLE: +Move_BUBBLE:: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES monbg ANIM_TARGET @@ -22658,7 +21758,7 @@ Move_BUBBLE: blendoff end -Move_SMOG: +Move_SMOG:: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD monbg ANIM_DEF_PARTNER splitbgprio_all @@ -22685,7 +21785,7 @@ SmogCloud: delay 7 return -Move_FAINT_ATTACK: +Move_FEINT_ATTACK:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATTACKER fadetobg BG_DARK @@ -22721,7 +21821,7 @@ Move_FAINT_ATTACK: waitbgfadein end -Move_SAND_ATTACK: +Move_SAND_ATTACK:: loadspritegfx ANIM_TAG_MUD_SAND monbg ANIM_ATK_PARTNER splitbgprio ANIM_ATTACKER @@ -22749,7 +21849,7 @@ SandAttackDirt: delay 2 return -Move_MUD_SLAP: +Move_MUD_SLAP:: loadspritegfx ANIM_TAG_MUD_SAND playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 @@ -22772,7 +21872,7 @@ MudSlapMud: delay 2 return -Move_DRAGON_RAGE: +Move_DRAGON_RAGE:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_FIRE_PLUME playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER @@ -22804,7 +21904,7 @@ Move_DRAGON_RAGE: waitforvisualfinish end -Move_RAIN_DANCE: +Move_RAIN_DANCE:: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 4, RGB_BLACK @@ -22818,7 +21918,7 @@ Move_RAIN_DANCE: waitforvisualfinish end -Move_BITE: +Move_BITE:: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -22835,7 +21935,7 @@ Move_BITE: delay 1 end -Move_CRUNCH: +Move_CRUNCH:: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -22863,7 +21963,7 @@ Move_CRUNCH: waitbgfadein end -Move_CLAMP: +Move_CLAMP:: loadspritegfx ANIM_TAG_CLAMP loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -22880,7 +21980,7 @@ Move_CLAMP: waitforvisualfinish end -Move_ICE_BEAM: +Move_ICE_BEAM:: monbg ANIM_TARGET splitbgprio ANIM_TARGET setalpha 12, 8 @@ -22924,13 +22024,13 @@ IceBeamCreateCrystals: delay 1 return -Move_WITHDRAW: +Move_WITHDRAW:: playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER createvisualtask AnimTask_Withdraw, 5 waitforvisualfinish end -Move_AURORA_BEAM: +Move_AURORA_BEAM:: loadspritegfx ANIM_TAG_RAINBOW_RINGS fadetobg BG_AURORA waitbgfadein @@ -22966,7 +22066,7 @@ AuroraBeamCreateRings: delay 1 return -Move_SOLAR_BEAM: +Move_SOLAR_BEAM:: loadspritegfx ANIM_TAG_ORBS choosetwoturnanim SolarBeamSetUp, SolarBeamUnleash SolarBeamEnd: @@ -23055,7 +22155,7 @@ SolarBeamUnleash1: delay 4 return -Move_BLIZZARD: +Move_BLIZZARD:: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER call SetHighSpeedBg @@ -23095,7 +22195,7 @@ BlizzardIceCrystals: delay 3 return -Move_POWDER_SNOW: +Move_POWDER_SNOW:: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK @@ -23129,7 +22229,7 @@ PowderSnowSnowballs: delay 3 return -Move_HYDRO_PUMP: +Move_HYDRO_PUMP:: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -23176,7 +22276,7 @@ HydroPumpHitSplats: createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, ANIM_TARGET, 1 return -Move_SIGNAL_BEAM: +Move_SIGNAL_BEAM:: loadspritegfx ANIM_TAG_GLOWY_RED_ORB loadspritegfx ANIM_TAG_GLOWY_GREEN_ORB loadspritegfx ANIM_TAG_DUCK @@ -23217,7 +22317,7 @@ SignalBeamOrbs: delay 1 return -Move_ABSORB: +Move_ABSORB:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT @@ -23270,7 +22370,7 @@ AbsorbEffect: delay 4 return -Move_MEGA_DRAIN: +Move_MEGA_DRAIN:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT @@ -23331,7 +22431,7 @@ MegaDrainAbsorbEffect: delay 4 return -Move_GIGA_DRAIN: +Move_GIGA_DRAIN:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT @@ -23400,7 +22500,7 @@ GigaDrainAbsorbEffect: delay 4 return -Move_LEECH_LIFE: +Move_LEECH_LIFE:: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_ORBS delay 1 @@ -23430,7 +22530,7 @@ Move_LEECH_LIFE: blendoff end -Move_SYNTHESIS: +Move_SYNTHESIS:: loadspritegfx ANIM_TAG_SPARKLE_2 createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER @@ -23443,7 +22543,7 @@ Move_SYNTHESIS: waitforvisualfinish end -Move_TOXIC: +Move_TOXIC:: loadspritegfx ANIM_TAG_TOXIC_BUBBLE loadspritegfx ANIM_TAG_POISON_BUBBLE call ToxicBubbles @@ -23468,7 +22568,7 @@ ToxicBubbles: delay 15 return -Move_SLUDGE: +Move_SLUDGE:: loadspritegfx ANIM_TAG_POISON_BUBBLE playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 @@ -23479,7 +22579,7 @@ Move_SLUDGE: waitforvisualfinish end -Move_SLUDGE_BOMB: +Move_SLUDGE_BOMB:: loadspritegfx ANIM_TAG_POISON_BUBBLE call SludgeBombProjectile call SludgeBombProjectile @@ -23522,7 +22622,7 @@ SludgeBombProjectile: delay 3 return -Move_ACID: +Move_ACID:: loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_DEF_PARTNER createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0, TRUE @@ -23555,7 +22655,7 @@ Move_ACID: clearmonbg ANIM_DEF_PARTNER end -Move_BONEMERANG: +Move_BONEMERANG:: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23575,7 +22675,7 @@ Move_BONEMERANG: blendoff end -Move_BONE_CLUB: +Move_BONE_CLUB:: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23593,7 +22693,7 @@ Move_BONE_CLUB: blendoff end -Move_BONE_RUSH: +Move_BONE_RUSH:: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23609,7 +22709,7 @@ Move_BONE_RUSH: blendoff end -Move_SPIKES: +Move_SPIKES:: loadspritegfx ANIM_TAG_SPIKES monbg ANIM_DEF_PARTNER playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER @@ -23626,7 +22726,7 @@ Move_SPIKES: clearmonbg ANIM_DEF_PARTNER end -Move_MEGAHORN: +Move_MEGAHORN:: loadspritegfx ANIM_TAG_HORN_HIT_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23669,7 +22769,7 @@ MegahornInContest: createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto MegahornContinue -Move_GUST: +Move_GUST:: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23687,7 +22787,7 @@ Move_GUST: blendoff end -Move_WING_ATTACK: +Move_WING_ATTACK:: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23711,7 +22811,7 @@ Move_WING_ATTACK: blendoff end -Move_PECK: +Move_PECK:: loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 3, -768, ANIM_TARGET, 2 @@ -23719,7 +22819,7 @@ Move_PECK: waitforvisualfinish end -Move_AEROBLAST: +Move_AEROBLAST:: loadspritegfx ANIM_TAG_AIR_WAVE_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23760,7 +22860,7 @@ AeroblastBeam: delay 3 return -Move_WATER_GUN: +Move_WATER_GUN:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -23784,7 +22884,7 @@ Move_WATER_GUN: blendoff end -Move_CRABHAMMER: +Move_CRABHAMMER:: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -23821,14 +22921,14 @@ Move_CRABHAMMER: blendoff end -Move_SURF: +Move_SURF:: createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SURF delay 24 panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 waitforvisualfinish end -Move_FLAMETHROWER: +Move_FLAMETHROWER:: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -23862,7 +22962,7 @@ FlamethrowerCreateFlames: return @ Also used by Sandstorm weather -Move_SANDSTORM: +Move_SANDSTORM:: loadspritegfx ANIM_TAG_FLYING_DIRT playsewithpan SE_M_SANDSTORM, 0 createvisualtask AnimTask_LoadSandstormBackground, 5, FALSE @@ -23882,7 +22982,7 @@ Move_SANDSTORM: createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 0 end -Move_WHIRLPOOL: +Move_WHIRLPOOL:: loadspritegfx ANIM_TAG_WATER_ORB monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -23915,7 +23015,7 @@ WhirlpoolEffect: delay 2 return -Move_FLY: +Move_FLY:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim FlySetUp, FlyUnleash @@ -23942,7 +23042,7 @@ FlyUnleash: blendoff goto FlyEnd -Move_BOUNCE: +Move_BOUNCE:: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim BounceSetUp, BounceUnleash @@ -23968,7 +23068,7 @@ BounceUnleash: blendoff goto BounceEnd -Move_KARATE_CHOP: +Move_KARATE_CHOP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -23985,7 +23085,7 @@ Move_KARATE_CHOP: blendoff end -Move_CROSS_CHOP: +Move_CROSS_CHOP:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_CROSS_IMPACT monbg ANIM_DEF_PARTNER @@ -24003,7 +23103,7 @@ Move_CROSS_CHOP: blendoff end -Move_JUMP_KICK: +Move_JUMP_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24021,7 +23121,7 @@ Move_JUMP_KICK: blendoff end -Move_HIGH_JUMP_KICK: +Move_HIGH_JUMP_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24047,7 +23147,7 @@ Move_HIGH_JUMP_KICK: blendoff end -Move_DOUBLE_KICK: +Move_DOUBLE_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24060,7 +23160,7 @@ Move_DOUBLE_KICK: blendoff end -Move_TRIPLE_KICK: +Move_TRIPLE_KICK:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24093,7 +23193,7 @@ TripleKickCenter: createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto TripleKickContinue -Move_DYNAMIC_PUNCH: +Move_DYNAMIC_PUNCH:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_EXPLOSION @@ -24127,7 +23227,7 @@ Move_DYNAMIC_PUNCH: blendoff end -Move_COUNTER: +Move_COUNTER:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_DEF_PARTNER @@ -24159,7 +23259,7 @@ Move_COUNTER: blendoff end -Move_VITAL_THROW: +Move_VITAL_THROW:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -24182,7 +23282,7 @@ Move_VITAL_THROW: blendoff end -Move_ROCK_SMASH: +Move_ROCK_SMASH:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -24209,7 +23309,7 @@ Move_ROCK_SMASH: blendoff end -Move_SUBMISSION: +Move_SUBMISSION:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -24243,7 +23343,7 @@ SubmissionHit: return @ Also used by Sunny weather -Move_SUNNY_DAY: +Move_SUNNY_DAY:: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 @@ -24266,7 +23366,7 @@ SunnyDayLightRay: delay 6 return -Move_COTTON_SPORE: +Move_COTTON_SPORE:: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -24287,7 +23387,7 @@ CreateCottonSpores: delay 12 return -Move_SPORE: +Move_SPORE:: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -24311,7 +23411,7 @@ CreateSpore: delay 12 return -Move_PETAL_DANCE: +Move_PETAL_DANCE:: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24349,7 +23449,7 @@ Move_PETAL_DANCE: blendoff end -Move_RAZOR_LEAF: +Move_RAZOR_LEAF:: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT @@ -24389,10 +23489,10 @@ Move_RAZOR_LEAF: blendoff end -Move_NATURE_POWER: +Move_NATURE_POWER:: @ No actual animation, uses the animation of a move from sNaturePowerMoves instead -Move_ANCIENT_POWER: +Move_ANCIENT_POWER:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -24425,7 +23525,7 @@ Move_ANCIENT_POWER: blendoff end -Move_OCTAZOOKA: +Move_OCTAZOOKA:: loadspritegfx ANIM_TAG_GRAY_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_ATTACKER @@ -24442,7 +23542,7 @@ Move_OCTAZOOKA: waitforvisualfinish end -Move_MIST: +Move_MIST:: loadspritegfx ANIM_TAG_MIST_CLOUD monbg ANIM_ATK_PARTNER setalpha 12, 8 @@ -24466,7 +23566,7 @@ MistCloud: delay 7 return -Move_HAZE: +Move_HAZE:: waitforvisualfinish playsewithpan SE_M_HAZE, 0 createvisualtask AnimTask_HazeScrollingFog, 5 @@ -24476,7 +23576,7 @@ Move_HAZE: createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK end -Move_FIRE_PUNCH: +Move_FIRE_PUNCH:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT @@ -24512,7 +23612,7 @@ FireSpreadEffect: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 return -Move_LEER: +Move_LEER:: loadspritegfx ANIM_TAG_LEER monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER @@ -24531,7 +23631,7 @@ Move_LEER: waitforvisualfinish end -Move_DREAM_EATER: +Move_DREAM_EATER:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER @@ -24598,7 +23698,7 @@ DreamEaterAbsorb: delay 4 return -Move_POISON_GAS: +Move_POISON_GAS:: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD loadspritegfx ANIM_TAG_POISON_BUBBLE delay 0 @@ -24636,7 +23736,7 @@ Move_POISON_GAS: delay 0 end -Move_BIND: +Move_BIND:: createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, ANIM_ATTACKER goto BindWrap @@ -24651,11 +23751,11 @@ BindWrapSqueezeTarget: delay 16 return -Move_WRAP: +Move_WRAP:: createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 6, 4, 2, 4 goto BindWrap -Move_PSYBEAM: +Move_PSYBEAM:: loadspritegfx ANIM_TAG_GOLD_RING playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground @@ -24682,7 +23782,7 @@ PsybeamRings: delay 4 return -Move_HYPNOSIS: +Move_HYPNOSIS:: loadspritegfx ANIM_TAG_GOLD_RING call SetPsychicBackground call HypnosisRings @@ -24700,7 +23800,7 @@ HypnosisRings: delay 6 return -Move_PSYWAVE: +Move_PSYWAVE:: loadspritegfx ANIM_TAG_BLUE_RING playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground @@ -24724,7 +23824,7 @@ PsywaveRings: delay 4 return -Move_ZAP_CANNON: +Move_ZAP_CANNON:: loadspritegfx ANIM_TAG_BLACK_BALL_2 loadspritegfx ANIM_TAG_SPARK_2 playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER @@ -24745,7 +23845,7 @@ Move_ZAP_CANNON: waitforvisualfinish end -Move_STEEL_WING: +Move_STEEL_WING:: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 @@ -24772,7 +23872,7 @@ Move_STEEL_WING: blendoff end -Move_IRON_TAIL: +Move_IRON_TAIL:: loadspritegfx ANIM_TAG_IMPACT loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 1, 0, RGB_BLACK @@ -24791,7 +23891,7 @@ Move_IRON_TAIL: waitforvisualfinish end -Move_POISON_TAIL: +Move_POISON_TAIL:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 @@ -24812,7 +23912,7 @@ Move_POISON_TAIL: waitforvisualfinish end -Move_METAL_CLAW: +Move_METAL_CLAW:: loadspritegfx ANIM_TAG_CLAW_SLASH loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, RGB_BLACK @@ -24833,7 +23933,7 @@ Move_METAL_CLAW: waitforvisualfinish end -Move_NIGHT_SHADE: +Move_NIGHT_SHADE:: monbg ANIM_ATTACKER splitbgprio ANIM_ATTACKER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -24852,7 +23952,7 @@ Move_NIGHT_SHADE: waitbgfadein end -Move_EGG_BOMB: +Move_EGG_BOMB:: loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_LARGE_FRESH_EGG playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER @@ -24877,7 +23977,7 @@ Move_EGG_BOMB: waitforvisualfinish end -Move_SHADOW_BALL: +Move_SHADOW_BALL:: loadspritegfx ANIM_TAG_SHADOW_BALL fadetobg BG_GHOST waitbgfadein @@ -24892,7 +23992,7 @@ Move_SHADOW_BALL: waitbgfadein end -Move_LICK: +Move_LICK:: loadspritegfx ANIM_TAG_LICK delay 15 playsewithpan SE_M_LICK, SOUND_PAN_TARGET @@ -24901,7 +24001,7 @@ Move_LICK: waitforvisualfinish end -Move_FOCUS_ENERGY: +Move_FOCUS_ENERGY:: loadspritegfx ANIM_TAG_FOCUS_ENERGY playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect @@ -24914,7 +24014,7 @@ Move_FOCUS_ENERGY: waitforvisualfinish end -Move_BIDE: +Move_BIDE:: choosetwoturnanim BideSetUp, BideUnleash end BideSetUp: @@ -24954,7 +24054,7 @@ BideUnleash: blendoff end -Move_STRING_SHOT: +Move_STRING_SHOT:: loadspritegfx ANIM_TAG_STRING loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER @@ -24999,7 +24099,7 @@ StringShotThread: delay 1 return -Move_SPIDER_WEB: +Move_SPIDER_WEB:: loadspritegfx ANIM_TAG_SPIDER_WEB loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER @@ -25036,7 +24136,7 @@ SpiderWebThread: delay 1 return -Move_RAZOR_WIND: +Move_RAZOR_WIND:: choosetwoturnanim RazorWindSetUp, RazorWindUnleash RazorWindEnd: waitforvisualfinish @@ -25074,7 +24174,7 @@ RazorWindUnleash: blendoff goto RazorWindEnd -Move_DISABLE: +Move_DISABLE:: loadspritegfx ANIM_TAG_SPARKLE_4 monbg ANIM_TARGET splitbgprio ANIM_TARGET @@ -25090,7 +24190,7 @@ Move_DISABLE: blendoff end -Move_RECOVER: +Move_RECOVER:: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER @@ -25125,7 +24225,7 @@ RecoverAbsorbEffect: delay 3 return -Move_MIMIC: +Move_MIMIC:: loadspritegfx ANIM_TAG_ORBS setalpha 11, 5 monbg_static ANIM_DEF_PARTNER @@ -25144,7 +24244,7 @@ Move_MIMIC: blendoff end -Move_CONSTRICT: +Move_CONSTRICT:: loadspritegfx ANIM_TAG_TENDRILS loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 4 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2 @@ -25161,7 +24261,7 @@ Move_CONSTRICT: waitforvisualfinish end -Move_CURSE: +Move_CURSE:: choosetwoturnanim CurseGhost, CurseStats CurseGhost: loadspritegfx ANIM_TAG_NAIL @@ -25206,7 +24306,7 @@ CurseStats1: createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED return -Move_SOFT_BOILED: +Move_SOFT_BOILED:: loadspritegfx ANIM_TAG_BREAKING_EGG loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR @@ -25229,7 +24329,7 @@ Move_SOFT_BOILED: call HealingEffect2 end -Move_HEAL_BELL: +Move_HEAL_BELL:: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING @@ -25281,7 +24381,7 @@ HealBellRing: playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return -Move_FAKE_OUT: +Move_FAKE_OUT:: playsewithpan SE_M_FLATTER, 0 createvisualtask AnimTask_FakeOut, 5 waitforvisualfinish @@ -25292,7 +24392,7 @@ Move_FAKE_OUT: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE end -Move_SCARY_FACE: +Move_SCARY_FACE:: loadspritegfx ANIM_TAG_EYE_SPARKLE createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, (F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER), 3, 0, 16, RGB_BLACK playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER @@ -25310,7 +24410,7 @@ Move_SCARY_FACE: waitforvisualfinish end -Move_SWEET_KISS: +Move_SWEET_KISS:: loadspritegfx ANIM_TAG_RED_HEART loadspritegfx ANIM_TAG_ANGEL createsprite gAngelSpriteTemplate, ANIM_TARGET, 2, 16, -48 @@ -25329,7 +24429,7 @@ Move_SWEET_KISS: createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 end -Move_LOVELY_KISS: +Move_LOVELY_KISS:: loadspritegfx ANIM_TAG_PINK_HEART loadspritegfx ANIM_TAG_DEVIL createsprite gDevilSpriteTemplate, ANIM_TARGET, 2, 0, -24 @@ -25342,7 +24442,7 @@ Move_LOVELY_KISS: createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22 end -Move_FURY_SWIPES: +Move_FURY_SWIPES:: loadspritegfx ANIM_TAG_SWIPE createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 5 delay 4 @@ -25357,7 +24457,7 @@ Move_FURY_SWIPES: createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 end -Move_INGRAIN: +Move_INGRAIN:: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_ORBS createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 @@ -25387,7 +24487,7 @@ Move_INGRAIN: waitforvisualfinish end -Move_PRESENT: +Move_PRESENT:: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_IsHealingMove, 2 createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1 @@ -25447,14 +24547,14 @@ PresentHeal: call HealingEffect2 end -Move_BATON_PASS: +Move_BATON_PASS:: loadspritegfx ANIM_TAG_POKEBALL playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_BATTLERS), 1, 2, 0, 11, RGB(31, 22, 30) createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end -Move_PERISH_SONG: +Move_PERISH_SONG:: loadspritegfx ANIM_TAG_MUSIC_NOTES_2 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 0 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 1, 1, 16 @@ -25490,7 +24590,7 @@ Move_PERISH_SONG: waitforvisualfinish end -Move_SLEEP_TALK: +Move_SLEEP_TALK:: loadspritegfx ANIM_TAG_LETTER_Z createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, ANIM_ATTACKER delay 20 @@ -25517,7 +24617,7 @@ Move_SLEEP_TALK: waitforvisualfinish end -Move_HYPER_FANG: +Move_HYPER_FANG:: loadspritegfx ANIM_TAG_FANG_ATTACK playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 1 @@ -25548,7 +24648,7 @@ HyperFangInContest: fadetobg BG_IMPACT_CONTESTS goto HyperFangContinue -Move_TRI_ATTACK: +Move_TRI_ATTACK:: loadspritegfx ANIM_TAG_TRI_ATTACK_TRIANGLE createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER @@ -25597,7 +24697,7 @@ Move_TRI_ATTACK: waitforvisualfinish end -Move_WILL_O_WISP: +Move_WILL_O_WISP:: loadspritegfx ANIM_TAG_WISP_FIRE loadspritegfx ANIM_TAG_WISP_ORB monbg ANIM_DEF_PARTNER @@ -25628,7 +24728,7 @@ Move_WILL_O_WISP: clearmonbg ANIM_DEF_PARTNER end -Move_ENCORE: +Move_ENCORE:: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND createvisualtask AnimTask_CreateSpotlight, 2 @@ -25648,7 +24748,7 @@ Move_ENCORE: createvisualtask AnimTask_RemoveSpotlight, 2 end -Move_TRICK: +Move_TRICK:: loadspritegfx ANIM_TAG_ITEM_BAG loadspritegfx ANIM_TAG_SPEED_DUST createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 80 @@ -25676,7 +24776,7 @@ Move_TRICK: waitforvisualfinish end -Move_WISH: +Move_WISH:: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK @@ -25692,7 +24792,7 @@ Move_WISH: waitforvisualfinish end -Move_STOCKPILE: +Move_STOCKPILE:: loadspritegfx ANIM_TAG_GRAY_ORB playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE @@ -25721,7 +24821,7 @@ StockpileAbsorb: delay 1 return -Move_SPIT_UP: +Move_SPIT_UP:: loadspritegfx ANIM_TAG_RED_ORB_2 loadspritegfx ANIM_TAG_IMPACT playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER @@ -25768,7 +24868,7 @@ SpitUpStrongest: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 240 goto SpitUpContinue -Move_SWALLOW: +Move_SWALLOW:: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_BLUE_STAR playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER @@ -25804,7 +24904,7 @@ SwallowBest: call SwallowEffect goto SwallowContinue -Move_TRANSFORM: +Move_TRANSFORM:: monbg ANIM_ATTACKER playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 @@ -25813,7 +24913,7 @@ Move_TRANSFORM: clearmonbg ANIM_ATTACKER end -Move_MORNING_SUN: +Move_MORNING_SUN:: loadspritegfx ANIM_TAG_GREEN_STAR loadspritegfx ANIM_TAG_BLUE_STAR createvisualtask AnimTask_MorningSunLightBeam, 5 @@ -25845,7 +24945,7 @@ MorningSunStar: delay 5 return -Move_SWEET_SCENT: +Move_SWEET_SCENT:: loadspritegfx ANIM_TAG_PINK_PETAL playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_ATTACKER createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100 @@ -25883,7 +24983,7 @@ SweetScentEffect: delay 2 return -Move_HYPER_BEAM: +Move_HYPER_BEAM:: loadspritegfx ANIM_TAG_ORBS createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK waitforvisualfinish @@ -25933,7 +25033,7 @@ HyperBeamOrbs: delay 1 return -Move_FLATTER: +Move_FLATTER:: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_CONFETTI createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET @@ -25978,7 +25078,7 @@ CreateFlatterConfetti: createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, ANIM_TARGET return -Move_ROLE_PLAY: +Move_ROLE_PLAY:: monbg ANIM_ATK_PARTNER createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK @@ -25993,7 +25093,7 @@ Move_ROLE_PLAY: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK end -Move_REFRESH: +Move_REFRESH:: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER @@ -26007,7 +25107,7 @@ Move_REFRESH: createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end -Move_BLAZE_KICK: +Move_BLAZE_KICK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER @@ -26028,7 +25128,7 @@ Move_BLAZE_KICK: blendoff end -Move_HYPER_VOICE: +Move_HYPER_VOICE:: loadspritegfx ANIM_TAG_THIN_RING createvisualtask SoundTask_PlayCryWithEcho, 5, FALSE call HyperVoiceEffect @@ -26049,7 +25149,7 @@ HyperVoiceEffect: createvisualtask SoundTask_WaitForCry, 5 return -Move_SAND_TOMB: +Move_SAND_TOMB:: loadspritegfx ANIM_TAG_MUD_SAND createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 @@ -26077,7 +25177,7 @@ SandTombSwirlingDirt: delay 2 return -Move_SHEER_COLD: +Move_SHEER_COLD:: fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 @@ -26095,7 +25195,7 @@ Move_SHEER_COLD: waitbgfadein end -Move_ARM_THRUST: +Move_ARM_THRUST:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT splitbgprio ANIM_TARGET @@ -26122,13 +25222,13 @@ ArmThrustLeft: createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, ANIM_TARGET, 2 goto ArmThrustContinue -Move_MUDDY_WATER: +Move_MUDDY_WATER:: panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_MUDDY_WATER waitforvisualfinish end -Move_BULLET_SEED: +Move_BULLET_SEED:: loadspritegfx ANIM_TAG_SEED createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 @@ -26153,7 +25253,7 @@ Move_BULLET_SEED: waitforvisualfinish end -Move_DRAGON_CLAW: +Move_DRAGON_CLAW:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER @@ -26213,7 +25313,7 @@ DragonClawFireSpiral: return end -Move_MUD_SHOT: +Move_MUD_SHOT:: loadspritegfx ANIM_TAG_BROWN_ORB monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -26245,7 +25345,7 @@ MudShotOrbs: delay 2 return -Move_METEOR_MASH: +Move_METEOR_MASH:: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET @@ -26270,7 +25370,7 @@ Move_METEOR_MASH: waitforvisualfinish end -Move_REVENGE: +Move_REVENGE:: loadspritegfx ANIM_TAG_PURPLE_SCRATCH monbg ANIM_TARGET setalpha 12, 8 @@ -26299,7 +25399,7 @@ Move_REVENGE: blendoff end -Move_POISON_FANG: +Move_POISON_FANG:: loadspritegfx ANIM_TAG_FANG_ATTACK loadspritegfx ANIM_TAG_POISON_BUBBLE playsewithpan SE_M_BITE, SOUND_PAN_TARGET @@ -26312,12 +25412,12 @@ Move_POISON_FANG: waitforvisualfinish end -Move_SUBSTITUTE: +Move_SUBSTITUTE:: playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER createvisualtask AnimTask_MonToSubstitute, 2 end -Move_FRENZY_PLANT: +Move_FRENZY_PLANT:: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET @@ -26377,7 +25477,7 @@ Move_FRENZY_PLANT: blendoff end -Move_METAL_SOUND: +Move_METAL_SOUND:: loadspritegfx ANIM_TAG_METAL_SOUND_WAVES monbg ANIM_DEF_PARTNER splitbgprio_foes ANIM_TARGET @@ -26397,7 +25497,7 @@ MetalSoundRings: delay 2 return -Move_FOCUS_PUNCH: +Move_FOCUS_PUNCH:: goto FocusPunch FocusPunchEnd: waitforvisualfinish @@ -26445,7 +25545,7 @@ FocusPunchInContest: fadetobg BG_IMPACT_CONTESTS goto FocusPunchContinue -Move_RETURN: +Move_RETURN:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 @@ -26582,7 +25682,7 @@ ReturnStrongestHit: waitforvisualfinish return -Move_COSMIC_POWER: +Move_COSMIC_POWER:: loadspritegfx ANIM_TAG_SPARKLE_2 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_COSMIC_POWER, 0 playsewithpan SE_M_COSMIC_POWER, 0 @@ -26607,7 +25707,7 @@ Move_COSMIC_POWER: waitforvisualfinish end -Move_BLAST_BURN: +Move_BLAST_BURN:: loadspritegfx ANIM_TAG_FIRE_PLUME loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -26652,7 +25752,7 @@ Move_BLAST_BURN: blendoff end -Move_ROCK_TOMB: +Move_ROCK_TOMB:: loadspritegfx ANIM_TAG_X_SIGN loadspritegfx ANIM_TAG_ROCKS createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 @@ -26710,7 +25810,7 @@ UnsetBugBg: waitbgfadein return -Move_SILVER_WIND: +Move_SILVER_WIND:: loadspritegfx ANIM_TAG_SPARKLE_6 panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 playsewithpan SE_M_MORNING_SUN, 0 @@ -26749,12 +25849,12 @@ Move_SILVER_WIND: call UnsetBugBg end -Move_SNATCH: +Move_SNATCH:: playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6 end -Move_DIVE: +Move_DIVE:: loadspritegfx ANIM_TAG_SPLASH loadspritegfx ANIM_TAG_SWEAT_BEAD choosetwoturnanim DiveSetUp, DiveAttack @@ -26799,7 +25899,7 @@ DiveAttackWaterDroplets: createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 return -Move_ROCK_BLAST: +Move_ROCK_BLAST:: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -26817,7 +25917,7 @@ Move_ROCK_BLAST: waitforvisualfinish end -Move_OVERHEAT: +Move_OVERHEAT:: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -26898,7 +25998,7 @@ Move_OVERHEAT: waitforvisualfinish end -Move_HYDRO_CANNON: +Move_HYDRO_CANNON:: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER @@ -26940,7 +26040,7 @@ HydroCannonBeam: createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 return -Move_ASTONISH: +Move_ASTONISH:: loadspritegfx ANIM_TAG_SWEAT_BEAD playsewithpan SE_M_ENCORE, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -26953,7 +26053,7 @@ Move_ASTONISH: waitforvisualfinish end -Move_SEISMIC_TOSS: +Move_SEISMIC_TOSS:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS setarg 7, 0 @@ -27020,7 +26120,7 @@ SeismicTossRockScatter2: createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3 return -Move_MAGIC_COAT: +Move_MAGIC_COAT:: loadspritegfx ANIM_TAG_ORANGE_LIGHT_WALL setalpha 0, 16 waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 @@ -27030,7 +26130,7 @@ Move_MAGIC_COAT: blendoff end -Move_WATER_PULSE: +Move_WATER_PULSE:: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_BLUE_RING_2 monbg ANIM_TARGET @@ -27061,7 +26161,7 @@ Move_WATER_PULSE: clearmonbg ANIM_DEF_PARTNER end -Move_PSYCHO_BOOST: +Move_PSYCHO_BOOST:: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATK_PARTNER fadetobg BG_PSYCHIC @@ -27088,7 +26188,7 @@ Move_PSYCHO_BOOST: call UnsetPsychicBg end -Move_KNOCK_OFF: +Move_KNOCK_OFF:: loadspritegfx ANIM_TAG_SLAM_HIT_2 loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 @@ -27109,7 +26209,7 @@ Move_KNOCK_OFF: waitforvisualfinish end -Move_DOOM_DESIRE: +Move_DOOM_DESIRE:: createvisualtask GetIsDoomDesireHitTurn, 2 delay 1 monbg ANIM_ATK_PARTNER @@ -27128,7 +26228,7 @@ Move_DOOM_DESIRE: blendoff end -Move_SKY_UPPERCUT: +Move_SKY_UPPERCUT:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER splitbgprio ANIM_TARGET @@ -27172,7 +26272,7 @@ Move_SKY_UPPERCUT: waitbgfadein end -Move_SECRET_POWER: +Move_SECRET_POWER:: createvisualtask AnimTask_GetFieldTerrain, 5 jumpargeq 0, STATUS_FIELD_MISTY_TERRAIN, Move_FAIRY_WIND jumpargeq 0, STATUS_FIELD_GRASSY_TERRAIN, Move_NEEDLE_ARM @@ -27217,7 +26317,7 @@ Move_SECRET_POWER: goto Move_SLAM .endif -Move_TWISTER: +Move_TWISTER:: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS @@ -27263,7 +26363,7 @@ Move_TWISTER: blendoff end -Move_MAGICAL_LEAF: +Move_MAGICAL_LEAF:: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT @@ -27307,7 +26407,7 @@ Move_MAGICAL_LEAF: blendoff end -Move_ICE_BALL: +Move_ICE_BALL:: loadspritegfx ANIM_TAG_ICE_CHUNK loadspritegfx ANIM_TAG_ICE_CRYSTALS createvisualtask AnimTask_GetIceBallCounter, 5, 0 @@ -27397,7 +26497,7 @@ IceBallImpactShard: createsprite gIceBallImpactShardSpriteTemplate, ANIM_TARGET, 4, -12, -16 return -Move_WEATHER_BALL: +Move_WEATHER_BALL:: loadspritegfx ANIM_TAG_WEATHER_BALL createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER delay 8 @@ -27416,6 +26516,7 @@ Move_WEATHER_BALL: jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce jumpreteq ANIM_WEATHER_SNOW, WeatherBallIce + jumpreteq ANIM_WEATHER_FOG, WeatherBallNormal WeatherBallNormal: loadspritegfx ANIM_TAG_IMPACT createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 @@ -27492,7 +26593,7 @@ WeatherBallIce: waitforvisualfinish end -Move_COUNT: +Move_COUNT:: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 @@ -28162,6 +27263,9 @@ General_Hail: General_Snow: goto Move_SNOWSCAPE +General_Fog: + goto Move_HAZE + General_LeechSeedDrain: createvisualtask AnimTask_GetBattlersFromArg, 5 delay 0 @@ -28310,6 +27414,12 @@ General_WishHeal: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK end +General_SimpleHeal: + loadspritegfx ANIM_TAG_BLUE_STAR + call HealingEffect + waitforvisualfinish + end + General_IllusionOff: monbg ANIM_TARGET createvisualtask AnimTask_TransformMon, 2, 1, 0 @@ -28376,6 +27486,53 @@ MegaEvolutionParticles: delay 3 return +General_TeraCharge: + loadspritegfx ANIM_TAG_TERA_CRYSTAL + loadspritegfx ANIM_TAG_TERA_SHATTER + loadspritegfx ANIM_TAG_FOCUS_ENERGY + loadspritegfx ANIM_TAG_WHIP_HIT @green color + loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color + loadspritegfx ANIM_TAG_PAW_PRINT @yellow color + monbg ANIM_ATTACKER + setalpha 12, 8 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB_RED + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + call RainbowEndureEffect + waitforvisualfinish + playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER + createsprite gTeraCrystalSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 + delay 20 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA + waitforvisualfinish + createvisualtask AnimTask_TransformMon, 2, 1, 0 + call TeraChargeParticles + playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER + clearmonbg ANIM_ATK_PARTNER + blendoff + end + +TeraChargeParticles: + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 0, -5, 8 + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 1, 5, 9 + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 2, 5, -8 + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 2, -5, -8 + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 1, -10, 0 + createsprite gTeraCrystalSpreadSpriteTemplate, ANIM_TARGET, 0, 0, 10, 0 + return + +General_TeraActivate: + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA + createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 + waitforvisualfinish + createvisualtask SoundTask_PlayNormalCry, 0 + clearmonbg ANIM_ATK_PARTNER + blendoff + end + General_RestoreBg: restorebg waitbgfadein @@ -28835,7 +27992,7 @@ Move_BREAKNECK_BLITZ:: end -Move_ALL_OUT_PUMMELING: +Move_ALL_OUT_PUMMELING:: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_METEOR @@ -28925,7 +28082,7 @@ Move_ALL_OUT_PUMMELING: end -Move_SUPERSONIC_SKYSTRIKE: +Move_SUPERSONIC_SKYSTRIKE:: loadspritegfx ANIM_TAG_ROUND_SHADOW @ fly loadspritegfx ANIM_TAG_MUD_SAND @ dig loadspritegfx ANIM_TAG_FOCUS_ENERGY @ focus energy @@ -28998,7 +28155,7 @@ FinishSupersonicSkystrike: end -Move_ACID_DOWNPOUR: +Move_ACID_DOWNPOUR:: loadspritegfx ANIM_TAG_BLUE_ORB @ reversal loadspritegfx ANIM_TAG_POISON_JAB @ poison jab loadspritegfx ANIM_TAG_POISON_BUBBLE @ poison bubbles @@ -29084,7 +28241,7 @@ AcidDownpourFlareOnAttacker: return -Move_TECTONIC_RAGE: +Move_TECTONIC_RAGE:: loadspritegfx ANIM_TAG_DIRT_MOUND @ dig loadspritegfx ANIM_TAG_MUD_SAND @ rollout small rocks loadspritegfx ANIM_TAG_ROCKS @ rollout @@ -34392,163 +33549,163 @@ General_SetWeather:: jumpreteq 4, General_Hail end -Move_MAX_GUARD: +Move_MAX_GUARD:: createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PROTECT end -Move_MAX_STRIKE: -Move_G_MAX_REPLENISH: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +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: +Move_G_MAX_SNOOZE:: +Move_MAX_DARKNESS:: createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_DARK_PULSE end -Move_G_MAX_CUDDLE: +Move_G_MAX_CUDDLE:: createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_COVET end -Move_G_MAX_VOLT_CRASH: +Move_G_MAX_VOLT_CRASH:: createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_VOLT_TACKLE end -Move_G_MAX_GOLD_RUSH: +Move_G_MAX_GOLD_RUSH:: createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 waitforvisualfinish goto Move_PAY_DAY diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b349dea98548..3b38c0047886 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,4 +1,4 @@ -#include "config.h" +#include "config/general.h" #include "config/battle.h" #include "constants/global.h" #include "constants/battle.h" @@ -20,6 +20,101 @@ .section script_data, "aw", %progbits +BattleScript_DamageToQuarterTargetHP:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bichalfword gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + damagetoquartertargethp + goto BattleScript_HitFromAtkAnimation + +BattleScript_Terastallization:: + @ TODO: no string prints in S/V, but right now this helps with clarity + printstring STRINGID_PKMNSTORINGENERGY + playanimation BS_ATTACKER, B_ANIM_TERA_CHARGE + waitanimation + applyterastallization + playanimation BS_ATTACKER, B_ANIM_TERA_ACTIVATE + waitanimation + printstring STRINGID_PKMNTERASTALLIZEDINTO + waitmessage B_WAIT_TIME_LONG + end3 + +BattleScript_TeraFormChange:: + @ TODO: no string prints in S/V, but right now this helps with clarity + printstring STRINGID_PKMNSTORINGENERGY + handleformchange BS_ATTACKER, 0 + handleformchange BS_ATTACKER, 1 + playanimation BS_ATTACKER, B_ANIM_TERA_CHARGE + waitanimation + applyterastallization + playanimation BS_ATTACKER, B_ANIM_TERA_ACTIVATE + waitanimation + handleformchange BS_ATTACKER, 2 + printstring STRINGID_PKMNTERASTALLIZEDINTO + waitmessage B_WAIT_TIME_LONG + switchinabilities BS_ATTACKER + end3 + +BattleScript_LowerAtkSpAtk:: + jumpifstat BS_EFFECT_BATTLER, CMP_GREATER_THAN, STAT_ATK, MIN_STAT_STAGE, BattleScript_LowerAtkSpAtkDoAnim + jumpifstat BS_EFFECT_BATTLER, CMP_EQUAL, STAT_SPATK, MIN_STAT_STAGE, BattleScript_LowerAtkSpAtkEnd +BattleScript_LowerAtkSpAtkDoAnim:: + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_EFFECT_BATTLER, BIT_ATK | BIT_SPATK, STAT_CHANGE_NEGATIVE + setstatchanger STAT_ATK, 1, TRUE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_LowerAtkSpAtkTrySpAtk + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerAtkSpAtkTrySpAtk + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_LowerAtkSpAtkTrySpAtk:: + setstatchanger STAT_SPATK, 1, TRUE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_LowerAtkSpAtkEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerAtkSpAtkEnd + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_LowerAtkSpAtkEnd: + return + +BattleScript_EffectSpicyExtract:: + attackcanceler + jumpifsubstituteblocks BattleScript_ButItFailed + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE BattleScript_SpicyExtract_CheckShouldSkipAttackAnim + jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_SpicyExtract_CheckShouldSkipAttackAnim + goto BattleScript_ButItFailed +BattleScript_SpicyExtract_CheckShouldSkipAttackAnim: + jumpifbyte CMP_NOT_EQUAL, gBattleCommunication, 0, BattleScript_SpicyExtract_RaiseAtk + attackstring + ppreduce + bicword gHitMarker, HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT + goto BattleScript_SpicyExtract_SkipAttackAnim +BattleScript_SpicyExtract_RaiseAtk: + attackstring + ppreduce + attackanimation + waitanimation +BattleScript_SpicyExtract_SkipAttackAnim: + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_TARGET, BIT_ATK, STAT_CHANGE_BY_TWO + setstatchanger STAT_ATK, 2, FALSE + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_EffectSpicyExtractDefenseDown + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectSpicyExtractDefenseDown + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_EffectSpicyExtractDefenseDown: + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_TARGET, BIT_DEF, STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO + setstatchanger STAT_DEF, 2, TRUE + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_EffectSpicyExtract_End + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_EffectSpicyExtract_End + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_EffectSpicyExtract_End: + goto BattleScript_MoveEnd + BattleScript_EffectTidyUp:: attackcanceler attackstring @@ -160,7 +255,7 @@ BattleScript_EffectChillyReception:: 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 + setfieldweather ENUM_WEATHER_SNOW call BattleScript_MoveWeatherChangeRet goto BattleScript_MoveSwitch BattleScript_EffectChillyReceptionPlayAnimation: @@ -3084,6 +3179,7 @@ BattleScript_EffectStatDown: BattleScript_StatDownFromAttackString: attackstring ppreduce +BattleScript_EffectStatDownFromStatBuffChange: statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_StatDownEnd jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_StatDownDoAnim jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_FELL_EMPTY, BattleScript_StatDownEnd @@ -3094,6 +3190,7 @@ BattleScript_StatDownDoAnim:: waitanimation setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + bicword gHitMarker, HITMARKER_DISABLE_ANIMATION BattleScript_StatDownPrintString:: printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG @@ -3126,7 +3223,8 @@ BattleScript_MirrorArmorReflectStickyWeb: call BattleScript_AbilityPopUp setattackertostickywebuser jumpifbyteequal gBattlerAttacker, gBattlerTarget, BattleScript_StickyWebOnSwitchInEnd @ Sticky web user not on field -> no stat loss - goto BattleScript_MirrorArmorReflectStatLoss + call BattleScript_MirrorArmorReflectStatLoss + goto BattleScript_StickyWebOnSwitchInEnd BattleScript_StatDown:: playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 @@ -4199,7 +4297,7 @@ BattleScript_EffectSandstorm:: attackstring ppreduce call BattleScript_CheckPrimalWeather - setsandstorm + setfieldweather ENUM_WEATHER_SANDSTORM goto BattleScript_MoveWeatherChange BattleScript_EffectRollout:: @@ -4365,7 +4463,7 @@ BattleScript_EffectRainDance:: attackstring ppreduce call BattleScript_CheckPrimalWeather - setrain + setfieldweather ENUM_WEATHER_RAIN BattleScript_MoveWeatherChange:: attackanimation waitanimation @@ -4383,7 +4481,7 @@ BattleScript_EffectSunnyDay:: attackstring ppreduce call BattleScript_CheckPrimalWeather - setsunny + setfieldweather ENUM_WEATHER_SUN goto BattleScript_MoveWeatherChange BattleScript_ExtremelyHarshSunlightWasNotLessened: @@ -4740,7 +4838,7 @@ BattleScript_EffectHail:: attackstring ppreduce call BattleScript_CheckPrimalWeather - sethail + setfieldweather ENUM_WEATHER_HAIL goto BattleScript_MoveWeatherChange BattleScript_EffectTorment:: @@ -5363,6 +5461,7 @@ BattleScript_FaintAttacker:: BattleScript_FaintTarget:: tryillusionoff BS_TARGET tryactivategulpmissile + tryupdateleaderscresttracker playfaintcry BS_TARGET pause B_WAIT_TIME_LONG dofaintanimation BS_TARGET @@ -5679,7 +5778,7 @@ BattleScript_PrintFullBox:: BattleScript_ActionSwitch:: hpthresholds2 BS_ATTACKER - copybyte sSAVED_BATTLER, gBattlerAttacker + saveattacker printstring STRINGID_RETURNMON jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit setmultihit 1 @@ -5697,7 +5796,7 @@ BattleScript_DoSwitchOut:: switchoutabilities BS_ATTACKER updatedynamax waitstate - copybyte gBattlerAttacker, sSAVED_BATTLER + restoreattacker returnatktoball waitstate drawpartystatussummary BS_ATTACKER @@ -5799,33 +5898,22 @@ BattleScript_DamagingWeatherContinues:: waitmessage B_WAIT_TIME_LONG playanimation_var BS_ATTACKER, sB_ANIM_ARG1 setbyte gBattleCommunication, 0 -BattleScript_DamagingWeatherLoop:: - copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 - weatherdamage - jumpifword CMP_EQUAL, gBattleMoveDamage, 0, BattleScript_DamagingWeatherLoopIncrement - jumpifword CMP_COMMON_BITS gBattleMoveDamage, 1 << 31, BattleScript_DamagingWeatherHeal + end2 + +BattleScript_DamagingWeather:: printfromtable gSandStormHailDmgStringIds waitmessage B_WAIT_TIME_LONG effectivenesssound - hitanimation BS_ATTACKER - goto BattleScript_DamagingWeatherHpChange -BattleScript_DamagingWeatherHeal: - call BattleScript_AbilityPopUp + hitanimation BS_SCRIPTING + goto BattleScript_DoTurnDmg + +BattleScript_IceBodyHeal:: + call BattleScript_AbilityPopUpScripting + playanimation BS_SCRIPTING, B_ANIM_SIMPLE_HEAL + healthbarupdate BS_SCRIPTING + datahpupdate BS_SCRIPTING printstring STRINGID_ICEBODYHPGAIN waitmessage B_WAIT_TIME_LONG -BattleScript_DamagingWeatherHpChange: - orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - healthbarupdate BS_ATTACKER - datahpupdate BS_ATTACKER - tryfaintmon BS_ATTACKER - checkteamslost BattleScript_DamagingWeatherLoopIncrement -BattleScript_DamagingWeatherLoopIncrement:: - jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd - addbyte gBattleCommunication, 1 - jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop -BattleScript_DamagingWeatherContinuesEnd:: - bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE - call BattleScript_ActivateWeatherAbilities end2 BattleScript_SandStormHailSnowEnds:: @@ -5847,6 +5935,23 @@ BattleScript_SunlightFaded:: call BattleScript_ActivateWeatherAbilities end2 +BattleScript_FogContinues:: + printstring STRINGID_FOGISDEEP + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_FOG_CONTINUES + call BattleScript_ActivateWeatherAbilities + end2 + +BattleScript_FogEnded_Ret:: + printstring STRINGID_FOGLIFTED + waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities + return + +BattleScript_FogEnded:: + call BattleScript_FogEnded_Ret + end2 + BattleScript_OverworldStatusStarts:: printfromtable gStartingStatusStringIds waitmessage B_WAIT_TIME_LONG @@ -6231,6 +6336,7 @@ BattleScript_ToxicSpikesPoisoned:: BattleScript_StickyWebOnSwitchIn:: savetarget + saveattacker copybyte gBattlerTarget, sBATTLER setbyte sSTICKY_WEB_STAT_DROP, 1 printstring STRINGID_STICKYWEBSWITCHIN @@ -6249,6 +6355,7 @@ BattleScript_StickyWebOnSwitchInPrintStatMsg: waitmessage B_WAIT_TIME_LONG BattleScript_StickyWebOnSwitchInEnd: restoretarget + restoreattacker return BattleScript_PerishSongTakesLife:: @@ -6402,6 +6509,9 @@ BattleScript_PerishSongCountGoesDown:: waitmessage B_WAIT_TIME_LONG end2 +BattleScript_AllStatsUpZMove:: + printfromtable gZEffectStringIds + waitmessage B_WAIT_TIME_LONG BattleScript_AllStatsUp:: jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_AllStatsUpAtk jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, MAX_STAT_STAGE, BattleScript_AllStatsUpAtk @@ -6841,17 +6951,6 @@ BattleScript_OneHitKOMsg:: waitmessage B_WAIT_TIME_LONG return -BattleScript_SAtkDown2:: - setbyte sSTAT_ANIM_PLAYED, FALSE - playstatchangeanimation BS_ATTACKER, BIT_SPATK, STAT_CHANGE_CANT_PREVENT | STAT_CHANGE_NEGATIVE | STAT_CHANGE_BY_TWO - setstatchanger STAT_SPATK, 2, TRUE - statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | STAT_CHANGE_ALLOW_PTR, BattleScript_SAtkDown2End - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_SAtkDown2End - printfromtable gStatDownStringIds - waitmessage B_WAIT_TIME_LONG -BattleScript_SAtkDown2End:: - return - BattleScript_MoveEffectClearSmog:: printstring STRINGID_RESETSTARGETSSTATLEVELS waitmessage B_WAIT_TIME_LONG @@ -6871,13 +6970,13 @@ BattleScript_MegaEvolution:: BattleScript_MegaEvolutionAfterString: waitmessage B_WAIT_TIME_LONG setbyte gIsCriticalHit, 0 - handlemegaevo BS_ATTACKER, 0 - playanimation BS_ATTACKER, B_ANIM_MEGA_EVOLUTION + handlemegaevo BS_SCRIPTING, 0 + playanimation BS_SCRIPTING, B_ANIM_MEGA_EVOLUTION waitanimation - handlemegaevo BS_ATTACKER, 1 + handlemegaevo BS_SCRIPTING, 1 printstring STRINGID_MEGAEVOEVOLVED waitmessage B_WAIT_TIME_LONG - switchinabilities BS_ATTACKER + switchinabilities BS_SCRIPTING end3 BattleScript_WishMegaEvolution:: @@ -6914,13 +7013,13 @@ BattleScript_UltraBurst:: printstring STRINGID_ULTRABURSTREACTING waitmessage B_WAIT_TIME_LONG setbyte gIsCriticalHit, 0 - handleultraburst BS_ATTACKER, 0 - playanimation BS_ATTACKER, B_ANIM_ULTRA_BURST + handleultraburst BS_SCRIPTING, 0 + playanimation BS_SCRIPTING, B_ANIM_ULTRA_BURST waitanimation - handleultraburst BS_ATTACKER, 1 + handleultraburst BS_SCRIPTING, 1 printstring STRINGID_ULTRABURSTCOMPLETED waitmessage B_WAIT_TIME_LONG - switchinabilities BS_ATTACKER + switchinabilities BS_SCRIPTING end3 BattleScript_GulpMissileFormChange:: @@ -6948,6 +7047,29 @@ BattleScript_AttackerFormChangeEnd3NoPopup:: call BattleScript_AttackerFormChangeNoPopup end3 +BattleScript_AttackerFormChangeWithString:: + pause 5 + copybyte gBattlerAbility, gBattlerAttacker + call BattleScript_AbilityPopUp + flushtextbox +BattleScript_AttackerFormChangeWithStringNoPopup:: + handleformchange BS_ATTACKER, 0 + handleformchange BS_ATTACKER, 1 + playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE + waitanimation + handleformchange BS_ATTACKER, 2 + printstring STRINGID_PKMNTRANSFORMED + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_AttackerFormChangeWithStringEnd3:: + call BattleScript_AttackerFormChangeWithString + end3 + +BattleScript_AttackerFormChangeWithStringEnd3NoPopup:: + call BattleScript_AttackerFormChangeWithStringNoPopup + end3 + BattleScript_AttackerFormChangeMoveEffect:: waitmessage 1 handleformchange BS_ATTACKER, 0 @@ -7698,7 +7820,7 @@ BattleScript_TryIntimidateHoldEffectsRet: return BattleScript_IntimidateActivates:: - copybyte sSAVED_BATTLER, gBattlerTarget + savetarget .if B_ABILITY_POP_UP == TRUE showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG @@ -7735,7 +7857,7 @@ BattleScript_IntimidateLoopIncrement: jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop copybyte sBATTLER, gBattlerAttacker destroyabilitypopup - copybyte gBattlerTarget, sSAVED_BATTLER + restoretarget pause B_WAIT_TIME_MED end3 @@ -7768,7 +7890,7 @@ BattleScript_IntimidateInReverse: goto BattleScript_IntimidateLoopIncrement BattleScript_SupersweetSyrupActivates:: - copybyte sSAVED_BATTLER, gBattlerTarget + savetarget .if B_ABILITY_POP_UP == TRUE showabilitypopup BS_ATTACKER pause B_WAIT_TIME_LONG @@ -7800,7 +7922,7 @@ BattleScript_SupersweetSyrupLoopIncrement: jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_SupersweetSyrupLoop copybyte sBATTLER, gBattlerAttacker destroyabilitypopup - copybyte gBattlerTarget, sSAVED_BATTLER + restoretarget pause B_WAIT_TIME_MED end3 @@ -8251,6 +8373,13 @@ BattleScript_ProteanActivates:: waitmessage B_WAIT_TIME_LONG return +BattleScript_TeraShellDistortingTypeMatchups:: + pause B_WAIT_TIME_SHORTEST + call BattleScript_AbilityPopUp + printstring STRINGID_PKMNMADESHELLGLEAM + waitmessage B_WAIT_TIME_LONG + return + BattleScript_CursedBodyActivates:: call BattleScript_AbilityPopUp printstring STRINGID_CUSEDBODYDISABLED @@ -8435,7 +8564,10 @@ BattleScript_FriskMsg:: return BattleScript_FriskActivates:: - tryfriskmsg BS_ATTACKER + saveattacker + copybyte gBattlerAttacker, sBATTLER + tryfriskmsg BS_SCRIPTING + restoreattacker end3 BattleScript_ImposterActivates:: @@ -9153,6 +9285,25 @@ BattleScript_AnnounceAirLockCloudNine:: call BattleScript_ActivateWeatherAbilities end3 +BattleScript_ActivateTeraformZero:: + call BattleScript_AbilityPopUp + waitmessage B_WAIT_TIME_LONG + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_ANY, BattleScript_ActivateTeraformZero_RemoveWeather + jumpifhalfword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_ANY, BattleScript_ActivateTeraformZero_RemoveTerrain + goto BattleScript_ActivateTeraformZero_End +BattleScript_ActivateTeraformZero_RemoveWeather: + removeweather + printfromtable gWeatherEndsStringIds + waitmessage B_WAIT_TIME_LONG + jumpifhalfword CMP_NO_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_ANY, BattleScript_ActivateTeraformZero_End +BattleScript_ActivateTeraformZero_RemoveTerrain: + removeterrain + playanimation BS_ATTACKER, B_ANIM_RESTORE_BG + printfromtable gTerrainStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_ActivateTeraformZero_End: + end3 + BattleScript_QuickClawActivation:: flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT @@ -9405,19 +9556,19 @@ BattleScript_RedCardIngrain: printstring STRINGID_PKMNANCHOREDITSELF waitmessage B_WAIT_TIME_LONG removeitem BS_SCRIPTING - swapattackerwithtarget + restoretarget return BattleScript_RedCardSuctionCups: printstring STRINGID_PKMNANCHORSITSELFWITH waitmessage B_WAIT_TIME_LONG removeitem BS_SCRIPTING - swapattackerwithtarget + restoretarget return BattleScript_RedCardDynamaxed: printstring STRINGID_MOVEBLOCKEDBYDYNAMAX waitmessage B_WAIT_TIME_LONG removeitem BS_SCRIPTING - swapattackerwithtarget + restoretarget return BattleScript_EjectButtonActivates:: @@ -9636,27 +9787,11 @@ BattleScript_DamageNonTypesStarts:: 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 + hitanimation BS_SCRIPTING + goto BattleScript_DoTurnDmg BattleScript_EffectTryReducePP:: tryspiteppreduce BattleScript_MoveEnd @@ -9881,10 +10016,20 @@ BattleScript_BerserkGeneRet_End: removeitem BS_SCRIPTING end3 +BattleScript_BoosterEnergyEnd2:: + playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1 + call BattleScript_AbilityPopUpTarget + printstring STRINGID_BOOSTERENERGYACTIVATES + waitmessage B_WAIT_TIME_MED + printstring STRINGID_STATWASHEIGHTENED + waitmessage B_WAIT_TIME_MED + removeitem BS_SCRIPTING + end2 + BattleScript_EffectSnow:: attackcanceler attackstring ppreduce call BattleScript_CheckPrimalWeather - setsnow + setfieldweather ENUM_WEATHER_SNOW goto BattleScript_MoveWeatherChange diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index affaf31d6dde..f04e022bb54c 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,4 +1,4 @@ -#include "config.h" +#include "config/general.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" diff --git a/data/event_scripts.s b/data/event_scripts.s index 3bab06898331..07eafe1c35ea 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,4 +1,4 @@ -#include "config.h" +#include "config/general.h" #include "config/battle.h" #include "config/item.h" #include "constants/global.h" @@ -725,6 +725,7 @@ Common_EventScript_OutOfCenterPartyHeal:: playfanfare MUS_HEAL waitfanfare special HealPlayerParty + callnative UpdateFollowingPokemon fadescreen FADE_FROM_BLACK return @@ -1069,6 +1070,7 @@ EventScript_VsSeekerChargingDone:: .include "data/scripts/move_tutors.inc" .include "data/scripts/trainer_hill.inc" .include "data/scripts/test_signpost.inc" + .include "data/scripts/follower.inc" .include "data/text/frontier_brain.inc" .include "data/text/save.inc" .include "data/text/birch_speech.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 43f42225963a..baa0ddb5037f 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -76,6 +76,9 @@ gFieldEffectScriptPointers:: .4byte gFldEffScript_UseVsSeeker @ FLDEFF_USE_VS_SEEKER .4byte gFldEffScript_XIcon @ FLDEFF_X_ICON .4byte gFldEffScript_DoubleExclMarkIcon @ FLDEFF_DOUBLE_EXCL_MARK_ICON + .4byte gFieldEffectScript_TracksSlither @ FLDEFF_TRACKS_SLITHER + .4byte gFieldEffectScript_TracksBug @ FLDEFF_TRACKS_BUG + .4byte gFieldEffectScript_TracksSpot @ FLDEFF_TRACKS_SPOT gFieldEffectScript_ExclamationMarkIcon1:: field_eff_callnative FldEff_ExclamationMarkIcon @@ -359,3 +362,15 @@ gFldEffScript_XIcon:: gFldEffScript_DoubleExclMarkIcon:: field_eff_callnative FldEff_DoubleExclMarkIcon field_eff_end + +gFieldEffectScript_TracksBug:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksBug + field_eff_end + +gFieldEffectScript_TracksSpot:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSpot + field_eff_end + +gFieldEffectScript_TracksSlither:: + field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_TracksSlither + field_eff_end diff --git a/data/map_events.s b/data/map_events.s index cfa5799d37c0..729f9725dfef 100644 --- a/data/map_events.s +++ b/data/map_events.s @@ -12,10 +12,10 @@ #include "constants/trainer_hill.h" #include "constants/trainer_types.h" #include "constants/berry.h" +#include "constants/species.h" .include "asm/macros.inc" .include "constants/constants.inc" .section .rodata .include "data/maps/events.inc" - diff --git a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc index 5d9ee507ec85..61dcb79e999c 100644 --- a/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleArenaLobby/scripts.inc @@ -75,6 +75,7 @@ BattleFrontier_BattleArenaLobby_EventScript_SaveAfterChallenge:: frontier_checkairshow special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon arena_save 0 playse SE_SAVE waitse @@ -133,6 +134,7 @@ BattleFrontier_BattleArenaLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleArenaLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -194,6 +196,7 @@ BattleFrontier_BattleArenaLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleArenaLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleArenaLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleArenaLobby_Text_AwaitAnotherChallenge, MSGBOX_DEFAULT BattleFrontier_BattleArenaLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc index def903b1dfeb..6279cacf2718 100644 --- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc @@ -17,6 +17,7 @@ BattleFrontier_BattleDomeBattleRoom_MapScripts:: .byte 0 BattleFrontier_BattleDomeBattleRoom_OnTransition: + setflag FLAG_TEMP_HIDE_FOLLOWER dome_setopponentgfx frontier_get FRONTIER_DATA_BATTLE_NUM copyvar VAR_TEMP_F, VAR_RESULT diff --git a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc index 9801b19fe5b8..fb28b7ad756e 100644 --- a/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleDomeLobby/scripts.inc @@ -68,6 +68,7 @@ BattleFrontier_BattleDomeLobby_EventScript_GiveBattlePoints:: dome_set DOME_DATA_WIN_STREAK_ACTIVE, TRUE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon goto BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: @@ -82,6 +83,7 @@ BattleFrontier_BattleDomeLobby_EventScript_LostChallenge:: dome_set DOME_DATA_ATTEMPTED_CHALLENGE, TRUE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleDomeLobby_EventScript_AskRecordBattle:: dome_save 0 playse SE_SAVE @@ -160,6 +162,7 @@ BattleFrontier_BattleDomeLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleDomeLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -222,6 +225,7 @@ BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleDomeLobby_EventScript_LoadPartyCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleDomeLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleDomeLobby_Text_HopeToSeeYouAgain, MSGBOX_DEFAULT BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc index be9caa0cd7f2..5475fc146f4c 100644 --- a/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_GiveBattlePoints:: waitmessage frontier_checkairshow special LoadPlayerParty + callnative UpdateFollowingPokemon factory_save 0 playse SE_SAVE waitse @@ -71,6 +72,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_LostChallenge:: waitmessage frontier_checkairshow special LoadPlayerParty + callnative UpdateFollowingPokemon factory_set FACTORY_DATA_WIN_STREAK_ACTIVE, FALSE factory_save 0 playse SE_SAVE @@ -196,6 +198,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleFactoryLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleFactoryLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattleFactoryLobby_Text_LookForwardToNextVisit, MSGBOX_DEFAULT release diff --git a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc index e38ec6f7db72..33d3735884cb 100644 --- a/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePalaceLobby/scripts.inc @@ -76,6 +76,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_SaveAfterChallenge:: frontier_checkairshow special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon palace_save 0 playse SE_SAVE waitse @@ -151,6 +152,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePalaceLobby_Text_NowSelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -215,6 +217,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePalaceLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative LoadPlayerParty BattleFrontier_BattlePalaceLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePalaceLobby_Text_ReturnWhenFortified, MSGBOX_DEFAULT BattleFrontier_BattlePalaceLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc index faba545f0e94..b37100bc0ab3 100644 --- a/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePikeLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattlePikeLobby_EventScript_GiveBattlePoints:: pike_set PIKE_DATA_TOTAL_STREAKS, VAR_RESULT special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon pike_resethelditems message BattleFrontier_BattlePikeLobby_Text_ShallRecordResults waitmessage @@ -80,6 +81,7 @@ BattleFrontier_BattlePikeLobby_EventScript_LostChallenge:: pike_set PIKE_DATA_WIN_STREAK_ACTIVE, FALSE special LoadPlayerParty special HealPlayerParty + callnative UpdateFollowingPokemon pike_resethelditems pike_save 0 playse SE_SAVE @@ -119,6 +121,7 @@ BattleFrontier_BattlePikeLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePikeLobby_Text_PleaseChooseThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -183,6 +186,7 @@ BattleFrontier_BattlePikeLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePikeLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattlePikeLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePikeLobby_Text_LookForwardToSeeingYou, MSGBOX_DEFAULT BattleFrontier_BattlePikeLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc index 25f5dc2b0445..176841161644 100644 --- a/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattlePyramidLobby/scripts.inc @@ -59,6 +59,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_GiveBattlePoints:: special LoadPlayerParty pyramid_clearhelditems special HealPlayerParty + callnative UpdateFollowingPokemon message BattleFrontier_BattlePyramidLobby_Text_UsedBattleBagWillBeKept waitmessage playse SE_EXP_MAX @@ -83,6 +84,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_LostChallenge:: special LoadPlayerParty pyramid_clearhelditems special HealPlayerParty + callnative UpdateFollowingPokemon lockall message BattleFrontier_BattlePyramidLobby_Text_DisappointingHereIsBag waitmessage @@ -132,6 +134,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_TryEnterChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattlePyramidLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -196,6 +199,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattlePyramidLobby_EventScript_LoadPartyAndCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattlePyramidLobby_EventScript_CancelChallenge:: msgbox BattleFrontier_BattlePyramidLobby_Text_AwaitFutureChallenge, MSGBOX_DEFAULT BattleFrontier_BattlePyramidLobby_EventScript_EndCancelChallenge:: diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index a216055b5b72..d18e2629a145 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -95,6 +95,7 @@ BattleFrontier_BattleTowerLobby_EventScript_LookForwardToChallenge:: msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_CHALLENGE_STATUS, 255 + callnative UpdateFollowingPokemon release end @@ -114,6 +115,7 @@ BattleFrontier_BattleTowerLobby_EventScript_LostThanksForPlaying:: msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT closemessage setvar VAR_TEMP_CHALLENGE_STATUS, 255 + callnative UpdateFollowingPokemon release end @@ -200,6 +202,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterSinglesChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_SelectThreeMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_PARTY_SIZE @@ -263,6 +266,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterDoublesChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectFourMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_DOUBLES_PARTY_SIZE @@ -327,6 +331,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterMultisChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_MULTI_PARTY_SIZE @@ -390,6 +395,7 @@ BattleFrontier_BattleTowerLobby_EventScript_TryEnterLinkMultisChallenge:: frontier_set FRONTIER_DATA_LVL_MODE, VAR_RESULT msgbox BattleFrontier_BattleTowerLobby_Text_PleaseSelectTwoMons2, MSGBOX_DEFAULT fadescreen FADE_TO_BLACK + callnative RemoveFollowingPokemon call BattleFrontier_EventScript_GetLvlMode copyvar VAR_0x8004, VAR_RESULT setvar VAR_0x8005, FRONTIER_MULTI_PARTY_SIZE @@ -582,6 +588,7 @@ BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed:: BattleFrontier_BattleTowerLobby_EventScript_LoadPartyCancelChallenge:: special LoadPlayerParty + callnative UpdateFollowingPokemon BattleFrontier_BattleTowerLobby_EventScript_CancelChallenge:: special CloseLink msgbox BattleFrontier_BattleTowerLobby_Text_LookForwardToAnotherChallenge, MSGBOX_DEFAULT diff --git a/data/maps/FortreeCity_Gym/scripts.inc b/data/maps/FortreeCity_Gym/scripts.inc index bb1e32a93a2f..1c9a2756d47f 100644 --- a/data/maps/FortreeCity_Gym/scripts.inc +++ b/data/maps/FortreeCity_Gym/scripts.inc @@ -5,6 +5,7 @@ FortreeCity_Gym_MapScripts:: FortreeCity_Gym_OnTransition: special RotatingGate_InitPuzzle + setflag FLAG_TEMP_HIDE_FOLLOWER @ Hide follower bc of rotating gates end FortreeCity_Gym_OnWarp: diff --git a/data/maps/MossdeepCity_Gym/scripts.inc b/data/maps/MossdeepCity_Gym/scripts.inc index f2d08c13b163..a7b6aaa2bd44 100644 --- a/data/maps/MossdeepCity_Gym/scripts.inc +++ b/data/maps/MossdeepCity_Gym/scripts.inc @@ -1,9 +1,14 @@ MossdeepCity_Gym_MapScripts:: + map_script MAP_SCRIPT_ON_TRANSITION, MossdeepCity_Gym_OnTransition map_script MAP_SCRIPT_ON_LOAD, MossdeepCity_Gym_OnLoad .byte 0 @ NOTE: Mossdeep Gym was redesigned between R/S and E. Leftover (and now functionally unused) scripts are commented below +MossdeepCity_Gym_OnTransition: + setflag FLAG_TEMP_HIDE_FOLLOWER @ Hide follower since it can collide with moving statues + end + @ All the below checks are leftover from RS. FLAG_MOSSDEEP_GYM_SWITCH_X is never set MossdeepCity_Gym_OnLoad: goto_if_set FLAG_MOSSDEEP_GYM_SWITCH_1, MossdeepCity_Gym_EventScript_SetSwitch1Metatiles diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json index 4105dc1581ce..4c8d19e6f119 100644 --- a/data/maps/Route117/map.json +++ b/data/maps/Route117/map.json @@ -105,8 +105,8 @@ }, { "graphics_id": "OBJ_EVENT_GFX_PIKACHU", - "x": 49, - "y": 2, + "x": 51, + "y": 1, "elevation": 3, "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", "movement_range_x": 0, @@ -336,6 +336,32 @@ "trainer_sight_or_berry_tree_id": "4", "script": "Route117_EventScript_Melina", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_0", + "x": 47, + "y": 2, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "VAR_TEMP_0", + "script": "NULL", + "flag": "FLAG_TEMP_1" + }, + { + "graphics_id": "OBJ_EVENT_GFX_VAR_1", + "x": 49, + "y": 2, + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_LOOK_AROUND", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "VAR_TEMP_1", + "script": "NULL", + "flag": "FLAG_TEMP_2" } ], "warp_events": [ diff --git a/data/maps/Route117/scripts.inc b/data/maps/Route117/scripts.inc index 37d589ce316c..1a3920f13a8c 100644 --- a/data/maps/Route117/scripts.inc +++ b/data/maps/Route117/scripts.inc @@ -1,4 +1,6 @@ .set LOCALID_DAYCARE_MAN, 3 +.set LOCALID_DAYCARE_MON_0, 25 +.set LOCALID_DAYCARE_MON_1, 26 Route117_MapScripts:: map_script MAP_SCRIPT_ON_TRANSITION, Route117_OnTransition @@ -6,7 +8,41 @@ Route117_MapScripts:: Route117_OnTransition: call Route117_EventScript_TryMoveDayCareMan - end + @ set flags for OW daycare mons + setflag FLAG_TEMP_1 + setflag FLAG_TEMP_2 + getdaycaregfx VAR_OBJ_GFX_ID_0, VAR_OBJ_GFX_ID_1, VAR_TEMP_0, VAR_TEMP_1 + switch VAR_RESULT + case 2, Route117_EventScript_ShowDaycareMon1 + case 1, Route117_EventScript_ShowDaycareMon0 + end + +Route117_EventScript_ShowDaycareMon1: + @ set pokemon movement type based on compatibility + special SetDaycareCompatibilityString + call_if_eq VAR_RESULT, PARENTS_INCOMPATIBLE, Route117_EventScript_DaycareMonIncompatible + @ Don't do anything if PARENTS_LOW_COMPATIBILITY + call_if_eq VAR_RESULT, PARENTS_MED_COMPATIBILITY, Route117_EventScript_DaycareMonMedCompatibility + call_if_eq VAR_RESULT, PARENTS_MAX_COMPATIBILITY, Route117_EventScript_DaycareMonMaxCompatibility + clearflag FLAG_TEMP_2 +Route117_EventScript_ShowDaycareMon0: + clearflag FLAG_TEMP_1 + end + +Route117_EventScript_DaycareMonIncompatible: @ mons never face each other + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT + return + +Route117_EventScript_DaycareMonMedCompatibility: @ down and towards each other + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_FACE_DOWN_AND_LEFT + return + +Route117_EventScript_DaycareMonMaxCompatibility: @ facing; walk in place + setobjectmovementtype LOCALID_DAYCARE_MON_0, MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT + setobjectmovementtype LOCALID_DAYCARE_MON_1, MOVEMENT_TYPE_WALK_IN_PLACE_LEFT + return Route117_EventScript_TryMoveDayCareMan:: goto_if_unset FLAG_PENDING_DAYCARE_EGG, Route117_EventScript_StopMoveDayCareMan @@ -205,4 +241,3 @@ Route117_Text_RouteSignMauville: Route117_Text_DayCareSign: .string "POKéMON DAY CARE\n" .string "“Let us raise your POKéMON.”$" - diff --git a/data/maps/RusturfTunnel/scripts.inc b/data/maps/RusturfTunnel/scripts.inc index b806afe17f6d..47f7dd9b4dad 100644 --- a/data/maps/RusturfTunnel/scripts.inc +++ b/data/maps/RusturfTunnel/scripts.inc @@ -274,6 +274,7 @@ RusturfTunnel_EventScript_TunnelBlockagePos3:: RusturfTunnel_EventScript_AquaGruntBackUp:: lockall + setflag FLAG_SAFE_FOLLOWER_MOVEMENT msgbox RusturfTunnel_Text_ComeAndGetSome, MSGBOX_DEFAULT closemessage applymovement LOCALID_GRUNT, RusturfTunnel_Movement_GruntAndPeekoBackUp diff --git a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc index ae7141f39ed4..3565b958099d 100644 --- a/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc +++ b/data/maps/SlateportCity_OceanicMuseum_2F/scripts.inc @@ -79,6 +79,7 @@ SlateportCity_OceanicMuseum_2F_EventScript_CaptStern:: playfanfare MUS_HEAL waitfanfare special HealPlayerParty + callnative UpdateFollowingPokemon removeobject LOCALID_CAPT_STERN setflag FLAG_HIDE_ROUTE_110_TEAM_AQUA call_if_eq VAR_REGISTER_BIRCH_STATE, 0, SlateportCity_OceanicMuseum_2F_EventScript_ReadyRegisterBirch diff --git a/data/maps/SootopolisCity/scripts.inc b/data/maps/SootopolisCity/scripts.inc index 16e2d0325276..938fd96c6905 100644 --- a/data/maps/SootopolisCity/scripts.inc +++ b/data/maps/SootopolisCity/scripts.inc @@ -495,6 +495,7 @@ SootopolisCity_EventScript_RayquazaSceneFromPokeCenter:: removeobject LOCALID_GROUDON removeobject LOCALID_KYOGRE addobject LOCALID_RAYQUAZA + hideobjectat LOCALID_RAYQUAZA, MAP_SOOTOPOLIS_CITY setvar VAR_0x8004, TRUE special Script_DoRayquazaScene waitstate diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc index f407ac839bf2..efc63d656162 100644 --- a/data/maps/TrainerHill_Entrance/scripts.inc +++ b/data/maps/TrainerHill_Entrance/scripts.inc @@ -96,6 +96,7 @@ TrainerHill_Entrance_EventScript_PlayerExitChallenge:: waitmovement 0 setvar VAR_TRAINER_HILL_IS_ACTIVE, 0 special HealPlayerParty + callnative UpdateFollowingPokemon releaseall TrainerHill_Entrance_EventScript_EndExitChallenge:: end @@ -161,6 +162,7 @@ TrainerHill_Entrance_EventScript_ChooseChallenge:: setvar VAR_TRAINER_HILL_IS_ACTIVE, 1 setvar VAR_TEMP_5, 0 special HealPlayerParty + callnative UpdateFollowingPokemon msgbox TrainerHill_Entrance_Text_TimeProgessGetSetGo, MSGBOX_DEFAULT trainerhill_start releaseall diff --git a/data/maps/UnionRoom/scripts.inc b/data/maps/UnionRoom/scripts.inc index 8a9e7682a5d6..927c4061846a 100644 --- a/data/maps/UnionRoom/scripts.inc +++ b/data/maps/UnionRoom/scripts.inc @@ -26,6 +26,7 @@ UnionRoom_OnResume: end UnionRoom_OnTransition: + setflag FLAG_TEMP_HIDE_FOLLOWER end UnionRoom_EventScript_Player1:: @@ -106,4 +107,3 @@ UnionRoom_EventScript_Unused:: waitstate releaseall end - diff --git a/data/scripts/battle_pike.inc b/data/scripts/battle_pike.inc index 8ca7f5b1af9d..3393f808d3bb 100644 --- a/data/scripts/battle_pike.inc +++ b/data/scripts/battle_pike.inc @@ -133,6 +133,7 @@ BattleFrontier_BattlePikeThreePathRoom_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePikeRoomNormal_EventScript_SetEnteredRoom:: @@ -146,6 +147,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePikeRoomNormal_EventScript_Exit:: @@ -214,6 +216,7 @@ BattleFrontier_BattlePikeRoomWildMons_EventScript_NoTurningBack:: lockall msgbox BattleFrontier_BattlePike_Text_PathBlockedNoTurningBack, MSGBOX_DEFAULT closemessage + releaseall end BattleFrontier_BattlePike_EventScript_Retire:: diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc index cb053f2c401d..ce5c02a93537 100644 --- a/data/scripts/day_care.inc +++ b/data/scripts/day_care.inc @@ -103,6 +103,7 @@ Route117_PokemonDayCare_EventScript_GiveMonToRaise:: msgbox Route117_PokemonDayCare_Text_WellRaiseYourMon, MSGBOX_DEFAULT waitmoncry special StoreSelectedPokemonInDaycare + callnative UpdateFollowingPokemon incrementgamestat GAME_STAT_USED_DAYCARE specialvar VAR_RESULT, GetDaycareState goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, Route117_PokemonDayCare_EventScript_CanRaiseOneMore diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 09ae1404c4a4..12dc693fd02a 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -138,27 +138,35 @@ Debug_EventScript_Text_DefensiveIVs: .string "HP IVs: {STR_VAR_1}, DEF IVs: {STR_VAR_2}, SPDEF IVs: {STR_VAR_3}$" Debug_EventScript_Script_1:: + release end Debug_EventScript_Script_2:: + release end Debug_EventScript_Script_3:: + release end Debug_EventScript_Script_4:: + release end Debug_EventScript_Script_5:: + release end Debug_EventScript_Script_6:: + release end Debug_EventScript_Script_7:: + release end Debug_EventScript_Script_8:: + release end Debug_CheckSaveBlock:: @@ -431,4 +439,14 @@ Debug_EventScript_InflictStatus1_Text_Freeze: Debug_EventScript_InflictStatus1_Text_Frostbite: .string "Frostbite$" +Debug_EventScript_EWRAMCounters:: + callnative CheckEWRAMCounters + msgbox Debug_EventScript_EWRAMCounters_Text, MSGBOX_DEFAULT + release + end + +Debug_EventScript_EWRAMCounters_Text:: + .string "Follower Steps: {STR_VAR_1}.\n" + .string "Fishing Chain: {STR_VAR_2}.$" + .endif diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc index 3e99fc08e2d4..6e2450822c93 100644 --- a/data/scripts/field_move_scripts.inc +++ b/data/scripts/field_move_scripts.inc @@ -11,26 +11,25 @@ EventScript_CutTree:: goto_if_eq VAR_RESULT, NO, EventScript_CancelCut msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT closemessage +EventScript_CutTreeCommon: + isfollowerfieldmoveuser VAR_0x8004 + setfieldeffectargument 3, VAR_0x8004 @ skip pose if so dofieldeffect FLDEFF_USE_CUT_ON_TREE waitstate - goto EventScript_CutTreeDown - end - -@ Use cut from party menu -EventScript_UseCut:: - lockall - dofieldeffect FLDEFF_USE_CUT_ON_TREE - waitstate - goto EventScript_CutTreeDown - end - -EventScript_CutTreeDown:: +EventScript_CutTreeDown:: @ fallthrough + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove applymovement VAR_LAST_TALKED, Movement_CutTreeDown waitmovement 0 removeobject VAR_LAST_TALKED releaseall end +@ Use cut from party menu +EventScript_UseCut:: + lockall + goto EventScript_CutTreeCommon + Movement_CutTreeDown: cut_tree step_end @@ -57,6 +56,11 @@ Text_CantCut: .string "This tree looks like it can be\n" .string "CUT down!$" +@ Use rock smash from party menu +EventScript_UseRockSmash:: + lockall + goto EventScript_RockSmashCommon + @ Interact with smashable rock EventScript_RockSmash:: lockall @@ -70,20 +74,15 @@ EventScript_RockSmash:: goto_if_eq VAR_RESULT, NO, EventScript_CancelSmash msgbox Text_MonUsedFieldMove, MSGBOX_DEFAULT closemessage +EventScript_RockSmashCommon: + @ check if follower should use the field move + isfollowerfieldmoveuser VAR_0x8004 + setfieldeffectargument 3, VAR_0x8004 @ skip pose if so dofieldeffect FLDEFF_USE_ROCK_SMASH waitstate - goto EventScript_SmashRock - end - -@ Use rock smash from party menu -EventScript_UseRockSmash:: - lockall - dofieldeffect FLDEFF_USE_ROCK_SMASH - waitstate - goto EventScript_SmashRock - end - -EventScript_SmashRock:: +EventScript_SmashRock:: @ fallthrough + setflag FLAG_SAFE_FOLLOWER_MOVEMENT + call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove applymovement VAR_LAST_TALKED, Movement_SmashRock waitmovement 0 removeobject VAR_LAST_TALKED @@ -95,10 +94,117 @@ EventScript_SmashRock:: releaseall end +EventScript_FollowerFieldMove: + getdirectiontoface VAR_0x8005, OBJ_EVENT_ID_FOLLOWER, OBJ_EVENT_ID_PLAYER + specialvar VAR_0x8006, GetPlayerFacingDirection + goto_if_eq VAR_0x8005, DIR_NONE, EventScript_FollowerFieldMoveEnd + @ Swap follower and player + call EventScript_FollowerSwap + @ Face follower in direction and jump + switch VAR_0x8006 + case DIR_NORTH, EventScript_FollowerJumpNorth + case DIR_EAST, EventScript_FollowerJumpEast + case DIR_SOUTH, EventScript_FollowerJumpSouth + case DIR_WEST, EventScript_FollowerJumpWest +EventScript_FollowerFieldMoveEnd: + return + +EventScript_FollowerSwap: + switch VAR_0x8005 + case DIR_NORTH, EventScript_FollowerMoveNorth + case DIR_EAST, EventScript_FollowerMoveEast + case DIR_SOUTH, EventScript_FollowerMoveSouth + case DIR_WEST, EventScript_FollowerMoveWest + return + +EventScript_FollowerMoveNorth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkUp + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkDown + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceUp + waitmovement 0 + return + +EventScript_FollowerMoveEast: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkRight + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkLeft + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceRight + waitmovement 0 + return + +EventScript_FollowerMoveSouth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkDown + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkUp + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceDown + waitmovement 0 + return + +EventScript_FollowerMoveWest: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_WalkLeft + applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkRight + waitmovement 0 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_FaceLeft + waitmovement 0 + return + +EventScript_FollowerJumpNorth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpUp + waitmovement 0 + return + +EventScript_FollowerJumpEast: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpRight + waitmovement 0 + return + +EventScript_FollowerJumpSouth: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpDown + waitmovement 0 + return + +EventScript_FollowerJumpWest: + applymovement OBJ_EVENT_ID_FOLLOWER, Movement_JumpLeft + waitmovement 0 + return + EventScript_EndSmash:: releaseall end +Movement_WalkUp: + walk_up + step_end + +Movement_JumpUp: + jump_in_place_up + step_end + +Movement_WalkRight: + walk_right + step_end + +Movement_JumpRight: + jump_in_place_right + step_end + +Movement_WalkDown: + walk_down + step_end + +Movement_JumpDown: + jump_in_place_down + step_end + +Movement_WalkLeft: + walk_left + step_end + +Movement_JumpLeft: + jump_in_place_left + step_end + Movement_SmashRock: rock_smash_break step_end diff --git a/data/scripts/flash.inc b/data/scripts/flash.inc index dbfec2314dc2..5e8d7160a9e2 100644 --- a/data/scripts/flash.inc +++ b/data/scripts/flash.inc @@ -1,4 +1,5 @@ EventScript_UseFlash:: animateflash 1 setflashlevel 1 + releaseall end diff --git a/data/scripts/follower.inc b/data/scripts/follower.inc new file mode 100644 index 000000000000..0c3c4860983e --- /dev/null +++ b/data/scripts/follower.inc @@ -0,0 +1,648 @@ +gText_FollowerLovesYou:: + .string "{STR_VAR_1} is regarding you with\nadoration!$" + +gText_FollowerLostInThought:: + .string "{STR_VAR_1} seems lost in thought.$" + +gText_FollowerDefault:: + .string "ERROR 404: Script not found.$" + +gText_WantsToFly:: + .string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$" + +EventScript_Follower:: + lock + bufferlivemonnickname 0 + playfirstmoncry + getfolloweraction +EventScript_FollowerEnd:: + waitfieldeffect FLDEFF_EMOTE + release + end + +EventScript_FollowerLovesYou:: + applymovement OBJ_EVENT_ID_FOLLOWER, ContestHall_Movement_Heart + waitmovement OBJ_EVENT_ID_FOLLOWER + waitmoncry + msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT + return + +@ Message address must be loaded into bank 0 +EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault + faceplayer +EventScript_FollowerGenericSkipFace: + waitfieldeffect FLDEFF_EMOTE + message 0x0 + waitmessage + waitbuttonpress + return + +EventScript_FollowerJump:: + faceplayer + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerSplashMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + waitfieldeffect FLDEFF_EMOTE + message 0x0 + waitmessage + waitbuttonpress + return + +EnterPokeballMovement:: + enter_pokeball + step_end + +@ Movement scripts below, movements are defined in movement.inc + +FollowerSplashMovement:: + jump_in_place_down + delay_4 + jump_in_place_down + face_player + step_end + +FollowerShiverVerticalMovement: + lock_facing_direction + slide_left + slide_right + slide_right + slide_left + unlock_facing_direction + step_end + +FollowerShiverHorizontalMovement: + lock_facing_direction + slide_up + slide_down + slide_down + slide_up + unlock_facing_direction + step_end + +FollowerNostalgiaMovement: + face_away_player + lock_facing_direction + jump_in_place_down + jump_in_place_down + jump_in_place_down + unlock_facing_direction + face_player + lock_facing_direction + jump_in_place_down + unlock_facing_direction + step_end + +FollowerSkippingMovement: + lock_facing_direction + jump_in_place_down + delay_4 + jump_in_place_down + unlock_facing_direction + step_end + +FollowerJumpOnPlayerNorth: + jump_up + delay_4 + lock_facing_direction + walk_fast_down + unlock_facing_direction + step_end + +FollowerJumpOnPlayerSouth: + jump_down + delay_4 + lock_facing_direction + walk_fast_up + unlock_facing_direction + step_end + +FollowerJumpOnPlayerEast: + jump_right + delay_4 + lock_facing_direction + walk_fast_left + unlock_facing_direction + step_end + +FollowerJumpOnPlayerWest: + jump_left + delay_4 + lock_facing_direction + walk_fast_right + unlock_facing_direction + step_end + +FollowerCuddlingNorth: + face_left + lock_facing_direction + walk_up + walk_in_place_left + walk_in_place_left + unlock_facing_direction + walk_down + face_player + step_end + +FollowerCuddlingSouth: + face_right + lock_facing_direction + walk_down + walk_in_place_right + walk_in_place_right + unlock_facing_direction + walk_up + face_player + step_end + +FollowerCuddlingEast: + face_down + lock_facing_direction + walk_right + walk_in_place_down + walk_in_place_down + unlock_facing_direction + walk_left + face_player + step_end + +FollowerCuddlingWest: + face_down + lock_facing_direction + walk_left + walk_in_place_down + walk_in_place_down + unlock_facing_direction + walk_right + face_player + step_end + +FollowerGetCloserNorth: + walk_up + delay_16 + lock_facing_direction + walk_down + unlock_facing_direction + step_end + +FollowerGetCloserSouth: + walk_down + delay_16 + lock_facing_direction + walk_up + unlock_facing_direction + step_end + +FollowerGetCloserEast: + walk_right + delay_16 + lock_facing_direction + walk_left + unlock_facing_direction + step_end + +FollowerGetCloserWest: + walk_left + delay_16 + lock_facing_direction + walk_right + unlock_facing_direction + step_end + +FollowerPokeNorth: + walk_faster_up + delay_8 + lock_facing_direction + walk_faster_down + delay_4 + walk_faster_up + delay_4 + walk_faster_down + unlock_facing_direction + step_end + +FollowerPokeSouth: + walk_faster_down + delay_8 + lock_facing_direction + walk_faster_up + delay_4 + walk_faster_down + delay_4 + walk_faster_up + unlock_facing_direction + step_end + +FollowerPokeEast: + walk_faster_right + delay_8 + lock_facing_direction + walk_faster_left + delay_4 + walk_faster_right + delay_4 + walk_faster_left + unlock_facing_direction + step_end + +FollowerPokeWest: + walk_faster_left + delay_8 + lock_facing_direction + walk_faster_right + delay_4 + walk_faster_left + delay_4 + walk_faster_right + unlock_facing_direction + step_end + +FollowerLookAround: + face_away_player + delay_16 + delay_16 + face_left + delay_16 + delay_16 + face_up + delay_16 + delay_16 + face_down + delay_16 + delay_16 + step_end + +FollowerLookAway: + face_away_player + delay_16 + delay_16 + step_end + +FollowerLookAwayBark: + face_away_player + lock_facing_direction + jump_in_place_down + jump_in_place_down + unlock_facing_direction + step_end + +FollowerLookAwayPokeG: + face_away_player + lock_facing_direction + walk_in_place_down + walk_in_place_down + walk_in_place_down + unlock_facing_direction + step_end + +FollowerPokeGround: + lock_facing_direction + walk_in_place_down + walk_in_place_down + walk_in_place_down + unlock_facing_direction + step_end + +FollowerStartled: + face_away_player + lock_facing_direction + jump_in_place_down + unlock_facing_direction + face_player + step_end + +FollowerHopFast: + jump_in_place_up + jump_in_place_down + jump_in_place_left + jump_in_place_right + face_player + step_end + +FollowerDizzy: + walk_in_place_left + walk_in_place_fast_right + walk_in_place_slow_up + walk_in_place_fast_down + delay_4 + face_away_player + step_end + +FollowerLookAroundScared: + face_up + delay_16 + face_down + delay_16 + face_left + delay_16 + face_right + delay_16 + face_up + delay_16 + face_down + delay_16 + face_left + delay_16 + face_right + delay_16 + face_player + step_end + +FollowerDance: + lock_facing_direction + jump_in_place_up + unlock_facing_direction + walk_in_place_fast_up + walk_in_place_fast_left + walk_in_place_fast_down + walk_in_place_fast_right + walk_in_place_fast_up + walk_in_place_fast_left + walk_in_place_fast_down + walk_in_place_fast_right + jump_in_place_up + jump_in_place_down + jump_in_place_up + face_player + step_end + +@ Movement scripts + +EventScript_FollowerIsShivering:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq ShiverVertical + compare VAR_FACING, DIR_SOUTH + call_if_eq ShiverVertical + compare VAR_FACING, DIR_WEST + call_if_eq ShiverHorizontal + compare VAR_FACING, DIR_EAST + call_if_eq ShiverHorizontal + goto EventScript_FollowerGeneric + +ShiverVertical: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerShiverVerticalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +ShiverHorizontal: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerShiverHorizontalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerNostalgia:: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerNostalgiaMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGeneric + +EventScript_FollowerHopping:: + faceplayer + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerSkippingMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGeneric + +JumpOnN: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerJumpOnPlayerNorth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +JumpOnS: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerJumpOnPlayerSouth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +JumpOnE: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerJumpOnPlayerEast + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +JumpOnW: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerJumpOnPlayerWest + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerJumpOnPlayer:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq JumpOnS + compare VAR_FACING, DIR_SOUTH + call_if_eq JumpOnN + compare VAR_FACING, DIR_WEST + call_if_eq JumpOnE + compare VAR_FACING, DIR_EAST + call_if_eq JumpOnW + goto EventScript_FollowerGeneric + +CuddleN: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerCuddlingNorth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CuddleS: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerCuddlingSouth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CuddleE: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerCuddlingEast + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CuddleW: + applymovement OBJ_EVENT_ID_FOLLOWER, FollowerCuddlingWest + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerCuddling:: @ similar to Std_MsgboxDefault + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq CuddleS + compare VAR_FACING, DIR_SOUTH + call_if_eq CuddleN + compare VAR_FACING, DIR_WEST + call_if_eq CuddleE + compare VAR_FACING, DIR_EAST + call_if_eq CuddleW + goto EventScript_FollowerGeneric + +ShCuddleN: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerShiverVerticalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + applymovement OBJ_EVENT_ID_FOLLOWER FollowerCuddlingNorth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +ShCuddleS: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerShiverVerticalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + applymovement OBJ_EVENT_ID_FOLLOWER FollowerCuddlingSouth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +ShCuddleE: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerShiverHorizontalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + applymovement OBJ_EVENT_ID_FOLLOWER FollowerCuddlingEast + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +ShCuddleW: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerShiverHorizontalMovement + waitmovement OBJ_EVENT_ID_FOLLOWER + applymovement OBJ_EVENT_ID_FOLLOWER FollowerCuddlingWest + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerShiverCuddling:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq ShCuddleS + compare VAR_FACING, DIR_SOUTH + call_if_eq ShCuddleN + compare VAR_FACING, DIR_WEST + call_if_eq ShCuddleE + compare VAR_FACING, DIR_EAST + call_if_eq ShCuddleW + goto EventScript_FollowerGeneric + +CreepCloserN: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserNorth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CreepCloserS: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserSouth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CreepCloserE: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserEast + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +CreepCloserW: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserWest + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerGetCloser:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq CreepCloserS + compare VAR_FACING, DIR_SOUTH + call_if_eq CreepCloserN + compare VAR_FACING, DIR_WEST + call_if_eq CreepCloserE + compare VAR_FACING, DIR_EAST + call_if_eq CreepCloserW + goto EventScript_FollowerGeneric + +PokePlayerN: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserNorth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +PokePlayerS: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserSouth + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +PokePlayerE: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserEast + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +PokePlayerW: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerGetCloserWest + waitmovement OBJ_EVENT_ID_FOLLOWER + return + +EventScript_FollowerPokingPlayer:: + faceplayer + compare VAR_FACING, DIR_NORTH + call_if_eq PokePlayerS + compare VAR_FACING, DIR_SOUTH + call_if_eq PokePlayerN + compare VAR_FACING, DIR_WEST + call_if_eq PokePlayerE + compare VAR_FACING, DIR_EAST + call_if_eq PokePlayerW + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAround:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerLookAround + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGeneric + +EventScript_FollowerLookAway:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerLookAway + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAwayBark:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerLookAwayBark + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAwayPoke:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerLookAwayPokeG + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerPokeGround:: + faceplayer + applymovement OBJ_EVENT_ID_FOLLOWER FollowerPokeGround + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGeneric + +EventScript_FollowerStartled:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerStartled + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFastHopping:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerHopFast + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerDizzy:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerDizzy + waitmovement 0 + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerLookAroundScared:: + applymovement OBJ_EVENT_ID_FOLLOWER FollowerLookAroundScared + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGeneric + +EventScript_FollowerDance:: + faceplayer + applymovement OBJ_EVENT_ID_FOLLOWER FollowerDance + waitmovement 0 + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceUp:: + applymovement OBJ_EVENT_ID_FOLLOWER Common_Movement_FaceUp + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceResult:: @ Face towards direction in VAR_RESULT + switch VAR_RESULT + case DIR_SOUTH, EventScript_FollowerFaceDown + case DIR_NORTH, EventScript_FollowerFaceUp + case DIR_WEST, EventScript_FollowerFaceLeft + case DIR_EAST, EventScript_FollowerFaceRight + goto EventScript_FollowerGeneric + +EventScript_FollowerFaceDown: + applymovement OBJ_EVENT_ID_FOLLOWER Common_Movement_FaceDown + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceLeft: + applymovement OBJ_EVENT_ID_FOLLOWER Common_Movement_FaceLeft + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace + +EventScript_FollowerFaceRight: + applymovement OBJ_EVENT_ID_FOLLOWER Common_Movement_FaceRight + waitmovement OBJ_EVENT_ID_FOLLOWER + goto EventScript_FollowerGenericSkipFace diff --git a/data/scripts/movement.inc b/data/scripts/movement.inc index 383c014130cb..a5ebc0ae7fe2 100644 --- a/data/scripts/movement.inc +++ b/data/scripts/movement.inc @@ -1,3 +1,6 @@ +@ Starting from here, these movements are considered +@ 'safe' (won't put follower into a Pokeball) +Common_Movement_FollowerSafeStart:: Common_Movement_QuestionMark: emote_question_mark step_end @@ -68,6 +71,10 @@ Common_Movement_WalkInPlaceRight: walk_in_place_right step_end +@ End of follower-safe movements +Common_Movement_FollowerSafeEnd:: + step_end + Common_Movement_WalkUp6: walk_up walk_up diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index 64ccdfa77e55..5cef4587494e 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -33,13 +33,14 @@ EventScript_PkmnCenterNurse_IllTakeYourPkmn2:: return EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterLeft + applymovement VAR_0x800B, Movement_PkmnCenterNurse_Turn @ Changed from Common_Movement_WalkInPlaceFasterLeft to force the follower to enter their Poké Ball waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL waitfieldeffect FLDEFF_POKECENTER_HEAL applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown waitmovement 0 special HealPlayerParty + callnative UpdateFollowingPokemon return EventScript_PkmnCenterNurse_CheckTrainerHillAndUnionRoom:: @@ -120,3 +121,7 @@ Movement_PkmnCenterNurse_Bow: nurse_joy_bow delay_4 step_end + +Movement_PkmnCenterNurse_Turn: + walk_in_place_faster_left + step_end diff --git a/data/scripts/secret_base.inc b/data/scripts/secret_base.inc index 918a9d630127..9a6fd772537e 100644 --- a/data/scripts/secret_base.inc +++ b/data/scripts/secret_base.inc @@ -646,6 +646,7 @@ SecretBase_EventScript_BattleTrainer:: call_if_eq VAR_RESULT, B_OUTCOME_WON, SecretBase_EventScript_WonSecretBaseBattle call_if_eq VAR_RESULT, B_OUTCOME_LOST, SecretBase_EventScript_LostSecretBaseBattle special HealPlayerParty + callnative UpdateFollowingPokemon release end diff --git a/data/scripts/trainer_battle.inc b/data/scripts/trainer_battle.inc index bbbcaf3ba3e2..900e5da8f8a6 100644 --- a/data/scripts/trainer_battle.inc +++ b/data/scripts/trainer_battle.inc @@ -10,8 +10,10 @@ EventScript_TrainerApproach:: EventScript_TryDoNormalTrainerBattle:: lock faceplayer + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT specialvar VAR_RESULT, GetTrainerFlag goto_if_ne VAR_RESULT, FALSE, EventScript_NoNormalTrainerBattle special PlayTrainerEncounterMusic @@ -44,8 +46,10 @@ EventScript_NoDoubleTrainerBattle:: gotopostbattlescript EventScript_DoNoIntroTrainerBattle:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT special PlayTrainerEncounterMusic dotrainerbattle gotopostbattlescript @@ -93,8 +97,10 @@ EventScript_NotEnoughMonsForDoubleRematchBattle:: end EventScript_RevealTrainer:: + setflag FLAG_SAFE_FOLLOWER_MOVEMENT applymovement VAR_LAST_TALKED, Movement_RevealTrainer waitmovement 0 + clearflag FLAG_SAFE_FOLLOWER_MOVEMENT return Movement_RevealTrainer: diff --git a/dev_scripts/followers/extract_sprites.py b/dev_scripts/followers/extract_sprites.py new file mode 100644 index 000000000000..32e21aaa52a5 --- /dev/null +++ b/dev_scripts/followers/extract_sprites.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +import subprocess +import sys +from glob import glob + +import png + + +SPRITESHEETS = [('gen1.png', 15, 11, 1)] +output_dir = 'sprites' +index_to_name = {} +with open('names.txt', 'r') as f: + for line in f: + index, name = line.split(' ')[:2] + name = name.strip() + index_to_name[int(index)] = name.lower() +name_to_index = {v: k for k, v in index_to_name.items()} +PKMN_GRAPHICS = os.path.join('graphics', 'pokemon') + + +def extract_sprites(spritesheet): + path, width, height, offset = spritesheet + for y in range(height): + for x in range(width): + if x == 3 and y == 0 or x == 10 and y == 1: + continue + output_path = os.path.join(output_dir, f'{offset:03d}.png') + subprocess.run(['convert', '-extract', f'64x128+{x*(64+1)}+{y*(128+1)}', path, output_path], check=True) + offset += 1 + + +def stack_sprite(name, path): + joinp = os.path.join + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def canonicalize_names(): + for path in glob('overworld/**/*.png', recursive=True): + head, tail = os.path.split(path) + name, ext = os.path.splitext(tail) + try: + num = int(name) + except ValueError: + continue + new_name = f'{num:03d}' + new_path = os.path.join(head, new_name+ext) + os.rename(path, new_path) + print(path, '->', new_path) + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, _ = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + with open(output_file, 'wb') as f: + new_rows = [] + for row in rows: + new_rows.append([closest_color(src_palette[c], target_palette) if c else 0 for c in row]) + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +def paletteify(path, output_path=None): + output_path = output_path or path + joinp = os.path.join + _, tail = os.path.split(path) + species, _ = os.path.splitext(tail) + front = png.Reader(joinp(PKMN_GRAPHICS, species, 'anim_front.png')) + front.read() + target_palette = tuple(c[:3] for c in front.palette()) + r, g, b = target_palette[0] + color = f'rgb({r},{g},{b})' + # Strip alpha color + subprocess.run(['convert', path, '-background', color, '-alpha', 'remove', output_path], check=True) + apply_palette(joinp(PKMN_GRAPHICS, species, 'anim_front.png'), output_path, output_path) + +# Sprites from https://veekun.com/dex/downloads + +if __name__ == '__main__': + args = sys.argv[1:] + if args: + paletteify(args[0]) + else: + for path in sorted(glob('overworld/*.png')): + _, tail = os.path.split(path) + name, _ = os.path.splitext(tail) + output_path = os.path.join('graphics/object_events/pics/pokemon', f'{name}.png') + try: + paletteify(path, output_path) + except Exception as e: + print(name, e.__class__.__name__, e, file=sys.stderr) diff --git a/dev_scripts/followers/follower_emotions.py b/dev_scripts/followers/follower_emotions.py new file mode 100644 index 000000000000..522634803102 --- /dev/null +++ b/dev_scripts/followers/follower_emotions.py @@ -0,0 +1,50 @@ +""" Processes & outputs follower emotion messages """ +import sys +import re +import textwrap + +blank_regex = re.compile(r'\(?_+\)?') + + +# Converts a series of message lines to a better format +def convert_messages(infile, outfile='emotions.txt'): + with open(infile, 'r') as f_in, open(outfile, 'w') as f_out: + for line in f_in: + line = line.rstrip('\n') + if line and line[0] == '-': + line = line[1:] + line = line.lstrip() + if not line: + continue + line = blank_regex.sub('{STR_VAR_1}', line) + if line[-1] not in ('.', '?', '!', ':'): + line += '.' + print(line) + f_out.write('\n' + line) + +# Prepares a string for field-message display, performing line-wrapping, etc +# Does not add a terminator, as this is done by _("") +def prepare_string(s): + lines = textwrap.wrap(s, width=36) # Width of message window + s = lines[0] + for i, line in enumerate(lines[1:]): + ending = r'\p' if i % 2 else r'\n' + s += ending + line + return s + + +# Exports up to n messages in C format to outfile +def export_messages(infile, outfile, n=None, indent=0, start=0): + with open(infile, 'r') as f_in: + lines = f_in.readlines() + if n is not None: + lines = lines[:n] + with open(outfile, 'w') as f_out: + codelines = [' '*indent + f'static const u8 sCondMsg{start+i:02d}[] = _("{prepare_string(s)}");' for i, s in enumerate(lines)] + f_out.write('\n'.join(codelines)) + print(f'{len(lines)} lines written') + return len(lines) + + +if __name__ == '__main__': + export_messages('emotions.txt', 'emotions.h', n=1, start=7) diff --git a/dev_scripts/followers/front_palette.py b/dev_scripts/followers/front_palette.py new file mode 100644 index 000000000000..e16521dbc02b --- /dev/null +++ b/dev_scripts/followers/front_palette.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +""" Extract sprites from HGSS follower spritesheets. """ +import os.path +from os.path import join as joinp +import subprocess +import sys +from glob import glob + +import png +from tqdm import tqdm + +import shutil + +def stack_sprite(name, path): + frames = [joinp(path, 'down', name), joinp(path, 'down', 'frame2', name), + joinp(path, 'up', name), joinp(path, 'up', 'frame2', name), + joinp(path, 'left', name), joinp(path, 'left', 'frame2', name)] + output = joinp(path, name) + subprocess.run(['convert'] + frames + ['+append', output], check=True) + print(f'Stacked {output}') + +def closest_color(c, palette): + min_d = float('inf') + best = 0 + r1, g1, b1 = c + for i, (r2, g2, b2) in enumerate(palette[1:], 1): + # Color diff from https://stackoverflow.com/questions/1847092/given-an-rgb-value-what-would-be-the-best-way-to-find-the-closest-match-in-the-d + d = ((r2-r1)*0.30)**2 + ((g2-g1)*0.59)**2 + ((b2-b1)*0.11)**2 + if d < min_d: + min_d = d + best = i + return best + +def apply_palette(palette_file, input_file, output_file): # Apply one file's palette to another + plt = png.Reader(palette_file) + plt.read() + target_palette = tuple(c[:3] for c in plt.palette()) + inp = png.Reader(input_file) + w, h, rows, info = inp.read() + src_palette = tuple(c[:3] for c in inp.palette()) + new_rows = [[closest_color(src_palette[c][:3], target_palette) if c else 0 for c in row] for row in rows] + with open(output_file, 'wb') as f: + w = png.Writer(width=w, height=h, bitdepth=4, palette=target_palette) + w.write(f, new_rows) + +# Sprites from https://veekun.com/dex/downloads + +def apply_front_palettes(ow_dir, project_root=''): + mon_graphics = joinp(project_root, 'graphics', 'pokemon') + for x in os.walk(ow_dir): + current_dir = x[0] + sub_dir = current_dir[len(ow_dir) + 1:1000] + t = tqdm(sorted(glob(joinp(current_dir, '*.png')))) + spaces = 0 + for path in t: + name, _ = os.path.splitext(os.path.basename(path)) + name = joinp(sub_dir, name) + # old_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') + # new_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name, 'follower.png') + # os.mkdir(joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', name)) + # shutil.move(old_path, new_path) + spaces = min(max(len(name), spaces), 10) + t.set_description(name + ' '*(spaces-len(name))) + output_path = joinp(project_root, 'graphics', 'object_events', 'pics', 'pokemon', f'{name}.png') + palette_path = joinp(mon_graphics, name, 'anim_front.png') + try: + apply_palette(palette_path, path, output_path) + except Exception as e: + palette_path = joinp(mon_graphics, name, 'front.png') + try: + apply_palette(palette_path, path, output_path) + except Exception as e2: + t.write(f'{name}: {e2.__class__.__name__}: {e2}', file=sys.stderr) + + +if __name__ == '__main__': + apply_front_palettes('graphics/object_events/pics/pokemon') diff --git a/dev_scripts/followers/palette.py b/dev_scripts/followers/palette.py new file mode 100644 index 000000000000..5fbcb48d4b53 --- /dev/null +++ b/dev_scripts/followers/palette.py @@ -0,0 +1,26 @@ +#!/usr/bin/python3 +""" Extract a GBA-compatible palette from a PNG. """ +import sys +import os.path +import png + +PAL_PRELUDE = 'JASC-PAL\n0100\n' + + +def extract_palette(path): + r = png.Reader(path) + r.read() + root, _ = os.path.splitext(path) + out_path = root + '.pal' + with open(out_path, 'w', newline='\r\n') as f: + f.write(PAL_PRELUDE) + colors = r.palette() + if len(colors) < 16: + colors += [(0, 0, 0) for _ in range(16-len(colors))] + f.write(f'{len(colors)}\n') + for r, g, b in colors: + f.write(f'{r} {g} {b}\n') + + +if __name__ == '__main__': + extract_palette(*sys.argv[1:]) diff --git a/dev_scripts/followers/rename.sh b/dev_scripts/followers/rename.sh new file mode 100644 index 000000000000..f8b36bb4950e --- /dev/null +++ b/dev_scripts/followers/rename.sh @@ -0,0 +1,11 @@ +#!/bin/bash +lalala1="graphics/object_events/pics/pokemon/" +lalala2="a2" +for file in graphics/object_events/pics/pokemon/*.png; do + name=${file##*/} + base=${name%.png} + #echo "${file}" + #echo "${base}" + echo "graphics/pokemon/${base}/follower.png" + mv -- "$file" "graphics/pokemon/${base}/follower.png" +done diff --git a/dev_scripts/followers/rename_files_of_same_name.py b/dev_scripts/followers/rename_files_of_same_name.py new file mode 100644 index 000000000000..5c963b6a804a --- /dev/null +++ b/dev_scripts/followers/rename_files_of_same_name.py @@ -0,0 +1,24 @@ +import glob +import re +import json +import os +import subprocess + +# THIS IS A TEMPORARY SCRIPT MADE TO RENAME FILES WITH THE "FOLLOWER" NAME TO "OVERWORLD", +# AS THESE GRAPHICS CAN ALSO BE USED OUTSIDE THE FOLLOWER FEATURE. +# +# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. +# - AsparagusEduardo + +def rename_files(dir, old, new): + for root, dirs, files in os.walk(dir): + for name in files: + if name.endswith(old): + originalName = os.path.join(root, name) + newName = originalName.replace(old, new) + print(originalName + " -> " + newName) + os.rename(originalName, newName) + +rename_files("graphics/pokemon", 'follower.png', "overworld.png") +rename_files("graphics/pokemon", 'follow_normal.pal', "overworld_normal.pal") +rename_files("graphics/pokemon", 'follow_shiny.pal', "overworld_shiny.pal") diff --git a/dev_scripts/followers/rename_to_graphics_pokemon.py b/dev_scripts/followers/rename_to_graphics_pokemon.py new file mode 100644 index 000000000000..bad1758b0c5e --- /dev/null +++ b/dev_scripts/followers/rename_to_graphics_pokemon.py @@ -0,0 +1,64 @@ +import glob +import re +import json +import os +import subprocess + +# THIS IS A TEMPORARY SCRIPT MADE TO MOVE EXISTING FOLLOWER GRAPHICS FROM A SINGLE DIRECTORY. +# IT TAKES FOLLOWER GRAPHICS FROM a 'followers' FOLDER IN THE ROOT FOLDER AND MOVES THEM BASED ON THEIR NAME. +# EG. 'followers/bulbasaur.png' WILL BE MOVED to 'graphics/pokemon/bulbasaur/follower.png'. +# +# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED. +# - AsparagusEduardo + +def rellocate_follower_graphics(): + dict_out = {} + count = 0 + for pth in sorted(glob.glob('followers/*.png')): + name = pth.replace(".png", "").replace("followers/", "") + count+=1 + #if (count == 2): + # break + print(name) + newname = name + newname = newname.replace("_female", "/female") + newname = newname.replace("_hisuian", "/hisuian") + newname = newname.replace("_galarian", "/galarian") + newname = newname.replace("_origin", "/origin") + newname = newname.replace("_therian", "/therian") + newname = newname.replace("_east_sea", "/east_sea") + newname = newname.replace("_crowned", "/crowned") + + newname = newname.replace("arceus_", "arceus/") + newname = newname.replace("burmy_", "burmy/") + newname = newname.replace("basculin_", "basculin/") + newname = newname.replace("castform_", "castform/") + newname = newname.replace("calyrex_", "calyrex/") + newname = newname.replace("deerling_", "deerling/") + newname = newname.replace("deoxys_", "deoxys/") + newname = newname.replace("flabebe_", "flabebe/") + newname = newname.replace("floette_", "floette/") + newname = newname.replace("florges_", "florges/") + newname = newname.replace("furfrou_", "furfrou/") + newname = newname.replace("hoopa_", "hoopa/") + newname = newname.replace("lycanroc_", "lycanroc/") + newname = newname.replace("meloetta_", "meloetta/") + newname = newname.replace("necrozma_", "necrozma/") + newname = newname.replace("pichu_", "pichu/") + newname = newname.replace("rotom_", "rotom/") + newname = newname.replace("sawsbuck_", "sawsbuck/") + newname = newname.replace("toxtricity_", "toxtricity/") + newname = newname.replace("unown_", "unown/") + newname = newname.replace("ursaluna_", "ursaluna/") + newname = newname.replace("vivillon_", "vivillon/") + newname = newname.replace("wormadam_", "wormadam/") + + if (os.path.exists('followers/' + newname) == False): + os.mkdir('followers/' + newname) + os.rename('followers/' + name + '.png', 'followers/' + newname + '/follower.png') + #os.popen('cp followers/' + name + '.png followers/' + name + '/follower.png') + #os.remove('followers/' + name + '.png') + #print(pth) + #subprocess.run(["tools/gbagfx/gbagfx " + name +".png " + name + "_normal.pal'" + str(count) + "'"]) + +rellocate_follower_graphics() diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 9a35f90c2494..3ff95a251c69 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -5,6 +5,8 @@ - [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md) - [AI Flags](./ai_flags.md) - [Changelog](./CHANGELOG.md) + - [1.9.x]() + - [Version 1.9.0](changelogs/1.9.x/1.9.0.md) - [1.8.x]() - [Version 1.8.6](changelogs/1.8.x/1.8.6.md) - [Version 1.8.5](changelogs/1.8.x/1.8.5.md) diff --git a/docs/changelogs/1.8.x/1.8.0.md b/docs/changelogs/1.8.x/1.8.0.md index e1a50896e723..81b66d3b127e 100644 --- a/docs/changelogs/1.8.x/1.8.0.md +++ b/docs/changelogs/1.8.x/1.8.0.md @@ -495,7 +495,7 @@ * Aeroblast: Added Wind Move flag. * Ivy Cudgel's type now changes based on Ogerpon's form rather than held item by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3865 * Renamed `healBlockBanned` flag to `healingMove` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3981 -* Removed some hardcoded move IDs +* Removed some hardcoded move IDs * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3982 * `MOVE_EXPLOSION`, `MOVE_SELF_DESTRUCT`, `MOVE_FRUSTRATION`, `MOVE_AURA_WHEEL`, `MOVE_PRESENT`, `MOVE_BLIZZARD`. * By @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4085 diff --git a/docs/changelogs/1.8.x/1.8.5.md b/docs/changelogs/1.8.x/1.8.5.md index ded502ccfe69..a1d0d3298eb3 100644 --- a/docs/changelogs/1.8.x/1.8.5.md +++ b/docs/changelogs/1.8.x/1.8.5.md @@ -58,7 +58,7 @@ * Pawmi (Front by KingOfThe-X-Roads, back by Vent, QC by leParagon) * Pawmo (By vent, qc by leParagon) * Okidogi (Front by KingOfThe-X-Roads + by leParagon, back by Lykeron + QC by Alexandrev2. 0) - * Backported Hedara's Terapagos from `upcoming`. + * Backported @hedara90's Terapagos from https://github.com/rh-hideout/pokeemerald-expansion/pull/4691 * Updated wild held items to Gen 9 by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4769 * Teddiursa (Common: None_> Honey) * Bisharp (Rare: None -> Leader's Crest) diff --git a/docs/changelogs/1.9.x/1.9.0.md b/docs/changelogs/1.9.x/1.9.0.md new file mode 100644 index 000000000000..16947711d3e2 --- /dev/null +++ b/docs/changelogs/1.9.x/1.9.0.md @@ -0,0 +1,556 @@ +# Version 1.9.0 + +```md +## How to update +- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`. +- Once you have your remote set up, run the command `git pull RHH expansion/1.9.0`. +``` + +## 🌋 *REFACTORS* 🌋 +📜 = Has a migration script. +* [agbcc has been deprecated](#agbcc-has-been-deprecated-by-mrgriffin-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4989) +* [Added migration script README](#added-migration-script-readme-by-bassoonian-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4719) +* [Removed Gen 9 settings for out-of-battle abilities](#removed-gen-9-settings-for-out-of-battle-abilities-by-asparaguseduardo-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4282) +* 📜[Customizable Frontier Pokémon sets](#customizable-frontier-pokémon-sets-by-ghoulslash-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4313) +* [Replaced VARARG_8 uses with recursive macros](#replaced-vararg_8-uses-with-recursive-macros-by-cfmnephrite-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4232) +* 📜[Competitive-formatted parties](#competitive-formatted-parties-by-mrgriffin-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull3545) +* [Terastallization](#terastallization-by-agustingdlv-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4110) +* [Combined weather set commands](#combined-weather-set-commands-by-alexon1ine-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4434) +* [Full official GF names for species/items/moves/types](#full-official-gf-names-for-speciesitemsmovestypes-by-mrgriffin-znogyrop-and-cfmnephrite-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4241) +* [Automatically display TM/HM icons based on their move](#automatically-display-tmhm-icons-based-on-their-move-by-sneed69-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4452) +* [Set `GiveBoxMonIntialMoveset_Fast` as default](#set-giveboxmonintialmoveset_fast-as-default-by-alexon1ine-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4470) +* [Changed Battle Frontier validation to species flag](#changed-battle-frontier-validation-to-species-flag-by-kittenchilly-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4341) +* [Replaced HP checks with `IsBattlerAlive`](#replaced-hp-checks-with-isbattleralive-by-ghoulslash-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4429) +* [Removed redundant `MOVE_EFFECT_SP_ATK_TWO_DOWN`](#removed-redundant-move_effect_sp_atk_two_down-by-sneed69-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4557) +* 📜[Removed `gItemIconTable`](#removed-gitemicontable-by-kittenchilly-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4579) +* 📜[Egg Move Refactor](#egg-move-refactor-by-bassoonian-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4534) +* [Adjusted Ate-Ability code a bit to make it more readable](#adjusted-ate-ability-code-a-bit-to-make-it-more-readable-by-alexon1ine-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4640) +* [Type Info refactors](#type-info-refactors-by-asparaguseduardo-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4462) +* [merrp/aarant's Followers](#merrpaarants-followers) +* [Refactored residual damage to be more readable and less prone to bugs](#refactored-residual-damage-to-be-more-readable-and-less-prone-to-bugs-by-alexon1ine-in-httpsgithubcomrh-hideoutpokeemerald-expansionpull4945) + +## 🧬 General 🧬 +### Added +* #### Added migration script README by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4719 +* #### Customizable Frontier Pokémon sets by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4313 + * `FacilityMon` has been removed in favor of using regular `TrainerMon`. + * Removed `BATTLE_FRONTIER_ITEM_x` item constants in favor of using regular `ITEM_x` constants. + * New `CreateFacilityMon` to handle duplicated code. + * Added `FLAG_FRONTIER_MON_FACTORY` that replaces Return for Frustration and sets frienship to 0. Used in the Battle Factory. + * Converted data in `src/data/battle_frontier/battle_frontier_mons.h` and `src/data/battle_frontier/battle_tent.h`, for example: + * `.itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND,` -> `.heldItem = ITEM_CHOICE_BAND,` + * `.evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,` -> `.ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0),` + * Migration script available in `migration_scripts/egg_move_refactor.py` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/5040 +* Added documentation to `STATIC_ASSERTS` used by the `BoxPokemon` after 1.8.0 by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4294 +* #### Competitive-formatted parties by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3545 + * Can be disabled by setting `COMPETITIVE_PARTY_SYNTAX` to `FALSE` in `include/config/general.h`. + * Introduces `trainerproc`, a tool which converts Competitive-formatted parties into Trainer Control-formatted parties. + * If you made custom changes to the following files and want to use this new format, ***Do not accept the incoming changes for them.*** Instead, use the migration script present in `migration_scripts/convert_parties.py`: + - `src/data/trainers.h` + - `src/data/trainer_parties.h` + - `src/data/battle_partners.h` + - `src/data/partner_parties.h` + * Before: + ```c + static const struct TrainerMon sTestParty1[] = + { + { + .species = SPECIES_WOBBUFFET, + .ball = ITEM_MASTER_BALL, + .ability = ABILITY_TELEPATHY, + .friendship = 42, + .gender = TRAINER_MON_FEMALE, + .heldItem = ITEM_ASSAULT_VEST, + .isShiny = TRUE, + .iv = TRAINER_PARTY_IVS(25,26,27,28,29,30), + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), + .lvl = 67, + .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, + .nature = NATURE_HASTY, + .nickname = COMPOUND_STRING("Bubbles") + }, + { + .species = SPECIES_WOBBUFFET, + .ability = ABILITY_SHADOW_TAG, + .lvl = 5, + }, + }; + + static const struct Trainer sTestTrainer1 = + { + .trainerName = _("Test1"), + .party = TRAINER_PARTY(sTestParty1), + }; + ``` + After: + ``` + === 0 === + Name: Test1 + + Bubbles (Wobbuffet) (F) @ Assault Vest + Hasty Nature + Level: 67 + Ability: Telepathy + IVs: 25 HP / 26 Atk / 27 Def / 29 SpA / 30 SpD / 28 Spe + EVs: 252 HP / 4 SpA / 252 Spe + Happiness: 42 + Shiny: Yes + Ball: Master Ball + - Air Slash + - Barrier + - Solar Beam + - Explosion + + Wobbuffet + Level: 5 + Ability: Shadow Tag + ``` + * You can add comments by using `//` or `/* ... */`, like in C. + * You're allowed to write `SPECIES_PIKACHU` instead of `Pikachu` (etc etc) if you want. + * In addition to the migration script described above, you can add the following to at the top of the `src/data/trainers.party` file to change how the tool interprets the file: + - `#pragma trainerproc ivs explicit` — requires an `IVs:` line for every Pokémon instead of defaulting to 31s. + - `#pragma trainerproc ivs ` — changes the default IVs. + - `#pragma trainerproc level explicit` — requires a `Level:` line for every Pokémon instead of defaulting to 100. + - `#pragma trainerproc level ` — changes the default level. + - During the merge you could choose to keep your original `src/data/trainers.h` and `src/data/trainer_parties.h` and then run the conversion script to update the `src/data/trainers.party`, `make`, then check in all three files. Alternatively don't run the conversion script and turn off `COMPETITIVE_PARTY_SYNTAX` in `include/config.h`. + * Added synonyms for competitive/CFRU species defines, eg: + * `SPECIES_PONYTA_GALAR` for `SPECIES_PONYTA_GALARIAN` + * `SPECIES_MAUSHOLD_FOUR` for `SPECIES_MAUSHOLD_FAMILY_OF_FOUR` + * `SPECIES_CHARIZARD_GMAX` for `SPECIES_CHARIZARD_GIGANTAMAX` + * And so. + * ***TODO***: + - Support `Hidden Power:` to set IVs appropriate for a particular Hidden Power type. + - Consider case-insensitivity in the parser. + * Cleanup and bugfixes: + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4362 + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4366 + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4374 + * By @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/4397 + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4421 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4431 + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4442 + * By @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4830 + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4969 + * By @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4734 + * By @innocenthedgehog in https://github.com/rh-hideout/pokeemerald-expansion/pull/4988 + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4990 + * By @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/5035 +* Added `OW_PC_MOVE_ORDER` config to use future generation's menu order for the Pokémon Storage System by @pkmnsnfrn and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4348 + * `GEN_1/2/3`: Widthraw -> Deposit -> Move. + * `GEN_4/5/6_XY`: Deposit -> Widthraw -> Move. + * `GEN_6_ORAS/7/8/9`: Move -> Deposit -> Widthraw. +* Added `OW_HIDE_REPEAT_MAP_POPUP` config that doesn't show the Map Popup when transitioning bewteen maps within the same Map Section by Anon822 from Pokécommunity and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4370 +* Multiple Fishing Enhancements by @ghoulslash and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4343 + * Added `I_FISHING_CHAIN` config to enable XY's chain fishing. + * Added `I_FISHING_PROXIMITY` config to enable XY's proximity mechanic, where fishing away from NPCs increases the chance of a Pokémon being hooked. + * Added `I_FISHING_MINIGAME` config to change between minigame versions. + * `GEN_1/2` will not require a minigame, and instead automatically hook the Pokémon. + * All other settings use RSE's minigame. FRLG/Gen4+'s minigame will be implemented in the future. + * Cleanup and bugfixes: + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4412 + * By @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4906 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4718 + * By @cawtds and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/5031 +* #### Full official GF names for species/items/moves/types by @mrgriffin, @ZnogyroP and @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4241 + * 8-character type names. + * 12-character Pokémon names (and nicknames) + * 16-character Move names. + * 20-character item names. + * This is done by introducing 3 new fonts that automatically change the size of the name in vanilla interfaces: + * `FONT_NARROWER`, `FONT_SMALL_NARROWER` and `FONT_SHORT_NARROW`. + * If the hack has changed fonts—e.g. to the FrLg ones—then they probably want to create their own versions of the new fonts. + * If the hack has introduced more UIs that render names they probably want to use `GetFontIdToFit`—see this PR's changes for examples of that. + * If the hack has introduced names in list menus they can use `.fontIdMayNarrow = TRUE` on the list template. + * Types, species, moves, and items all have individual commits which enable support in the UI and turn on longer names by default. These can be reverted by downstream projects if they really want to. + * Cleanup + * By @Nopinou in https://github.com/rh-hideout/pokeemerald-expansion/pull/4473 + * By @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4588 + * By @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4979 +* Added `OW_PC_RELEASE_ITEM` config that gives back items from released Pokémon by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4577 + * If the bag is full, the item is lost, however. + * Cleanup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4844 +* Added `P_EGG_CYCLE_LENGTH` config that updates the amount of steps required to complete an egg cycle by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4596 +* Added `trainerbattle_two_trainers` macro to trigger a 1 player vs 2 NPC battle by @aarant and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4741 +* Added `createmon` Script Command and macro by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4688 + * This allows to set up wild enemy parties with the same versatility as `givemon` (IVs, EVs, abilities, moves, etc). +* Added `setwilddoubleflag` macro to set `sIsScriptedWildDouble` and allow 2 player vs 1 enemy wild battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4688 +* Added support for multiple Roaming Pokémon at once by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4762 + * By default, `ROAMER_COUNT` is set to 1 to keep save compatibility. Increase it to add more roamers (though this breaks saves). +* Added `OW_IGNORE_EGGS_ON_HEAL`, which makes it such that eggs are not counted in the Pokémon Center's heal animation by @ghoulslash @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4888 +* Added support for fake RTC by Anon822 from PokéCommunity and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4910 + * When `OW_USE_FAKE_RTC` is `TRUE`, time runs at a different rate from real time, like in Legends: Arceus or Scarlet and Violet. + * Use `OW_ALTERED_TIME_RATIO` to set the amount of "time" passing every 60 frames (1 real time second): + * `GEN_8_PLA`: 1 minute. + * `GEN_9`: 20 seconds. + * All other settings make the game synced with real life. + * You may also set a flag to pause the RTC (`OW_FLAG_PAUSE_TIME`), and the script commands `pausefakertc`, `resumefakertc` and `togglefakertc` by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4954 + * Cleanup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4965 +* Added B2W2-style map pop-Ups by @ravepossum, @nielsmittertreiner and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4396 + * Change `OW_POPUP_GENERATION` to `GEN_5` to switch existing map popups. + * You may choose between Black or White themes via `OW_POPUP_BW_COLOR` (`OW_POPUP_BW_COLOR_BLACK` or `OW_POPUP_BW_COLOR_WHITE`). + * You may choose to display the current time in the pop-up using `OW_POPUP_BW_TIME_MODE`. + * `OW_POPUP_BW_TIME_NONE`: Disables time in pop-up. + * `OW_POPUP_BW_TIME_12_HR`: Shows 12-hour time in pop-up + * `OW_POPUP_BW_TIME_24_HR`: Shows 24-hour time in pop-up + * You may enable alpha blending via `OW_POPUP_BW_ALPHA_BLEND` (mainly designed around the Black theme). + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4752 +* Allowed flags to be used in trigger scripts instead of vars by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4900 +### Changed +* #### agbcc has been deprecated by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4989 + * You technically still use `make agbcc` by disabling the error thrown when using it, but it will be removed completely for version 1.10. +* #### Moved general config file to the config folder by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4805 + * `config.h` -> `config/general.h` + * Cleanup by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/5026 +* #### Set `GiveBoxMonIntialMoveset_Fast` as default by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4470 +* #### Changed Battle Frontier validation to species flag by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4341 + * Added `isFrontierBanned` flag and removed `gFrontierBannedSpecies`. + * Renamed `isParadoxForm` -> `isParadox`. +* #### Unified Nature info by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4562 + * All data is now found on `gNaturesInfo` in `src/pokemon.c` + * Names, Stat Up/Down, Back Sprite animation, Pokéblock animation, Nature Girl message and Battle Palace data. + * Cleanup by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4598 +* #### Type Info refactors by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4462 + * Added `src/data/types_info.h` file for `gTypesInfo` instead of `src/battle_main.c`. + * Moved `sTypeEffectivenessTable` here file as well (and renamed it to `gTypeEffectivenessTable`) + * `TYPE_NONE` duplicates graphics from `TYPE_MYSTERY` due to limitations with `graphics_file_rules.mk`. + * Damage Categories for `B_PHYSICAL_SPECIAL_SPLIT`'s pre-Gen4 setting can now be specified in this `gTypesInfo`'s `damageCategory` field instead of depending on the type's order. +* Consolidated Lilycove Contest Lady's values into one struct (`sContestLadyValues`) by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4951 +* Applied the Pokémon Sprite Visualizer name officially by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4745 +* Don't specify `sDexSearchTypeOptions` array size by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4820 + * Prevents Type search in the dex from breaking when non-conventional types are added. +* Only call RNG once when generating IVs in some cases by @tertu-m in https://github.com/rh-hideout/pokeemerald-expansion/pull/4876 +### Fixed +* Fixed potential Wireless Adapter desynchronization by @AtariDreams in https://github.com/rh-hideout/pokeemerald-expansion/pull/3730 +* Fixed `ListItemTemplate` UB in the Pokémon Center by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4725 +* Fixed `src/data/map_group_count.h` not being ignored in `.gitignore` properly by @rayrobdod in https://github.com/rh-hideout/pokeemerald-expansion/pull/4727 +* Fixed double battles not occuring with only one Pokemon by talking to the trainers despite `OW_DOUBLE_APPROACH_WITH_ONE_MON` being set `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4848 +* Fixed unused `B_TRANSITION_SHRED_SPLIT` from softlocking the game by @Lunos, @griffinr and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4919 + +## ✨ Feature Branches ✨ +### ***merrp/aarant's Followers*** +* Integrated @aarant's followers branch by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4022 + * This includes Dynamic Overworld Palettes and Expanded Overworld IDs. + * This does ***not*** include the `lighting` branch yet, but will be included in a future version. + * Updated up to the latest version of the branch (11th of July) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4944 + * Cleanup + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4782 + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4937 +#### Changes from the original branch +* Follower Pokémon can be enabled using the `OW_FOLLOWERS_ENABLED` config. +* Pokémon NPCs can be added to a map [independently](https://github.com/rh-hideout/pokeemerald-expansion/pull/4761) from the Followers config. Keep in mind, this requires `OW_POKEMON_OBJECT_EVENTS` to be enabled in order to add the graphics to the ROM. + * Eg: use `OBJ_EVENT_GFX_SPECIES(CHARIZARD)` where the graphic ID would go (`OBJ_EVENT_GFX_SPECIES_SHINY()` for shiny version). + * May also use `OBJ_EVENT_GFX_SPECIES_SHINY(CHARIZARD)` to make them shiny by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/5049 +* Moved original configs from `include/constants/event_objects.h` to `include/config/overworld.h` and renamed them: + * `OW_MON_BOBBING` -> `OW_FOLLOWERS_BOBBING` + * `LARGE_OW_SUPPORT` -> `OW_LARGE_OW_SUPPORT` + * `OW_MON_POKEBALLS` -> `OW_FOLLOWERS_POKEBALLS` +* Added follower Pokémon sprites from Gen 4-8 + * Credits to @Eemeliri and Gerben BSc +* Moved `OW_GFX_COMPRESS` from `include/global.h` to `include/config/overworld.h`. +* Added `OW_SUBSTITUTE_PLACEHOLDER` config to hide followers if they don't have a follower sprite instead of using a placeholder Substitute sprite by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4765 +* Follower graphics are shown in the Pokémon Sprite Visualizer. +* Follower graphics have been moved to the respective species graphics folder instead of all being grouped in `graphics/object_events/pics/pokemon`. + * Eg: `graphics/object_events/pics/pokemon/abomasnow.png` was moved to `graphics/pokemon/abomasnow/follower.png`. +* Follower data has been moved to `gSpeciesInfo` + * Their palettes are separate from the battle sprite palettes + * Can be enabled using `OW_FOLLOWERS_SHARE_PALETTE`, but requires manual sprite adjustements. For now, it's recommended to keep this `FALSE`. (They don't use much space anyway) +* Updated `GetTypeEffectiveness` used by follower messages to account for new abilities with type immunities. +* Cleaned up code style to match pret/expansion's. +* Reverted Regi's sprite to vanilla's. +* Follower PicTables use `overworld_ascending_frames` macro. +* Removed unneeded calls to `bufferspeciesname`. +* Removed `MON_DATA_NATURE`. +* Removed debug functions like `IsAccurateGBA`. +* Removed `ScrCmd_callfunc` to use `callnative`s instead + +## 🐉 Pokémon 🐉 +### Added +* Added `EVO_ITEM_COUNT_999` evolution method (used by Gimmighoul) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4261 + * Requires level up while carrying 999 of the specified item in the bag, which will be consumed. + * Uses new `EVO_MODE_CANT_STOP` mode, which is a clone of `EVO_MODE_NORMAL` but prevents evolution from being canceled. +* Added `EVO_DEFEAT_THREE_WITH_ITEM` evolution method (used by Bisharp) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4768 + * Requires level up after defeating 3 Pokémon of the same species holding the specified item. + * Eg: Bisharp defeating 3 other Bisharp holding Leader Crests. + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/5046 +* Added `EVO_OVERWORLD_STEPS` evolution method (used by Pawmo, Bramblin and Rellor) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4758 + * Requires level up after walking the specified amount of steps with that Pokémon as the first member in the party without switching. + * Switching the party leader resets the steps. + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/5047 +* Added `FORM_CHANGE_DAYS_PASSED` form change (used by Furfrou and Hoopa) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4778 + * Adds `MON_DATA_DAYS_SINCE_FORM_CHANGE`, which is a timer to automatically changes forms at midnight once it runs out. It is set after a different form change has been made (currently only added to Form Change items, including Prison Bottle) +* Added unique icons for all of Arceus's forms via config (`P_ARCEUS_UNIQUE_FORM_ICONS`) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4329 +* Added `P_TWO_FRAME_FRONT_SPRITES` config to allow disabling 2-frame front animations by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4750 +* Added `P_CRIES_ENABLED` config to disable species cries and stop them from being included in the ROM by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4791 +* Added configs to prevent unobtainable Pokemon from being shiny by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4735 + * `P_ONLY_OBTAINABLE_SHINIES`: Prevents shinies from generating in the Battle Pyramid. + * `P_NO_SHINIES_WITHOUT_POKEBALLS`: Prevents shinies from generating if the player has no Poké Balls. +* Added `P_CAN_FORGET_HIDDEN_MOVE` config allow Pokémon to forget HM moves by @pkmnsnfrn and @Lunos in https://github.com/rh-hideout/pokeemerald-expansion/pull/4968 +### Changed +* Renamed evolution methods the were labeled as evo level by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4607 + * `EVO_LEVEL_MOVE_TWENTY_TIMES` -> `EVO_MOVE_TWENTY_TIMES` + * `EVO_LEVEL_RECOIL_DAMAGE_MALE` -> `EVO_RECOIL_DAMAGE_MALE` + * `EVO_LEVEL_RECOIL_DAMAGE_FEMALE` -> `EVO_RECOIL_DAMAGE_FEMALE` + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4644 +* Evolution tracker is now by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4758 +* #### Replaced VARARG_8 uses with recursive macros by @cfmnephrite in https://github.com/rh-hideout/pokeemerald-expansion/pull/4232 +* #### Egg Move Refactor by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4534 + * Egg Moves are now formatted like Teachable learnsets and their pointers are stored in `gSpeciesInfo`, as opposed to having one big array. + * Only offspring require these tables. + * Migration script available in `migration_scripts/egg_move_refactor.py`. + +## ⚔️ Battle General ⚔️ ## +### Added +* Added option to increase Experience bar speed via `B_FAST_EXP_GROW` by @SonikkuA-DatH and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4335 +* Added Gen 4's Fog battle weather by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4359 + * Uses Haze's animation. + * Changes `B_FOG_TERRAIN` (TRUE/FALSE config) into `B_OVERWORLD_FOG` (Generational config). + * `GEN_4`: Uses this battle weather in maps with `WEATHER_FOG_DIAGONAL` and `WEATHER_FOG_HORIZONTAL`. + * `GEN_8` onwards: Sets permanent Misty Terrain. + * All others disable them. +* #### Terastallization by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4110 + * Tera Type automatically assigned to existing Pokémon based on their personality value. + * Can get and set Tera Types in scripts for party members using `checkteratype` and `setteratype` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4460 + * To activate, it requires: + * `ITEM_TERA_ORB` to be in the player's bag. + * `B_FLAG_TERA_ORB_CHARGED` to be set up to an unused flag. It¿s automatically set when `HealPlayerParty` is called. + * Added `ignoreTera` argument added to `GetBattlerType` + * Added Tera Blast's effect. + * Changes type shown in battle screen if the mon is Terastalized or about to by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4447 + * Added Stellar Type. + * Added `teraType` option for Trainers (also supported by Competitive Format Parties) + * Added Tera Starstorm's effect by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4447 + * Terastallization animation by @Pokabbie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4507 + * Added `forceTeraType` field for `gSpeciesInfo`, which forces the Pokémon to have a specific Tera Type (used by Terapagos and Ogerpon) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4438 + * Added `FORM_CHANGE_BATTLE_TERASTALLIZATION` by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4438 + * It uses a Pokémon's Tera Type to choose which form to switch to upon Terastallizing. + * Bugfixes: + * By @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4435 + * By @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4440 + * By @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4513 + * By @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4515 + * By @WillKolada in https://github.com/rh-hideout/pokeemerald-expansion/pull/4529 + * By @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4975 +* Added Gen 1 type matchups by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4508 + * Renamed `B_STEEL_RESISTANCES` -> `B_UPDATED_TYPE_MATCHUPS` to reflect this change. + * Added defines to cleanup `sTypeEffectivenessTable`. +* Added Move Descriptions in battle by @Bassoonian, @TheXaman, @Pawkkie and @ravepossum in https://github.com/rh-hideout/pokeemerald-expansion/pull/4152 + * Press L before selecting a move to see their category, power, accuracy and description. + * This can be changed to R by using the `B_MOVE_DESCRIPTION_BUTTON` config by @fakuzatsu in https://github.com/rh-hideout/pokeemerald-expansion/pull/4860 + * Cleanup + * By @AGSMGMaster64 and @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4678 +* Added ball throwing configs by セケツ from PokéCommunity and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4953 + * `B_ENEMY_THROW_BALLS`: When set to `GEN_6` or higher, it changes the opposing trainer's ball animation so they throw their Pokéballs instead of already starting on the floor. + * `B_PLAYER_THROW_BALLS_SOUND`: When set to `GEN_5` or higher, it plays `SE_BALL_THROW` as part of the player's ball throw animation. + * `B_ENEMY_THROW_BALLS_SOUND`: When set to `GEN_5` or higher, it plays `SE_BALL_THROW` as part of the enemy's ball throw animation. +* Added `RandomChance` macro for battle/test randomization by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4829 +* #### Gimmick Refactor by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4449 + * Unifies generational mechanics into `gGimmicksInfo` struct (Mega, Z-Moves, Ultra Burst, Dynamax, Terastallization). + * Contains triggers, indicator, condition and function to execute when triggered. + * Around ~500-1000 lines of redundant / duplicate code removed! + * Cleanup + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4927 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4962 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4863 + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4960 +* Allow users to increase `MAX_MONEY` dynamically by @DizzyEggg and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4943 +* Added `AUTO_LOWERCASE_KEYBOARD` by @Jaizu and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4976 + * Automatically changes to to lowercase if the first character inputted is uppercase. +### Changed +* Improved HP drain when enabling `B_FAST_HP_DRAIN` by @pkmnsnfrn and @SonikkuA-DatH in https://github.com/rh-hideout/pokeemerald-expansion/pull/4335 +* #### Combined weather set commands by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4434 + * `setrain` -> `setfieldweather ENUM_WEATHER_RAIN`. + * `setsandstorm` -> `setfieldweather ENUM_WEATHER_SANDSTORM`. + * `setsunny` -> `setfieldweather ENUM_WEATHER_SUN`. + * `sethail` -> `setfieldweather ENUM_WEATHER_HAIL`. + * `setsnow` -> `setfieldweather ENUM_WEATHER_SNOW`. +* #### Replaced HP checks with `IsBattlerAlive` by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4429 +* #### Removed redundant `MOVE_EFFECT_SP_ATK_TWO_DOWN` by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4557 +* Added stack for saved targets and attackers by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4061 + * This avoids the need to overwriting battler IDs during scripts and cause potential issues. + * Several scripts have been updated to use these. + * Cleanup and fixes + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4653 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4668 +* #### Adjusted Ate-Ability code a bit to make it more readable by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4640 +* Added global constants for damage rolls by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4663 + ```c + // Lowest and highest percentages used for damage roll calculations + #define DMG_ROLL_PERCENT_LO 85 + #define DMG_ROLL_PERCENT_HI 100 + ``` +* #### Refactored residual damage to be more readable and less prone to bugs by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4945 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4993 +* Clarified some cases of `ChangeStatBuffs` usage by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4826 +* Moved EWRAM variables from battle controller player file to gBattleStruct by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4840 + * `sDescriptionSubmenu`, `sAckBallUseBtn` and `sBallSwapped`. +### Fixed +* Fixed Dynamax data not clearing when a battler faints by @WillKolada in https://github.com/rh-hideout/pokeemerald-expansion/pull/4672 +* Multiple Z-Move fixes by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4449 + * Fixed Z-Moves not working in Link Battles, recorded battles and tests. + * Fixed `Z_EFFECT_ALL_STATS_UP` functionality. + * Fixed Z-Nature Power, Z-Copycat, Z-Me First, and Z-Sleep Talk incorrectly using a normal move and not a Z-Move, ~~which had not been raised as an issue yet.~~ (some of these were caught recently!) + * Fixed Breakneck Blitz incorrectly being affected by -ate abilities, which had not been raised as an issue yet. + * Fixed Instruct incorrectly not failing if the target last used a Z-Move, which had not been raised as an issue yet. + * Fixed Guardian of Alola incorrectly doing 50% of the target's HP instead of 75%. +* Fixed Enemy Data not clearing at the end of battles by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4867 + +## 🤹 Moves 🤹 +### Added +* Expanded Freeze Dry's effect to use `argument` field and allow custom moves to use the effect to be super effective to any specific type by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4312 + * Renamed `EFFECT_FREEZE_DRY` to `EFFECT_SUPER_EFFECTIVE_ON_ARG`. +* Expanded `EFFECT_BODY_PRESS` to use category of defense stats for calculation based on the move's own damage category by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4312 + * Eg: In vanilla, Body Press uses the user's Defense and its stat changes instead of Attack. Now, if we were to change its `category` in `gMovesInfo`, it'll use Sp. Defense and its stat changes instead of Sp. Attack. +* Expanded Photon Geyser and Shell Side Arm (restored) effects so that they also work for physical moves by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4923 +* Added Knock Off's Gen 5+ effect with config (`B_KNOCK_OFF_REMOVAL`) by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/4333 + * Items are removed outright instead of making them unusable. +* Added Heal Bell/Soundproof Gen 5-8+ interactions with `B_HEAL_BELL_SOUNDPROOF` config by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4732 + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/5060 +* Added Spicy Extract's effect by @AlexOn1ine, @Skeli789, @kittenchilly and @ZnogyroP in https://github.com/rh-hideout/pokeemerald-expansion/pull/4211 +* Added `B_RETURN_STOLEN_NPC_ITEMS` config for Covet/Thief not being able to steal from NPCs by @moostoet and @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4605 +* Added Dragon Darts effect (CFRU port) by @AlexOn1ine, @Skeli789 and @BuffelSaft in https://github.com/rh-hideout/pokeemerald-expansion/pull/4612 + * Animation by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4620 +### Changed +* `EFFECT_TRIPLE_KICK`'s base power uses the move's `strikeCount` instead of a constant by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4608 + * This allows users to create "Quadruple Kick" and similar moves. +* Migrated move animation pointers to `gMovesInfo` by @cawtds in https://github.com/rh-hideout/pokeemerald-expansion/pull/4683 + * This removes the need for `gBattleAnims_Moves` which had potential ordering issues if not kept in line with move IDs. + * If `battleAnimScript` is not defined for a move, it defaults to Tackle's animation. + * Migration script available in `migration_scripts/battle_anim_moves_refactor.py` +### Fixed +* Multiple Ally Switch fixes by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4451 + * Shadows no longer disappear + safety checks. + * Corrected animation for opponents. +* Fixed Avalanche's target by @TheLastMudkip in https://github.com/rh-hideout/pokeemerald-expansion/pull/4581 +* Fixed Feint and Feint Attack's descriptions by @lhearachel in https://github.com/rh-hideout/pokeemerald-expansion/pull/4617 +* Fixed Mud Sport/Water Sport reducing damage by 77% instead of 67% in Gen5+ by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/4874 + +## 🎭 Abilities 🎭 +### Added +* Added Poison Puppeteer's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4416 +* Added Tera Shift, Tera Shell, and Teraform Zero by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4418 + * `FORM_CHANGE_BATTLE_SWITCH` now has ability as optional parameter. + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4742 +* Added Toxic Chain's effect by @PhallenTree in https://github.com/rh-hideout/pokeemerald-expansion/pull/4823 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4843 +* Added `B_ABILITY_TRIGGER_CHANCE` config to update trigger chances of abilities to Gen4+ by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4829 + * Shed Skin, Cute Charm, Flame Body, Static and Poison Point have a 30% chance to trigger in Gen4+ instead of 1/3 in Gen3. + * Effect Spore has an 11%, 10% and 9% chance of triggering Sleep, Paralysis and Poison in Gen4+ instead of equal 10% each in Gen3. +### Changed +* #### Removed Gen 9 settings for out-of-battle abilities by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4282 + * These configs no longer disable out-of-battle ability effects when set to `GEN_9`. + * `OW_SUPER_LUCK`. + * `OW_INFILTRATOR`. + * `OW_HARVEST`. + * `OW_LIGHTNING_ROD`. + * `OW_STORM_DRAIN`. + * `OW_FLASH_FIRE`. + * These configs have been removed + * `OW_COMPOUND_EYES`. + * `OW_CUTE_CHARM`. + * `OW_ILLUMINATE`. + * `OW_MAGNET_PULL`. + * `OW_STATIC`. +### Fixed +* Fixed Mirror Armor bouncing Sticky Web's stat reduction to the opponent by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4713 +* Effect Spore now uses `B_POWDER_GRASS` to toggle Grass-type Pokémon immunity to it by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4829 + +## 🧶 Items 🧶 +### Added +* Added Booster Energy's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4337 + * Cleanup + * By @PCG06 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4354 + * By @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4804 +### Changed +* #### Removed `gItemIconTable` by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/4579 + * Sprite and palette pointers have been moved to `gItemsInfo` as `iconPic` and `iconPalette` respectively. + * Migration script available in `migration_scripts/convert_item_icons.py` + * Cleanup + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4591 + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4658 +* #### Automatically display TM/HM icons based on their move by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4452 + * TM palettes are now stored in `gTypesInfo` in the `paletteTMHM` field. + * Cleanup by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4487 + +## 🤖 Battle AI 🤖 +### Added +* Added `AI_GetBattlerAbility` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4555 +* Added `AI_FLAG_CONSERVATIVE` flag by @Pawkkie and @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4615 + * AI will assume low damage rolls for its `calculationsDamage` roll selection in `AI_CalcDamage` + * Cleanup + * By @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4663 +* Added `AI_FLAG_SEQUENCE_SWITCHING` flag by @Pawkkie, Kasen, @pkmnsnfrn and @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/4878 + * AI will keep their party order consistently with switches. +* Added `setdynamicaifunc`, which allows to setup custom AI functions before a battle besides the predetermined ones used by AI Flags @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4908 + * Eg: + ``` + setdynamicaifunc AI_TagBattlePreferFoe + multi_2_vs_2 TRAINER_MAXIE_MOSSDEEP, MossdeepCity_SpaceCenter_2F_Text_JustWantToExpandLand, TRAINER_TABITHA_MOSSDEEP, MossdeepCity_SpaceCenter_Text_TabithaDefeat, PARTNER_STEVEN + ``` + Where `AI_TagBattlePreferFoe` prioritizes attacking the opposite battler index. +### Changed +* AI now calculates and stores minimum possible move damage and uses it with `AI_FLAG_TRY_TO_FAINT` by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4760 + * This allows AI to prefer guaranteed KO moves over highest expected damage move. + * Cleanup by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4808 +* AI Revenge Killer switching factors in Trick Room by @Shadowzlmao and @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4794 +* AI Smarter Choice AI for Status Moves by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4872 + * Better behavior for AI under Choice Item effects. + * Cleanup by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4911 +* AI Smarter Focus Punch and Substitute handling by @Pawkkie, @Kasenn and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4952 +* Moved `RestoreBattlerData` out of `Ai_CalcDmg` and added `SaveBattlerData` Protections by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4156 + * Cleanup + * By @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4586 +* Made AI see Loaded Dice hold effect for multi hit moves that strike 5 times by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4622 +* `AI_FLAG_RISKY` Improvements by @Pawkkie, @AlexOn1ine and @iriv24 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4648 + * Check the PR for in depth details. + * Cleanup + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4790 + * By @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/5032 +* Removed temporary scores in `AI_CalcMoveEffectScores` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4655 +* Changed `AI_IS_SLOWER` and `AI_IS_FASTER` comparisons into `AI_IsFaster` and `AI_IsSlower` functions by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4671 + * `AI_STRIKES_FIRST` is also replaced by `AI_IsFaster`. +* Switch AI uses trapping abilities aggressively by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4669 +* Use 9th roll instead of average in AI calcs by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4679 +* Use `AI_DATA->abilities` in more places by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4729 +* Minor switch AI cleanup by @Pawkkie, @DizzyEggg, @AlexOn1ine and @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4849 +* Removed `SetBattlerData` from `AI_CalcDamage` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4881 +* Removed unused `AI_FLAG_HELP_PARTNER` by @pkmnsnfrn and @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4918 +* Added missing `ADJUST_SCORE`s by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4925 +* Reduced `AI_WhoStrikesFirst` to the most essential parts by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4978 +* Changed score adjustments to `tempScore` increases by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4987 +### Fixed +* Minor AI flag fixes/cleanup by @Pawkkie, @AlexOn1ine and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/4924 + +## 🧹 Other Cleanup 🧹 +### Changed +* Corrected species info struct hex comments by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4798 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4800 + +## 🧪 Test Runner 🧪 +### Added +* Added missing weather tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4434 +* Added missing Gale Wings test by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4694 +* Added `SWITCH_OUT_MESSAGE` and `SEND_IN_MESSAGE` macros to avoid tests from failing based on changing switch out/in messages by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4717 + * Usage: `SEND_IN_MESSAGE("Wobbuffet");` + * Tests have been updated to use these new macros. +* Added missing Hidden Power test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/4462 +* Added some Terastallization tests by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/5020 +### Changed +* Cleaned up Frisk test by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/4441 +* Renamed `MgbaPrintf_` to `Test_MgbaPrintf` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/4642 +* AI tests have been moved to their own folder by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4898 +* Species are now always included in tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/4810 +* Added Battle Anim Debug Check to see if animations aren't cleared by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/4930 +* Test battlers always have their forced abilities to prevent them from changing during a test by @Sneed69 in https://github.com/rh-hideout/pokeemerald-expansion/pull/4707 +### Fixed +* Test runner uses Set mode to avoid an issue where tests prompted switching and caused a timeout by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/4661 + +## New Contributors +* @Pokabbie made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4507 +* @TheLastMudkip made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4581 +* @moostoet made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4605 +* @rayrobdod made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4727 +* @innocenthedgehog made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/4988 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.8.5...expansion/1.9.0 + + diff --git a/docs/changelogs/template.md b/docs/changelogs/template.md index 63e9e352aad1..6641d612f36b 100644 --- a/docs/changelogs/template.md +++ b/docs/changelogs/template.md @@ -6,7 +6,8 @@ - Once you have your remote set up, run the command `git pull RHH expansion/1.Y.Z`. ``` -## 🌋 *IMPORTANT CHANGES AND REFACTORS* 🌋 +## 🌋 *REFACTORS* 🌋 +📜 = Uses a migration script. * N/A ## 💥 *Softlock/Crash fixes* 💥 @@ -49,6 +50,13 @@ * N/A #### Fixed * N/A +### ***merrp/aarant's Followers*** +#### Added +* N/A +#### Changed +* N/A +#### Fixed +* N/A ## 🐉 Pokémon 🐉 ### Added diff --git a/gflib/malloc.c b/gflib/malloc.c index 96f6aacda8a5..95d41fbb97e6 100644 --- a/gflib/malloc.c +++ b/gflib/malloc.c @@ -92,9 +92,9 @@ void *AllocInternal(void *heapStart, u32 size, const char *location) { const char *location = MemBlockLocation(block); if (location) - MgbaPrintf_("%s: %d bytes allocated", location, block->size); + Test_MgbaPrintf("%s: %d bytes allocated", location, block->size); else - MgbaPrintf_(": %d bytes allocated", block->size); + Test_MgbaPrintf(": %d bytes allocated", block->size); } block = block->next; } diff --git a/gflib/sprite.c b/gflib/sprite.c index 7ae70670223c..7823888cb529 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -52,7 +52,6 @@ static void SortSprites(u32 *spritePriorities, s32 n); static u32 CreateSpriteAt(u32 index, const struct SpriteTemplate *template, s16 x, s16 y, u32 subpriority); static void ResetOamMatrices(void); static void ResetSprite(struct Sprite *sprite); -static s16 AllocSpriteTiles(u16 tileCount); static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images); static void ResetAllSprites(void); static void BeginAnim(struct Sprite *sprite); @@ -879,9 +878,15 @@ void BeginAnim(struct Sprite *sprite) SetSpriteOamFlipBits(sprite, hFlip, vFlip); if (sprite->usingSheet) + { + if (OW_GFX_COMPRESS && sprite->sheetSpan) + imageValue = (imageValue + 1) << sprite->sheetSpan; sprite->oam.tileNum = sprite->sheetTileStart + imageValue; + } else + { RequestSpriteFrameImageCopy(imageValue, sprite->oam.tileNum, sprite->images); + } } } @@ -931,9 +936,15 @@ void AnimCmd_frame(struct Sprite *sprite) SetSpriteOamFlipBits(sprite, hFlip, vFlip); if (sprite->usingSheet) + { + if (OW_GFX_COMPRESS && sprite->sheetSpan) + imageValue = (imageValue + 1) << sprite->sheetSpan; sprite->oam.tileNum = sprite->sheetTileStart + imageValue; + } else + { RequestSpriteFrameImageCopy(imageValue, sprite->oam.tileNum, sprite->images); + } } void AnimCmd_end(struct Sprite *sprite) @@ -965,9 +976,15 @@ void AnimCmd_jump(struct Sprite *sprite) SetSpriteOamFlipBits(sprite, hFlip, vFlip); if (sprite->usingSheet) + { + if (OW_GFX_COMPRESS && sprite->sheetSpan) + imageValue = (imageValue + 1) << sprite->sheetSpan; sprite->oam.tileNum = sprite->sheetTileStart + imageValue; + } else + { RequestSpriteFrameImageCopy(imageValue, sprite->oam.tileNum, sprite->images); + } } void AnimCmd_loop(struct Sprite *sprite) @@ -1346,6 +1363,8 @@ void SetSpriteSheetFrameTileNum(struct Sprite *sprite) if (sprite->usingSheet) { s16 tileOffset = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue; + if (OW_GFX_COMPRESS && sprite->sheetSpan) + tileOffset = (tileOffset + 1) << sprite->sheetSpan; if (tileOffset < 0) tileOffset = 0; sprite->oam.tileNum = sprite->sheetTileStart + tileOffset; @@ -1424,7 +1443,7 @@ void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotat CopyOamMatrix(matrixNum, &matrix); } -u16 LoadSpriteSheet(const struct SpriteSheet *sheet) +static u16 LoadSpriteSheetWithOffset(const struct SpriteSheet *sheet, u32 offset) { s16 tileStart = AllocSpriteTiles(sheet->size / TILE_SIZE_4BPP); @@ -1435,11 +1454,32 @@ u16 LoadSpriteSheet(const struct SpriteSheet *sheet) else { AllocSpriteTileRange(sheet->tag, (u16)tileStart, sheet->size / TILE_SIZE_4BPP); - CpuCopy16(sheet->data, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileStart, sheet->size); + CpuSmartCopy16(sheet->data, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileStart + offset, sheet->size - offset); return (u16)tileStart; } } +u16 LoadSpriteSheet(const struct SpriteSheet *sheet) +{ + return LoadSpriteSheetWithOffset(sheet, 0); +} + +// Like LoadSpriteSheet, but checks if already loaded, and uses template image frames +u16 LoadSpriteSheetByTemplate(const struct SpriteTemplate *template, u32 frame, s32 offset) +{ + u16 tileStart; + struct SpriteSheet sheet; + // error if template is null or tile tag or images not set + if (!template || template->tileTag == TAG_NONE || !template->images) + return TAG_NONE; + if ((tileStart = GetSpriteTileStartByTag(template->tileTag)) != TAG_NONE) // return if already loaded + return tileStart; + sheet.data = template->images[frame].data; + sheet.size = template->images[frame].size; + sheet.tag = template->tileTag; + return LoadSpriteSheetWithOffset(&sheet, offset); +} + void LoadSpriteSheets(const struct SpriteSheet *sheets) { u32 i; @@ -1691,10 +1731,36 @@ bool8 AddSubspritesToOamBuffer(struct Sprite *sprite, struct OamData *destOam, u destOam[i].y = baseY + y; destOam[i].tileNum = tileNum + subspriteTable->subsprites[i].tileOffset; - if (sprite->subspriteMode != SUBSPRITES_IGNORE_PRIORITY) + if (sprite->subspriteMode < SUBSPRITES_IGNORE_PRIORITY) destOam[i].priority = subspriteTable->subsprites[i].priority; } } return 0; } + +static const u8 sSpanPerImage[4][4] = +{ + [ST_OAM_SQUARE] = + { + [ST_OAM_SIZE_0] = 0, // SPRITE_SIZE_8x8 + [ST_OAM_SIZE_1] = 2, // SPRITE_SIZE_16x16 + [ST_OAM_SIZE_2] = 4, // SPRITE_SIZE_32x32 + [ST_OAM_SIZE_3] = 6 // SPRITE_SIZE_64x64 + }, + [ST_OAM_H_RECTANGLE ... ST_OAM_V_RECTANGLE] = + { + [ST_OAM_SIZE_0] = 1, // SPRITE_SIZE_16x8 + [ST_OAM_SIZE_1] = 2, // SPRITE_SIZE_32x8 + [ST_OAM_SIZE_2] = 3, // SPRITE_SIZE_32x16 + [ST_OAM_SIZE_3] = 5 // SPRITE_SIZE_64x32 + }, +}; + +// For a given sprite shape & size, returns +// the value for sheetSpan: +// i.e, a 32x32 sprite has span 4, because 1 << 4 == 16 == 4x4 tiles +u32 GetSpanPerImage(u32 shape, u32 size) +{ + return sSpanPerImage[shape][size]; +} diff --git a/gflib/sprite.h b/gflib/sprite.h index 9772434a3b4e..6a3084add254 100644 --- a/gflib/sprite.h +++ b/gflib/sprite.h @@ -217,22 +217,26 @@ struct Sprite // general purpose data fields /*0x2E*/ s16 data[8]; - /*0x3E*/ bool16 inUse:1; //1 - bool16 coordOffsetEnabled:1; //2 - bool16 invisible:1; //4 - bool16 flags_3:1; //8 - bool16 flags_4:1; //0x10 - bool16 flags_5:1; //0x20 - bool16 flags_6:1; //0x40 - bool16 flags_7:1; //0x80 - /*0x3F*/ bool16 hFlip:1; //1 - bool16 vFlip:1; //2 - bool16 animBeginning:1; //4 - bool16 affineAnimBeginning:1; //8 - bool16 animEnded:1; //0x10 - bool16 affineAnimEnded:1; //0x20 - bool16 usingSheet:1; //0x40 - bool16 anchored:1; //0x80 + /*0x3E*/ u16 inUse:1; //1 + u16 coordOffsetEnabled:1; //2 + u16 invisible:1; //4 + u16 flags_3:1; //8 + // if nonzero, tile offset for usingSheet sprites + // is (offset + 1) << sheetSpan; + // (This allows using frame-based anim tables for sheet sprites) + u16 sheetSpan:3; + // u16 flags_4:1; //0x10 + // u16 flags_5:1; //0x20 + // u16 flags_6:1; //0x40 + u16 flags_7:1; //0x80 + /*0x3F*/ u16 hFlip:1; //1 + u16 vFlip:1; //2 + u16 animBeginning:1; //4 + u16 affineAnimBeginning:1; //8 + u16 animEnded:1; //0x10 + u16 affineAnimEnded:1; //0x20 + u16 usingSheet:1; //0x40 + u16 anchored:1; //0x80 /*0x40*/ u16 sheetTileStart; @@ -298,7 +302,9 @@ void FreeOamMatrix(u8 matrixNum); void InitSpriteAffineAnim(struct Sprite *sprite); void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotation); u16 LoadSpriteSheet(const struct SpriteSheet *sheet); +u16 LoadSpriteSheetByTemplate(const struct SpriteTemplate *template, u32 frame, s32 offset); void LoadSpriteSheets(const struct SpriteSheet *sheets); +s16 AllocSpriteTiles(u16 tileCount); u16 AllocTilesForSpriteSheet(struct SpriteSheet *sheet); void AllocTilesForSpriteSheets(struct SpriteSheet *sheets); void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet); @@ -324,5 +330,6 @@ void CopyFromSprites(u8 *dest); u8 SpriteTileAllocBitmapOp(u16 bit, u8 op); void ClearSpriteCopyRequests(void); void ResetAffineAnimData(void); +u32 GetSpanPerImage(u32 shape, u32 size); #endif //GUARD_SPRITE_H diff --git a/gflib/text.c b/gflib/text.c index 20927e4f80c4..59c6e3f4e8c3 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -23,17 +23,26 @@ static u16 FontFunc_ShortCopy2(struct TextPrinter *); static u16 FontFunc_ShortCopy3(struct TextPrinter *); static u16 FontFunc_Narrow(struct TextPrinter *); static u16 FontFunc_SmallNarrow(struct TextPrinter *); +static u16 FontFunc_Narrower(struct TextPrinter *); +static u16 FontFunc_SmallNarrower(struct TextPrinter *); +static u16 FontFunc_ShortNarrow(struct TextPrinter *); static void DecompressGlyph_Small(u16, bool32); static void DecompressGlyph_Normal(u16, bool32); static void DecompressGlyph_Short(u16, bool32); static void DecompressGlyph_Narrow(u16, bool32); static void DecompressGlyph_SmallNarrow(u16, bool32); static void DecompressGlyph_Bold(u16); +static void DecompressGlyph_Narrower(u16, bool32); +static void DecompressGlyph_SmallNarrower(u16, bool32); +static void DecompressGlyph_ShortNarrow(u16, bool32); static u32 GetGlyphWidth_Small(u16, bool32); static u32 GetGlyphWidth_Normal(u16, bool32); static u32 GetGlyphWidth_Short(u16, bool32); static u32 GetGlyphWidth_Narrow(u16, bool32); static u32 GetGlyphWidth_SmallNarrow(u16, bool32); +static u32 GetGlyphWidth_Narrower(u16, bool32); +static u32 GetGlyphWidth_SmallNarrower(u16, bool32); +static u32 GetGlyphWidth_ShortNarrow(u16, bool32); static EWRAM_DATA struct TextPrinter sTempTextPrinter = {0}; static EWRAM_DATA struct TextPrinter sTextPrinters[WINDOWS_MAX] = {0}; @@ -81,15 +90,18 @@ static const u8 sWindowVerticalScrollSpeeds[] = { static const struct GlyphWidthFunc sGlyphWidthFuncs[] = { - { FONT_SMALL, GetGlyphWidth_Small }, - { FONT_NORMAL, GetGlyphWidth_Normal }, - { FONT_SHORT, GetGlyphWidth_Short }, - { FONT_SHORT_COPY_1, GetGlyphWidth_Short }, - { FONT_SHORT_COPY_2, GetGlyphWidth_Short }, - { FONT_SHORT_COPY_3, GetGlyphWidth_Short }, - { FONT_BRAILLE, GetGlyphWidth_Braille }, - { FONT_NARROW, GetGlyphWidth_Narrow }, - { FONT_SMALL_NARROW, GetGlyphWidth_SmallNarrow } + { FONT_SMALL, GetGlyphWidth_Small }, + { FONT_NORMAL, GetGlyphWidth_Normal }, + { FONT_SHORT, GetGlyphWidth_Short }, + { FONT_SHORT_COPY_1, GetGlyphWidth_Short }, + { FONT_SHORT_COPY_2, GetGlyphWidth_Short }, + { FONT_SHORT_COPY_3, GetGlyphWidth_Short }, + { FONT_BRAILLE, GetGlyphWidth_Braille }, + { FONT_NARROW, GetGlyphWidth_Narrow }, + { FONT_SMALL_NARROW, GetGlyphWidth_SmallNarrow }, + { FONT_NARROWER, GetGlyphWidth_Narrower }, + { FONT_SMALL_NARROWER, GetGlyphWidth_SmallNarrower }, + { FONT_SHORT_NARROW, GetGlyphWidth_ShortNarrow }, }; struct @@ -217,21 +229,54 @@ static const struct FontInfo sFontInfos[] = .fgColor = 1, .bgColor = 2, .shadowColor = 15, - } + }, + [FONT_NARROWER] = { + .fontFunction = FontFunc_Narrower, + .maxLetterWidth = 5, + .maxLetterHeight = 16, + .letterSpacing = 0, + .lineSpacing = 0, + .fgColor = 2, + .bgColor = 1, + .shadowColor = 3, + }, + [FONT_SMALL_NARROWER] = { + .fontFunction = FontFunc_SmallNarrower, + .maxLetterWidth = 5, + .maxLetterHeight = 8, + .letterSpacing = 0, + .lineSpacing = 0, + .fgColor = 2, + .bgColor = 1, + .shadowColor = 3, + }, + [FONT_SHORT_NARROW] = { + .fontFunction = FontFunc_ShortNarrow, + .maxLetterWidth = 5, + .maxLetterHeight = 14, + .letterSpacing = 0, + .lineSpacing = 0, + .fgColor = 2, + .bgColor = 1, + .shadowColor = 3, + }, }; static const u8 sMenuCursorDimensions[][2] = { - [FONT_SMALL] = { 8, 12 }, - [FONT_NORMAL] = { 8, 15 }, - [FONT_SHORT] = { 8, 14 }, - [FONT_SHORT_COPY_1] = { 8, 14 }, - [FONT_SHORT_COPY_2] = { 8, 14 }, - [FONT_SHORT_COPY_3] = { 8, 14 }, - [FONT_BRAILLE] = { 8, 16 }, - [FONT_NARROW] = { 8, 15 }, - [FONT_SMALL_NARROW] = { 8, 8 }, - [FONT_BOLD] = {} + [FONT_SMALL] = { 8, 12 }, + [FONT_NORMAL] = { 8, 15 }, + [FONT_SHORT] = { 8, 14 }, + [FONT_SHORT_COPY_1] = { 8, 14 }, + [FONT_SHORT_COPY_2] = { 8, 14 }, + [FONT_SHORT_COPY_3] = { 8, 14 }, + [FONT_BRAILLE] = { 8, 16 }, + [FONT_NARROW] = { 8, 15 }, + [FONT_SMALL_NARROW] = { 8, 8 }, + [FONT_BOLD] = {}, + [FONT_NARROWER] = { 8, 15 }, + [FONT_SMALL_NARROWER] = { 8, 8 }, + [FONT_SHORT_NARROW] = { 8, 14 }, }; static const u16 sFontBoldJapaneseGlyphs[] = INCBIN_U16("graphics/fonts/bold.hwjpnfont"); @@ -769,6 +814,42 @@ static u16 FontFunc_SmallNarrow(struct TextPrinter *textPrinter) return RenderText(textPrinter); } +static u16 FontFunc_Narrower(struct TextPrinter *textPrinter) +{ + struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields); + + if (subStruct->hasFontIdBeenSet == FALSE) + { + subStruct->fontId = FONT_NARROWER; + subStruct->hasFontIdBeenSet = TRUE; + } + return RenderText(textPrinter); +} + +static u16 FontFunc_SmallNarrower(struct TextPrinter *textPrinter) +{ + struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields); + + if (subStruct->hasFontIdBeenSet == FALSE) + { + subStruct->fontId = FONT_SMALL_NARROWER; + subStruct->hasFontIdBeenSet = TRUE; + } + return RenderText(textPrinter); +} + +static u16 FontFunc_ShortNarrow(struct TextPrinter *textPrinter) +{ + struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields); + + if (subStruct->hasFontIdBeenSet == FALSE) + { + subStruct->fontId = FONT_SHORT_NARROW; + subStruct->hasFontIdBeenSet = TRUE; + } + return RenderText(textPrinter); +} + void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter) { struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields); @@ -1140,6 +1221,15 @@ static u16 RenderText(struct TextPrinter *textPrinter) case FONT_SMALL_NARROW: DecompressGlyph_SmallNarrow(currChar, textPrinter->japanese); break; + case FONT_NARROWER: + DecompressGlyph_Narrower(currChar, textPrinter->japanese); + break; + case FONT_SMALL_NARROWER: + DecompressGlyph_SmallNarrower(currChar, textPrinter->japanese); + break; + case FONT_SHORT_NARROW: + DecompressGlyph_ShortNarrow(currChar, textPrinter->japanese); + break; case FONT_BRAILLE: break; } @@ -1902,3 +1992,200 @@ static void DecompressGlyph_Bold(u16 glyphId) gCurGlyph.width = 8; gCurGlyph.height = 12; } + +static void DecompressGlyph_Narrower(u16 glyphId, bool32 isJapanese) +{ + const u16 *glyphs; + + if (isJapanese == TRUE) + { + glyphs = gFontNormalJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10)); + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom); + gCurGlyph.width = 8; + gCurGlyph.height = 15; + } + else + { + glyphs = gFontNarrowerLatinGlyphs + (0x20 * glyphId); + gCurGlyph.width = gFontNarrowerLatinGlyphWidths[glyphId]; + + if (gCurGlyph.width <= 8) + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + } + else + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + DecompressGlyphTile(glyphs + 0x18, gCurGlyph.gfxBufferBottom + 8); + } + + gCurGlyph.height = 15; + } +} + +static u32 GetGlyphWidth_Narrower(u16 glyphId, bool32 isJapanese) +{ + if (isJapanese == TRUE) + return 8; + else + return gFontNarrowerLatinGlyphWidths[glyphId]; +} + +static void DecompressGlyph_SmallNarrower(u16 glyphId, bool32 isJapanese) +{ + const u16 *glyphs; + + if (isJapanese == TRUE) + { + glyphs = gFontSmallJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10)); + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom); + gCurGlyph.width = 8; + gCurGlyph.height = 15; + } + else + { + glyphs = gFontSmallNarrowerLatinGlyphs + (0x20 * glyphId); + gCurGlyph.width = gFontSmallNarrowerLatinGlyphWidths[glyphId]; + + if (gCurGlyph.width <= 8) + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + } + else + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + DecompressGlyphTile(glyphs + 0x18, gCurGlyph.gfxBufferBottom + 8); + } + + gCurGlyph.height = 15; + } +} + +static u32 GetGlyphWidth_SmallNarrower(u16 glyphId, bool32 isJapanese) +{ + if (isJapanese == TRUE) + return 8; + else + return gFontSmallNarrowerLatinGlyphWidths[glyphId]; +} + +static void DecompressGlyph_ShortNarrow(u16 glyphId, bool32 isJapanese) +{ + const u16 *glyphs; + + if (isJapanese == TRUE) + { + glyphs = gFontShortJapaneseGlyphs + (0x100 * (glyphId >> 0x3)) + (0x10 * (glyphId & 0x7)); + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8); + DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom); // gCurGlyph + 0x20 + DecompressGlyphTile(glyphs + 0x88, gCurGlyph.gfxBufferBottom + 8); // gCurGlyph + 0x60 + gCurGlyph.width = gFontShortJapaneseGlyphWidths[glyphId]; + gCurGlyph.height = 14; + } + else + { + glyphs = gFontShortNarrowLatinGlyphs + (0x20 * glyphId); + gCurGlyph.width = gFontShortNarrowLatinGlyphWidths[glyphId]; + + if (gCurGlyph.width <= 8) + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + } + else + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + DecompressGlyphTile(glyphs + 0x18, gCurGlyph.gfxBufferBottom + 8); + } + + gCurGlyph.height = 14; + } +} + +static u32 GetGlyphWidth_ShortNarrow(u16 glyphId, bool32 isJapanese) +{ + if (isJapanese == TRUE) + return gFontShortJapaneseGlyphWidths[glyphId]; + else + return gFontShortNarrowLatinGlyphWidths[glyphId]; +} + +static const s8 sNarrowerFontIds[] = +{ + [FONT_SMALL] = FONT_SMALL_NARROW, + [FONT_NORMAL] = FONT_NARROW, + [FONT_SHORT] = FONT_SHORT_NARROW, + [FONT_SHORT_COPY_1] = FONT_SHORT_NARROW, + [FONT_SHORT_COPY_2] = FONT_SHORT_NARROW, + [FONT_SHORT_COPY_3] = FONT_SHORT_NARROW, + [FONT_BRAILLE] = -1, + [FONT_NARROW] = FONT_NARROWER, + [FONT_SMALL_NARROW] = FONT_SMALL_NARROWER, + [FONT_BOLD] = -1, + [FONT_NARROWER] = -1, + [FONT_SMALL_NARROWER] = -1, + [FONT_SHORT_NARROW] = -1, +}; + +// If the narrowest font ID doesn't fit the text, we still return that +// ID because clipping is better than crashing. +u32 GetFontIdToFit(const u8 *string, u32 fontId, u32 letterSpacing, u32 widthPx) +{ + for (;;) + { + s32 narrowerFontId = sNarrowerFontIds[fontId]; + if (narrowerFontId == -1) + return fontId; + if (GetStringWidth(fontId, string, letterSpacing) <= widthPx) + return fontId; + fontId = narrowerFontId; + } +} + +u8 *PrependFontIdToFit(u8 *start, u8 *end, u32 fontId, u32 width) +{ + u32 fitFontId = GetFontIdToFit(start, fontId, 0, width); + + if (fitFontId == fontId) + return end; + + memmove(&start[3], &start[0], end - start); + start[0] = EXT_CTRL_CODE_BEGIN; + start[1] = EXT_CTRL_CODE_FONT; + start[2] = fitFontId; + end[3] = EOS; + return end + 3; +} + +u8 *WrapFontIdToFit(u8 *start, u8 *end, u32 fontId, u32 width) +{ + + u32 fitFontId = GetFontIdToFit(start, fontId, 0, width); + if (fitFontId != fontId) + { + memmove(&start[3], &start[0], end - start); + start[0] = EXT_CTRL_CODE_BEGIN; + start[1] = EXT_CTRL_CODE_FONT; + start[2] = fitFontId; + end[3] = EXT_CTRL_CODE_BEGIN; + end[4] = EXT_CTRL_CODE_FONT; + end[5] = fontId; + end[6] = EOS; + return end + 6; + } + else + { + return end; + } +} diff --git a/gflib/text.h b/gflib/text.h index 76d140d86cdb..fc457e5a00f0 100644 --- a/gflib/text.h +++ b/gflib/text.h @@ -18,6 +18,9 @@ enum { FONT_NARROW, FONT_SMALL_NARROW, // Very similar to FONT_SMALL, some glyphs are narrower FONT_BOLD, // JP glyph set only + FONT_NARROWER, + FONT_SMALL_NARROWER, + FONT_SHORT_NARROW, }; // Return values for font functions @@ -168,4 +171,8 @@ u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension); u16 FontFunc_Braille(struct TextPrinter *textPrinter); u32 GetGlyphWidth_Braille(u16 glyphId, bool32 isJapanese); +u32 GetFontIdToFit(const u8 *string, u32 widestFontId, u32 letterSpacing, u32 widthPx); +u8 *PrependFontIdToFit(u8 *start, u8 *end, u32 fontId, u32 width); +u8 *WrapFontIdToFit(u8 *start, u8 *end, u32 fontId, u32 width); + #endif // GUARD_TEXT_H diff --git a/gflib/window.c b/gflib/window.c index 61264000ea35..5e77283945b5 100644 --- a/gflib/window.c +++ b/gflib/window.c @@ -712,3 +712,13 @@ static u32 GetNumActiveWindowsOnBg8Bit(u32 bgId) } return windowsNum; } + +u32 WindowWidthPx(u32 windowId) +{ + return gWindows[windowId].window.width * TILE_WIDTH; +} + +u32 WindowTemplateWidthPx(const struct WindowTemplate *template) +{ + return template->width * TILE_WIDTH; +} diff --git a/gflib/window.h b/gflib/window.h index 85e385cb9f87..2fd0bddb20cc 100644 --- a/gflib/window.h +++ b/gflib/window.h @@ -73,6 +73,8 @@ void FillWindowPixelBuffer8Bit(u32 windowId, u8 fillValue); void FillWindowPixelRect8Bit(u32 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height); void BlitBitmapRectToWindow4BitTo8Bit(u32 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum); void CopyWindowToVram8Bit(u32 windowId, u8 mode); +u32 WindowWidthPx(u32 windowId); +u32 WindowTemplateWidthPx(const struct WindowTemplate *template); extern struct Window gWindows[]; extern void *gWindowBgTilemapBuffers[]; diff --git a/graphics/battle_anims/sprites/dreepy_missile.pal b/graphics/battle_anims/sprites/dreepy_missile.pal new file mode 100644 index 000000000000..906cfa8a2460 --- /dev/null +++ b/graphics/battle_anims/sprites/dreepy_missile.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 217 234 +254 87 103 +77 119 117 +62 67 67 +170 237 211 +138 189 179 +121 163 146 +77 119 117 +251 234 137 +195 97 109 +78 52 54 +222 214 198 +173 146 118 +151 135 135 +122 105 94 +0 4 1 diff --git a/graphics/battle_anims/sprites/dreepy_missile.png b/graphics/battle_anims/sprites/dreepy_missile.png index 73fe2d2f2144..49333681cf21 100644 Binary files a/graphics/battle_anims/sprites/dreepy_missile.png and b/graphics/battle_anims/sprites/dreepy_missile.png differ diff --git a/graphics/battle_anims/sprites/dreepy_missile_shiny.pal b/graphics/battle_anims/sprites/dreepy_missile_shiny.pal new file mode 100644 index 000000000000..718b2d240007 --- /dev/null +++ b/graphics/battle_anims/sprites/dreepy_missile_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 217 234 +222 223 109 +77 119 117 +62 67 67 +170 237 211 +138 189 179 +77 171 225 +53 110 226 +251 234 137 +195 97 109 +78 52 54 +222 214 198 +173 146 118 +151 135 135 +122 105 94 +0 4 1 diff --git a/graphics/battle_anims/sprites/tera_crystal.png b/graphics/battle_anims/sprites/tera_crystal.png new file mode 100644 index 000000000000..e1c406a744a3 Binary files /dev/null and b/graphics/battle_anims/sprites/tera_crystal.png differ diff --git a/graphics/battle_anims/sprites/tera_shatter.png b/graphics/battle_anims/sprites/tera_shatter.png new file mode 100644 index 000000000000..c3f698b9d475 Binary files /dev/null and b/graphics/battle_anims/sprites/tera_shatter.png differ diff --git a/graphics/battle_interface/bug_indicator.png b/graphics/battle_interface/bug_indicator.png new file mode 100644 index 000000000000..7ab7dc6dfa37 Binary files /dev/null and b/graphics/battle_interface/bug_indicator.png differ diff --git a/graphics/battle_interface/burst_trigger.png b/graphics/battle_interface/burst_trigger.png index e3eb6384d4b4..bbd16ac5553f 100644 Binary files a/graphics/battle_interface/burst_trigger.png and b/graphics/battle_interface/burst_trigger.png differ diff --git a/graphics/battle_interface/dark_indicator.png b/graphics/battle_interface/dark_indicator.png new file mode 100644 index 000000000000..149d2155a397 Binary files /dev/null and b/graphics/battle_interface/dark_indicator.png differ diff --git a/graphics/battle_interface/dragon_indicator.png b/graphics/battle_interface/dragon_indicator.png new file mode 100644 index 000000000000..4c1d9e1f785a Binary files /dev/null and b/graphics/battle_interface/dragon_indicator.png differ diff --git a/graphics/battle_interface/electric_indicator.png b/graphics/battle_interface/electric_indicator.png new file mode 100644 index 000000000000..518907dc05fc Binary files /dev/null and b/graphics/battle_interface/electric_indicator.png differ diff --git a/graphics/battle_interface/fairy_indicator.png b/graphics/battle_interface/fairy_indicator.png new file mode 100644 index 000000000000..a41736eeec85 Binary files /dev/null and b/graphics/battle_interface/fairy_indicator.png differ diff --git a/graphics/battle_interface/fighting_indicator.png b/graphics/battle_interface/fighting_indicator.png new file mode 100644 index 000000000000..6102ab68465b Binary files /dev/null and b/graphics/battle_interface/fighting_indicator.png differ diff --git a/graphics/battle_interface/fire_indicator.png b/graphics/battle_interface/fire_indicator.png new file mode 100644 index 000000000000..4d3e59d543ac Binary files /dev/null and b/graphics/battle_interface/fire_indicator.png differ diff --git a/graphics/battle_interface/flying_indicator.png b/graphics/battle_interface/flying_indicator.png new file mode 100644 index 000000000000..767954b70633 Binary files /dev/null and b/graphics/battle_interface/flying_indicator.png differ diff --git a/graphics/battle_interface/ghost_indicator.png b/graphics/battle_interface/ghost_indicator.png new file mode 100644 index 000000000000..c1aeec6059ff Binary files /dev/null and b/graphics/battle_interface/ghost_indicator.png differ diff --git a/graphics/battle_interface/grass_indicator.png b/graphics/battle_interface/grass_indicator.png new file mode 100644 index 000000000000..81fa2589d0da Binary files /dev/null and b/graphics/battle_interface/grass_indicator.png differ diff --git a/graphics/battle_interface/ground_indicator.png b/graphics/battle_interface/ground_indicator.png new file mode 100644 index 000000000000..7a306510fe75 Binary files /dev/null and b/graphics/battle_interface/ground_indicator.png differ diff --git a/graphics/battle_interface/ice_indicator.png b/graphics/battle_interface/ice_indicator.png new file mode 100644 index 000000000000..a40d96f01831 Binary files /dev/null and b/graphics/battle_interface/ice_indicator.png differ diff --git a/graphics/battle_interface/normal_indicator.png b/graphics/battle_interface/normal_indicator.png new file mode 100644 index 000000000000..029827e2962b Binary files /dev/null and b/graphics/battle_interface/normal_indicator.png differ diff --git a/graphics/battle_interface/poison_indicator.png b/graphics/battle_interface/poison_indicator.png new file mode 100644 index 000000000000..c2646d0a71b5 Binary files /dev/null and b/graphics/battle_interface/poison_indicator.png differ diff --git a/graphics/battle_interface/psychic_indicator.png b/graphics/battle_interface/psychic_indicator.png new file mode 100644 index 000000000000..f70352d2ee8f Binary files /dev/null and b/graphics/battle_interface/psychic_indicator.png differ diff --git a/graphics/battle_interface/rock_indicator.png b/graphics/battle_interface/rock_indicator.png new file mode 100644 index 000000000000..0329ec678cd1 Binary files /dev/null and b/graphics/battle_interface/rock_indicator.png differ diff --git a/graphics/battle_interface/steel_indicator.png b/graphics/battle_interface/steel_indicator.png new file mode 100644 index 000000000000..e84d9fa1b0c5 Binary files /dev/null and b/graphics/battle_interface/steel_indicator.png differ diff --git a/graphics/battle_interface/stellar_indicator.png b/graphics/battle_interface/stellar_indicator.png new file mode 100644 index 000000000000..7551e2b2305a Binary files /dev/null and b/graphics/battle_interface/stellar_indicator.png differ diff --git a/graphics/battle_interface/tera_indicator.pal b/graphics/battle_interface/tera_indicator.pal new file mode 100644 index 000000000000..d4ab14047263 --- /dev/null +++ b/graphics/battle_interface/tera_indicator.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +98 83 124 +207 63 109 +83 105 175 +80 144 216 +216 208 179 +254 115 121 +148 155 163 +99 188 91 +147 192 47 +255 156 85 +199 182 140 +113 206 198 +117 206 192 +245 210 55 +255 255 255 diff --git a/graphics/battle_interface/tera_trigger.png b/graphics/battle_interface/tera_trigger.png new file mode 100644 index 000000000000..5498ea8806cf Binary files /dev/null and b/graphics/battle_interface/tera_trigger.png differ diff --git a/graphics/battle_interface/water_indicator.png b/graphics/battle_interface/water_indicator.png new file mode 100644 index 000000000000..bdeb401f4abe Binary files /dev/null and b/graphics/battle_interface/water_indicator.png differ diff --git a/graphics/battle_interface/z_move_trigger.png b/graphics/battle_interface/z_move_trigger.png index d719494d9f0a..7d5fbaba0f6b 100644 Binary files a/graphics/battle_interface/z_move_trigger.png and b/graphics/battle_interface/z_move_trigger.png differ diff --git a/graphics/field_effects/pics/bug_tracks.png b/graphics/field_effects/pics/bug_tracks.png new file mode 100644 index 000000000000..b7062d253f68 Binary files /dev/null and b/graphics/field_effects/pics/bug_tracks.png differ diff --git a/graphics/field_effects/pics/shadow_extra_large.png b/graphics/field_effects/pics/shadow_extra_large.png index 765a5291a8d9..eb334a976c59 100644 Binary files a/graphics/field_effects/pics/shadow_extra_large.png and b/graphics/field_effects/pics/shadow_extra_large.png differ diff --git a/graphics/field_effects/pics/shadow_large.png b/graphics/field_effects/pics/shadow_large.png index e917823b05cd..1695208af543 100644 Binary files a/graphics/field_effects/pics/shadow_large.png and b/graphics/field_effects/pics/shadow_large.png differ diff --git a/graphics/field_effects/pics/shadow_medium.png b/graphics/field_effects/pics/shadow_medium.png index 83ab6e1f6e1e..4327a053d2f4 100644 Binary files a/graphics/field_effects/pics/shadow_medium.png and b/graphics/field_effects/pics/shadow_medium.png differ diff --git a/graphics/field_effects/pics/shadow_small.png b/graphics/field_effects/pics/shadow_small.png index f5feada2b966..6cd37c5f23a5 100644 Binary files a/graphics/field_effects/pics/shadow_small.png and b/graphics/field_effects/pics/shadow_small.png differ diff --git a/graphics/field_effects/pics/slither_tracks.png b/graphics/field_effects/pics/slither_tracks.png new file mode 100644 index 000000000000..7c8247c344aa Binary files /dev/null and b/graphics/field_effects/pics/slither_tracks.png differ diff --git a/graphics/field_effects/pics/spot_tracks.png b/graphics/field_effects/pics/spot_tracks.png new file mode 100644 index 000000000000..cd8c9c0cf4ba Binary files /dev/null and b/graphics/field_effects/pics/spot_tracks.png differ diff --git a/graphics/fonts/latin_narrower.png b/graphics/fonts/latin_narrower.png new file mode 100644 index 000000000000..22847ef09953 Binary files /dev/null and b/graphics/fonts/latin_narrower.png differ diff --git a/graphics/fonts/latin_short_narrow.png b/graphics/fonts/latin_short_narrow.png new file mode 100644 index 000000000000..cf48712719ac Binary files /dev/null and b/graphics/fonts/latin_short_narrow.png differ diff --git a/graphics/fonts/latin_small_narrower.png b/graphics/fonts/latin_small_narrower.png new file mode 100644 index 000000000000..a183bed7cc28 Binary files /dev/null and b/graphics/fonts/latin_small_narrower.png differ diff --git a/graphics/map_popup/bw/black.pal b/graphics/map_popup/bw/black.pal new file mode 100644 index 000000000000..ef4da4d29cfe --- /dev/null +++ b/graphics/map_popup/bw/black.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +255 255 255 +84 85 89 +0 0 0 +238 230 238 +189 180 197 +139 139 164 +90 90 123 +41 49 90 +27 27 27 +40 40 40 +51 51 51 +62 62 62 +0 0 0 +0 0 0 diff --git a/graphics/map_popup/bw/bw_primary.png b/graphics/map_popup/bw/bw_primary.png new file mode 100644 index 000000000000..9dd681ff0abb Binary files /dev/null and b/graphics/map_popup/bw/bw_primary.png differ diff --git a/graphics/map_popup/bw/bw_secondary.png b/graphics/map_popup/bw/bw_secondary.png new file mode 100644 index 000000000000..b63ce95311a8 Binary files /dev/null and b/graphics/map_popup/bw/bw_secondary.png differ diff --git a/graphics/map_popup/bw/white.pal b/graphics/map_popup/bw/white.pal new file mode 100644 index 000000000000..8706c80d4e0b --- /dev/null +++ b/graphics/map_popup/bw/white.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +0 0 0 +158 158 158 +0 0 0 +238 230 238 +189 180 197 +139 139 164 +90 90 123 +41 49 90 +228 228 228 +215 215 215 +204 204 204 +193 193 193 +0 0 0 +0 0 0 diff --git a/graphics/misc/emotes.pal b/graphics/misc/emotes.pal new file mode 100644 index 000000000000..295fc0223784 --- /dev/null +++ b/graphics/misc/emotes.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 0 +151 48 0 +74 75 87 +88 88 97 +164 72 167 +248 63 2 +78 128 207 +48 160 0 +237 131 0 +205 144 203 +168 168 178 +251 167 159 +240 176 183 +219 181 221 +165 225 69 +247 249 246 diff --git a/graphics/misc/emotes.png b/graphics/misc/emotes.png new file mode 100644 index 000000000000..2460eaf999a8 Binary files /dev/null and b/graphics/misc/emotes.png differ diff --git a/graphics/object_events/pics/misc/ball_beast.png b/graphics/object_events/pics/misc/ball_beast.png new file mode 100644 index 000000000000..f3733d11aec1 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_beast.png differ diff --git a/graphics/object_events/pics/misc/ball_cherish.png b/graphics/object_events/pics/misc/ball_cherish.png new file mode 100644 index 000000000000..a93cab30c5bc Binary files /dev/null and b/graphics/object_events/pics/misc/ball_cherish.png differ diff --git a/graphics/object_events/pics/misc/ball_dive.png b/graphics/object_events/pics/misc/ball_dive.png new file mode 100644 index 000000000000..1349ffa3ff04 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_dive.png differ diff --git a/graphics/object_events/pics/misc/ball_dream.png b/graphics/object_events/pics/misc/ball_dream.png new file mode 100644 index 000000000000..875e72a702f8 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_dream.png differ diff --git a/graphics/object_events/pics/misc/ball_dusk.png b/graphics/object_events/pics/misc/ball_dusk.png new file mode 100644 index 000000000000..824557003d5b Binary files /dev/null and b/graphics/object_events/pics/misc/ball_dusk.png differ diff --git a/graphics/object_events/pics/misc/ball_fast.png b/graphics/object_events/pics/misc/ball_fast.png new file mode 100644 index 000000000000..3e3ca467ea07 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_fast.png differ diff --git a/graphics/object_events/pics/misc/ball_friend.png b/graphics/object_events/pics/misc/ball_friend.png new file mode 100644 index 000000000000..f22d7f78a28f Binary files /dev/null and b/graphics/object_events/pics/misc/ball_friend.png differ diff --git a/graphics/object_events/pics/misc/ball_great.png b/graphics/object_events/pics/misc/ball_great.png new file mode 100644 index 000000000000..5a70a505fefb Binary files /dev/null and b/graphics/object_events/pics/misc/ball_great.png differ diff --git a/graphics/object_events/pics/misc/ball_heal.png b/graphics/object_events/pics/misc/ball_heal.png new file mode 100644 index 000000000000..bcb2272e51de Binary files /dev/null and b/graphics/object_events/pics/misc/ball_heal.png differ diff --git a/graphics/object_events/pics/misc/ball_heavy.png b/graphics/object_events/pics/misc/ball_heavy.png new file mode 100644 index 000000000000..5b2841069425 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_heavy.png differ diff --git a/graphics/object_events/pics/misc/ball_level.png b/graphics/object_events/pics/misc/ball_level.png new file mode 100644 index 000000000000..9050ad5588c3 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_level.png differ diff --git a/graphics/object_events/pics/misc/ball_love.png b/graphics/object_events/pics/misc/ball_love.png new file mode 100644 index 000000000000..9584b6c797d9 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_love.png differ diff --git a/graphics/object_events/pics/misc/ball_lure.png b/graphics/object_events/pics/misc/ball_lure.png new file mode 100644 index 000000000000..f3f6c1ffd9d0 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_lure.png differ diff --git a/graphics/object_events/pics/misc/ball_luxury.png b/graphics/object_events/pics/misc/ball_luxury.png new file mode 100644 index 000000000000..f04e816cb305 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_luxury.png differ diff --git a/graphics/object_events/pics/misc/ball_master.png b/graphics/object_events/pics/misc/ball_master.png new file mode 100644 index 000000000000..1db9b71fba8e Binary files /dev/null and b/graphics/object_events/pics/misc/ball_master.png differ diff --git a/graphics/object_events/pics/misc/ball_moon.png b/graphics/object_events/pics/misc/ball_moon.png new file mode 100644 index 000000000000..f13f34e769f5 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_moon.png differ diff --git a/graphics/object_events/pics/misc/ball_nest.png b/graphics/object_events/pics/misc/ball_nest.png new file mode 100644 index 000000000000..48a409183b17 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_nest.png differ diff --git a/graphics/object_events/pics/misc/ball_net.png b/graphics/object_events/pics/misc/ball_net.png new file mode 100644 index 000000000000..186d76650e14 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_net.png differ diff --git a/graphics/object_events/pics/misc/ball_park.png b/graphics/object_events/pics/misc/ball_park.png new file mode 100644 index 000000000000..5cc3f1a9b0f4 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_park.png differ diff --git a/graphics/object_events/pics/misc/ball_poke.png b/graphics/object_events/pics/misc/ball_poke.png new file mode 100644 index 000000000000..03216113ba99 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_poke.png differ diff --git a/graphics/object_events/pics/misc/ball_premier.png b/graphics/object_events/pics/misc/ball_premier.png new file mode 100644 index 000000000000..8876cfe22da3 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_premier.png differ diff --git a/graphics/object_events/pics/misc/ball_quick.png b/graphics/object_events/pics/misc/ball_quick.png new file mode 100644 index 000000000000..0f6c64b1b1b3 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_quick.png differ diff --git a/graphics/object_events/pics/misc/ball_repeat.png b/graphics/object_events/pics/misc/ball_repeat.png new file mode 100644 index 000000000000..36186b094c5f Binary files /dev/null and b/graphics/object_events/pics/misc/ball_repeat.png differ diff --git a/graphics/object_events/pics/misc/ball_safari.png b/graphics/object_events/pics/misc/ball_safari.png new file mode 100644 index 000000000000..f73846a9b82a Binary files /dev/null and b/graphics/object_events/pics/misc/ball_safari.png differ diff --git a/graphics/object_events/pics/misc/ball_sport.png b/graphics/object_events/pics/misc/ball_sport.png new file mode 100644 index 000000000000..1c32d2609ce4 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_sport.png differ diff --git a/graphics/object_events/pics/misc/ball_strange.png b/graphics/object_events/pics/misc/ball_strange.png new file mode 100644 index 000000000000..ee09679dc225 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_strange.png differ diff --git a/graphics/object_events/pics/misc/ball_timer.png b/graphics/object_events/pics/misc/ball_timer.png new file mode 100644 index 000000000000..878d6ea5ba1c Binary files /dev/null and b/graphics/object_events/pics/misc/ball_timer.png differ diff --git a/graphics/object_events/pics/misc/ball_ultra.png b/graphics/object_events/pics/misc/ball_ultra.png new file mode 100644 index 000000000000..171281666fc5 Binary files /dev/null and b/graphics/object_events/pics/misc/ball_ultra.png differ diff --git a/graphics/object_events/pics/misc/item_ball.png b/graphics/object_events/pics/misc/item_ball.png deleted file mode 100644 index ef02e158c99b..000000000000 Binary files a/graphics/object_events/pics/misc/item_ball.png and /dev/null differ diff --git a/graphics/object_events/pics/misc/light.png b/graphics/object_events/pics/misc/light.png new file mode 100644 index 000000000000..d1a0402d102c Binary files /dev/null and b/graphics/object_events/pics/misc/light.png differ diff --git a/graphics/object_events/pics/pokemon/azumarill.png b/graphics/object_events/pics/pokemon_old/azumarill.png similarity index 100% rename from graphics/object_events/pics/pokemon/azumarill.png rename to graphics/object_events/pics/pokemon_old/azumarill.png diff --git a/graphics/object_events/pics/pokemon/azurill.png b/graphics/object_events/pics/pokemon_old/azurill.png similarity index 100% rename from graphics/object_events/pics/pokemon/azurill.png rename to graphics/object_events/pics/pokemon_old/azurill.png diff --git a/graphics/object_events/pics/pokemon/deoxys.png b/graphics/object_events/pics/pokemon_old/deoxys.png similarity index 100% rename from graphics/object_events/pics/pokemon/deoxys.png rename to graphics/object_events/pics/pokemon_old/deoxys.png diff --git a/graphics/object_events/pics/pokemon/dusclops.png b/graphics/object_events/pics/pokemon_old/dusclops.png similarity index 100% rename from graphics/object_events/pics/pokemon/dusclops.png rename to graphics/object_events/pics/pokemon_old/dusclops.png diff --git a/graphics/object_events/pics/pokemon/enemy_zigzagoon.png b/graphics/object_events/pics/pokemon_old/enemy_zigzagoon.png similarity index 100% rename from graphics/object_events/pics/pokemon/enemy_zigzagoon.png rename to graphics/object_events/pics/pokemon_old/enemy_zigzagoon.png diff --git a/graphics/object_events/pics/pokemon/groudon.png b/graphics/object_events/pics/pokemon_old/groudon.png similarity index 100% rename from graphics/object_events/pics/pokemon/groudon.png rename to graphics/object_events/pics/pokemon_old/groudon.png diff --git a/graphics/object_events/pics/pokemon/ho_oh.png b/graphics/object_events/pics/pokemon_old/ho_oh.png similarity index 100% rename from graphics/object_events/pics/pokemon/ho_oh.png rename to graphics/object_events/pics/pokemon_old/ho_oh.png diff --git a/graphics/object_events/pics/pokemon/kecleon.png b/graphics/object_events/pics/pokemon_old/kecleon.png similarity index 100% rename from graphics/object_events/pics/pokemon/kecleon.png rename to graphics/object_events/pics/pokemon_old/kecleon.png diff --git a/graphics/object_events/pics/pokemon/kirlia.png b/graphics/object_events/pics/pokemon_old/kirlia.png similarity index 100% rename from graphics/object_events/pics/pokemon/kirlia.png rename to graphics/object_events/pics/pokemon_old/kirlia.png diff --git a/graphics/object_events/pics/pokemon/kyogre.png b/graphics/object_events/pics/pokemon_old/kyogre.png similarity index 100% rename from graphics/object_events/pics/pokemon/kyogre.png rename to graphics/object_events/pics/pokemon_old/kyogre.png diff --git a/graphics/object_events/pics/pokemon/latias_latios.png b/graphics/object_events/pics/pokemon_old/latias_latios.png similarity index 100% rename from graphics/object_events/pics/pokemon/latias_latios.png rename to graphics/object_events/pics/pokemon_old/latias_latios.png diff --git a/graphics/object_events/pics/pokemon/lugia.png b/graphics/object_events/pics/pokemon_old/lugia.png similarity index 100% rename from graphics/object_events/pics/pokemon/lugia.png rename to graphics/object_events/pics/pokemon_old/lugia.png diff --git a/graphics/object_events/pics/pokemon/mew.png b/graphics/object_events/pics/pokemon_old/mew.png similarity index 100% rename from graphics/object_events/pics/pokemon/mew.png rename to graphics/object_events/pics/pokemon_old/mew.png diff --git a/graphics/object_events/pics/pokemon/pikachu.png b/graphics/object_events/pics/pokemon_old/pikachu.png similarity index 100% rename from graphics/object_events/pics/pokemon/pikachu.png rename to graphics/object_events/pics/pokemon_old/pikachu.png diff --git a/graphics/object_events/pics/pokemon/poochyena.png b/graphics/object_events/pics/pokemon_old/poochyena.png similarity index 100% rename from graphics/object_events/pics/pokemon/poochyena.png rename to graphics/object_events/pics/pokemon_old/poochyena.png diff --git a/graphics/object_events/pics/pokemon/rayquaza.png b/graphics/object_events/pics/pokemon_old/rayquaza_cutscene.png similarity index 100% rename from graphics/object_events/pics/pokemon/rayquaza.png rename to graphics/object_events/pics/pokemon_old/rayquaza_cutscene.png diff --git a/graphics/object_events/pics/pokemon/rayquaza_still.png b/graphics/object_events/pics/pokemon_old/rayquaza_still.png similarity index 100% rename from graphics/object_events/pics/pokemon/rayquaza_still.png rename to graphics/object_events/pics/pokemon_old/rayquaza_still.png diff --git a/graphics/object_events/pics/pokemon/regi.png b/graphics/object_events/pics/pokemon_old/regi.png similarity index 100% rename from graphics/object_events/pics/pokemon/regi.png rename to graphics/object_events/pics/pokemon_old/regi.png diff --git a/graphics/object_events/pics/pokemon/skitty.png b/graphics/object_events/pics/pokemon_old/skitty.png similarity index 100% rename from graphics/object_events/pics/pokemon/skitty.png rename to graphics/object_events/pics/pokemon_old/skitty.png diff --git a/graphics/object_events/pics/pokemon_old/substitute.png b/graphics/object_events/pics/pokemon_old/substitute.png new file mode 100644 index 000000000000..6be1e2ddcb7c Binary files /dev/null and b/graphics/object_events/pics/pokemon_old/substitute.png differ diff --git a/graphics/object_events/pics/pokemon/sudowoodo.png b/graphics/object_events/pics/pokemon_old/sudowoodo_tree.png similarity index 100% rename from graphics/object_events/pics/pokemon/sudowoodo.png rename to graphics/object_events/pics/pokemon_old/sudowoodo_tree.png diff --git a/graphics/object_events/pics/pokemon/vigoroth.png b/graphics/object_events/pics/pokemon_old/vigoroth_mover.png similarity index 100% rename from graphics/object_events/pics/pokemon/vigoroth.png rename to graphics/object_events/pics/pokemon_old/vigoroth_mover.png diff --git a/graphics/object_events/pics/pokemon/wingull.png b/graphics/object_events/pics/pokemon_old/wingull.png similarity index 100% rename from graphics/object_events/pics/pokemon/wingull.png rename to graphics/object_events/pics/pokemon_old/wingull.png diff --git a/graphics/object_events/pics/pokemon/zigzagoon.png b/graphics/object_events/pics/pokemon_old/zigzagoon.png similarity index 100% rename from graphics/object_events/pics/pokemon/zigzagoon.png rename to graphics/object_events/pics/pokemon_old/zigzagoon.png diff --git a/graphics/pokemon/abomasnow/overworld.png b/graphics/pokemon/abomasnow/overworld.png new file mode 100644 index 000000000000..8683a92d6bfb Binary files /dev/null and b/graphics/pokemon/abomasnow/overworld.png differ diff --git a/graphics/pokemon/abomasnow/overworld_normal.pal b/graphics/pokemon/abomasnow/overworld_normal.pal new file mode 100644 index 000000000000..4897648297e9 --- /dev/null +++ b/graphics/pokemon/abomasnow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +0 0 0 +232 232 248 +120 120 152 +184 192 208 +216 216 232 +160 168 200 +48 120 64 +144 120 152 +48 72 56 +192 136 208 +48 152 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/abomasnow/overworld_shiny.pal b/graphics/pokemon/abomasnow/overworld_shiny.pal new file mode 100644 index 000000000000..821bfd7b4d19 --- /dev/null +++ b/graphics/pokemon/abomasnow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +0 0 0 +232 232 248 +120 120 152 +184 192 208 +216 216 232 +160 168 200 +48 96 120 +144 120 152 +40 56 88 +192 136 208 +48 128 152 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/abra/overworld.png b/graphics/pokemon/abra/overworld.png new file mode 100644 index 000000000000..d1bbbae17cee Binary files /dev/null and b/graphics/pokemon/abra/overworld.png differ diff --git a/graphics/pokemon/abra/overworld_normal.pal b/graphics/pokemon/abra/overworld_normal.pal new file mode 100644 index 000000000000..15a18286c03c --- /dev/null +++ b/graphics/pokemon/abra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 24 +0 0 0 +184 152 40 +248 216 96 +144 120 96 +120 96 56 +0 0 0 +0 0 0 +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/abra/overworld_shiny.pal b/graphics/pokemon/abra/overworld_shiny.pal new file mode 100644 index 000000000000..7c7f962e4c55 --- /dev/null +++ b/graphics/pokemon/abra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 32 +0 0 0 +216 184 112 +248 224 160 +168 144 128 +160 128 72 +0 0 0 +0 0 0 +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/absol/overworld.png b/graphics/pokemon/absol/overworld.png new file mode 100644 index 000000000000..3d6c0269e596 Binary files /dev/null and b/graphics/pokemon/absol/overworld.png differ diff --git a/graphics/pokemon/absol/overworld_normal.pal b/graphics/pokemon/absol/overworld_normal.pal new file mode 100644 index 000000000000..863d0a3a2066 --- /dev/null +++ b/graphics/pokemon/absol/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 72 88 +96 104 128 +40 48 64 +120 128 160 +64 72 96 +40 48 64 +232 232 248 +120 128 160 +208 216 232 +176 184 200 +64 72 88 +128 32 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/absol/overworld_shiny.pal b/graphics/pokemon/absol/overworld_shiny.pal new file mode 100644 index 000000000000..267ac973f754 --- /dev/null +++ b/graphics/pokemon/absol/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 40 48 +192 56 56 +72 32 40 +240 88 88 +64 72 96 +40 48 64 +232 232 248 +120 128 160 +208 216 232 +176 184 200 +64 72 88 +40 200 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/accelgor/overworld.png b/graphics/pokemon/accelgor/overworld.png new file mode 100644 index 000000000000..7668a9bc7af1 Binary files /dev/null and b/graphics/pokemon/accelgor/overworld.png differ diff --git a/graphics/pokemon/accelgor/overworld_normal.pal b/graphics/pokemon/accelgor/overworld_normal.pal new file mode 100644 index 000000000000..f50cf40eeae6 --- /dev/null +++ b/graphics/pokemon/accelgor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +117 25 54 +220 54 117 +54 185 54 +0 0 0 +185 54 117 +85 85 117 +85 117 185 +246 246 246 +220 54 117 +25 54 117 +117 25 54 +185 54 117 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/accelgor/overworld_shiny.pal b/graphics/pokemon/accelgor/overworld_shiny.pal new file mode 100644 index 000000000000..12a1c7cfb534 --- /dev/null +++ b/graphics/pokemon/accelgor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 40 24 +240 184 72 +248 72 120 +0 0 0 +176 128 40 +80 80 80 +128 128 128 +246 246 246 +220 54 117 +48 48 48 +117 25 54 +185 54 117 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aegislash/overworld.png b/graphics/pokemon/aegislash/overworld.png new file mode 100644 index 000000000000..d77edf68c123 Binary files /dev/null and b/graphics/pokemon/aegislash/overworld.png differ diff --git a/graphics/pokemon/aegislash/overworld_normal.pal b/graphics/pokemon/aegislash/overworld_normal.pal new file mode 100644 index 000000000000..8be680eb4e27 --- /dev/null +++ b/graphics/pokemon/aegislash/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +101 95 56 +230 213 104 +160 149 83 +78 76 77 +173 140 220 +185 169 137 +132 123 107 +230 228 212 +56 50 68 +105 91 133 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aegislash/overworld_shiny.pal b/graphics/pokemon/aegislash/overworld_shiny.pal new file mode 100644 index 000000000000..5f7756585c7e --- /dev/null +++ b/graphics/pokemon/aegislash/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +79 77 78 +208 207 205 +147 146 143 +79 77 78 +219 199 75 +172 56 54 +166 153 69 +208 207 205 +79 77 78 +166 153 69 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aerodactyl/overworld.png b/graphics/pokemon/aerodactyl/overworld.png new file mode 100644 index 000000000000..78e3e13bbc47 Binary files /dev/null and b/graphics/pokemon/aerodactyl/overworld.png differ diff --git a/graphics/pokemon/aerodactyl/overworld_normal.pal b/graphics/pokemon/aerodactyl/overworld_normal.pal new file mode 100644 index 000000000000..17f2adc12400 --- /dev/null +++ b/graphics/pokemon/aerodactyl/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 96 +0 0 0 +128 112 176 +144 136 200 +176 176 224 +184 136 192 +128 88 128 +200 200 208 +232 232 248 +96 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aerodactyl/overworld_shiny.pal b/graphics/pokemon/aerodactyl/overworld_shiny.pal new file mode 100644 index 000000000000..04475bec2835 --- /dev/null +++ b/graphics/pokemon/aerodactyl/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 96 +0 0 0 +128 104 128 +176 144 184 +200 192 224 +104 184 224 +80 136 232 +200 200 208 +232 232 248 +96 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aggron/overworld.png b/graphics/pokemon/aggron/overworld.png new file mode 100644 index 000000000000..a4f67709464f Binary files /dev/null and b/graphics/pokemon/aggron/overworld.png differ diff --git a/graphics/pokemon/aggron/overworld_normal.pal b/graphics/pokemon/aggron/overworld_normal.pal new file mode 100644 index 000000000000..03296403febc --- /dev/null +++ b/graphics/pokemon/aggron/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 56 +232 232 248 +176 176 192 +72 64 80 +208 208 216 +128 128 144 +104 96 112 +144 144 152 +0 0 0 +104 144 200 +64 96 128 +208 88 88 +168 56 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aggron/overworld_shiny.pal b/graphics/pokemon/aggron/overworld_shiny.pal new file mode 100644 index 000000000000..86805ca8cf0a --- /dev/null +++ b/graphics/pokemon/aggron/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 48 +232 232 248 +176 176 192 +32 88 88 +208 208 216 +88 152 144 +48 128 120 +144 144 152 +0 0 0 +248 72 80 +136 24 40 +208 88 88 +168 56 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aipom/overworld.png b/graphics/pokemon/aipom/overworld.png new file mode 100644 index 000000000000..90ee83280eae Binary files /dev/null and b/graphics/pokemon/aipom/overworld.png differ diff --git a/graphics/pokemon/aipom/overworld_normal.pal b/graphics/pokemon/aipom/overworld_normal.pal new file mode 100644 index 000000000000..d730b462afd2 --- /dev/null +++ b/graphics/pokemon/aipom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 64 +224 208 160 +200 176 128 +80 40 112 +168 144 96 +0 0 0 +168 136 200 +136 104 168 +136 112 80 +232 232 248 +136 152 184 +184 200 224 +112 72 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aipom/overworld_shiny.pal b/graphics/pokemon/aipom/overworld_shiny.pal new file mode 100644 index 000000000000..64a2b5b3df02 --- /dev/null +++ b/graphics/pokemon/aipom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 64 +224 208 160 +200 176 128 +88 32 80 +168 144 96 +0 0 0 +224 160 224 +184 112 184 +136 112 80 +232 232 248 +136 152 184 +184 200 224 +136 72 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alakazam/overworld.png b/graphics/pokemon/alakazam/overworld.png new file mode 100644 index 000000000000..31b59e0fb531 Binary files /dev/null and b/graphics/pokemon/alakazam/overworld.png differ diff --git a/graphics/pokemon/alakazam/overworld_normal.pal b/graphics/pokemon/alakazam/overworld_normal.pal new file mode 100644 index 000000000000..2a496932872a --- /dev/null +++ b/graphics/pokemon/alakazam/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 24 +248 216 96 +216 168 48 +144 120 56 +0 0 0 +232 232 248 +144 120 96 +176 176 184 +104 80 56 +248 240 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alakazam/overworld_shiny.pal b/graphics/pokemon/alakazam/overworld_shiny.pal new file mode 100644 index 000000000000..12277196af3c --- /dev/null +++ b/graphics/pokemon/alakazam/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 40 24 +248 200 48 +216 152 48 +144 96 56 +0 0 0 +232 232 248 +160 88 104 +176 176 184 +120 32 72 +248 232 152 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alcremie/strawberry/overworld.png b/graphics/pokemon/alcremie/strawberry/overworld.png new file mode 100644 index 000000000000..6387beafd83e Binary files /dev/null and b/graphics/pokemon/alcremie/strawberry/overworld.png differ diff --git a/graphics/pokemon/alcremie/strawberry/overworld_normal.pal b/graphics/pokemon/alcremie/strawberry/overworld_normal.pal new file mode 100644 index 000000000000..600580b16308 --- /dev/null +++ b/graphics/pokemon/alcremie/strawberry/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +34 177 76 +183 121 128 +0 0 0 +253 228 208 +242 138 149 +138 32 57 +254 114 114 +224 175 187 +183 60 60 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alcremie/strawberry/overworld_shiny.pal b/graphics/pokemon/alcremie/strawberry/overworld_shiny.pal new file mode 100644 index 000000000000..546ccb9d6815 --- /dev/null +++ b/graphics/pokemon/alcremie/strawberry/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 82 74 +0 0 0 +164 172 164 +90 90 98 +139 32 57 +255 115 115 +230 230 230 +180 57 57 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/alomomola/overworld.png b/graphics/pokemon/alomomola/overworld.png new file mode 100644 index 000000000000..99439d6814aa Binary files /dev/null and b/graphics/pokemon/alomomola/overworld.png differ diff --git a/graphics/pokemon/alomomola/overworld_normal.pal b/graphics/pokemon/alomomola/overworld_normal.pal new file mode 100644 index 000000000000..0f812c4c1abf --- /dev/null +++ b/graphics/pokemon/alomomola/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 56 64 +129 55 87 +255 182 182 +191 79 112 +255 129 164 +245 104 121 +227 129 147 +255 208 227 +255 236 245 +0 33 40 +0 0 0 +0 71 87 +147 129 11 +208 208 47 +0 0 0 diff --git a/graphics/pokemon/alomomola/overworld_shiny.pal b/graphics/pokemon/alomomola/overworld_shiny.pal new file mode 100644 index 000000000000..2d20876f3307 --- /dev/null +++ b/graphics/pokemon/alomomola/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 56 64 +112 80 136 +216 192 232 +152 80 160 +184 128 208 +192 120 200 +176 128 216 +232 216 240 +248 248 248 +16 112 32 +0 0 0 +64 184 80 +160 152 8 +208 208 56 +0 0 0 diff --git a/graphics/pokemon/altaria/overworld.png b/graphics/pokemon/altaria/overworld.png new file mode 100644 index 000000000000..0409738b7c5e Binary files /dev/null and b/graphics/pokemon/altaria/overworld.png differ diff --git a/graphics/pokemon/altaria/overworld_normal.pal b/graphics/pokemon/altaria/overworld_normal.pal new file mode 100644 index 000000000000..94932c48b940 --- /dev/null +++ b/graphics/pokemon/altaria/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 104 152 +0 64 104 +64 168 216 +0 0 0 +0 32 96 +168 176 192 +112 128 144 +72 80 104 +96 192 232 +208 224 232 +248 248 248 +40 128 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/altaria/overworld_shiny.pal b/graphics/pokemon/altaria/overworld_shiny.pal new file mode 100644 index 000000000000..eae4c8689f76 --- /dev/null +++ b/graphics/pokemon/altaria/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 120 56 +104 80 40 +224 184 88 +0 0 0 +64 56 24 +184 184 144 +120 120 96 +80 72 64 +248 216 120 +232 248 184 +248 248 248 +200 136 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/amaura/overworld.png b/graphics/pokemon/amaura/overworld.png new file mode 100644 index 000000000000..a9e85beda773 Binary files /dev/null and b/graphics/pokemon/amaura/overworld.png differ diff --git a/graphics/pokemon/amaura/overworld_normal.pal b/graphics/pokemon/amaura/overworld_normal.pal new file mode 100644 index 000000000000..cd4b4aef8683 --- /dev/null +++ b/graphics/pokemon/amaura/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +235 125 151 +109 34 27 +158 111 67 +19 56 95 +101 168 207 +147 201 233 +237 226 127 +65 103 143 +167 175 181 +230 238 248 +65 103 143 +147 201 233 +19 56 95 +0 0 0 diff --git a/graphics/pokemon/amaura/overworld_shiny.pal b/graphics/pokemon/amaura/overworld_shiny.pal new file mode 100644 index 000000000000..b2771aac868e --- /dev/null +++ b/graphics/pokemon/amaura/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +229 176 189 +169 110 124 +174 169 122 +114 113 113 +215 215 215 +244 244 244 +242 236 180 +173 172 172 +130 177 213 +230 238 248 +143 219 237 +202 233 240 +97 161 176 +0 0 0 diff --git a/graphics/pokemon/ambipom/overworld.png b/graphics/pokemon/ambipom/overworld.png new file mode 100644 index 000000000000..f8bcd7489019 Binary files /dev/null and b/graphics/pokemon/ambipom/overworld.png differ diff --git a/graphics/pokemon/ambipom/overworld_normal.pal b/graphics/pokemon/ambipom/overworld_normal.pal new file mode 100644 index 000000000000..1138fe1ce73e --- /dev/null +++ b/graphics/pokemon/ambipom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +200 72 104 +96 80 64 +232 216 160 +216 200 144 +160 128 96 +200 176 128 +56 48 96 +152 104 200 +168 128 240 +104 64 152 +184 200 224 +232 232 248 +96 96 96 +0 0 0 diff --git a/graphics/pokemon/ambipom/overworld_shiny.pal b/graphics/pokemon/ambipom/overworld_shiny.pal new file mode 100644 index 000000000000..da808d6c1734 --- /dev/null +++ b/graphics/pokemon/ambipom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +200 72 104 +96 80 64 +232 216 160 +216 200 144 +160 128 96 +200 176 128 +80 40 72 +208 128 168 +216 168 200 +160 64 136 +184 200 224 +232 232 248 +96 96 96 +0 0 0 diff --git a/graphics/pokemon/amoonguss/overworld.png b/graphics/pokemon/amoonguss/overworld.png new file mode 100644 index 000000000000..b694a64e16f0 Binary files /dev/null and b/graphics/pokemon/amoonguss/overworld.png differ diff --git a/graphics/pokemon/amoonguss/overworld_normal.pal b/graphics/pokemon/amoonguss/overworld_normal.pal new file mode 100644 index 000000000000..25b7bd3688f3 --- /dev/null +++ b/graphics/pokemon/amoonguss/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +98 74 65 +205 197 197 +139 115 90 +222 82 139 +172 49 98 +188 177 177 +198 98 140 +65 49 49 +166 151 151 +210 210 221 +255 172 205 +222 139 164 +156 148 131 +0 0 0 diff --git a/graphics/pokemon/amoonguss/overworld_shiny.pal b/graphics/pokemon/amoonguss/overworld_shiny.pal new file mode 100644 index 000000000000..015feb8068b7 --- /dev/null +++ b/graphics/pokemon/amoonguss/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +98 74 65 +208 200 168 +139 115 90 +112 80 216 +80 64 160 +160 152 120 +154 133 228 +65 49 49 +184 184 200 +216 80 136 +168 48 96 +188 177 177 +156 148 131 +0 0 0 diff --git a/graphics/pokemon/ampharos/overworld.png b/graphics/pokemon/ampharos/overworld.png new file mode 100644 index 000000000000..f5fd21424994 Binary files /dev/null and b/graphics/pokemon/ampharos/overworld.png differ diff --git a/graphics/pokemon/ampharos/overworld_normal.pal b/graphics/pokemon/ampharos/overworld_normal.pal new file mode 100644 index 000000000000..6aa9ad55c1df --- /dev/null +++ b/graphics/pokemon/ampharos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +104 88 8 +128 24 8 +0 0 0 +112 128 152 +240 208 88 +152 128 24 +232 232 248 +240 88 80 +200 160 32 +80 96 112 +184 56 16 +184 200 224 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ampharos/overworld_shiny.pal b/graphics/pokemon/ampharos/overworld_shiny.pal new file mode 100644 index 000000000000..c130ea87db63 --- /dev/null +++ b/graphics/pokemon/ampharos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +112 48 72 +8 64 96 +0 0 0 +112 128 152 +240 200 216 +152 96 120 +232 232 248 +88 168 224 +200 152 168 +80 96 112 +48 120 160 +184 200 224 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/anorith/overworld.png b/graphics/pokemon/anorith/overworld.png new file mode 100644 index 000000000000..1391d768d1ac Binary files /dev/null and b/graphics/pokemon/anorith/overworld.png differ diff --git a/graphics/pokemon/anorith/overworld_normal.pal b/graphics/pokemon/anorith/overworld_normal.pal new file mode 100644 index 000000000000..59624f77d7a0 --- /dev/null +++ b/graphics/pokemon/anorith/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 64 72 +48 40 48 +72 112 56 +136 24 56 +200 200 216 +112 152 112 +0 0 0 +168 64 80 +160 160 176 +216 216 232 +104 104 112 +192 112 104 +128 168 120 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/anorith/overworld_shiny.pal b/graphics/pokemon/anorith/overworld_shiny.pal new file mode 100644 index 000000000000..00a0b5715809 --- /dev/null +++ b/graphics/pokemon/anorith/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 64 72 +48 40 48 +128 104 48 +136 24 56 +200 200 216 +192 160 96 +0 0 0 +168 64 80 +160 160 176 +216 216 232 +104 104 112 +192 112 104 +248 208 152 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/appletun/overworld.png b/graphics/pokemon/appletun/overworld.png new file mode 100644 index 000000000000..46734f2a7920 Binary files /dev/null and b/graphics/pokemon/appletun/overworld.png differ diff --git a/graphics/pokemon/appletun/overworld_normal.pal b/graphics/pokemon/appletun/overworld_normal.pal new file mode 100644 index 000000000000..d15bc6566528 --- /dev/null +++ b/graphics/pokemon/appletun/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +92 31 49 +13 31 18 +188 50 91 +105 182 131 +145 22 59 +107 67 13 +51 89 63 +225 164 84 +0 0 0 +248 212 132 +252 191 111 +156 185 116 +71 149 97 +244 129 163 +216 95 131 diff --git a/graphics/pokemon/appletun/overworld_shiny.pal b/graphics/pokemon/appletun/overworld_shiny.pal new file mode 100644 index 000000000000..575d7828e606 --- /dev/null +++ b/graphics/pokemon/appletun/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 82 24 +0 8 0 +90 164 41 +106 180 131 +90 164 41 +106 65 8 +49 90 57 +230 164 82 +0 8 0 +255 213 131 +255 189 106 +148 189 106 +65 148 98 +189 230 131 +148 189 106 diff --git a/graphics/pokemon/applin/overworld.png b/graphics/pokemon/applin/overworld.png new file mode 100644 index 000000000000..d11fffcf16ef Binary files /dev/null and b/graphics/pokemon/applin/overworld.png differ diff --git a/graphics/pokemon/applin/overworld_normal.pal b/graphics/pokemon/applin/overworld_normal.pal new file mode 100644 index 000000000000..d8683b3446e0 --- /dev/null +++ b/graphics/pokemon/applin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 252 252 +36 60 40 +92 28 48 +48 84 24 +52 76 56 +84 120 88 +144 20 56 +168 48 84 +164 36 72 +196 80 116 +92 144 64 +144 204 108 +228 108 144 +0 0 0 +188 164 128 +252 252 252 diff --git a/graphics/pokemon/applin/overworld_shiny.pal b/graphics/pokemon/applin/overworld_shiny.pal new file mode 100644 index 000000000000..33ba263e9d86 --- /dev/null +++ b/graphics/pokemon/applin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 57 41 +49 82 24 +49 82 24 +49 74 57 +82 123 90 +65 148 57 +98 164 65 +82 164 74 +115 180 82 +90 148 65 +148 205 106 +131 197 98 +0 0 0 +189 164 131 +255 255 255 diff --git a/graphics/pokemon/araquanid/overworld.png b/graphics/pokemon/araquanid/overworld.png new file mode 100644 index 000000000000..ab7b85e9178a Binary files /dev/null and b/graphics/pokemon/araquanid/overworld.png differ diff --git a/graphics/pokemon/araquanid/overworld_normal.pal b/graphics/pokemon/araquanid/overworld_normal.pal new file mode 100644 index 000000000000..14ad114b6067 --- /dev/null +++ b/graphics/pokemon/araquanid/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +129 203 194 +171 192 64 +126 170 170 +152 129 106 +75 141 167 +107 91 76 +105 81 45 +68 70 72 +37 60 69 +63 55 47 +32 32 32 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/araquanid/overworld_shiny.pal b/graphics/pokemon/araquanid/overworld_shiny.pal new file mode 100644 index 000000000000..1d58e1d5cfab --- /dev/null +++ b/graphics/pokemon/araquanid/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +129 203 194 +160 80 192 +126 170 170 +152 129 106 +232 128 104 +107 91 76 +64 8 80 +68 70 72 +37 60 69 +63 55 47 +32 32 32 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arbok/overworld.png b/graphics/pokemon/arbok/overworld.png new file mode 100644 index 000000000000..e639051e8618 Binary files /dev/null and b/graphics/pokemon/arbok/overworld.png differ diff --git a/graphics/pokemon/arbok/overworld_normal.pal b/graphics/pokemon/arbok/overworld_normal.pal new file mode 100644 index 000000000000..0dd2215e03c8 --- /dev/null +++ b/graphics/pokemon/arbok/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 80 +120 88 168 +176 128 192 +0 0 0 +232 232 248 +192 64 64 +64 64 64 +208 168 80 +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/arbok/overworld_shiny.pal b/graphics/pokemon/arbok/overworld_shiny.pal new file mode 100644 index 000000000000..cf52ee55506b --- /dev/null +++ b/graphics/pokemon/arbok/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 56 +176 136 48 +216 184 48 +0 0 0 +232 232 248 +64 152 192 +64 64 64 +224 216 72 +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/arcanine/hisuian/overworld.png b/graphics/pokemon/arcanine/hisuian/overworld.png new file mode 100644 index 000000000000..a3c67a34d335 Binary files /dev/null and b/graphics/pokemon/arcanine/hisuian/overworld.png differ diff --git a/graphics/pokemon/arcanine/hisuian/overworld_normal.pal b/graphics/pokemon/arcanine/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..07a421dd7378 --- /dev/null +++ b/graphics/pokemon/arcanine/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 41 32 +0 0 0 +98 98 82 +180 49 32 +139 139 131 +230 65 57 +205 189 180 +49 49 49 +98 16 0 +238 238 255 +90 90 90 +180 180 213 +65 65 57 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arcanine/hisuian/overworld_shiny.pal b/graphics/pokemon/arcanine/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..e23a04f022d2 --- /dev/null +++ b/graphics/pokemon/arcanine/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 41 32 +0 0 0 +98 98 82 +205 180 57 +139 139 131 +230 205 65 +205 189 180 +49 49 49 +139 123 24 +238 238 255 +90 90 90 +180 180 213 +65 65 57 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arcanine/overworld.png b/graphics/pokemon/arcanine/overworld.png new file mode 100644 index 000000000000..31eef58c1b38 Binary files /dev/null and b/graphics/pokemon/arcanine/overworld.png differ diff --git a/graphics/pokemon/arcanine/overworld_normal.pal b/graphics/pokemon/arcanine/overworld_normal.pal new file mode 100644 index 000000000000..e093b2e2bcee --- /dev/null +++ b/graphics/pokemon/arcanine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +224 192 144 +72 48 24 +184 136 104 +248 104 48 +184 80 24 +144 72 32 +120 88 56 +48 48 48 +176 176 208 +88 88 88 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arcanine/overworld_shiny.pal b/graphics/pokemon/arcanine/overworld_shiny.pal new file mode 100644 index 000000000000..779b10b4aa65 --- /dev/null +++ b/graphics/pokemon/arcanine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 208 192 +72 64 24 +184 160 152 +232 192 72 +168 136 48 +128 104 40 +120 96 80 +48 48 48 +176 176 208 +88 88 88 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arceus/bug/icon.png b/graphics/pokemon/arceus/bug/icon.png new file mode 100644 index 000000000000..7da8ef619565 Binary files /dev/null and b/graphics/pokemon/arceus/bug/icon.png differ diff --git a/graphics/pokemon/arceus/bug/overworld.png b/graphics/pokemon/arceus/bug/overworld.png new file mode 100644 index 000000000000..a655faf7bba7 Binary files /dev/null and b/graphics/pokemon/arceus/bug/overworld.png differ diff --git a/graphics/pokemon/arceus/bug/overworld_normal.pal b/graphics/pokemon/arceus/bug/overworld_normal.pal new file mode 100644 index 000000000000..a970e72162b7 --- /dev/null +++ b/graphics/pokemon/arceus/bug/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +144 216 120 +112 160 56 +88 96 112 +48 88 40 +248 160 248 +200 112 200 +40 96 40 +0 0 0 diff --git a/graphics/pokemon/arceus/bug/overworld_shiny.pal b/graphics/pokemon/arceus/bug/overworld_shiny.pal new file mode 100644 index 000000000000..c240188ea406 --- /dev/null +++ b/graphics/pokemon/arceus/bug/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +144 216 120 +112 160 56 +88 96 112 +48 88 40 +248 160 248 +200 112 200 +40 96 40 +0 0 0 diff --git a/graphics/pokemon/arceus/dark/icon.png b/graphics/pokemon/arceus/dark/icon.png new file mode 100644 index 000000000000..60e728ce8a47 Binary files /dev/null and b/graphics/pokemon/arceus/dark/icon.png differ diff --git a/graphics/pokemon/arceus/dark/overworld.png b/graphics/pokemon/arceus/dark/overworld.png new file mode 100644 index 000000000000..ec8921d07a9d Binary files /dev/null and b/graphics/pokemon/arceus/dark/overworld.png differ diff --git a/graphics/pokemon/arceus/dark/overworld_normal.pal b/graphics/pokemon/arceus/dark/overworld_normal.pal new file mode 100644 index 000000000000..7f118367dc03 --- /dev/null +++ b/graphics/pokemon/arceus/dark/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +136 112 128 +144 152 168 +96 104 120 +104 80 96 +72 88 104 +248 104 0 +192 0 56 +32 40 40 +0 0 0 diff --git a/graphics/pokemon/arceus/dark/overworld_shiny.pal b/graphics/pokemon/arceus/dark/overworld_shiny.pal new file mode 100644 index 000000000000..0f702078c71b --- /dev/null +++ b/graphics/pokemon/arceus/dark/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +136 112 128 +144 152 168 +96 104 120 +104 80 96 +72 88 104 +248 104 0 +192 0 56 +32 40 40 +0 0 0 diff --git a/graphics/pokemon/arceus/dragon/icon.png b/graphics/pokemon/arceus/dragon/icon.png new file mode 100644 index 000000000000..a8265e3c8461 Binary files /dev/null and b/graphics/pokemon/arceus/dragon/icon.png differ diff --git a/graphics/pokemon/arceus/dragon/overworld.png b/graphics/pokemon/arceus/dragon/overworld.png new file mode 100644 index 000000000000..558c857bc508 Binary files /dev/null and b/graphics/pokemon/arceus/dragon/overworld.png differ diff --git a/graphics/pokemon/arceus/dragon/overworld_normal.pal b/graphics/pokemon/arceus/dragon/overworld_normal.pal new file mode 100644 index 000000000000..2e9103c96c4a --- /dev/null +++ b/graphics/pokemon/arceus/dragon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +96 136 120 +176 80 216 +144 32 184 +64 104 88 +104 0 136 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/dragon/overworld_shiny.pal b/graphics/pokemon/arceus/dragon/overworld_shiny.pal new file mode 100644 index 000000000000..66e8d518a4eb --- /dev/null +++ b/graphics/pokemon/arceus/dragon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +96 136 120 +176 80 216 +144 32 184 +64 104 88 +104 0 136 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/electric/icon.png b/graphics/pokemon/arceus/electric/icon.png new file mode 100644 index 000000000000..617b1e1113dc Binary files /dev/null and b/graphics/pokemon/arceus/electric/icon.png differ diff --git a/graphics/pokemon/arceus/electric/overworld.png b/graphics/pokemon/arceus/electric/overworld.png new file mode 100644 index 000000000000..1516a4fc858b Binary files /dev/null and b/graphics/pokemon/arceus/electric/overworld.png differ diff --git a/graphics/pokemon/arceus/electric/overworld_normal.pal b/graphics/pokemon/arceus/electric/overworld_normal.pal new file mode 100644 index 000000000000..10f01e8cac44 --- /dev/null +++ b/graphics/pokemon/arceus/electric/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +136 128 88 +248 232 88 +216 192 56 +112 96 56 +128 112 0 +232 128 0 +200 96 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/electric/overworld_shiny.pal b/graphics/pokemon/arceus/electric/overworld_shiny.pal new file mode 100644 index 000000000000..9488b1fdf875 --- /dev/null +++ b/graphics/pokemon/arceus/electric/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +136 128 88 +248 232 88 +216 192 56 +112 96 56 +128 112 0 +232 128 0 +200 96 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fairy/icon.png b/graphics/pokemon/arceus/fairy/icon.png new file mode 100644 index 000000000000..3a9fbdfbd491 Binary files /dev/null and b/graphics/pokemon/arceus/fairy/icon.png differ diff --git a/graphics/pokemon/arceus/fairy/overworld.png b/graphics/pokemon/arceus/fairy/overworld.png new file mode 100644 index 000000000000..6323b047be7f Binary files /dev/null and b/graphics/pokemon/arceus/fairy/overworld.png differ diff --git a/graphics/pokemon/arceus/fairy/overworld_normal.pal b/graphics/pokemon/arceus/fairy/overworld_normal.pal new file mode 100644 index 000000000000..2ab532101c92 --- /dev/null +++ b/graphics/pokemon/arceus/fairy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +134 131 133 +96 136 120 +198 91 205 +166 43 173 +64 104 88 +126 11 125 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fairy/overworld_shiny.pal b/graphics/pokemon/arceus/fairy/overworld_shiny.pal new file mode 100644 index 000000000000..3631497ae7af --- /dev/null +++ b/graphics/pokemon/arceus/fairy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +134 131 133 +96 136 120 +198 91 205 +166 43 173 +64 104 88 +126 11 125 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fighting/icon.png b/graphics/pokemon/arceus/fighting/icon.png new file mode 100644 index 000000000000..e4ec6068b298 Binary files /dev/null and b/graphics/pokemon/arceus/fighting/icon.png differ diff --git a/graphics/pokemon/arceus/fighting/overworld.png b/graphics/pokemon/arceus/fighting/overworld.png new file mode 100644 index 000000000000..0b0a600685eb Binary files /dev/null and b/graphics/pokemon/arceus/fighting/overworld.png differ diff --git a/graphics/pokemon/arceus/fighting/overworld_normal.pal b/graphics/pokemon/arceus/fighting/overworld_normal.pal new file mode 100644 index 000000000000..42e397a3742d --- /dev/null +++ b/graphics/pokemon/arceus/fighting/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +192 88 32 +152 56 32 +88 96 112 +104 24 8 +232 176 0 +176 112 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fighting/overworld_shiny.pal b/graphics/pokemon/arceus/fighting/overworld_shiny.pal new file mode 100644 index 000000000000..5f8ed30c7902 --- /dev/null +++ b/graphics/pokemon/arceus/fighting/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +192 88 32 +152 56 32 +88 96 112 +104 24 8 +232 176 0 +176 112 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fire/icon.png b/graphics/pokemon/arceus/fire/icon.png new file mode 100644 index 000000000000..4c67343bb6a5 Binary files /dev/null and b/graphics/pokemon/arceus/fire/icon.png differ diff --git a/graphics/pokemon/arceus/fire/overworld.png b/graphics/pokemon/arceus/fire/overworld.png new file mode 100644 index 000000000000..7f37aaa0c7ff Binary files /dev/null and b/graphics/pokemon/arceus/fire/overworld.png differ diff --git a/graphics/pokemon/arceus/fire/overworld_normal.pal b/graphics/pokemon/arceus/fire/overworld_normal.pal new file mode 100644 index 000000000000..00546905504e --- /dev/null +++ b/graphics/pokemon/arceus/fire/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +144 96 88 +240 96 16 +208 48 16 +128 32 32 +160 24 16 +248 224 0 +200 120 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/fire/overworld_shiny.pal b/graphics/pokemon/arceus/fire/overworld_shiny.pal new file mode 100644 index 000000000000..a45defd54c02 --- /dev/null +++ b/graphics/pokemon/arceus/fire/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +144 96 88 +240 96 16 +208 48 16 +128 32 32 +160 24 16 +248 224 0 +200 120 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/flying/icon.png b/graphics/pokemon/arceus/flying/icon.png new file mode 100644 index 000000000000..c882bc9dfbf1 Binary files /dev/null and b/graphics/pokemon/arceus/flying/icon.png differ diff --git a/graphics/pokemon/arceus/flying/overworld.png b/graphics/pokemon/arceus/flying/overworld.png new file mode 100644 index 000000000000..df6b0390f7fb Binary files /dev/null and b/graphics/pokemon/arceus/flying/overworld.png differ diff --git a/graphics/pokemon/arceus/flying/overworld_normal.pal b/graphics/pokemon/arceus/flying/overworld_normal.pal new file mode 100644 index 000000000000..f40b2a597b41 --- /dev/null +++ b/graphics/pokemon/arceus/flying/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +144 152 208 +104 112 168 +88 96 112 +72 80 136 +232 240 240 +160 160 168 +40 128 152 +0 0 0 diff --git a/graphics/pokemon/arceus/flying/overworld_shiny.pal b/graphics/pokemon/arceus/flying/overworld_shiny.pal new file mode 100644 index 000000000000..ddab34092541 --- /dev/null +++ b/graphics/pokemon/arceus/flying/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +144 152 208 +104 112 168 +88 96 112 +72 80 136 +232 240 240 +160 160 168 +40 128 152 +0 0 0 diff --git a/graphics/pokemon/arceus/ghost/icon.png b/graphics/pokemon/arceus/ghost/icon.png new file mode 100644 index 000000000000..1e9163e9f5ba Binary files /dev/null and b/graphics/pokemon/arceus/ghost/icon.png differ diff --git a/graphics/pokemon/arceus/ghost/overworld.png b/graphics/pokemon/arceus/ghost/overworld.png new file mode 100644 index 000000000000..87bb58c28f58 Binary files /dev/null and b/graphics/pokemon/arceus/ghost/overworld.png differ diff --git a/graphics/pokemon/arceus/ghost/overworld_normal.pal b/graphics/pokemon/arceus/ghost/overworld_normal.pal new file mode 100644 index 000000000000..b7ed93d84f28 --- /dev/null +++ b/graphics/pokemon/arceus/ghost/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +104 80 144 +160 96 224 +120 80 184 +80 48 136 +88 40 144 +232 64 0 +160 32 0 +248 248 56 +0 0 0 diff --git a/graphics/pokemon/arceus/ghost/overworld_shiny.pal b/graphics/pokemon/arceus/ghost/overworld_shiny.pal new file mode 100644 index 000000000000..765304265945 --- /dev/null +++ b/graphics/pokemon/arceus/ghost/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +104 80 144 +160 96 224 +120 80 184 +80 48 136 +88 40 144 +232 64 0 +160 32 0 +248 248 56 +0 0 0 diff --git a/graphics/pokemon/arceus/grass/icon.png b/graphics/pokemon/arceus/grass/icon.png new file mode 100644 index 000000000000..e2c72dd3b69a Binary files /dev/null and b/graphics/pokemon/arceus/grass/icon.png differ diff --git a/graphics/pokemon/arceus/grass/overworld.png b/graphics/pokemon/arceus/grass/overworld.png new file mode 100644 index 000000000000..3bff11b55cc2 Binary files /dev/null and b/graphics/pokemon/arceus/grass/overworld.png differ diff --git a/graphics/pokemon/arceus/grass/overworld_normal.pal b/graphics/pokemon/arceus/grass/overworld_normal.pal new file mode 100644 index 000000000000..78c23130a419 --- /dev/null +++ b/graphics/pokemon/arceus/grass/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +88 144 112 +88 200 56 +64 152 48 +56 112 80 +40 104 48 +248 224 0 +192 176 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/grass/overworld_shiny.pal b/graphics/pokemon/arceus/grass/overworld_shiny.pal new file mode 100644 index 000000000000..7b9f242238c2 --- /dev/null +++ b/graphics/pokemon/arceus/grass/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +88 144 112 +88 200 56 +64 152 48 +56 112 80 +40 104 48 +248 224 0 +192 176 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/ground/icon.png b/graphics/pokemon/arceus/ground/icon.png new file mode 100644 index 000000000000..dd02c5c191a8 Binary files /dev/null and b/graphics/pokemon/arceus/ground/icon.png differ diff --git a/graphics/pokemon/arceus/ground/overworld.png b/graphics/pokemon/arceus/ground/overworld.png new file mode 100644 index 000000000000..35d715395106 Binary files /dev/null and b/graphics/pokemon/arceus/ground/overworld.png differ diff --git a/graphics/pokemon/arceus/ground/overworld_normal.pal b/graphics/pokemon/arceus/ground/overworld_normal.pal new file mode 100644 index 000000000000..c7fb811cb3fc --- /dev/null +++ b/graphics/pokemon/arceus/ground/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +136 112 80 +192 136 56 +168 104 24 +104 88 56 +136 64 0 +176 176 192 +128 128 144 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/ground/overworld_shiny.pal b/graphics/pokemon/arceus/ground/overworld_shiny.pal new file mode 100644 index 000000000000..7457a114505d --- /dev/null +++ b/graphics/pokemon/arceus/ground/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +136 112 80 +192 136 56 +168 104 24 +104 88 56 +136 64 0 +176 176 192 +128 128 144 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/ice/icon.png b/graphics/pokemon/arceus/ice/icon.png new file mode 100644 index 000000000000..7a63a218240f Binary files /dev/null and b/graphics/pokemon/arceus/ice/icon.png differ diff --git a/graphics/pokemon/arceus/ice/overworld.png b/graphics/pokemon/arceus/ice/overworld.png new file mode 100644 index 000000000000..712e9a92582d Binary files /dev/null and b/graphics/pokemon/arceus/ice/overworld.png differ diff --git a/graphics/pokemon/arceus/ice/overworld_normal.pal b/graphics/pokemon/arceus/ice/overworld_normal.pal new file mode 100644 index 000000000000..fa2f6967f9f5 --- /dev/null +++ b/graphics/pokemon/arceus/ice/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +72 136 168 +160 248 248 +120 192 248 +40 96 128 +224 224 232 +128 128 136 +192 0 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arceus/ice/overworld_shiny.pal b/graphics/pokemon/arceus/ice/overworld_shiny.pal new file mode 100644 index 000000000000..9d92900a7758 --- /dev/null +++ b/graphics/pokemon/arceus/ice/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +72 136 168 +160 248 248 +120 192 248 +40 96 128 +224 224 232 +128 128 136 +192 0 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arceus/overworld.png b/graphics/pokemon/arceus/overworld.png new file mode 100644 index 000000000000..8052c83ee2c4 Binary files /dev/null and b/graphics/pokemon/arceus/overworld.png differ diff --git a/graphics/pokemon/arceus/overworld_normal.pal b/graphics/pokemon/arceus/overworld_normal.pal new file mode 100644 index 000000000000..c61d6ea3eb6d --- /dev/null +++ b/graphics/pokemon/arceus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +232 208 24 +176 152 24 +88 96 112 +104 96 24 +56 176 88 +48 128 64 +240 64 64 +0 0 0 diff --git a/graphics/pokemon/arceus/overworld_shiny.pal b/graphics/pokemon/arceus/overworld_shiny.pal new file mode 100644 index 000000000000..f8d14c4979eb --- /dev/null +++ b/graphics/pokemon/arceus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +232 208 24 +176 152 24 +88 96 112 +104 96 24 +56 176 88 +48 128 64 +240 64 64 +0 0 0 diff --git a/graphics/pokemon/arceus/poison/icon.png b/graphics/pokemon/arceus/poison/icon.png new file mode 100644 index 000000000000..32277ba77277 Binary files /dev/null and b/graphics/pokemon/arceus/poison/icon.png differ diff --git a/graphics/pokemon/arceus/poison/overworld.png b/graphics/pokemon/arceus/poison/overworld.png new file mode 100644 index 000000000000..c9f7767fd1da Binary files /dev/null and b/graphics/pokemon/arceus/poison/overworld.png differ diff --git a/graphics/pokemon/arceus/poison/overworld_normal.pal b/graphics/pokemon/arceus/poison/overworld_normal.pal new file mode 100644 index 000000000000..36b8119dfca1 --- /dev/null +++ b/graphics/pokemon/arceus/poison/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +176 96 184 +128 48 144 +88 96 112 +80 24 96 +240 160 232 +192 96 208 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/poison/overworld_shiny.pal b/graphics/pokemon/arceus/poison/overworld_shiny.pal new file mode 100644 index 000000000000..01e8800100f9 --- /dev/null +++ b/graphics/pokemon/arceus/poison/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +176 96 184 +128 48 144 +88 96 112 +80 24 96 +240 160 232 +192 96 208 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/psychic/icon.png b/graphics/pokemon/arceus/psychic/icon.png new file mode 100644 index 000000000000..0c556490e32d Binary files /dev/null and b/graphics/pokemon/arceus/psychic/icon.png differ diff --git a/graphics/pokemon/arceus/psychic/overworld.png b/graphics/pokemon/arceus/psychic/overworld.png new file mode 100644 index 000000000000..f76036622ab5 Binary files /dev/null and b/graphics/pokemon/arceus/psychic/overworld.png differ diff --git a/graphics/pokemon/arceus/psychic/overworld_normal.pal b/graphics/pokemon/arceus/psychic/overworld_normal.pal new file mode 100644 index 000000000000..9a4107011fc2 --- /dev/null +++ b/graphics/pokemon/arceus/psychic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +232 72 112 +192 24 72 +88 96 112 +152 0 48 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/psychic/overworld_shiny.pal b/graphics/pokemon/arceus/psychic/overworld_shiny.pal new file mode 100644 index 000000000000..3fec008fa48f --- /dev/null +++ b/graphics/pokemon/arceus/psychic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +232 72 112 +192 24 72 +88 96 112 +152 0 48 +0 224 0 +0 152 0 +192 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/rock/icon.png b/graphics/pokemon/arceus/rock/icon.png new file mode 100644 index 000000000000..91d52e195756 Binary files /dev/null and b/graphics/pokemon/arceus/rock/icon.png differ diff --git a/graphics/pokemon/arceus/rock/overworld.png b/graphics/pokemon/arceus/rock/overworld.png new file mode 100644 index 000000000000..53bfee6cf051 Binary files /dev/null and b/graphics/pokemon/arceus/rock/overworld.png differ diff --git a/graphics/pokemon/arceus/rock/overworld_normal.pal b/graphics/pokemon/arceus/rock/overworld_normal.pal new file mode 100644 index 000000000000..26d199bfe76f --- /dev/null +++ b/graphics/pokemon/arceus/rock/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +144 136 96 +112 104 64 +88 96 112 +96 88 48 +216 192 120 +176 152 80 +64 80 64 +0 0 0 diff --git a/graphics/pokemon/arceus/rock/overworld_shiny.pal b/graphics/pokemon/arceus/rock/overworld_shiny.pal new file mode 100644 index 000000000000..d0c613c78f20 --- /dev/null +++ b/graphics/pokemon/arceus/rock/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +144 136 96 +112 104 64 +88 96 112 +96 88 48 +216 192 120 +176 152 80 +64 80 64 +0 0 0 diff --git a/graphics/pokemon/arceus/steel/icon.png b/graphics/pokemon/arceus/steel/icon.png new file mode 100644 index 000000000000..4013495e0d47 Binary files /dev/null and b/graphics/pokemon/arceus/steel/icon.png differ diff --git a/graphics/pokemon/arceus/steel/overworld.png b/graphics/pokemon/arceus/steel/overworld.png new file mode 100644 index 000000000000..33b51e7a8bbe Binary files /dev/null and b/graphics/pokemon/arceus/steel/overworld.png differ diff --git a/graphics/pokemon/arceus/steel/overworld_normal.pal b/graphics/pokemon/arceus/steel/overworld_normal.pal new file mode 100644 index 000000000000..e3ca81c9a8fe --- /dev/null +++ b/graphics/pokemon/arceus/steel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +120 128 144 +192 192 208 +128 128 136 +88 96 112 +88 88 96 +232 224 0 +168 160 0 +96 104 96 +0 0 0 diff --git a/graphics/pokemon/arceus/steel/overworld_shiny.pal b/graphics/pokemon/arceus/steel/overworld_shiny.pal new file mode 100644 index 000000000000..70c82d16172e --- /dev/null +++ b/graphics/pokemon/arceus/steel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +120 128 144 +192 192 208 +128 128 136 +88 96 112 +88 88 96 +232 224 0 +168 160 0 +96 104 96 +0 0 0 diff --git a/graphics/pokemon/arceus/water/icon.png b/graphics/pokemon/arceus/water/icon.png new file mode 100644 index 000000000000..546df7ecd106 Binary files /dev/null and b/graphics/pokemon/arceus/water/icon.png differ diff --git a/graphics/pokemon/arceus/water/overworld.png b/graphics/pokemon/arceus/water/overworld.png new file mode 100644 index 000000000000..291c68b0a54e Binary files /dev/null and b/graphics/pokemon/arceus/water/overworld.png differ diff --git a/graphics/pokemon/arceus/water/overworld_normal.pal b/graphics/pokemon/arceus/water/overworld_normal.pal new file mode 100644 index 000000000000..981366ca1ac5 --- /dev/null +++ b/graphics/pokemon/arceus/water/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +232 232 248 +160 176 200 +200 208 224 +16 16 16 +112 120 144 +0 56 152 +8 144 240 +8 96 192 +0 40 120 +16 48 120 +0 224 248 +0 160 200 +248 0 56 +0 0 0 diff --git a/graphics/pokemon/arceus/water/overworld_shiny.pal b/graphics/pokemon/arceus/water/overworld_shiny.pal new file mode 100644 index 000000000000..36d9c53fc1ca --- /dev/null +++ b/graphics/pokemon/arceus/water/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 72 +248 240 152 +216 192 56 +232 216 96 +16 16 16 +112 120 144 +0 56 152 +8 144 240 +8 96 192 +0 40 120 +16 48 120 +0 224 248 +0 160 200 +248 0 56 +0 0 0 diff --git a/graphics/pokemon/archen/overworld.png b/graphics/pokemon/archen/overworld.png new file mode 100644 index 000000000000..e25f19ba7f21 Binary files /dev/null and b/graphics/pokemon/archen/overworld.png differ diff --git a/graphics/pokemon/archen/overworld_normal.pal b/graphics/pokemon/archen/overworld_normal.pal new file mode 100644 index 000000000000..83bf72363483 --- /dev/null +++ b/graphics/pokemon/archen/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 40 95 +40 71 147 +70 48 35 +40 121 245 +137 54 54 +217 70 62 +0 0 0 +222 221 229 +70 48 35 +70 48 35 +219 174 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/archen/overworld_shiny.pal b/graphics/pokemon/archen/overworld_shiny.pal new file mode 100644 index 000000000000..8e3e7613022b --- /dev/null +++ b/graphics/pokemon/archen/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 104 48 +16 152 64 +78 47 25 +16 208 72 +153 86 63 +224 128 72 +0 0 0 +222 221 229 +47 47 47 +80 64 40 +221 201 94 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/archeops/overworld.png b/graphics/pokemon/archeops/overworld.png new file mode 100644 index 000000000000..8a8a23a4edf7 Binary files /dev/null and b/graphics/pokemon/archeops/overworld.png differ diff --git a/graphics/pokemon/archeops/overworld_normal.pal b/graphics/pokemon/archeops/overworld_normal.pal new file mode 100644 index 000000000000..772efa0e1cac --- /dev/null +++ b/graphics/pokemon/archeops/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 48 104 +48 80 152 +187 76 72 +212 214 224 +240 200 96 +0 0 0 +48 128 240 +187 76 72 +16 160 144 +16 48 104 +66 75 64 +240 200 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/archeops/overworld_shiny.pal b/graphics/pokemon/archeops/overworld_shiny.pal new file mode 100644 index 000000000000..92931a6ccaef --- /dev/null +++ b/graphics/pokemon/archeops/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 64 48 +8 111 95 +216 101 35 +220 220 240 +248 176 96 +0 1 0 +16 160 144 +158 72 47 +48 128 240 +48 80 152 +113 61 35 +241 200 100 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arctovish/overworld.png b/graphics/pokemon/arctovish/overworld.png new file mode 100644 index 000000000000..0afb28f0db48 Binary files /dev/null and b/graphics/pokemon/arctovish/overworld.png differ diff --git a/graphics/pokemon/arctovish/overworld_normal.pal b/graphics/pokemon/arctovish/overworld_normal.pal new file mode 100644 index 000000000000..19c81a707edb --- /dev/null +++ b/graphics/pokemon/arctovish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 52 36 +28 40 44 +20 48 68 +0 0 0 +60 100 184 +60 132 184 +100 136 160 +88 128 212 +108 172 212 +140 148 152 +172 184 192 +168 208 236 +152 204 236 +204 204 204 +216 236 252 +252 252 252 diff --git a/graphics/pokemon/arctovish/overworld_shiny.pal b/graphics/pokemon/arctovish/overworld_shiny.pal new file mode 100644 index 000000000000..7e9379717184 --- /dev/null +++ b/graphics/pokemon/arctovish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 65 +90 82 98 +0 0 0 +98 106 123 +139 123 156 +156 164 156 +139 123 156 +172 164 189 +148 148 148 +172 189 197 +172 164 189 +189 205 189 +205 205 205 +222 230 222 +255 255 255 diff --git a/graphics/pokemon/arctozolt/overworld.png b/graphics/pokemon/arctozolt/overworld.png new file mode 100644 index 000000000000..105c32fa86b8 Binary files /dev/null and b/graphics/pokemon/arctozolt/overworld.png differ diff --git a/graphics/pokemon/arctozolt/overworld_normal.pal b/graphics/pokemon/arctozolt/overworld_normal.pal new file mode 100644 index 000000000000..49943c434490 --- /dev/null +++ b/graphics/pokemon/arctozolt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 52 36 +0 0 0 +92 88 36 +20 48 68 +44 44 44 +188 156 12 +244 208 44 +60 100 184 +60 132 184 +104 156 212 +136 152 160 +232 232 144 +168 212 244 +204 204 204 +212 236 252 +252 252 252 diff --git a/graphics/pokemon/arctozolt/overworld_shiny.pal b/graphics/pokemon/arctozolt/overworld_shiny.pal new file mode 100644 index 000000000000..bf024a0ce06c --- /dev/null +++ b/graphics/pokemon/arctozolt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +98 98 106 +90 82 98 +41 41 41 +148 148 148 +213 213 205 +98 98 106 +139 123 156 +172 164 189 +148 148 148 +213 213 205 +197 189 205 +205 205 205 +222 213 230 +255 255 255 diff --git a/graphics/pokemon/ariados/overworld.png b/graphics/pokemon/ariados/overworld.png new file mode 100644 index 000000000000..4508799e7164 Binary files /dev/null and b/graphics/pokemon/ariados/overworld.png differ diff --git a/graphics/pokemon/ariados/overworld_normal.pal b/graphics/pokemon/ariados/overworld_normal.pal new file mode 100644 index 000000000000..02d8dc3c4001 --- /dev/null +++ b/graphics/pokemon/ariados/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 96 8 +0 0 0 +248 192 8 +96 32 168 +216 136 0 +144 80 224 +112 16 24 +72 72 72 +240 96 80 +232 232 248 +200 64 56 +48 40 32 +168 184 208 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ariados/overworld_shiny.pal b/graphics/pokemon/ariados/overworld_shiny.pal new file mode 100644 index 000000000000..c8c750e902cf --- /dev/null +++ b/graphics/pokemon/ariados/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 96 8 +0 0 0 +248 192 8 +64 120 160 +216 136 0 +80 168 184 +96 32 88 +72 72 72 +224 168 216 +232 232 248 +192 112 184 +64 40 56 +168 184 208 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/armaldo/overworld.png b/graphics/pokemon/armaldo/overworld.png new file mode 100644 index 000000000000..e270df81be0e Binary files /dev/null and b/graphics/pokemon/armaldo/overworld.png differ diff --git a/graphics/pokemon/armaldo/overworld_normal.pal b/graphics/pokemon/armaldo/overworld_normal.pal new file mode 100644 index 000000000000..5c8e2c01da3e --- /dev/null +++ b/graphics/pokemon/armaldo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +16 64 96 +0 0 0 +80 80 80 +56 104 144 +128 168 200 +96 144 176 +112 112 120 +232 232 248 +192 64 104 +160 40 80 +144 144 160 +192 192 208 +160 128 8 +232 200 72 diff --git a/graphics/pokemon/armaldo/overworld_shiny.pal b/graphics/pokemon/armaldo/overworld_shiny.pal new file mode 100644 index 000000000000..46fd73a79ff7 --- /dev/null +++ b/graphics/pokemon/armaldo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +112 16 32 +0 0 0 +80 80 80 +152 64 80 +240 136 144 +200 96 112 +112 112 120 +232 232 248 +192 64 104 +160 40 80 +144 144 160 +192 192 208 +160 128 8 +232 200 72 diff --git a/graphics/pokemon/aromatisse/overworld.png b/graphics/pokemon/aromatisse/overworld.png new file mode 100644 index 000000000000..64ad16827167 Binary files /dev/null and b/graphics/pokemon/aromatisse/overworld.png differ diff --git a/graphics/pokemon/aromatisse/overworld_normal.pal b/graphics/pokemon/aromatisse/overworld_normal.pal new file mode 100644 index 000000000000..d4331c4a98d5 --- /dev/null +++ b/graphics/pokemon/aromatisse/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +71 47 71 +16 16 16 +197 105 188 +139 85 139 +234 203 85 +198 163 204 +219 222 241 +57 39 43 +232 76 90 +241 152 170 +217 101 125 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aromatisse/overworld_shiny.pal b/graphics/pokemon/aromatisse/overworld_shiny.pal new file mode 100644 index 000000000000..2fe20eb67511 --- /dev/null +++ b/graphics/pokemon/aromatisse/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +71 47 71 +16 16 16 +241 112 150 +188 87 116 +234 203 85 +233 190 208 +254 216 232 +57 39 43 +254 252 79 +156 125 220 +130 107 178 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aron/overworld.png b/graphics/pokemon/aron/overworld.png new file mode 100644 index 000000000000..5dcc4313caee Binary files /dev/null and b/graphics/pokemon/aron/overworld.png differ diff --git a/graphics/pokemon/aron/overworld_normal.pal b/graphics/pokemon/aron/overworld_normal.pal new file mode 100644 index 000000000000..cc8c78a53eed --- /dev/null +++ b/graphics/pokemon/aron/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 72 +232 232 248 +160 160 176 +0 0 0 +184 184 200 +112 104 120 +64 96 128 +104 144 200 +48 40 56 +88 88 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aron/overworld_shiny.pal b/graphics/pokemon/aron/overworld_shiny.pal new file mode 100644 index 000000000000..d9cd225fe2fd --- /dev/null +++ b/graphics/pokemon/aron/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 72 +232 232 248 +160 160 176 +0 0 0 +184 184 200 +112 104 120 +176 0 0 +248 48 88 +48 40 56 +48 112 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arrokuda/overworld.png b/graphics/pokemon/arrokuda/overworld.png new file mode 100644 index 000000000000..21835e5e1e39 Binary files /dev/null and b/graphics/pokemon/arrokuda/overworld.png differ diff --git a/graphics/pokemon/arrokuda/overworld_normal.pal b/graphics/pokemon/arrokuda/overworld_normal.pal new file mode 100644 index 000000000000..cb2cd9aa5578 --- /dev/null +++ b/graphics/pokemon/arrokuda/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 52 38 +23 20 16 +171 173 131 +223 225 175 +255 255 255 +109 96 81 +77 66 53 +0 0 0 +143 128 111 +205 102 70 +121 121 118 +223 224 207 +173 173 164 +229 126 94 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arrokuda/overworld_shiny.pal b/graphics/pokemon/arrokuda/overworld_shiny.pal new file mode 100644 index 000000000000..67e0eb5780f0 --- /dev/null +++ b/graphics/pokemon/arrokuda/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 49 +189 213 230 +213 230 246 +255 255 255 +123 123 180 +90 90 139 +0 0 0 +156 164 213 +205 98 65 +115 98 115 +238 197 230 +172 139 164 +230 123 90 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/articuno/galarian/overworld.png b/graphics/pokemon/articuno/galarian/overworld.png new file mode 100644 index 000000000000..734f4802d9ac Binary files /dev/null and b/graphics/pokemon/articuno/galarian/overworld.png differ diff --git a/graphics/pokemon/articuno/galarian/overworld_normal.pal b/graphics/pokemon/articuno/galarian/overworld_normal.pal new file mode 100644 index 000000000000..4bf32062c403 --- /dev/null +++ b/graphics/pokemon/articuno/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +60 184 151 +0 0 0 +21 12 31 +0 0 0 +102 69 138 +212 190 233 +149 111 190 +41 28 44 +233 232 233 +190 163 198 +162 126 172 +120 200 248 +160 224 248 +56 56 56 +24 24 24 +15 15 15 diff --git a/graphics/pokemon/articuno/galarian/overworld_shiny.pal b/graphics/pokemon/articuno/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..4bf32062c403 --- /dev/null +++ b/graphics/pokemon/articuno/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +60 184 151 +0 0 0 +21 12 31 +0 0 0 +102 69 138 +212 190 233 +149 111 190 +41 28 44 +233 232 233 +190 163 198 +162 126 172 +120 200 248 +160 224 248 +56 56 56 +24 24 24 +15 15 15 diff --git a/graphics/pokemon/articuno/overworld.png b/graphics/pokemon/articuno/overworld.png new file mode 100644 index 000000000000..e5e101e259cf Binary files /dev/null and b/graphics/pokemon/articuno/overworld.png differ diff --git a/graphics/pokemon/articuno/overworld_normal.pal b/graphics/pokemon/articuno/overworld_normal.pal new file mode 100644 index 000000000000..d55b7a123583 --- /dev/null +++ b/graphics/pokemon/articuno/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 88 +56 128 136 +160 224 248 +48 176 192 +120 200 248 +0 0 0 +104 160 232 +56 56 40 +232 232 248 +48 104 152 +200 184 72 +160 32 48 +144 128 24 +176 176 208 +216 248 248 diff --git a/graphics/pokemon/articuno/overworld_shiny.pal b/graphics/pokemon/articuno/overworld_shiny.pal new file mode 100644 index 000000000000..26cc442ff75e --- /dev/null +++ b/graphics/pokemon/articuno/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 128 +32 144 232 +200 240 248 +96 200 232 +168 224 248 +0 0 0 +152 192 224 +56 56 40 +232 232 248 +96 152 200 +200 184 72 +160 32 48 +144 128 24 +176 176 208 +232 248 248 diff --git a/graphics/pokemon/audino/overworld.png b/graphics/pokemon/audino/overworld.png new file mode 100644 index 000000000000..27fdc5f6b764 Binary files /dev/null and b/graphics/pokemon/audino/overworld.png differ diff --git a/graphics/pokemon/audino/overworld_normal.pal b/graphics/pokemon/audino/overworld_normal.pal new file mode 100644 index 000000000000..b2db480ff648 --- /dev/null +++ b/graphics/pokemon/audino/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 63 63 +199 95 104 +218 129 138 +0 0 0 +95 87 63 +245 227 164 +199 172 121 +11 11 11 +18 87 164 +229 229 247 +245 227 164 +155 155 155 +218 129 138 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/audino/overworld_shiny.pal b/graphics/pokemon/audino/overworld_shiny.pal new file mode 100644 index 000000000000..eabc10d396c0 --- /dev/null +++ b/graphics/pokemon/audino/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 63 63 +152 80 160 +160 120 176 +0 0 0 +95 87 63 +248 216 176 +216 176 136 +11 11 11 +18 87 164 +229 229 247 +245 227 164 +155 155 155 +218 129 138 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aurorus/overworld.png b/graphics/pokemon/aurorus/overworld.png new file mode 100644 index 000000000000..b094b1525996 Binary files /dev/null and b/graphics/pokemon/aurorus/overworld.png differ diff --git a/graphics/pokemon/aurorus/overworld_normal.pal b/graphics/pokemon/aurorus/overworld_normal.pal new file mode 100644 index 000000000000..3a6f014234f6 --- /dev/null +++ b/graphics/pokemon/aurorus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +237 241 227 +67 64 47 +248 208 80 +128 116 54 +38 49 72 +78 110 172 +101 157 237 +170 223 246 +94 176 224 +237 241 227 +161 183 211 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/aurorus/overworld_shiny.pal b/graphics/pokemon/aurorus/overworld_shiny.pal new file mode 100644 index 000000000000..22501716da67 --- /dev/null +++ b/graphics/pokemon/aurorus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +194 210 243 +67 64 47 +231 216 165 +128 116 54 +38 49 72 +179 193 202 +237 248 255 +145 188 233 +117 154 193 +237 241 227 +161 183 211 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/avalugg/hisuian/overworld.png b/graphics/pokemon/avalugg/hisuian/overworld.png new file mode 100644 index 000000000000..a336b513828e Binary files /dev/null and b/graphics/pokemon/avalugg/hisuian/overworld.png differ diff --git a/graphics/pokemon/avalugg/hisuian/overworld_normal.pal b/graphics/pokemon/avalugg/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..c42896338c59 --- /dev/null +++ b/graphics/pokemon/avalugg/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +139 205 246 +82 41 24 +148 123 98 +106 82 65 +8 8 8 +148 156 172 +230 238 255 +205 205 222 +98 106 131 +148 65 32 +222 172 8 +255 238 57 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/avalugg/hisuian/overworld_shiny.pal b/graphics/pokemon/avalugg/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..7460e356f1f8 --- /dev/null +++ b/graphics/pokemon/avalugg/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +139 205 246 +82 41 24 +148 123 98 +106 82 65 +8 8 8 +213 139 90 +230 238 255 +230 148 98 +164 106 74 +197 148 16 +148 123 98 +106 82 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/avalugg/overworld.png b/graphics/pokemon/avalugg/overworld.png new file mode 100644 index 000000000000..5d9c26d329b2 Binary files /dev/null and b/graphics/pokemon/avalugg/overworld.png differ diff --git a/graphics/pokemon/avalugg/overworld_normal.pal b/graphics/pokemon/avalugg/overworld_normal.pal new file mode 100644 index 000000000000..c8bdfc3bc60f --- /dev/null +++ b/graphics/pokemon/avalugg/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 192 168 +16 16 16 +35 56 153 +136 201 244 +230 238 248 +87 96 157 +116 151 196 +219 169 15 +253 236 58 +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/avalugg/overworld_shiny.pal b/graphics/pokemon/avalugg/overworld_shiny.pal new file mode 100644 index 000000000000..c437016ed5d9 --- /dev/null +++ b/graphics/pokemon/avalugg/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 192 214 +16 16 16 +84 127 132 +178 226 231 +230 238 248 +103 167 133 +118 176 182 +219 169 15 +253 236 58 +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/axew/overworld.png b/graphics/pokemon/axew/overworld.png new file mode 100644 index 000000000000..7b81056bd37b Binary files /dev/null and b/graphics/pokemon/axew/overworld.png differ diff --git a/graphics/pokemon/axew/overworld_normal.pal b/graphics/pokemon/axew/overworld_normal.pal new file mode 100644 index 000000000000..4f3e70f8b782 --- /dev/null +++ b/graphics/pokemon/axew/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 47 33 +87 95 63 +63 71 47 +0 0 0 +138 155 79 +151 177 194 +229 229 247 +95 112 63 +199 0 0 +87 0 0 +164 182 87 +208 227 138 +121 172 25 +95 138 40 +25 32 32 diff --git a/graphics/pokemon/axew/overworld_shiny.pal b/graphics/pokemon/axew/overworld_shiny.pal new file mode 100644 index 000000000000..d8ba02535f0c --- /dev/null +++ b/graphics/pokemon/axew/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 47 33 +109 93 73 +88 80 56 +0 0 0 +192 176 111 +221 226 195 +221 226 195 +136 120 72 +200 40 112 +40 47 33 +192 176 111 +221 226 195 +160 80 128 +109 93 73 +25 32 32 diff --git a/graphics/pokemon/azelf/overworld.png b/graphics/pokemon/azelf/overworld.png new file mode 100644 index 000000000000..709618802644 Binary files /dev/null and b/graphics/pokemon/azelf/overworld.png differ diff --git a/graphics/pokemon/azelf/overworld_normal.pal b/graphics/pokemon/azelf/overworld_normal.pal new file mode 100644 index 000000000000..cde578ee374b --- /dev/null +++ b/graphics/pokemon/azelf/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 112 +72 128 208 +48 112 176 +0 0 0 +32 88 168 +168 40 0 +248 168 152 +144 184 208 +72 72 88 +232 64 32 +112 128 176 +232 232 248 +248 176 16 +176 208 248 +136 120 32 diff --git a/graphics/pokemon/azelf/overworld_shiny.pal b/graphics/pokemon/azelf/overworld_shiny.pal new file mode 100644 index 000000000000..11a24ddd0957 --- /dev/null +++ b/graphics/pokemon/azelf/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 96 80 +72 160 160 +48 136 136 +0 0 0 +32 112 128 +168 40 0 +248 168 152 +216 176 88 +104 80 56 +232 64 32 +176 128 48 +232 232 248 +248 176 16 +248 216 88 +136 120 32 diff --git a/graphics/pokemon/azumarill/overworld.png b/graphics/pokemon/azumarill/overworld.png new file mode 100644 index 000000000000..b2aa9487e5b8 Binary files /dev/null and b/graphics/pokemon/azumarill/overworld.png differ diff --git a/graphics/pokemon/azumarill/overworld_normal.pal b/graphics/pokemon/azumarill/overworld_normal.pal new file mode 100644 index 000000000000..550ac4f0a16d --- /dev/null +++ b/graphics/pokemon/azumarill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 48 104 +0 0 0 +112 176 240 +56 112 160 +72 144 200 +184 48 40 +232 232 248 +208 208 224 +48 56 64 +184 200 224 +128 160 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/azumarill/overworld_shiny.pal b/graphics/pokemon/azumarill/overworld_shiny.pal new file mode 100644 index 000000000000..181b74b2e392 --- /dev/null +++ b/graphics/pokemon/azumarill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 0 +0 0 0 +248 208 88 +160 96 8 +232 160 40 +184 48 40 +232 232 248 +208 208 224 +48 56 64 +168 184 208 +128 160 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/azurill/overworld.png b/graphics/pokemon/azurill/overworld.png new file mode 100644 index 000000000000..7169ed9b2936 Binary files /dev/null and b/graphics/pokemon/azurill/overworld.png differ diff --git a/graphics/pokemon/azurill/overworld_normal.pal b/graphics/pokemon/azurill/overworld_normal.pal new file mode 100644 index 000000000000..34dc880d06fb --- /dev/null +++ b/graphics/pokemon/azurill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 64 120 +72 136 192 +112 176 240 +48 56 64 +56 104 152 +200 88 160 +232 232 248 +168 208 240 +184 48 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/azurill/overworld_shiny.pal b/graphics/pokemon/azurill/overworld_shiny.pal new file mode 100644 index 000000000000..01bf80b52efc --- /dev/null +++ b/graphics/pokemon/azurill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +40 88 64 +104 168 120 +152 208 144 +48 56 64 +72 128 96 +200 88 160 +232 232 248 +184 248 176 +184 48 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bagon/overworld.png b/graphics/pokemon/bagon/overworld.png new file mode 100644 index 000000000000..a4954683e0a2 Binary files /dev/null and b/graphics/pokemon/bagon/overworld.png differ diff --git a/graphics/pokemon/bagon/overworld_normal.pal b/graphics/pokemon/bagon/overworld_normal.pal new file mode 100644 index 000000000000..1ffcbea64e70 --- /dev/null +++ b/graphics/pokemon/bagon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 104 +200 200 200 +152 152 152 +0 0 0 +120 120 120 +184 184 184 +192 160 72 +64 136 160 +232 232 248 +104 168 224 +120 192 248 +144 120 16 +40 64 104 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bagon/overworld_shiny.pal b/graphics/pokemon/bagon/overworld_shiny.pal new file mode 100644 index 000000000000..237827e77722 --- /dev/null +++ b/graphics/pokemon/bagon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 104 +200 200 200 +152 152 152 +0 0 0 +120 120 120 +184 184 184 +192 160 72 +64 144 56 +232 232 248 +88 192 80 +120 248 144 +144 120 16 +48 88 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/baltoy/overworld.png b/graphics/pokemon/baltoy/overworld.png new file mode 100644 index 000000000000..bbb55b323aa9 Binary files /dev/null and b/graphics/pokemon/baltoy/overworld.png differ diff --git a/graphics/pokemon/baltoy/overworld_normal.pal b/graphics/pokemon/baltoy/overworld_normal.pal new file mode 100644 index 000000000000..93510f1737fe --- /dev/null +++ b/graphics/pokemon/baltoy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 80 64 +0 0 0 +224 200 152 +216 184 128 +176 160 96 +144 136 88 +216 112 80 +184 80 40 +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/baltoy/overworld_shiny.pal b/graphics/pokemon/baltoy/overworld_shiny.pal new file mode 100644 index 000000000000..515cf9b6d7aa --- /dev/null +++ b/graphics/pokemon/baltoy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +176 160 208 +88 80 64 +0 0 0 +248 232 152 +232 176 8 +208 168 8 +168 136 24 +96 176 192 +96 112 176 +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/banette/overworld.png b/graphics/pokemon/banette/overworld.png new file mode 100644 index 000000000000..4a153522395d Binary files /dev/null and b/graphics/pokemon/banette/overworld.png differ diff --git a/graphics/pokemon/banette/overworld_normal.pal b/graphics/pokemon/banette/overworld_normal.pal new file mode 100644 index 000000000000..4666298524de --- /dev/null +++ b/graphics/pokemon/banette/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 104 128 +128 128 160 +64 72 96 +40 48 64 +192 56 56 +144 32 32 +72 56 16 +96 16 16 +160 128 40 +120 96 24 +200 160 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/banette/overworld_shiny.pal b/graphics/pokemon/banette/overworld_shiny.pal new file mode 100644 index 000000000000..c10d6fb149fe --- /dev/null +++ b/graphics/pokemon/banette/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 104 160 +104 136 208 +56 72 112 +40 48 64 +192 56 56 +144 32 32 +72 56 16 +96 16 16 +160 128 40 +120 96 24 +200 160 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/barbaracle/overworld.png b/graphics/pokemon/barbaracle/overworld.png new file mode 100644 index 000000000000..cfd69372f886 Binary files /dev/null and b/graphics/pokemon/barbaracle/overworld.png differ diff --git a/graphics/pokemon/barbaracle/overworld_normal.pal b/graphics/pokemon/barbaracle/overworld_normal.pal new file mode 100644 index 000000000000..099d334fea02 --- /dev/null +++ b/graphics/pokemon/barbaracle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +63 52 39 +229 215 187 +190 167 122 +16 16 16 +137 102 61 +231 120 77 +202 200 212 +229 215 187 +117 114 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/barbaracle/overworld_shiny.pal b/graphics/pokemon/barbaracle/overworld_shiny.pal new file mode 100644 index 000000000000..fd587273b95d --- /dev/null +++ b/graphics/pokemon/barbaracle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +50 63 41 +160 247 162 +101 163 101 +16 16 16 +85 106 73 +255 131 152 +193 199 213 +251 251 251 +107 118 148 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/barboach/overworld.png b/graphics/pokemon/barboach/overworld.png new file mode 100644 index 000000000000..2cc66dfe63b4 Binary files /dev/null and b/graphics/pokemon/barboach/overworld.png differ diff --git a/graphics/pokemon/barboach/overworld_normal.pal b/graphics/pokemon/barboach/overworld_normal.pal new file mode 100644 index 000000000000..9d753ce34bcb --- /dev/null +++ b/graphics/pokemon/barboach/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 112 152 +24 64 104 +88 144 184 +48 64 80 +0 0 0 +184 184 200 +152 160 176 +136 144 152 +88 96 112 +120 176 208 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/barboach/overworld_shiny.pal b/graphics/pokemon/barboach/overworld_shiny.pal new file mode 100644 index 000000000000..8791d2578862 --- /dev/null +++ b/graphics/pokemon/barboach/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 120 56 +96 80 32 +200 152 40 +48 64 80 +0 0 0 +184 184 200 +152 160 176 +136 144 152 +88 96 112 +248 200 72 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/barraskewda/overworld.png b/graphics/pokemon/barraskewda/overworld.png new file mode 100644 index 000000000000..ac05fc57e142 Binary files /dev/null and b/graphics/pokemon/barraskewda/overworld.png differ diff --git a/graphics/pokemon/barraskewda/overworld_normal.pal b/graphics/pokemon/barraskewda/overworld_normal.pal new file mode 100644 index 000000000000..219e44c86665 --- /dev/null +++ b/graphics/pokemon/barraskewda/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 52 38 +19 17 13 +109 96 81 +77 66 53 +98 46 30 +0 0 0 +205 102 70 +73 74 55 +171 173 131 +229 126 94 +223 225 175 +143 128 111 +227 227 227 +255 255 255 +179 179 179 +0 0 0 diff --git a/graphics/pokemon/barraskewda/overworld_shiny.pal b/graphics/pokemon/barraskewda/overworld_shiny.pal new file mode 100644 index 000000000000..3f2116be85c5 --- /dev/null +++ b/graphics/pokemon/barraskewda/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 52 38 +16 16 24 +90 82 115 +65 57 82 +98 41 24 +0 0 0 +205 98 65 +74 74 65 +148 148 139 +230 123 90 +180 180 172 +123 115 148 +230 230 230 +255 255 255 +180 180 180 +0 0 0 diff --git a/graphics/pokemon/basculegion/female/overworld.png b/graphics/pokemon/basculegion/female/overworld.png new file mode 100644 index 000000000000..d246f9f90ac9 Binary files /dev/null and b/graphics/pokemon/basculegion/female/overworld.png differ diff --git a/graphics/pokemon/basculegion/female/overworld_normal.pal b/graphics/pokemon/basculegion/female/overworld_normal.pal new file mode 100644 index 000000000000..e90d24829899 --- /dev/null +++ b/graphics/pokemon/basculegion/female/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 49 +164 189 180 +41 90 123 +255 255 255 +123 172 172 +172 222 230 +16 65 32 +0 0 0 +41 189 90 +98 123 115 +32 115 57 +57 82 74 +32 139 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculegion/female/overworld_shiny.pal b/graphics/pokemon/basculegion/female/overworld_shiny.pal new file mode 100644 index 000000000000..6855fd47a05d --- /dev/null +++ b/graphics/pokemon/basculegion/female/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 49 +164 189 180 +180 156 16 +255 255 255 +213 197 74 +238 222 98 +16 74 32 +0 0 0 +41 197 82 +98 123 115 +32 123 65 +57 82 74 +32 139 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculegion/overworld.png b/graphics/pokemon/basculegion/overworld.png new file mode 100644 index 000000000000..26780d419e2b Binary files /dev/null and b/graphics/pokemon/basculegion/overworld.png differ diff --git a/graphics/pokemon/basculegion/overworld_normal.pal b/graphics/pokemon/basculegion/overworld_normal.pal new file mode 100644 index 000000000000..3b067717e9cf --- /dev/null +++ b/graphics/pokemon/basculegion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 49 +164 189 180 +123 16 41 +255 255 255 +189 24 57 +238 41 82 +16 65 32 +0 0 0 +41 189 90 +98 123 115 +32 115 57 +57 82 74 +32 139 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculegion/overworld_shiny.pal b/graphics/pokemon/basculegion/overworld_shiny.pal new file mode 100644 index 000000000000..02e2b66beb5c --- /dev/null +++ b/graphics/pokemon/basculegion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 49 +164 189 180 +106 8 139 +255 255 255 +172 57 213 +197 74 230 +16 74 32 +0 0 0 +41 197 82 +98 123 115 +32 123 65 +57 82 74 +32 139 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/blue_striped/overworld.png b/graphics/pokemon/basculin/blue_striped/overworld.png new file mode 100644 index 000000000000..b8f0a345838b Binary files /dev/null and b/graphics/pokemon/basculin/blue_striped/overworld.png differ diff --git a/graphics/pokemon/basculin/blue_striped/overworld_normal.pal b/graphics/pokemon/basculin/blue_striped/overworld_normal.pal new file mode 100644 index 000000000000..4fc642185a1b --- /dev/null +++ b/graphics/pokemon/basculin/blue_striped/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +26 47 45 +5 5 5 +55 71 71 +74 84 84 +0 63 147 +196 196 196 +98 98 98 +38 111 46 +24 74 24 +25 121 208 +60 159 77 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/blue_striped/overworld_shiny.pal b/graphics/pokemon/basculin/blue_striped/overworld_shiny.pal new file mode 100644 index 000000000000..21e43e78950e --- /dev/null +++ b/graphics/pokemon/basculin/blue_striped/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +28 44 51 +5 5 5 +55 71 71 +55 71 71 +0 104 152 +198 198 165 +90 93 74 +80 136 16 +48 64 8 +32 168 208 +120 192 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/hisuian/overworld.png b/graphics/pokemon/basculin/hisuian/overworld.png new file mode 100644 index 000000000000..ca1d9a7a86f5 Binary files /dev/null and b/graphics/pokemon/basculin/hisuian/overworld.png differ diff --git a/graphics/pokemon/basculin/hisuian/overworld_normal.pal b/graphics/pokemon/basculin/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..d8f1c2033722 --- /dev/null +++ b/graphics/pokemon/basculin/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +103 53 53 +0 0 0 +48 48 48 +248 248 248 +120 144 184 +72 72 72 +168 192 248 +88 88 88 +0 0 0 +122 168 175 +171 222 224 +72 168 112 +56 112 72 +40 64 24 +61 77 86 +120 144 192 diff --git a/graphics/pokemon/basculin/overworld.png b/graphics/pokemon/basculin/overworld.png new file mode 100644 index 000000000000..4b80cc1b8acc Binary files /dev/null and b/graphics/pokemon/basculin/overworld.png differ diff --git a/graphics/pokemon/basculin/overworld_normal.pal b/graphics/pokemon/basculin/overworld_normal.pal new file mode 100644 index 000000000000..0997fcaffd73 --- /dev/null +++ b/graphics/pokemon/basculin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +26 47 45 +6 6 6 +55 71 71 +75 84 84 +152 28 21 +198 199 199 +98 98 98 +38 111 46 +24 74 24 +255 79 63 +60 160 77 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/overworld_shiny.pal b/graphics/pokemon/basculin/overworld_shiny.pal new file mode 100644 index 000000000000..22bc51359c2d --- /dev/null +++ b/graphics/pokemon/basculin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +28 44 51 +6 6 6 +55 71 71 +91 94 79 +152 64 0 +231 231 197 +80 136 16 +160 160 128 +47 64 8 +222 109 66 +120 192 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/white_striped/overworld.png b/graphics/pokemon/basculin/white_striped/overworld.png new file mode 100644 index 000000000000..f1583c2ed3a2 Binary files /dev/null and b/graphics/pokemon/basculin/white_striped/overworld.png differ diff --git a/graphics/pokemon/basculin/white_striped/overworld_normal.pal b/graphics/pokemon/basculin/white_striped/overworld_normal.pal new file mode 100644 index 000000000000..1e07057199d8 --- /dev/null +++ b/graphics/pokemon/basculin/white_striped/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 49 49 +255 255 255 +172 197 255 +0 0 0 +57 115 74 +41 65 24 +123 172 172 +172 222 230 +74 172 115 +74 74 74 +90 90 90 +57 74 82 +123 148 197 +123 148 189 +0 0 0 diff --git a/graphics/pokemon/basculin/white_striped/overworld_shiny.pal b/graphics/pokemon/basculin/white_striped/overworld_shiny.pal new file mode 100644 index 000000000000..b4e0639fc85d --- /dev/null +++ b/graphics/pokemon/basculin/white_striped/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 49 49 +255 255 255 +172 197 255 +0 0 0 +32 139 65 +16 98 41 +123 172 172 +172 222 230 +41 189 90 +74 74 74 +90 90 90 +57 74 82 +123 148 197 +123 148 189 +0 0 0 diff --git a/graphics/pokemon/bastiodon/overworld.png b/graphics/pokemon/bastiodon/overworld.png new file mode 100644 index 000000000000..711737cd554a Binary files /dev/null and b/graphics/pokemon/bastiodon/overworld.png differ diff --git a/graphics/pokemon/bastiodon/overworld_normal.pal b/graphics/pokemon/bastiodon/overworld_normal.pal new file mode 100644 index 000000000000..df63870bf905 --- /dev/null +++ b/graphics/pokemon/bastiodon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +200 200 200 +0 0 0 +72 72 72 +152 152 152 +120 120 120 +96 96 96 +224 168 32 +248 184 64 +192 144 48 +248 184 88 +144 104 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bastiodon/overworld_shiny.pal b/graphics/pokemon/bastiodon/overworld_shiny.pal new file mode 100644 index 000000000000..847a44ae7118 --- /dev/null +++ b/graphics/pokemon/bastiodon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +200 200 200 +0 0 0 +56 64 120 +152 152 152 +104 112 160 +72 80 136 +200 168 32 +248 208 64 +192 176 48 +248 208 88 +144 152 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bayleef/overworld.png b/graphics/pokemon/bayleef/overworld.png new file mode 100644 index 000000000000..f34c8ba5ea88 Binary files /dev/null and b/graphics/pokemon/bayleef/overworld.png differ diff --git a/graphics/pokemon/bayleef/overworld_normal.pal b/graphics/pokemon/bayleef/overworld_normal.pal new file mode 100644 index 000000000000..3082081f74e9 --- /dev/null +++ b/graphics/pokemon/bayleef/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 80 0 +0 0 0 +160 192 80 +88 144 8 +96 80 32 +232 216 88 +200 184 88 +168 152 88 +216 216 216 +232 232 248 +176 80 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bayleef/overworld_shiny.pal b/graphics/pokemon/bayleef/overworld_shiny.pal new file mode 100644 index 000000000000..ab3b366f8475 --- /dev/null +++ b/graphics/pokemon/bayleef/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 64 +0 0 0 +232 176 88 +184 136 72 +104 64 32 +240 208 176 +232 176 152 +216 144 120 +216 216 216 +232 232 248 +176 80 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/beartic/overworld.png b/graphics/pokemon/beartic/overworld.png new file mode 100644 index 000000000000..275c67607f74 Binary files /dev/null and b/graphics/pokemon/beartic/overworld.png differ diff --git a/graphics/pokemon/beartic/overworld_normal.pal b/graphics/pokemon/beartic/overworld_normal.pal new file mode 100644 index 000000000000..8d1d6067fc5f --- /dev/null +++ b/graphics/pokemon/beartic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +65 98 106 +222 246 255 +180 197 205 +0 0 0 +16 16 16 +65 139 164 +115 189 205 +232 232 248 +65 65 65 +238 246 255 +156 230 246 +187 255 255 +106 115 115 +160 168 184 +0 0 0 diff --git a/graphics/pokemon/beartic/overworld_shiny.pal b/graphics/pokemon/beartic/overworld_shiny.pal new file mode 100644 index 000000000000..0c1200ad62ed --- /dev/null +++ b/graphics/pokemon/beartic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +64 80 104 +200 216 248 +152 184 224 +0 0 0 +16 16 16 +80 128 216 +56 96 184 +232 232 248 +65 65 65 +208 208 248 +112 168 248 +187 255 255 +106 115 115 +64 80 104 +0 0 0 diff --git a/graphics/pokemon/beautifly/overworld.png b/graphics/pokemon/beautifly/overworld.png new file mode 100644 index 000000000000..36c31fed279a Binary files /dev/null and b/graphics/pokemon/beautifly/overworld.png differ diff --git a/graphics/pokemon/beautifly/overworld_normal.pal b/graphics/pokemon/beautifly/overworld_normal.pal new file mode 100644 index 000000000000..aa5f03a52440 --- /dev/null +++ b/graphics/pokemon/beautifly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 72 +96 72 32 +40 40 48 +96 96 104 +0 0 0 +192 168 48 +248 216 104 +216 88 96 +208 208 216 +176 176 176 +80 144 224 +48 96 152 +232 232 248 +184 48 72 +0 0 0 diff --git a/graphics/pokemon/beautifly/overworld_shiny.pal b/graphics/pokemon/beautifly/overworld_shiny.pal new file mode 100644 index 000000000000..d0af9a497372 --- /dev/null +++ b/graphics/pokemon/beautifly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 72 72 +96 72 32 +80 40 64 +144 120 104 +0 0 0 +192 168 112 +248 224 152 +216 88 96 +208 208 216 +176 176 176 +80 144 224 +48 96 152 +232 232 248 +184 48 72 +0 0 0 diff --git a/graphics/pokemon/beedrill/overworld.png b/graphics/pokemon/beedrill/overworld.png new file mode 100644 index 000000000000..2c840cd2780f Binary files /dev/null and b/graphics/pokemon/beedrill/overworld.png differ diff --git a/graphics/pokemon/beedrill/overworld_normal.pal b/graphics/pokemon/beedrill/overworld_normal.pal new file mode 100644 index 000000000000..68b54715f30d --- /dev/null +++ b/graphics/pokemon/beedrill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 80 80 +192 192 192 +104 80 40 +144 144 144 +232 232 248 +248 208 64 +192 152 40 +192 40 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/beedrill/overworld_shiny.pal b/graphics/pokemon/beedrill/overworld_shiny.pal new file mode 100644 index 000000000000..b876e92f0886 --- /dev/null +++ b/graphics/pokemon/beedrill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 80 80 +192 192 192 +72 104 40 +144 144 144 +232 232 248 +216 248 64 +168 192 0 +40 136 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/beheeyem/overworld.png b/graphics/pokemon/beheeyem/overworld.png new file mode 100644 index 000000000000..fa645de6c1a7 Binary files /dev/null and b/graphics/pokemon/beheeyem/overworld.png differ diff --git a/graphics/pokemon/beheeyem/overworld_normal.pal b/graphics/pokemon/beheeyem/overworld_normal.pal new file mode 100644 index 000000000000..202a03be24d0 --- /dev/null +++ b/graphics/pokemon/beheeyem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +98 65 41 +98 65 41 +222 156 123 +164 98 74 +164 98 74 +41 41 41 +32 98 41 +32 156 57 +197 164 123 +230 197 164 +230 205 0 +205 0 0 +57 180 32 +0 0 0 diff --git a/graphics/pokemon/beheeyem/overworld_shiny.pal b/graphics/pokemon/beheeyem/overworld_shiny.pal new file mode 100644 index 000000000000..80718d8e854f --- /dev/null +++ b/graphics/pokemon/beheeyem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +80 72 64 +98 65 41 +192 152 136 +152 96 88 +164 98 74 +41 41 41 +32 64 72 +16 120 160 +197 164 123 +230 197 164 +0 136 200 +168 0 200 +160 224 0 +0 0 0 diff --git a/graphics/pokemon/beldum/overworld.png b/graphics/pokemon/beldum/overworld.png new file mode 100644 index 000000000000..adbf191d71a6 Binary files /dev/null and b/graphics/pokemon/beldum/overworld.png differ diff --git a/graphics/pokemon/beldum/overworld_normal.pal b/graphics/pokemon/beldum/overworld_normal.pal new file mode 100644 index 000000000000..541e734ed648 --- /dev/null +++ b/graphics/pokemon/beldum/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 72 104 +152 216 240 +0 0 0 +112 160 208 +88 128 168 +152 200 232 +64 96 120 +40 40 48 +136 40 40 +96 96 104 +64 64 64 +232 232 248 +176 56 56 +184 184 200 +144 144 160 diff --git a/graphics/pokemon/beldum/overworld_shiny.pal b/graphics/pokemon/beldum/overworld_shiny.pal new file mode 100644 index 000000000000..87aeae6b4641 --- /dev/null +++ b/graphics/pokemon/beldum/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 48 +216 216 224 +0 0 0 +152 152 160 +104 104 112 +184 184 200 +64 64 64 +40 40 48 +136 40 40 +128 88 0 +64 64 64 +232 232 248 +176 56 56 +248 248 144 +144 144 160 diff --git a/graphics/pokemon/bellossom/overworld.png b/graphics/pokemon/bellossom/overworld.png new file mode 100644 index 000000000000..dc57c73f18a0 Binary files /dev/null and b/graphics/pokemon/bellossom/overworld.png differ diff --git a/graphics/pokemon/bellossom/overworld_normal.pal b/graphics/pokemon/bellossom/overworld_normal.pal new file mode 100644 index 000000000000..466de3fca1a4 --- /dev/null +++ b/graphics/pokemon/bellossom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +112 32 8 +232 80 56 +96 160 64 +72 104 24 +192 40 24 +96 88 8 +152 192 112 +240 192 56 +216 136 24 +232 232 248 +16 64 40 +216 152 16 +56 136 88 +0 0 0 diff --git a/graphics/pokemon/bellossom/overworld_shiny.pal b/graphics/pokemon/bellossom/overworld_shiny.pal new file mode 100644 index 000000000000..25df85d13e91 --- /dev/null +++ b/graphics/pokemon/bellossom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +120 32 96 +232 160 208 +128 88 152 +72 40 80 +208 96 152 +96 88 8 +184 136 224 +216 216 96 +136 128 32 +232 232 248 +16 80 80 +176 176 64 +56 136 120 +0 0 0 diff --git a/graphics/pokemon/bellsprout/overworld.png b/graphics/pokemon/bellsprout/overworld.png new file mode 100644 index 000000000000..4a509105d4e8 Binary files /dev/null and b/graphics/pokemon/bellsprout/overworld.png differ diff --git a/graphics/pokemon/bellsprout/overworld_normal.pal b/graphics/pokemon/bellsprout/overworld_normal.pal new file mode 100644 index 000000000000..4f3c8d426fb6 --- /dev/null +++ b/graphics/pokemon/bellsprout/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 48 +240 224 72 +184 160 48 +0 0 0 +240 120 160 +168 64 112 +120 8 64 +64 88 40 +136 216 80 +96 152 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bellsprout/overworld_shiny.pal b/graphics/pokemon/bellsprout/overworld_shiny.pal new file mode 100644 index 000000000000..723a5c485f0c --- /dev/null +++ b/graphics/pokemon/bellsprout/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 48 +248 200 72 +192 144 48 +0 0 0 +192 200 232 +152 136 176 +80 56 112 +88 56 16 +240 200 72 +184 120 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bergmite/overworld.png b/graphics/pokemon/bergmite/overworld.png new file mode 100644 index 000000000000..966246499a7e Binary files /dev/null and b/graphics/pokemon/bergmite/overworld.png differ diff --git a/graphics/pokemon/bergmite/overworld_normal.pal b/graphics/pokemon/bergmite/overworld_normal.pal new file mode 100644 index 000000000000..8f5d3fcf5fb1 --- /dev/null +++ b/graphics/pokemon/bergmite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +230 238 248 +160 216 252 +96 158 212 +20 137 214 +20 76 119 +112 40 148 +249 210 73 +20 137 214 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bergmite/overworld_shiny.pal b/graphics/pokemon/bergmite/overworld_shiny.pal new file mode 100644 index 000000000000..8a84c1ef897c --- /dev/null +++ b/graphics/pokemon/bergmite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +217 240 252 +160 216 252 +96 158 212 +20 137 214 +20 76 119 +141 129 24 +249 210 73 +230 214 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bewear/overworld.png b/graphics/pokemon/bewear/overworld.png new file mode 100644 index 000000000000..5f663ef9484d Binary files /dev/null and b/graphics/pokemon/bewear/overworld.png differ diff --git a/graphics/pokemon/bewear/overworld_normal.pal b/graphics/pokemon/bewear/overworld_normal.pal new file mode 100644 index 000000000000..55605188c9b9 --- /dev/null +++ b/graphics/pokemon/bewear/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +235 221 226 +199 184 189 +237 158 190 +167 136 147 +200 96 119 +120 91 102 +92 73 79 +66 47 53 +82 42 49 +41 27 27 +36 21 26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bewear/overworld_shiny.pal b/graphics/pokemon/bewear/overworld_shiny.pal new file mode 100644 index 000000000000..38e17a10b792 --- /dev/null +++ b/graphics/pokemon/bewear/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +235 221 226 +199 184 189 +248 192 72 +167 136 147 +200 144 40 +120 91 102 +92 73 79 +66 47 53 +82 42 49 +41 27 27 +36 21 26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bibarel/overworld.png b/graphics/pokemon/bibarel/overworld.png new file mode 100644 index 000000000000..99e3de968e3d Binary files /dev/null and b/graphics/pokemon/bibarel/overworld.png differ diff --git a/graphics/pokemon/bibarel/overworld_normal.pal b/graphics/pokemon/bibarel/overworld_normal.pal new file mode 100644 index 000000000000..05425f06186c --- /dev/null +++ b/graphics/pokemon/bibarel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +88 80 64 +56 56 48 +176 136 56 +192 160 64 +0 0 0 +176 128 64 +72 56 32 +200 160 96 +232 208 128 +152 24 40 +232 232 248 +184 184 192 +136 136 136 +0 0 0 diff --git a/graphics/pokemon/bibarel/overworld_shiny.pal b/graphics/pokemon/bibarel/overworld_shiny.pal new file mode 100644 index 000000000000..fb9f7dafbe2d --- /dev/null +++ b/graphics/pokemon/bibarel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +120 80 104 +88 56 72 +176 136 56 +216 200 160 +0 0 0 +184 152 80 +72 56 32 +216 192 136 +240 224 184 +152 24 40 +232 232 248 +184 184 192 +136 136 136 +0 0 0 diff --git a/graphics/pokemon/bidoof/overworld.png b/graphics/pokemon/bidoof/overworld.png new file mode 100644 index 000000000000..9fe63802b4e4 Binary files /dev/null and b/graphics/pokemon/bidoof/overworld.png differ diff --git a/graphics/pokemon/bidoof/overworld_normal.pal b/graphics/pokemon/bidoof/overworld_normal.pal new file mode 100644 index 000000000000..4bff58898367 --- /dev/null +++ b/graphics/pokemon/bidoof/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 32 +0 0 0 +176 128 64 +200 160 96 +192 160 64 +232 208 128 +152 24 40 +88 80 64 +232 232 248 +56 56 48 +184 184 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bidoof/overworld_shiny.pal b/graphics/pokemon/bidoof/overworld_shiny.pal new file mode 100644 index 000000000000..235741c2820e --- /dev/null +++ b/graphics/pokemon/bidoof/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 32 +0 0 0 +184 152 80 +216 192 136 +216 200 160 +240 224 184 +152 24 40 +120 80 104 +232 232 248 +88 56 72 +184 184 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/binacle/overworld.png b/graphics/pokemon/binacle/overworld.png new file mode 100644 index 000000000000..d82d7365cf97 Binary files /dev/null and b/graphics/pokemon/binacle/overworld.png differ diff --git a/graphics/pokemon/binacle/overworld_normal.pal b/graphics/pokemon/binacle/overworld_normal.pal new file mode 100644 index 000000000000..9259f9b3afc4 --- /dev/null +++ b/graphics/pokemon/binacle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +63 52 39 +16 16 16 +190 167 122 +229 215 187 +63 52 39 +231 120 77 +137 102 61 +63 52 39 +190 167 122 +229 215 187 +117 114 136 +202 200 212 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/binacle/overworld_shiny.pal b/graphics/pokemon/binacle/overworld_shiny.pal new file mode 100644 index 000000000000..32620845f9ce --- /dev/null +++ b/graphics/pokemon/binacle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +34 90 70 +16 16 16 +70 153 124 +94 188 155 +49 80 97 +232 117 169 +116 149 83 +70 95 61 +190 167 122 +229 215 187 +109 157 186 +164 196 215 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bisharp/overworld.png b/graphics/pokemon/bisharp/overworld.png new file mode 100644 index 000000000000..e946968fb549 Binary files /dev/null and b/graphics/pokemon/bisharp/overworld.png differ diff --git a/graphics/pokemon/bisharp/overworld_normal.pal b/graphics/pokemon/bisharp/overworld_normal.pal new file mode 100644 index 000000000000..65f45b8ab311 --- /dev/null +++ b/graphics/pokemon/bisharp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +76 63 37 +0 0 0 +198 195 202 +196 164 53 +16 16 16 +104 24 24 +144 48 64 +64 64 73 +192 48 48 +108 108 116 +40 40 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bisharp/overworld_shiny.pal b/graphics/pokemon/bisharp/overworld_shiny.pal new file mode 100644 index 000000000000..13f26bf2a31b --- /dev/null +++ b/graphics/pokemon/bisharp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 32 +0 0 0 +215 215 197 +174 171 86 +16 16 16 +48 40 88 +48 56 152 +64 64 73 +80 64 216 +108 108 116 +40 40 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blacephalon/overworld.png b/graphics/pokemon/blacephalon/overworld.png new file mode 100644 index 000000000000..b6e66bb5a5d4 Binary files /dev/null and b/graphics/pokemon/blacephalon/overworld.png differ diff --git a/graphics/pokemon/blacephalon/overworld_normal.pal b/graphics/pokemon/blacephalon/overworld_normal.pal new file mode 100644 index 000000000000..4114383a3cb0 --- /dev/null +++ b/graphics/pokemon/blacephalon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +239 239 239 +215 215 215 +223 246 25 +255 225 55 +247 135 202 +227 115 215 +166 156 43 +102 165 225 +76 149 219 +94 94 94 +107 103 5 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blacephalon/overworld_shiny.pal b/graphics/pokemon/blacephalon/overworld_shiny.pal new file mode 100644 index 000000000000..ce347df50b97 --- /dev/null +++ b/graphics/pokemon/blacephalon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +8 0 192 +16 0 120 +223 246 25 +255 225 55 +247 135 202 +227 115 215 +166 156 43 +102 165 225 +76 149 219 +0 0 64 +107 103 5 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blastoise/overworld.png b/graphics/pokemon/blastoise/overworld.png new file mode 100644 index 000000000000..80d48304a68f Binary files /dev/null and b/graphics/pokemon/blastoise/overworld.png differ diff --git a/graphics/pokemon/blastoise/overworld_normal.pal b/graphics/pokemon/blastoise/overworld_normal.pal new file mode 100644 index 000000000000..f86c7621ef56 --- /dev/null +++ b/graphics/pokemon/blastoise/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 88 +96 96 168 +144 136 232 +0 0 0 +80 80 80 +232 232 248 +184 184 184 +136 136 136 +176 112 24 +128 80 8 +240 200 80 +152 136 80 +72 40 8 +200 168 80 +0 0 0 diff --git a/graphics/pokemon/blastoise/overworld_shiny.pal b/graphics/pokemon/blastoise/overworld_shiny.pal new file mode 100644 index 000000000000..11143b11cb99 --- /dev/null +++ b/graphics/pokemon/blastoise/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 72 +128 128 168 +176 160 232 +0 0 0 +80 80 80 +232 232 248 +184 184 184 +136 136 136 +144 168 24 +88 120 8 +240 200 80 +152 136 80 +56 72 8 +200 168 80 +0 0 0 diff --git a/graphics/pokemon/blaziken/overworld.png b/graphics/pokemon/blaziken/overworld.png new file mode 100644 index 000000000000..21fce8c8e9b7 Binary files /dev/null and b/graphics/pokemon/blaziken/overworld.png differ diff --git a/graphics/pokemon/blaziken/overworld_normal.pal b/graphics/pokemon/blaziken/overworld_normal.pal new file mode 100644 index 000000000000..ef97e466b094 --- /dev/null +++ b/graphics/pokemon/blaziken/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 64 +104 16 0 +240 232 224 +232 48 40 +0 0 0 +240 224 152 +248 96 88 +208 184 88 +176 128 80 +168 24 24 +248 208 80 +32 96 184 +224 168 16 +184 168 160 +96 72 0 diff --git a/graphics/pokemon/blaziken/overworld_shiny.pal b/graphics/pokemon/blaziken/overworld_shiny.pal new file mode 100644 index 000000000000..f97d2892d0a0 --- /dev/null +++ b/graphics/pokemon/blaziken/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 64 +104 16 0 +240 232 224 +232 32 8 +0 0 0 +248 240 208 +248 40 56 +224 216 192 +216 200 184 +168 16 8 +248 184 40 +32 96 184 +240 144 0 +184 168 160 +96 72 0 diff --git a/graphics/pokemon/blipbug/overworld.png b/graphics/pokemon/blipbug/overworld.png new file mode 100644 index 000000000000..2ce530aec6b2 Binary files /dev/null and b/graphics/pokemon/blipbug/overworld.png differ diff --git a/graphics/pokemon/blipbug/overworld_normal.pal b/graphics/pokemon/blipbug/overworld_normal.pal new file mode 100644 index 000000000000..a66a7aa31012 --- /dev/null +++ b/graphics/pokemon/blipbug/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +12 16 36 +0 0 0 +68 68 132 +36 40 80 +232 224 216 +212 196 180 +196 188 112 +252 244 156 +252 200 24 +196 152 4 +212 196 180 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blipbug/overworld_shiny.pal b/graphics/pokemon/blipbug/overworld_shiny.pal new file mode 100644 index 000000000000..9603d4a4debe --- /dev/null +++ b/graphics/pokemon/blipbug/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +8 16 32 +0 0 0 +65 65 131 +32 41 82 +238 230 222 +213 197 180 +197 189 115 +255 246 156 +164 131 205 +115 90 139 +213 197 180 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blissey/overworld.png b/graphics/pokemon/blissey/overworld.png new file mode 100644 index 000000000000..490eeb038fb3 Binary files /dev/null and b/graphics/pokemon/blissey/overworld.png differ diff --git a/graphics/pokemon/blissey/overworld_normal.pal b/graphics/pokemon/blissey/overworld_normal.pal new file mode 100644 index 000000000000..cd5d1b7c3963 --- /dev/null +++ b/graphics/pokemon/blissey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 16 64 +248 120 184 +0 0 0 +248 168 200 +184 88 136 +144 64 112 +224 80 96 +232 232 248 +64 72 96 +168 184 208 +200 208 232 +128 144 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blissey/overworld_shiny.pal b/graphics/pokemon/blissey/overworld_shiny.pal new file mode 100644 index 000000000000..6cad84283ade --- /dev/null +++ b/graphics/pokemon/blissey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 16 64 +248 160 208 +0 0 0 +248 192 216 +208 136 168 +144 64 112 +224 80 96 +232 232 248 +112 120 128 +192 200 216 +224 224 232 +160 176 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/blitzle/overworld.png b/graphics/pokemon/blitzle/overworld.png new file mode 100644 index 000000000000..09a594f17b27 Binary files /dev/null and b/graphics/pokemon/blitzle/overworld.png differ diff --git a/graphics/pokemon/blitzle/overworld_normal.pal b/graphics/pokemon/blitzle/overworld_normal.pal new file mode 100644 index 000000000000..cd08b136ebc7 --- /dev/null +++ b/graphics/pokemon/blitzle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 88 +55 55 55 +88 88 88 +55 55 55 +248 248 248 +0 0 0 +200 200 200 +0 168 216 +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/blitzle/overworld_shiny.pal b/graphics/pokemon/blitzle/overworld_shiny.pal new file mode 100644 index 000000000000..422cd57da45b --- /dev/null +++ b/graphics/pokemon/blitzle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 88 +32 48 80 +48 80 112 +55 55 55 +248 248 248 +0 0 0 +200 200 200 +24 232 104 +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/boldore/overworld.png b/graphics/pokemon/boldore/overworld.png new file mode 100644 index 000000000000..013a09dcf3d4 Binary files /dev/null and b/graphics/pokemon/boldore/overworld.png differ diff --git a/graphics/pokemon/boldore/overworld_normal.pal b/graphics/pokemon/boldore/overworld_normal.pal new file mode 100644 index 000000000000..02775cb1b650 --- /dev/null +++ b/graphics/pokemon/boldore/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 41 57 +41 57 106 +65 82 139 +16 16 16 +115 49 32 +205 74 57 +255 106 82 +156 123 16 +90 65 32 +172 41 24 +255 205 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/boldore/overworld_shiny.pal b/graphics/pokemon/boldore/overworld_shiny.pal new file mode 100644 index 000000000000..124e716e4a5c --- /dev/null +++ b/graphics/pokemon/boldore/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 16 48 +64 40 104 +88 64 136 +16 16 16 +16 48 56 +56 160 200 +80 208 248 +168 96 32 +88 64 32 +32 96 112 +248 120 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/boltund/overworld.png b/graphics/pokemon/boltund/overworld.png new file mode 100644 index 000000000000..122b4ce53ec1 Binary files /dev/null and b/graphics/pokemon/boltund/overworld.png differ diff --git a/graphics/pokemon/boltund/overworld_normal.pal b/graphics/pokemon/boltund/overworld_normal.pal new file mode 100644 index 000000000000..410819e8290d --- /dev/null +++ b/graphics/pokemon/boltund/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 52 38 +91 84 9 +216 189 72 +248 217 80 +0 0 0 +56 74 55 +104 104 104 +223 223 223 +254 238 99 +255 255 255 +155 166 154 +23 31 23 +96 115 95 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/boltund/overworld_shiny.pal b/graphics/pokemon/boltund/overworld_shiny.pal new file mode 100644 index 000000000000..2a2b9893b90f --- /dev/null +++ b/graphics/pokemon/boltund/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 52 38 +90 82 8 +222 189 74 +255 222 82 +0 0 0 +115 74 106 +106 106 106 +222 222 222 +255 238 98 +255 255 255 +164 106 156 +49 32 41 +139 106 131 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bonsly/overworld.png b/graphics/pokemon/bonsly/overworld.png new file mode 100644 index 000000000000..800f6f8b99fd Binary files /dev/null and b/graphics/pokemon/bonsly/overworld.png differ diff --git a/graphics/pokemon/bonsly/overworld_normal.pal b/graphics/pokemon/bonsly/overworld_normal.pal new file mode 100644 index 000000000000..da265e54dd0a --- /dev/null +++ b/graphics/pokemon/bonsly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 80 16 +72 152 64 +120 208 120 +0 0 0 +184 152 88 +88 64 16 +152 112 72 +224 192 0 +200 168 0 +112 88 48 +192 96 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bonsly/overworld_shiny.pal b/graphics/pokemon/bonsly/overworld_shiny.pal new file mode 100644 index 000000000000..3b0172af2e7e --- /dev/null +++ b/graphics/pokemon/bonsly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 40 0 +200 72 0 +224 128 64 +0 0 0 +192 184 88 +88 88 16 +136 144 72 +224 192 0 +200 168 0 +112 104 48 +192 96 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bouffalant/overworld.png b/graphics/pokemon/bouffalant/overworld.png new file mode 100644 index 000000000000..96df51de8673 Binary files /dev/null and b/graphics/pokemon/bouffalant/overworld.png differ diff --git a/graphics/pokemon/bouffalant/overworld_normal.pal b/graphics/pokemon/bouffalant/overworld_normal.pal new file mode 100644 index 000000000000..583d8bc8ab99 --- /dev/null +++ b/graphics/pokemon/bouffalant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 24 8 +63 55 40 +11 9 7 +231 209 163 +41 33 23 +138 95 40 +95 95 104 +195 153 62 +95 63 33 +47 47 55 +147 121 79 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bouffalant/overworld_shiny.pal b/graphics/pokemon/bouffalant/overworld_shiny.pal new file mode 100644 index 000000000000..f1eb8c938406 --- /dev/null +++ b/graphics/pokemon/bouffalant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 9 7 +80 72 64 +11 9 7 +228 201 178 +44 35 30 +200 172 97 +95 95 104 +104 48 40 +104 48 40 +44 35 30 +147 121 79 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bounsweet/overworld.png b/graphics/pokemon/bounsweet/overworld.png new file mode 100644 index 000000000000..b3920bd8f22b Binary files /dev/null and b/graphics/pokemon/bounsweet/overworld.png differ diff --git a/graphics/pokemon/bounsweet/overworld_normal.pal b/graphics/pokemon/bounsweet/overworld_normal.pal new file mode 100644 index 000000000000..10cd6d77ab50 --- /dev/null +++ b/graphics/pokemon/bounsweet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +225 232 232 +192 224 112 +232 200 0 +120 184 72 +136 153 149 +224 104 128 +224 96 144 +195 81 133 +153 70 108 +168 64 88 +131 29 92 +83 26 46 +61 71 69 +32 64 32 +0 0 0 diff --git a/graphics/pokemon/bounsweet/overworld_shiny.pal b/graphics/pokemon/bounsweet/overworld_shiny.pal new file mode 100644 index 000000000000..c97f75961df5 --- /dev/null +++ b/graphics/pokemon/bounsweet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +225 232 232 +216 192 248 +232 200 0 +160 128 240 +136 153 149 +224 104 128 +200 112 152 +176 64 104 +153 70 108 +168 64 88 +131 29 92 +83 26 46 +61 71 69 +96 80 168 +0 0 0 diff --git a/graphics/pokemon/braixen/overworld.png b/graphics/pokemon/braixen/overworld.png new file mode 100644 index 000000000000..66b76ffeefb7 Binary files /dev/null and b/graphics/pokemon/braixen/overworld.png differ diff --git a/graphics/pokemon/braixen/overworld_normal.pal b/graphics/pokemon/braixen/overworld_normal.pal new file mode 100644 index 000000000000..7a1077b989d6 --- /dev/null +++ b/graphics/pokemon/braixen/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 112 32 +224 173 16 +0 0 0 +255 224 96 +148 41 34 +201 66 48 +243 86 58 +129 114 116 +255 255 255 +201 198 205 +20 20 20 +84 33 24 +128 71 40 +51 36 53 +77 67 74 diff --git a/graphics/pokemon/braixen/overworld_shiny.pal b/graphics/pokemon/braixen/overworld_shiny.pal new file mode 100644 index 000000000000..b28632064d0d --- /dev/null +++ b/graphics/pokemon/braixen/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +95 70 112 +132 107 148 +0 0 0 +177 146 199 +148 41 34 +201 66 48 +243 86 58 +129 114 116 +255 255 255 +201 198 205 +20 20 20 +84 33 24 +128 71 40 +51 36 53 +77 67 74 diff --git a/graphics/pokemon/braviary/hisuian/overworld.png b/graphics/pokemon/braviary/hisuian/overworld.png new file mode 100644 index 000000000000..55634525180b Binary files /dev/null and b/graphics/pokemon/braviary/hisuian/overworld.png differ diff --git a/graphics/pokemon/braviary/hisuian/overworld_normal.pal b/graphics/pokemon/braviary/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..af0d29cc0db8 --- /dev/null +++ b/graphics/pokemon/braviary/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +255 255 255 +57 65 74 +180 156 148 +98 82 74 +74 90 115 +172 90 230 +139 65 189 +131 213 255 +222 139 24 +205 57 41 +246 213 65 +180 172 131 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/braviary/hisuian/overworld_shiny.pal b/graphics/pokemon/braviary/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..796d7bec9f5b --- /dev/null +++ b/graphics/pokemon/braviary/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +65 57 49 +41 49 49 +41 41 32 +16 16 16 +49 65 82 +131 213 255 +115 197 230 +255 255 255 +222 139 24 +205 57 41 +246 213 65 +41 41 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/braviary/overworld.png b/graphics/pokemon/braviary/overworld.png new file mode 100644 index 000000000000..8e352afab7e3 Binary files /dev/null and b/graphics/pokemon/braviary/overworld.png differ diff --git a/graphics/pokemon/braviary/overworld_normal.pal b/graphics/pokemon/braviary/overworld_normal.pal new file mode 100644 index 000000000000..c9ec83d8140b --- /dev/null +++ b/graphics/pokemon/braviary/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 82 114 +49 49 74 +214 210 195 +32 32 32 +179 157 82 +74 16 0 +115 32 32 +0 0 0 +164 49 49 +24 98 172 +98 82 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/braviary/overworld_shiny.pal b/graphics/pokemon/braviary/overworld_shiny.pal new file mode 100644 index 000000000000..7241967249db --- /dev/null +++ b/graphics/pokemon/braviary/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +109 90 67 +64 47 31 +209 205 192 +32 32 32 +12 40 72 +24 72 120 +0 0 0 +32 104 168 +24 98 172 +98 82 32 +203 158 26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/breloom/overworld.png b/graphics/pokemon/breloom/overworld.png new file mode 100644 index 000000000000..b398f72f5d02 Binary files /dev/null and b/graphics/pokemon/breloom/overworld.png differ diff --git a/graphics/pokemon/breloom/overworld_normal.pal b/graphics/pokemon/breloom/overworld_normal.pal new file mode 100644 index 000000000000..3f05a222b66a --- /dev/null +++ b/graphics/pokemon/breloom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 56 16 +128 192 88 +104 168 64 +96 32 32 +72 112 48 +80 72 48 +200 64 64 +0 0 0 +160 40 40 +48 80 32 +176 136 56 +232 208 144 +232 232 248 +208 184 112 +128 104 56 diff --git a/graphics/pokemon/breloom/overworld_shiny.pal b/graphics/pokemon/breloom/overworld_shiny.pal new file mode 100644 index 000000000000..76694dd38e92 --- /dev/null +++ b/graphics/pokemon/breloom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 24 24 +248 88 56 +200 40 32 +120 48 16 +160 40 40 +80 72 48 +248 184 24 +0 0 0 +232 112 0 +120 32 0 +176 136 56 +232 208 144 +232 232 248 +208 184 112 +128 104 56 diff --git a/graphics/pokemon/brionne/overworld.png b/graphics/pokemon/brionne/overworld.png new file mode 100644 index 000000000000..e2c617a175eb Binary files /dev/null and b/graphics/pokemon/brionne/overworld.png differ diff --git a/graphics/pokemon/brionne/overworld_normal.pal b/graphics/pokemon/brionne/overworld_normal.pal new file mode 100644 index 000000000000..210b9cfb043c --- /dev/null +++ b/graphics/pokemon/brionne/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +218 231 234 +93 199 219 +141 196 207 +115 165 187 +55 160 205 +238 126 192 +138 149 154 +54 107 164 +57 88 119 +27 56 83 +101 45 64 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/brionne/overworld_shiny.pal b/graphics/pokemon/brionne/overworld_shiny.pal new file mode 100644 index 000000000000..4cbe707b8b4d --- /dev/null +++ b/graphics/pokemon/brionne/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +218 231 234 +152 144 216 +248 208 200 +115 165 187 +112 96 184 +238 126 192 +138 149 154 +112 96 184 +57 88 119 +27 56 83 +101 45 64 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bronzong/overworld.png b/graphics/pokemon/bronzong/overworld.png new file mode 100644 index 000000000000..128e7276ddfa Binary files /dev/null and b/graphics/pokemon/bronzong/overworld.png differ diff --git a/graphics/pokemon/bronzong/overworld_normal.pal b/graphics/pokemon/bronzong/overworld_normal.pal new file mode 100644 index 000000000000..cc7be816dcfc --- /dev/null +++ b/graphics/pokemon/bronzong/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +40 72 64 +144 192 200 +48 136 128 +72 160 152 +48 96 88 +32 56 48 +56 112 104 +96 152 152 +160 48 56 +128 48 56 +152 168 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bronzong/overworld_shiny.pal b/graphics/pokemon/bronzong/overworld_shiny.pal new file mode 100644 index 000000000000..f2d01d47c767 --- /dev/null +++ b/graphics/pokemon/bronzong/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +72 104 240 +0 0 0 +64 88 64 +176 216 80 +96 152 80 +104 176 80 +80 120 72 +40 64 64 +80 120 72 +120 192 72 +160 48 56 +128 48 56 +152 168 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bronzor/overworld.png b/graphics/pokemon/bronzor/overworld.png new file mode 100644 index 000000000000..e861c435ad9b Binary files /dev/null and b/graphics/pokemon/bronzor/overworld.png differ diff --git a/graphics/pokemon/bronzor/overworld_normal.pal b/graphics/pokemon/bronzor/overworld_normal.pal new file mode 100644 index 000000000000..4f9b38dbbb24 --- /dev/null +++ b/graphics/pokemon/bronzor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 64 +88 176 208 +72 152 192 +40 96 120 +0 0 0 +64 120 152 +232 200 0 +32 80 96 +160 144 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bronzor/overworld_shiny.pal b/graphics/pokemon/bronzor/overworld_shiny.pal new file mode 100644 index 000000000000..dbc54af8a321 --- /dev/null +++ b/graphics/pokemon/bronzor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 64 +152 200 80 +128 176 72 +80 120 72 +0 0 0 +104 144 72 +232 200 0 +64 88 64 +160 144 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bruxish/overworld.png b/graphics/pokemon/bruxish/overworld.png new file mode 100644 index 000000000000..18b2325a80c8 Binary files /dev/null and b/graphics/pokemon/bruxish/overworld.png differ diff --git a/graphics/pokemon/bruxish/overworld_normal.pal b/graphics/pokemon/bruxish/overworld_normal.pal new file mode 100644 index 000000000000..613b331e9952 --- /dev/null +++ b/graphics/pokemon/bruxish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 244 244 +245 241 71 +225 220 64 +164 214 232 +196 203 194 +189 186 67 +232 120 180 +176 101 197 +59 105 101 +140 82 158 +75 74 26 +87 48 120 +105 44 76 +38 23 43 +0 0 0 diff --git a/graphics/pokemon/bruxish/overworld_shiny.pal b/graphics/pokemon/bruxish/overworld_shiny.pal new file mode 100644 index 000000000000..624b47c64a7d --- /dev/null +++ b/graphics/pokemon/bruxish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 244 244 +232 208 136 +225 220 64 +224 216 208 +196 203 194 +200 160 80 +232 56 40 +104 208 152 +59 105 101 +140 82 158 +75 74 26 +56 160 104 +105 44 76 +38 23 43 +0 0 0 diff --git a/graphics/pokemon/budew/overworld.png b/graphics/pokemon/budew/overworld.png new file mode 100644 index 000000000000..a588906b9355 Binary files /dev/null and b/graphics/pokemon/budew/overworld.png differ diff --git a/graphics/pokemon/budew/overworld_normal.pal b/graphics/pokemon/budew/overworld_normal.pal new file mode 100644 index 000000000000..a3239feb8b7d --- /dev/null +++ b/graphics/pokemon/budew/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 56 16 +168 216 144 +144 200 104 +88 144 16 +64 112 8 +32 80 8 +200 152 16 +216 208 56 +0 0 0 +144 112 32 +64 64 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/budew/overworld_shiny.pal b/graphics/pokemon/budew/overworld_shiny.pal new file mode 100644 index 000000000000..18ec56f1c7d8 --- /dev/null +++ b/graphics/pokemon/budew/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 16 +232 240 152 +200 208 112 +160 176 16 +120 136 8 +64 88 8 +200 152 16 +216 208 56 +0 0 0 +144 112 32 +64 64 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/buizel/overworld.png b/graphics/pokemon/buizel/overworld.png new file mode 100644 index 000000000000..3a2543f9ff7d Binary files /dev/null and b/graphics/pokemon/buizel/overworld.png differ diff --git a/graphics/pokemon/buizel/overworld_normal.pal b/graphics/pokemon/buizel/overworld_normal.pal new file mode 100644 index 000000000000..67d19673cb94 --- /dev/null +++ b/graphics/pokemon/buizel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 56 48 +240 224 128 +240 128 16 +200 104 32 +0 0 0 +200 144 0 +248 192 32 +216 184 72 +160 96 40 +232 232 248 +72 136 192 +112 112 112 +64 96 120 +176 192 208 +0 0 0 diff --git a/graphics/pokemon/buizel/overworld_shiny.pal b/graphics/pokemon/buizel/overworld_shiny.pal new file mode 100644 index 000000000000..e0106d0deeff --- /dev/null +++ b/graphics/pokemon/buizel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 24 +248 240 184 +232 192 88 +176 144 56 +0 0 0 +152 152 152 +200 200 200 +240 208 96 +96 96 64 +232 232 248 +72 136 192 +88 88 88 +64 96 120 +168 184 200 +0 0 0 diff --git a/graphics/pokemon/bulbasaur/overworld.png b/graphics/pokemon/bulbasaur/overworld.png new file mode 100644 index 000000000000..3eb99143e0f2 Binary files /dev/null and b/graphics/pokemon/bulbasaur/overworld.png differ diff --git a/graphics/pokemon/bulbasaur/overworld_normal.pal b/graphics/pokemon/bulbasaur/overworld_normal.pal new file mode 100644 index 000000000000..1e893b858b86 --- /dev/null +++ b/graphics/pokemon/bulbasaur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 248 184 +64 96 48 +96 168 16 +64 64 64 +136 224 32 +0 0 0 +104 208 120 +64 152 80 +104 16 24 +232 232 248 +184 48 24 +200 200 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bulbasaur/overworld_shiny.pal b/graphics/pokemon/bulbasaur/overworld_shiny.pal new file mode 100644 index 000000000000..cf17aebf6bf6 --- /dev/null +++ b/graphics/pokemon/bulbasaur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 248 184 +64 96 48 +32 120 64 +64 64 64 +80 160 88 +0 0 0 +160 208 56 +112 152 48 +104 16 24 +232 232 248 +184 48 24 +216 216 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/buneary/overworld.png b/graphics/pokemon/buneary/overworld.png new file mode 100644 index 000000000000..488506babb2f Binary files /dev/null and b/graphics/pokemon/buneary/overworld.png differ diff --git a/graphics/pokemon/buneary/overworld_normal.pal b/graphics/pokemon/buneary/overworld_normal.pal new file mode 100644 index 000000000000..220a9fff36fd --- /dev/null +++ b/graphics/pokemon/buneary/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 32 +232 192 136 +232 216 168 +96 80 64 +0 0 0 +200 160 64 +184 144 88 +144 80 88 +152 120 64 +208 120 120 +232 232 248 +80 80 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/buneary/overworld_shiny.pal b/graphics/pokemon/buneary/overworld_shiny.pal new file mode 100644 index 000000000000..9ebf9a6bb2ca --- /dev/null +++ b/graphics/pokemon/buneary/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 32 +232 144 160 +232 184 192 +96 80 64 +0 0 0 +176 96 120 +192 136 120 +104 120 152 +152 104 88 +160 160 192 +232 232 248 +80 80 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bunnelby/overworld.png b/graphics/pokemon/bunnelby/overworld.png new file mode 100644 index 000000000000..8b76ee56a40c Binary files /dev/null and b/graphics/pokemon/bunnelby/overworld.png differ diff --git a/graphics/pokemon/bunnelby/overworld_normal.pal b/graphics/pokemon/bunnelby/overworld_normal.pal new file mode 100644 index 000000000000..6ee9fbf5644a --- /dev/null +++ b/graphics/pokemon/bunnelby/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +31 31 31 +170 119 85 +0 0 0 +207 205 206 +154 148 148 +126 121 130 +56 48 32 +222 140 149 +71 69 69 +224 224 222 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bunnelby/overworld_shiny.pal b/graphics/pokemon/bunnelby/overworld_shiny.pal new file mode 100644 index 000000000000..664545988b70 --- /dev/null +++ b/graphics/pokemon/bunnelby/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +31 31 31 +213 215 210 +0 0 0 +149 153 143 +119 119 113 +126 121 130 +56 48 32 +246 173 123 +72 68 83 +224 224 222 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/overworld.png b/graphics/pokemon/burmy/overworld.png new file mode 100644 index 000000000000..a8c3fce5f187 Binary files /dev/null and b/graphics/pokemon/burmy/overworld.png differ diff --git a/graphics/pokemon/burmy/overworld_normal.pal b/graphics/pokemon/burmy/overworld_normal.pal new file mode 100644 index 000000000000..390ceea8c663 --- /dev/null +++ b/graphics/pokemon/burmy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 96 96 +40 72 40 +64 120 24 +80 168 24 +136 208 56 +248 176 0 +184 120 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/overworld_shiny.pal b/graphics/pokemon/burmy/overworld_shiny.pal new file mode 100644 index 000000000000..c823c2045338 --- /dev/null +++ b/graphics/pokemon/burmy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 128 152 +40 72 40 +64 120 24 +80 168 24 +136 208 56 +248 176 0 +184 120 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/sandy_cloak/overworld.png b/graphics/pokemon/burmy/sandy_cloak/overworld.png new file mode 100644 index 000000000000..882ef2e32ac3 Binary files /dev/null and b/graphics/pokemon/burmy/sandy_cloak/overworld.png differ diff --git a/graphics/pokemon/burmy/sandy_cloak/overworld_normal.pal b/graphics/pokemon/burmy/sandy_cloak/overworld_normal.pal new file mode 100644 index 000000000000..3e985f0e3af1 --- /dev/null +++ b/graphics/pokemon/burmy/sandy_cloak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 96 96 +96 80 64 +152 144 96 +232 216 136 +200 192 136 +248 176 0 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/sandy_cloak/overworld_shiny.pal b/graphics/pokemon/burmy/sandy_cloak/overworld_shiny.pal new file mode 100644 index 000000000000..77ab69f0c1d8 --- /dev/null +++ b/graphics/pokemon/burmy/sandy_cloak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 128 152 +96 80 64 +152 144 96 +232 216 136 +200 192 136 +248 176 0 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/trash_cloak/overworld.png b/graphics/pokemon/burmy/trash_cloak/overworld.png new file mode 100644 index 000000000000..dc193fe430b7 Binary files /dev/null and b/graphics/pokemon/burmy/trash_cloak/overworld.png differ diff --git a/graphics/pokemon/burmy/trash_cloak/overworld_normal.pal b/graphics/pokemon/burmy/trash_cloak/overworld_normal.pal new file mode 100644 index 000000000000..c1c9ac316b5c --- /dev/null +++ b/graphics/pokemon/burmy/trash_cloak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 96 96 +96 48 64 +168 56 104 +248 168 168 +216 120 152 +248 176 0 +136 136 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/burmy/trash_cloak/overworld_shiny.pal b/graphics/pokemon/burmy/trash_cloak/overworld_shiny.pal new file mode 100644 index 000000000000..fe5fe09e89b8 --- /dev/null +++ b/graphics/pokemon/burmy/trash_cloak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +96 128 152 +96 48 64 +168 56 104 +248 168 168 +216 120 152 +248 176 0 +136 136 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/butterfree/overworld.png b/graphics/pokemon/butterfree/overworld.png new file mode 100644 index 000000000000..c29f337badf4 Binary files /dev/null and b/graphics/pokemon/butterfree/overworld.png differ diff --git a/graphics/pokemon/butterfree/overworld_normal.pal b/graphics/pokemon/butterfree/overworld_normal.pal new file mode 100644 index 000000000000..1ce5a15e5d70 --- /dev/null +++ b/graphics/pokemon/butterfree/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 40 88 +96 96 96 +232 232 248 +184 192 224 +112 80 200 +160 104 224 +144 144 144 +192 40 64 +248 112 136 +104 200 248 +80 144 224 +48 64 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/butterfree/overworld_shiny.pal b/graphics/pokemon/butterfree/overworld_shiny.pal new file mode 100644 index 000000000000..222adecce1f0 --- /dev/null +++ b/graphics/pokemon/butterfree/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 40 88 +96 96 96 +232 232 248 +224 176 216 +112 80 200 +160 104 224 +168 128 136 +48 136 48 +136 208 144 +248 112 136 +176 72 96 +112 40 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/buzzwole/overworld.png b/graphics/pokemon/buzzwole/overworld.png new file mode 100644 index 000000000000..2459f87cfa65 Binary files /dev/null and b/graphics/pokemon/buzzwole/overworld.png differ diff --git a/graphics/pokemon/buzzwole/overworld_normal.pal b/graphics/pokemon/buzzwole/overworld_normal.pal new file mode 100644 index 000000000000..5e32bbf67e31 --- /dev/null +++ b/graphics/pokemon/buzzwole/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 241 241 +255 184 136 +244 181 85 +255 148 74 +241 145 73 +235 116 82 +255 82 57 +205 82 57 +114 96 92 +234 77 77 +184 58 58 +90 66 65 +129 39 39 +35 29 29 +0 0 0 diff --git a/graphics/pokemon/buzzwole/overworld_shiny.pal b/graphics/pokemon/buzzwole/overworld_shiny.pal new file mode 100644 index 000000000000..2f28ca1bcce4 --- /dev/null +++ b/graphics/pokemon/buzzwole/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 241 241 +255 184 136 +244 181 85 +255 148 74 +241 145 73 +235 116 82 +255 82 57 +205 82 57 +114 96 92 +16 224 48 +0 72 8 +90 66 65 +24 144 40 +35 29 29 +0 0 0 diff --git a/graphics/pokemon/cacnea/overworld.png b/graphics/pokemon/cacnea/overworld.png new file mode 100644 index 000000000000..3344958768ed Binary files /dev/null and b/graphics/pokemon/cacnea/overworld.png differ diff --git a/graphics/pokemon/cacnea/overworld_normal.pal b/graphics/pokemon/cacnea/overworld_normal.pal new file mode 100644 index 000000000000..1ebe5943730e --- /dev/null +++ b/graphics/pokemon/cacnea/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 80 48 +200 152 56 +16 16 16 +248 216 88 +40 64 40 +104 168 96 +56 96 56 +72 136 64 +128 192 120 +80 80 80 +248 248 248 +216 224 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cacnea/overworld_shiny.pal b/graphics/pokemon/cacnea/overworld_shiny.pal new file mode 100644 index 000000000000..bb2a62a1be1e --- /dev/null +++ b/graphics/pokemon/cacnea/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 80 48 +200 152 56 +16 16 16 +248 216 88 +104 40 40 +184 128 48 +144 56 40 +184 112 48 +216 160 48 +80 80 80 +248 248 248 +216 224 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cacturne/overworld.png b/graphics/pokemon/cacturne/overworld.png new file mode 100644 index 000000000000..7084b00283af Binary files /dev/null and b/graphics/pokemon/cacturne/overworld.png differ diff --git a/graphics/pokemon/cacturne/overworld_normal.pal b/graphics/pokemon/cacturne/overworld_normal.pal new file mode 100644 index 000000000000..6e76ee1e28ff --- /dev/null +++ b/graphics/pokemon/cacturne/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +40 64 40 +72 136 64 +56 96 56 +16 16 16 +104 168 96 +248 216 88 +80 80 80 +128 168 64 +168 200 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cacturne/overworld_shiny.pal b/graphics/pokemon/cacturne/overworld_shiny.pal new file mode 100644 index 000000000000..85ac2ca6d899 --- /dev/null +++ b/graphics/pokemon/cacturne/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 8 24 +168 72 64 +128 40 40 +16 16 16 +184 96 88 +248 216 88 +80 80 80 +184 128 48 +216 160 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/calyrex/ice_rider/overworld.png b/graphics/pokemon/calyrex/ice_rider/overworld.png new file mode 100644 index 000000000000..24b3b6215a11 Binary files /dev/null and b/graphics/pokemon/calyrex/ice_rider/overworld.png differ diff --git a/graphics/pokemon/calyrex/ice_rider/overworld_normal.pal b/graphics/pokemon/calyrex/ice_rider/overworld_normal.pal new file mode 100644 index 000000000000..9eb0730f2323 --- /dev/null +++ b/graphics/pokemon/calyrex/ice_rider/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +203 37 37 +0 0 0 +25 35 94 +0 37 32 +146 175 206 +183 206 229 +0 75 65 +52 69 167 +66 119 111 +100 100 100 +242 242 242 +64 83 103 +216 215 206 +0 0 0 +169 160 155 +191 191 191 diff --git a/graphics/pokemon/calyrex/ice_rider/overworld_shiny.pal b/graphics/pokemon/calyrex/ice_rider/overworld_shiny.pal new file mode 100644 index 000000000000..9eb0730f2323 --- /dev/null +++ b/graphics/pokemon/calyrex/ice_rider/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +203 37 37 +0 0 0 +25 35 94 +0 37 32 +146 175 206 +183 206 229 +0 75 65 +52 69 167 +66 119 111 +100 100 100 +242 242 242 +64 83 103 +216 215 206 +0 0 0 +169 160 155 +191 191 191 diff --git a/graphics/pokemon/calyrex/overworld.png b/graphics/pokemon/calyrex/overworld.png new file mode 100644 index 000000000000..34cc158ba4a2 Binary files /dev/null and b/graphics/pokemon/calyrex/overworld.png differ diff --git a/graphics/pokemon/calyrex/overworld_normal.pal b/graphics/pokemon/calyrex/overworld_normal.pal new file mode 100644 index 000000000000..ce21dfcc9d0b --- /dev/null +++ b/graphics/pokemon/calyrex/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +180 228 28 +4 8 40 +0 12 8 +136 140 176 +204 208 228 +0 72 64 +52 68 164 +64 116 108 +100 100 100 +252 252 252 +68 64 60 +0 0 0 +168 160 152 +216 212 204 +0 36 32 +0 0 0 diff --git a/graphics/pokemon/calyrex/overworld_shiny.pal b/graphics/pokemon/calyrex/overworld_shiny.pal new file mode 100644 index 000000000000..421d5ccfbe86 --- /dev/null +++ b/graphics/pokemon/calyrex/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 8 41 +0 8 8 +139 139 180 +205 213 230 +0 74 65 +49 65 164 +65 115 106 +98 98 98 +213 205 148 +65 65 57 +0 0 0 +172 139 90 +213 205 148 +0 32 32 +0 0 0 diff --git a/graphics/pokemon/calyrex/shadow_rider/overworld.png b/graphics/pokemon/calyrex/shadow_rider/overworld.png new file mode 100644 index 000000000000..bb8c91b2f3a2 Binary files /dev/null and b/graphics/pokemon/calyrex/shadow_rider/overworld.png differ diff --git a/graphics/pokemon/calyrex/shadow_rider/overworld_normal.pal b/graphics/pokemon/calyrex/shadow_rider/overworld_normal.pal new file mode 100644 index 000000000000..8114f67fe8ab --- /dev/null +++ b/graphics/pokemon/calyrex/shadow_rider/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +65 194 115 +0 0 0 +65 117 106 +148 133 189 +246 242 246 +65 64 74 +32 36 65 +49 68 164 +213 210 205 +0 32 24 +148 174 205 +74 52 148 +172 161 156 +98 101 98 +24 16 65 +49 36 115 diff --git a/graphics/pokemon/calyrex/shadow_rider/overworld_shiny.pal b/graphics/pokemon/calyrex/shadow_rider/overworld_shiny.pal new file mode 100644 index 000000000000..8114f67fe8ab --- /dev/null +++ b/graphics/pokemon/calyrex/shadow_rider/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +65 194 115 +0 0 0 +65 117 106 +148 133 189 +246 242 246 +65 64 74 +32 36 65 +49 68 164 +213 210 205 +0 32 24 +148 174 205 +74 52 148 +172 161 156 +98 101 98 +24 16 65 +49 36 115 diff --git a/graphics/pokemon/camerupt/overworld.png b/graphics/pokemon/camerupt/overworld.png new file mode 100644 index 000000000000..291156bd7971 Binary files /dev/null and b/graphics/pokemon/camerupt/overworld.png differ diff --git a/graphics/pokemon/camerupt/overworld_normal.pal b/graphics/pokemon/camerupt/overworld_normal.pal new file mode 100644 index 000000000000..36e4a6a04b27 --- /dev/null +++ b/graphics/pokemon/camerupt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +216 104 48 +160 48 24 +192 184 152 +48 56 64 +160 152 120 +200 72 24 +128 112 80 +72 64 48 +88 32 32 +224 136 80 +88 96 96 +248 248 248 +72 144 160 +0 0 0 diff --git a/graphics/pokemon/camerupt/overworld_shiny.pal b/graphics/pokemon/camerupt/overworld_shiny.pal new file mode 100644 index 000000000000..6b8e3ea3fe66 --- /dev/null +++ b/graphics/pokemon/camerupt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +96 104 104 +64 72 72 +216 184 176 +32 40 40 +176 152 136 +88 96 96 +144 112 96 +104 64 48 +24 32 32 +120 128 128 +56 64 64 +248 248 248 +216 184 96 +0 0 0 diff --git a/graphics/pokemon/carbink/overworld.png b/graphics/pokemon/carbink/overworld.png new file mode 100644 index 000000000000..61891ec1e548 Binary files /dev/null and b/graphics/pokemon/carbink/overworld.png differ diff --git a/graphics/pokemon/carbink/overworld_normal.pal b/graphics/pokemon/carbink/overworld_normal.pal new file mode 100644 index 000000000000..e187751a8f8f --- /dev/null +++ b/graphics/pokemon/carbink/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +26 54 94 +124 128 152 +85 96 149 +16 16 16 +230 238 248 +153 163 175 +161 200 255 +91 136 201 +15 80 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carbink/overworld_shiny.pal b/graphics/pokemon/carbink/overworld_shiny.pal new file mode 100644 index 000000000000..3c15bf46d69d --- /dev/null +++ b/graphics/pokemon/carbink/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +37 35 37 +79 78 79 +55 54 55 +16 16 16 +121 208 216 +86 160 167 +86 160 167 +48 116 124 +15 80 173 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carkol/overworld.png b/graphics/pokemon/carkol/overworld.png new file mode 100644 index 000000000000..9255ba4231ea Binary files /dev/null and b/graphics/pokemon/carkol/overworld.png differ diff --git a/graphics/pokemon/carkol/overworld_normal.pal b/graphics/pokemon/carkol/overworld_normal.pal new file mode 100644 index 000000000000..be92f7c02908 --- /dev/null +++ b/graphics/pokemon/carkol/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 42 +10 10 10 +26 26 26 +50 50 50 +181 65 65 +212 83 83 +2 2 2 +34 33 33 +0 0 0 +66 65 62 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carkol/overworld_shiny.pal b/graphics/pokemon/carkol/overworld_shiny.pal new file mode 100644 index 000000000000..fc06152d0f8d --- /dev/null +++ b/graphics/pokemon/carkol/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +24 24 24 +49 49 49 +180 65 65 +213 82 82 +16 32 32 +49 82 98 +0 0 0 +82 123 131 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carnivine/overworld.png b/graphics/pokemon/carnivine/overworld.png new file mode 100644 index 000000000000..014e7e0c0374 Binary files /dev/null and b/graphics/pokemon/carnivine/overworld.png differ diff --git a/graphics/pokemon/carnivine/overworld_normal.pal b/graphics/pokemon/carnivine/overworld_normal.pal new file mode 100644 index 000000000000..e72cdc37b8ed --- /dev/null +++ b/graphics/pokemon/carnivine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 16 +0 0 0 +104 136 48 +80 96 40 +64 120 24 +128 168 64 +176 184 192 +232 232 248 +144 72 48 +104 40 40 +152 200 88 +56 56 56 +200 152 16 +136 96 24 +72 144 24 diff --git a/graphics/pokemon/carnivine/overworld_shiny.pal b/graphics/pokemon/carnivine/overworld_shiny.pal new file mode 100644 index 000000000000..021b6427b968 --- /dev/null +++ b/graphics/pokemon/carnivine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 16 +0 0 0 +144 128 16 +144 80 16 +192 112 24 +192 168 32 +176 184 192 +232 232 248 +144 72 48 +104 40 40 +216 200 88 +56 56 56 +200 152 16 +136 96 24 +208 112 24 diff --git a/graphics/pokemon/carracosta/overworld.png b/graphics/pokemon/carracosta/overworld.png new file mode 100644 index 000000000000..15ed479fb9d3 Binary files /dev/null and b/graphics/pokemon/carracosta/overworld.png differ diff --git a/graphics/pokemon/carracosta/overworld_normal.pal b/graphics/pokemon/carracosta/overworld_normal.pal new file mode 100644 index 000000000000..e1c755d8bf5e --- /dev/null +++ b/graphics/pokemon/carracosta/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 98 +0 0 0 +57 115 156 +41 49 57 +57 115 156 +74 148 213 +98 115 131 +65 74 90 +164 205 213 +65 74 90 +82 90 106 +57 115 156 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carracosta/overworld_shiny.pal b/graphics/pokemon/carracosta/overworld_shiny.pal new file mode 100644 index 000000000000..a0e4b6ae4f4a --- /dev/null +++ b/graphics/pokemon/carracosta/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 98 +0 0 0 +80 120 160 +8 24 24 +57 115 156 +112 168 208 +32 64 72 +24 56 56 +136 184 192 +65 74 90 +16 40 48 +48 72 120 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/carvanha/overworld.png b/graphics/pokemon/carvanha/overworld.png new file mode 100644 index 000000000000..2591306f44ee Binary files /dev/null and b/graphics/pokemon/carvanha/overworld.png differ diff --git a/graphics/pokemon/carvanha/overworld_normal.pal b/graphics/pokemon/carvanha/overworld_normal.pal new file mode 100644 index 000000000000..12e11c88d62a --- /dev/null +++ b/graphics/pokemon/carvanha/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 48 8 +0 0 0 +200 56 32 +240 192 16 +104 80 0 +224 160 8 +248 216 32 +8 48 120 +16 96 184 +48 120 232 +248 80 40 +168 176 184 +48 56 64 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/carvanha/overworld_shiny.pal b/graphics/pokemon/carvanha/overworld_shiny.pal new file mode 100644 index 000000000000..8cbd2af9ddcb --- /dev/null +++ b/graphics/pokemon/carvanha/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +64 120 200 +0 0 0 +96 160 224 +240 192 16 +104 80 0 +224 160 8 +248 216 32 +48 88 0 +88 128 24 +128 176 56 +128 200 248 +168 176 184 +48 56 64 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/cascoon/overworld.png b/graphics/pokemon/cascoon/overworld.png new file mode 100644 index 000000000000..5ee9cfa0e9a8 Binary files /dev/null and b/graphics/pokemon/cascoon/overworld.png differ diff --git a/graphics/pokemon/cascoon/overworld_normal.pal b/graphics/pokemon/cascoon/overworld_normal.pal new file mode 100644 index 000000000000..081fde892c3c --- /dev/null +++ b/graphics/pokemon/cascoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 104 160 +160 152 200 +208 200 232 +80 64 120 +128 32 56 +184 48 72 +232 232 248 +240 104 104 +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/cascoon/overworld_shiny.pal b/graphics/pokemon/cascoon/overworld_shiny.pal new file mode 100644 index 000000000000..84e5a572f13b --- /dev/null +++ b/graphics/pokemon/cascoon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 144 88 +168 184 128 +208 224 168 +80 104 56 +128 32 56 +184 48 72 +232 232 248 +240 104 104 +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/castform/overworld.png b/graphics/pokemon/castform/overworld.png new file mode 100644 index 000000000000..377ea45b3dd4 Binary files /dev/null and b/graphics/pokemon/castform/overworld.png differ diff --git a/graphics/pokemon/castform/overworld_normal.pal b/graphics/pokemon/castform/overworld_normal.pal new file mode 100644 index 000000000000..4d2ffa5c055d --- /dev/null +++ b/graphics/pokemon/castform/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 197 148 +0 0 0 +64 64 80 +192 192 208 +96 96 112 +160 160 176 +128 128 144 +232 232 248 +232 232 248 +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/castform/overworld_shiny.pal b/graphics/pokemon/castform/overworld_shiny.pal new file mode 100644 index 000000000000..b634a3dee33b --- /dev/null +++ b/graphics/pokemon/castform/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 197 148 +0 0 0 +64 64 80 +208 168 224 +112 96 128 +176 144 192 +144 120 160 +248 224 88 +232 232 248 +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/castform/rainy/overworld.png b/graphics/pokemon/castform/rainy/overworld.png new file mode 100644 index 000000000000..bdbf1c83432a Binary files /dev/null and b/graphics/pokemon/castform/rainy/overworld.png differ diff --git a/graphics/pokemon/castform/rainy/overworld_normal.pal b/graphics/pokemon/castform/rainy/overworld_normal.pal new file mode 100644 index 000000000000..95df630d9bab --- /dev/null +++ b/graphics/pokemon/castform/rainy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 208 208 +0 0 0 +33 50 133 +96 136 224 +136 166 236 +152 184 224 +191 217 250 +48 72 184 +152 184 224 +136 166 236 +72 102 197 +207 229 255 +52 74 145 +120 136 168 +192 200 208 +39 40 40 diff --git a/graphics/pokemon/castform/rainy/overworld_shiny.pal b/graphics/pokemon/castform/rainy/overworld_shiny.pal new file mode 100644 index 000000000000..6fa0fa1ac21e --- /dev/null +++ b/graphics/pokemon/castform/rainy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 233 +0 0 0 +33 50 133 +96 136 224 +136 166 236 +152 184 224 +191 217 250 +21 149 141 +38 220 211 +33 186 177 +23 161 153 +130 255 111 +30 137 99 +120 136 168 +192 200 208 +39 40 40 diff --git a/graphics/pokemon/castform/snowy/overworld.png b/graphics/pokemon/castform/snowy/overworld.png new file mode 100644 index 000000000000..a5ffd5f54cc9 Binary files /dev/null and b/graphics/pokemon/castform/snowy/overworld.png differ diff --git a/graphics/pokemon/castform/snowy/overworld_normal.pal b/graphics/pokemon/castform/snowy/overworld_normal.pal new file mode 100644 index 000000000000..e795605be53f --- /dev/null +++ b/graphics/pokemon/castform/snowy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 233 +30 40 37 +115 180 149 +149 225 192 +0 0 0 +73 114 104 +61 84 78 +83 53 136 +147 117 224 +172 157 241 +128 104 176 +219 205 253 +255 255 255 +127 79 201 +197 197 148 +0 0 0 diff --git a/graphics/pokemon/castform/snowy/overworld_shiny.pal b/graphics/pokemon/castform/snowy/overworld_shiny.pal new file mode 100644 index 000000000000..e9b66e635079 --- /dev/null +++ b/graphics/pokemon/castform/snowy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 233 +30 40 37 +115 180 149 +149 225 192 +0 0 0 +73 114 104 +61 84 78 +48 50 138 +73 85 188 +126 149 233 +241 245 102 +86 100 222 +255 255 255 +74 72 203 +197 197 148 +0 0 0 diff --git a/graphics/pokemon/castform/sunny/overworld.png b/graphics/pokemon/castform/sunny/overworld.png new file mode 100644 index 000000000000..adafc6de76d6 Binary files /dev/null and b/graphics/pokemon/castform/sunny/overworld.png differ diff --git a/graphics/pokemon/castform/sunny/overworld_normal.pal b/graphics/pokemon/castform/sunny/overworld_normal.pal new file mode 100644 index 000000000000..5f4c2ae5f099 --- /dev/null +++ b/graphics/pokemon/castform/sunny/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 233 +8 8 8 +121 79 32 +240 232 168 +224 184 112 +200 128 48 +146 54 13 +253 126 69 +0 0 0 +224 96 30 +231 105 40 +239 220 65 +64 64 80 +240 240 240 +197 197 148 +0 0 0 diff --git a/graphics/pokemon/castform/sunny/overworld_shiny.pal b/graphics/pokemon/castform/sunny/overworld_shiny.pal new file mode 100644 index 000000000000..7b6e2f1fb8cc --- /dev/null +++ b/graphics/pokemon/castform/sunny/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 208 208 +8 8 8 +121 79 32 +240 232 168 +224 184 112 +200 128 48 +137 21 24 +241 81 85 +0 0 0 +211 43 42 +218 53 52 +255 160 108 +64 64 80 +240 240 240 +197 197 148 +0 0 0 diff --git a/graphics/pokemon/caterpie/overworld.png b/graphics/pokemon/caterpie/overworld.png new file mode 100644 index 000000000000..8c023b59d525 Binary files /dev/null and b/graphics/pokemon/caterpie/overworld.png differ diff --git a/graphics/pokemon/caterpie/overworld_normal.pal b/graphics/pokemon/caterpie/overworld_normal.pal new file mode 100644 index 000000000000..fc939ec4d4d1 --- /dev/null +++ b/graphics/pokemon/caterpie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 48 72 +64 88 32 +248 120 112 +104 152 40 +168 232 64 +248 232 96 +0 0 0 +128 96 40 +80 80 80 +168 152 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/caterpie/overworld_shiny.pal b/graphics/pokemon/caterpie/overworld_shiny.pal new file mode 100644 index 000000000000..e013fd7cbb1c --- /dev/null +++ b/graphics/pokemon/caterpie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 40 48 +104 56 32 +240 96 72 +248 152 40 +248 224 96 +248 232 96 +0 0 0 +128 96 40 +80 80 80 +168 152 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/celebi/overworld.png b/graphics/pokemon/celebi/overworld.png new file mode 100644 index 000000000000..95d372831ab0 Binary files /dev/null and b/graphics/pokemon/celebi/overworld.png differ diff --git a/graphics/pokemon/celebi/overworld_normal.pal b/graphics/pokemon/celebi/overworld_normal.pal new file mode 100644 index 000000000000..6380e014c9be --- /dev/null +++ b/graphics/pokemon/celebi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +32 64 32 +120 184 72 +72 136 80 +8 104 176 +0 0 0 +80 176 208 +192 224 112 +248 248 192 +144 152 152 +32 40 40 +232 232 248 +24 168 224 +136 184 240 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/celebi/overworld_shiny.pal b/graphics/pokemon/celebi/overworld_shiny.pal new file mode 100644 index 000000000000..3b938d1c4b6b --- /dev/null +++ b/graphics/pokemon/celebi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 32 32 +248 120 216 +168 72 184 +48 112 88 +0 0 0 +72 200 120 +248 192 232 +248 224 240 +144 152 152 +32 40 40 +232 232 248 +24 168 224 +136 184 240 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/celesteela/overworld.png b/graphics/pokemon/celesteela/overworld.png new file mode 100644 index 000000000000..df6abdc791f0 Binary files /dev/null and b/graphics/pokemon/celesteela/overworld.png differ diff --git a/graphics/pokemon/celesteela/overworld_normal.pal b/graphics/pokemon/celesteela/overworld_normal.pal new file mode 100644 index 000000000000..b99f696dab78 --- /dev/null +++ b/graphics/pokemon/celesteela/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +19 19 19 +0 0 0 +172 197 189 +230 230 230 +33 55 51 +98 123 98 +139 172 148 +98 205 164 +205 205 205 +74 123 115 +222 255 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/celesteela/overworld_shiny.pal b/graphics/pokemon/celesteela/overworld_shiny.pal new file mode 100644 index 000000000000..daa5a4e1380d --- /dev/null +++ b/graphics/pokemon/celesteela/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +19 19 19 +0 0 0 +240 240 240 +230 230 230 +136 136 136 +192 192 192 +139 172 148 +98 205 164 +205 205 205 +74 123 115 +222 255 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/centiskorch/overworld.png b/graphics/pokemon/centiskorch/overworld.png new file mode 100644 index 000000000000..73f10f5962f8 Binary files /dev/null and b/graphics/pokemon/centiskorch/overworld.png differ diff --git a/graphics/pokemon/centiskorch/overworld_normal.pal b/graphics/pokemon/centiskorch/overworld_normal.pal new file mode 100644 index 000000000000..5a99050eb772 --- /dev/null +++ b/graphics/pokemon/centiskorch/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +92 27 11 +240 68 13 +254 251 129 +246 133 28 +9 5 4 +219 79 78 +150 40 42 +215 165 48 +197 195 33 +238 236 86 +135 74 73 +66 44 38 +119 84 76 +102 44 43 +109 16 17 diff --git a/graphics/pokemon/centiskorch/overworld_shiny.pal b/graphics/pokemon/centiskorch/overworld_shiny.pal new file mode 100644 index 000000000000..d33aeae54a3e --- /dev/null +++ b/graphics/pokemon/centiskorch/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 16 8 +246 65 8 +255 255 131 +246 131 24 +0 0 0 +222 74 74 +148 41 41 +213 164 41 +197 197 32 +238 238 82 +131 74 74 +65 115 115 +90 156 156 +106 16 16 +106 16 16 diff --git a/graphics/pokemon/chandelure/overworld.png b/graphics/pokemon/chandelure/overworld.png new file mode 100644 index 000000000000..f72f3000e808 Binary files /dev/null and b/graphics/pokemon/chandelure/overworld.png differ diff --git a/graphics/pokemon/chandelure/overworld_normal.pal b/graphics/pokemon/chandelure/overworld_normal.pal new file mode 100644 index 000000000000..f273ba8fd645 --- /dev/null +++ b/graphics/pokemon/chandelure/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 42 +56 33 173 +104 71 228 +165 156 246 +12 12 12 +42 42 42 +75 75 75 +192 209 209 +255 228 26 +0 0 0 +172 154 220 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chandelure/overworld_shiny.pal b/graphics/pokemon/chandelure/overworld_shiny.pal new file mode 100644 index 000000000000..b0eb6197e5ad --- /dev/null +++ b/graphics/pokemon/chandelure/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +189 82 24 +255 139 16 +255 180 65 +8 8 8 +49 57 41 +90 98 74 +205 255 205 +238 106 164 +0 0 0 +255 180 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chansey/overworld.png b/graphics/pokemon/chansey/overworld.png new file mode 100644 index 000000000000..c5827a299ba3 Binary files /dev/null and b/graphics/pokemon/chansey/overworld.png differ diff --git a/graphics/pokemon/chansey/overworld_normal.pal b/graphics/pokemon/chansey/overworld_normal.pal new file mode 100644 index 000000000000..32559fd2e1fd --- /dev/null +++ b/graphics/pokemon/chansey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 88 +232 192 216 +0 0 0 +216 136 184 +224 96 120 +152 88 128 +232 232 248 +168 184 208 +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/chansey/overworld_shiny.pal b/graphics/pokemon/chansey/overworld_shiny.pal new file mode 100644 index 000000000000..fe2e8c734ba7 --- /dev/null +++ b/graphics/pokemon/chansey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 120 64 +232 208 192 +0 0 0 +216 176 128 +152 184 56 +128 120 88 +232 232 248 +168 184 208 +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/charizard/overworld.png b/graphics/pokemon/charizard/overworld.png new file mode 100644 index 000000000000..274e65ccf718 Binary files /dev/null and b/graphics/pokemon/charizard/overworld.png differ diff --git a/graphics/pokemon/charizard/overworld_normal.pal b/graphics/pokemon/charizard/overworld_normal.pal new file mode 100644 index 000000000000..537b69673172 --- /dev/null +++ b/graphics/pokemon/charizard/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 0 +248 120 56 +200 88 40 +0 0 0 +144 64 32 +192 16 32 +40 72 88 +64 128 128 +248 184 16 +160 160 160 +216 216 248 +96 64 0 +216 168 48 +240 208 112 +0 0 0 diff --git a/graphics/pokemon/charizard/overworld_shiny.pal b/graphics/pokemon/charizard/overworld_shiny.pal new file mode 100644 index 000000000000..0ec7fa25f520 --- /dev/null +++ b/graphics/pokemon/charizard/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +152 152 152 +120 120 120 +0 0 0 +88 88 88 +192 16 32 +152 0 24 +208 8 40 +248 184 16 +160 160 160 +216 216 248 +48 48 48 +160 160 160 +216 216 216 +0 0 0 diff --git a/graphics/pokemon/charjabug/overworld.png b/graphics/pokemon/charjabug/overworld.png new file mode 100644 index 000000000000..04edfa8956a2 Binary files /dev/null and b/graphics/pokemon/charjabug/overworld.png differ diff --git a/graphics/pokemon/charjabug/overworld_normal.pal b/graphics/pokemon/charjabug/overworld_normal.pal new file mode 100644 index 000000000000..6ea1e719d678 --- /dev/null +++ b/graphics/pokemon/charjabug/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 254 255 +204 200 200 +241 186 102 +145 175 133 +125 156 112 +148 134 138 +98 127 87 +0 139 240 +209 115 47 +100 81 46 +78 100 70 +53 66 48 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/charjabug/overworld_shiny.pal b/graphics/pokemon/charjabug/overworld_shiny.pal new file mode 100644 index 000000000000..4008736edd5f --- /dev/null +++ b/graphics/pokemon/charjabug/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 254 255 +204 200 200 +241 186 102 +232 136 112 +216 56 56 +148 134 138 +160 24 24 +0 139 240 +176 112 48 +100 81 46 +121 17 17 +112 8 8 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/charmander/overworld.png b/graphics/pokemon/charmander/overworld.png new file mode 100644 index 000000000000..0767ffa89a21 Binary files /dev/null and b/graphics/pokemon/charmander/overworld.png differ diff --git a/graphics/pokemon/charmander/overworld_normal.pal b/graphics/pokemon/charmander/overworld_normal.pal new file mode 100644 index 000000000000..4926f9a8bc52 --- /dev/null +++ b/graphics/pokemon/charmander/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +248 136 56 +184 88 32 +224 40 40 +240 208 112 +232 232 248 +0 0 0 +40 72 88 +216 168 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/charmander/overworld_shiny.pal b/graphics/pokemon/charmander/overworld_shiny.pal new file mode 100644 index 000000000000..776dfabd59ee --- /dev/null +++ b/graphics/pokemon/charmander/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +248 192 56 +248 136 56 +224 40 40 +240 208 112 +232 232 248 +0 0 0 +40 72 88 +216 168 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/charmeleon/overworld.png b/graphics/pokemon/charmeleon/overworld.png new file mode 100644 index 000000000000..810d66835630 Binary files /dev/null and b/graphics/pokemon/charmeleon/overworld.png differ diff --git a/graphics/pokemon/charmeleon/overworld_normal.pal b/graphics/pokemon/charmeleon/overworld_normal.pal new file mode 100644 index 000000000000..47a74de14a55 --- /dev/null +++ b/graphics/pokemon/charmeleon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 24 32 +184 64 56 +248 104 88 +0 0 0 +200 16 40 +240 208 112 +216 168 48 +176 184 248 +232 232 248 +40 104 128 +144 144 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/charmeleon/overworld_shiny.pal b/graphics/pokemon/charmeleon/overworld_shiny.pal new file mode 100644 index 000000000000..618bbe9b3cc1 --- /dev/null +++ b/graphics/pokemon/charmeleon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +224 120 56 +248 192 56 +0 0 0 +224 40 40 +240 208 112 +216 168 48 +176 184 248 +232 232 248 +40 104 128 +144 144 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chatot/overworld.png b/graphics/pokemon/chatot/overworld.png new file mode 100644 index 000000000000..16e1579518b5 Binary files /dev/null and b/graphics/pokemon/chatot/overworld.png differ diff --git a/graphics/pokemon/chatot/overworld_normal.pal b/graphics/pokemon/chatot/overworld_normal.pal new file mode 100644 index 000000000000..b985a166f743 --- /dev/null +++ b/graphics/pokemon/chatot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 56 56 +128 120 120 +88 88 88 +152 160 168 +144 56 112 +216 128 176 +232 232 248 +176 56 128 +40 136 32 +32 128 200 +32 80 112 +248 168 24 +160 128 8 +0 0 0 diff --git a/graphics/pokemon/chatot/overworld_shiny.pal b/graphics/pokemon/chatot/overworld_shiny.pal new file mode 100644 index 000000000000..52168f5acd88 --- /dev/null +++ b/graphics/pokemon/chatot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 56 72 +128 128 152 +72 88 128 +152 160 168 +80 64 16 +248 168 24 +232 232 248 +200 112 8 +32 120 144 +208 72 72 +152 16 16 +248 168 24 +160 128 8 +0 0 0 diff --git a/graphics/pokemon/cherrim/overworld.png b/graphics/pokemon/cherrim/overworld.png new file mode 100644 index 000000000000..86585b240e03 Binary files /dev/null and b/graphics/pokemon/cherrim/overworld.png differ diff --git a/graphics/pokemon/cherrim/overworld_normal.pal b/graphics/pokemon/cherrim/overworld_normal.pal new file mode 100644 index 000000000000..053286272b45 --- /dev/null +++ b/graphics/pokemon/cherrim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 40 56 +184 72 120 +0 0 0 +128 56 88 +40 96 16 +80 152 24 +64 40 72 +112 64 136 +80 64 96 +152 72 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cherrim/overworld_shiny.pal b/graphics/pokemon/cherrim/overworld_shiny.pal new file mode 100644 index 000000000000..9d460e623e11 --- /dev/null +++ b/graphics/pokemon/cherrim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 40 56 +184 72 120 +0 0 0 +128 56 88 +40 88 64 +56 152 96 +64 96 104 +80 160 152 +80 136 120 +120 192 168 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cherubi/overworld.png b/graphics/pokemon/cherubi/overworld.png new file mode 100644 index 000000000000..c156853774b0 Binary files /dev/null and b/graphics/pokemon/cherubi/overworld.png differ diff --git a/graphics/pokemon/cherubi/overworld_normal.pal b/graphics/pokemon/cherubi/overworld_normal.pal new file mode 100644 index 000000000000..ed871407e053 --- /dev/null +++ b/graphics/pokemon/cherubi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 16 +72 152 16 +64 120 24 +0 0 0 +80 40 56 +224 96 144 +128 56 88 +184 72 120 +176 24 96 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cherubi/overworld_shiny.pal b/graphics/pokemon/cherubi/overworld_shiny.pal new file mode 100644 index 000000000000..6d31fdab4160 --- /dev/null +++ b/graphics/pokemon/cherubi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 96 16 +144 176 16 +104 136 16 +0 0 0 +80 40 56 +224 136 112 +128 56 88 +208 72 72 +176 24 96 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chesnaught/overworld.png b/graphics/pokemon/chesnaught/overworld.png new file mode 100644 index 000000000000..7902feaf5758 Binary files /dev/null and b/graphics/pokemon/chesnaught/overworld.png differ diff --git a/graphics/pokemon/chesnaught/overworld_normal.pal b/graphics/pokemon/chesnaught/overworld_normal.pal new file mode 100644 index 000000000000..cebe7418eae5 --- /dev/null +++ b/graphics/pokemon/chesnaught/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +135 71 51 +241 226 179 +202 163 119 +77 163 56 +135 71 51 +67 65 45 +222 222 222 +222 222 222 +67 65 45 +77 163 56 +202 163 119 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chesnaught/overworld_shiny.pal b/graphics/pokemon/chesnaught/overworld_shiny.pal new file mode 100644 index 000000000000..f6fd47f1d048 --- /dev/null +++ b/graphics/pokemon/chesnaught/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +52 57 36 +128 141 91 +104 114 67 +106 56 54 +106 97 89 +62 21 21 +237 197 152 +175 136 102 +94 35 28 +80 39 37 +233 141 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chespin/overworld.png b/graphics/pokemon/chespin/overworld.png new file mode 100644 index 000000000000..5056ad774a4a Binary files /dev/null and b/graphics/pokemon/chespin/overworld.png differ diff --git a/graphics/pokemon/chespin/overworld_normal.pal b/graphics/pokemon/chespin/overworld_normal.pal new file mode 100644 index 000000000000..e5dcd7d2b70e --- /dev/null +++ b/graphics/pokemon/chespin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 181 239 +32 66 40 +0 0 1 +68 160 93 +84 187 79 +133 97 64 +56 56 72 +240 176 121 +209 149 100 +243 121 82 +180 87 59 +74 54 36 +177 134 95 +255 255 255 +192 192 200 +0 0 0 diff --git a/graphics/pokemon/chespin/overworld_shiny.pal b/graphics/pokemon/chespin/overworld_shiny.pal new file mode 100644 index 000000000000..02bd3bda71d8 --- /dev/null +++ b/graphics/pokemon/chespin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 181 239 +57 24 19 +0 0 1 +120 51 40 +151 65 51 +133 97 64 +56 56 72 +240 176 121 +209 149 100 +249 220 95 +225 198 86 +74 54 36 +177 134 95 +255 255 255 +192 192 200 +0 0 0 diff --git a/graphics/pokemon/chewtle/overworld.png b/graphics/pokemon/chewtle/overworld.png new file mode 100644 index 000000000000..12dab73c8edf Binary files /dev/null and b/graphics/pokemon/chewtle/overworld.png differ diff --git a/graphics/pokemon/chewtle/overworld_normal.pal b/graphics/pokemon/chewtle/overworld_normal.pal new file mode 100644 index 000000000000..d29704f6c368 --- /dev/null +++ b/graphics/pokemon/chewtle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +132 88 4 +212 148 28 +248 180 56 +48 96 100 +96 152 160 +144 188 192 +0 0 0 +136 60 24 +24 32 36 +52 120 148 +232 232 248 +36 88 108 +72 148 180 +184 160 80 +136 60 24 diff --git a/graphics/pokemon/chewtle/overworld_shiny.pal b/graphics/pokemon/chewtle/overworld_shiny.pal new file mode 100644 index 000000000000..dd47432a159c --- /dev/null +++ b/graphics/pokemon/chewtle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 24 24 +197 65 65 +238 90 90 +24 57 16 +106 197 74 +148 255 115 +0 0 0 +90 24 0 +32 49 24 +24 74 32 +238 238 255 +8 49 16 +24 98 41 +238 90 90 +90 24 0 diff --git a/graphics/pokemon/chikorita/overworld.png b/graphics/pokemon/chikorita/overworld.png new file mode 100644 index 000000000000..97855e720705 Binary files /dev/null and b/graphics/pokemon/chikorita/overworld.png differ diff --git a/graphics/pokemon/chikorita/overworld_normal.pal b/graphics/pokemon/chikorita/overworld_normal.pal new file mode 100644 index 000000000000..f37c20181c12 --- /dev/null +++ b/graphics/pokemon/chikorita/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 104 16 +112 176 80 +0 0 0 +64 144 40 +192 216 112 +144 192 64 +232 232 248 +168 40 40 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chikorita/overworld_shiny.pal b/graphics/pokemon/chikorita/overworld_shiny.pal new file mode 100644 index 000000000000..3624fa670a24 --- /dev/null +++ b/graphics/pokemon/chikorita/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 72 24 +224 144 120 +0 0 0 +184 96 80 +240 216 136 +184 184 64 +232 232 248 +168 40 40 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chimchar/overworld.png b/graphics/pokemon/chimchar/overworld.png new file mode 100644 index 000000000000..598d8037532a Binary files /dev/null and b/graphics/pokemon/chimchar/overworld.png differ diff --git a/graphics/pokemon/chimchar/overworld_normal.pal b/graphics/pokemon/chimchar/overworld_normal.pal new file mode 100644 index 000000000000..39a5dcf82257 --- /dev/null +++ b/graphics/pokemon/chimchar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 40 +240 128 16 +184 96 16 +0 0 0 +248 232 168 +216 184 112 +208 80 64 +128 80 40 +192 144 72 +160 88 80 +192 192 192 +232 232 248 +128 16 16 +240 56 40 +248 192 0 diff --git a/graphics/pokemon/chimchar/overworld_shiny.pal b/graphics/pokemon/chimchar/overworld_shiny.pal new file mode 100644 index 000000000000..8b96df9158f8 --- /dev/null +++ b/graphics/pokemon/chimchar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 40 +240 96 112 +184 72 96 +0 0 0 +248 232 168 +216 184 112 +208 80 64 +120 56 80 +192 144 72 +160 88 80 +192 192 192 +232 232 248 +128 16 16 +240 56 40 +248 192 0 diff --git a/graphics/pokemon/chimecho/overworld.png b/graphics/pokemon/chimecho/overworld.png new file mode 100644 index 000000000000..b78409e06af1 Binary files /dev/null and b/graphics/pokemon/chimecho/overworld.png differ diff --git a/graphics/pokemon/chimecho/overworld_normal.pal b/graphics/pokemon/chimecho/overworld_normal.pal new file mode 100644 index 000000000000..68e07ee4bdec --- /dev/null +++ b/graphics/pokemon/chimecho/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 104 32 +248 216 88 +232 232 248 +0 0 0 +88 96 120 +208 160 80 +160 168 192 +208 208 232 +192 56 56 +112 32 32 +184 144 56 +120 128 152 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chimecho/overworld_shiny.pal b/graphics/pokemon/chimecho/overworld_shiny.pal new file mode 100644 index 000000000000..c0b679f281c1 --- /dev/null +++ b/graphics/pokemon/chimecho/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +136 104 32 +248 216 88 +232 232 248 +0 0 0 +88 160 120 +208 160 80 +176 216 168 +216 232 208 +216 128 56 +104 40 0 +184 144 56 +136 208 152 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chinchou/overworld.png b/graphics/pokemon/chinchou/overworld.png new file mode 100644 index 000000000000..b552e544b738 Binary files /dev/null and b/graphics/pokemon/chinchou/overworld.png differ diff --git a/graphics/pokemon/chinchou/overworld_normal.pal b/graphics/pokemon/chinchou/overworld_normal.pal new file mode 100644 index 000000000000..c26d5a398d84 --- /dev/null +++ b/graphics/pokemon/chinchou/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 112 +0 0 0 +128 104 24 +88 88 160 +224 160 16 +80 64 8 +248 208 96 +112 168 240 +232 232 248 +96 136 224 +192 200 216 +184 48 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chinchou/overworld_shiny.pal b/graphics/pokemon/chinchou/overworld_shiny.pal new file mode 100644 index 000000000000..c051ef83a95f --- /dev/null +++ b/graphics/pokemon/chinchou/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 88 88 +0 0 0 +128 104 24 +64 112 160 +200 232 8 +80 64 8 +232 248 144 +112 200 208 +232 232 248 +48 184 184 +168 184 208 +184 48 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chingling/overworld.png b/graphics/pokemon/chingling/overworld.png new file mode 100644 index 000000000000..80963c5e16b2 Binary files /dev/null and b/graphics/pokemon/chingling/overworld.png differ diff --git a/graphics/pokemon/chingling/overworld_normal.pal b/graphics/pokemon/chingling/overworld_normal.pal new file mode 100644 index 000000000000..6c89d30a7516 --- /dev/null +++ b/graphics/pokemon/chingling/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +136 24 24 +192 56 56 +0 0 0 +192 200 208 +224 232 240 +248 224 8 +208 152 40 +136 104 32 +248 248 152 +248 192 0 +232 232 248 +88 88 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chingling/overworld_shiny.pal b/graphics/pokemon/chingling/overworld_shiny.pal new file mode 100644 index 000000000000..f0bef8f74da6 --- /dev/null +++ b/graphics/pokemon/chingling/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +200 104 24 +248 128 56 +0 0 0 +192 200 208 +224 232 240 +216 248 64 +168 160 64 +120 128 32 +248 248 184 +192 200 40 +232 232 248 +88 88 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cinccino/overworld.png b/graphics/pokemon/cinccino/overworld.png new file mode 100644 index 000000000000..7ca2d2f4da55 Binary files /dev/null and b/graphics/pokemon/cinccino/overworld.png differ diff --git a/graphics/pokemon/cinccino/overworld_normal.pal b/graphics/pokemon/cinccino/overworld_normal.pal new file mode 100644 index 000000000000..64da1bbdcff1 --- /dev/null +++ b/graphics/pokemon/cinccino/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +189 180 180 +238 238 247 +131 123 115 +73 73 77 +222 205 197 +194 184 173 +189 172 156 +0 0 0 +137 117 107 +173 76 75 +47 46 47 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cinccino/overworld_shiny.pal b/graphics/pokemon/cinccino/overworld_shiny.pal new file mode 100644 index 000000000000..ce54231e21ce --- /dev/null +++ b/graphics/pokemon/cinccino/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +189 180 180 +238 238 247 +176 144 112 +88 80 48 +73 73 77 +222 205 197 +200 184 136 +0 0 0 +152 56 104 +47 46 47 +131 123 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cinderace/overworld.png b/graphics/pokemon/cinderace/overworld.png new file mode 100644 index 000000000000..1ac358ca8bdd Binary files /dev/null and b/graphics/pokemon/cinderace/overworld.png differ diff --git a/graphics/pokemon/cinderace/overworld_normal.pal b/graphics/pokemon/cinderace/overworld_normal.pal new file mode 100644 index 000000000000..193f05ef338c --- /dev/null +++ b/graphics/pokemon/cinderace/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +64 64 64 +204 204 204 +244 244 244 +0 0 0 +236 236 236 +108 28 0 +216 204 56 +224 72 8 +184 48 0 +252 116 56 +104 96 8 +248 236 88 +4 40 88 +0 28 60 +0 0 0 diff --git a/graphics/pokemon/cinderace/overworld_shiny.pal b/graphics/pokemon/cinderace/overworld_shiny.pal new file mode 100644 index 000000000000..a93f9d2ef2e4 --- /dev/null +++ b/graphics/pokemon/cinderace/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 65 +156 139 123 +255 255 255 +0 0 0 +197 180 164 +82 41 0 +222 205 57 +230 131 0 +189 106 0 +255 156 32 +106 98 8 +255 238 90 +213 213 213 +131 131 131 +0 0 0 diff --git a/graphics/pokemon/clamperl/overworld.png b/graphics/pokemon/clamperl/overworld.png new file mode 100644 index 000000000000..514bf903ff5c Binary files /dev/null and b/graphics/pokemon/clamperl/overworld.png differ diff --git a/graphics/pokemon/clamperl/overworld_normal.pal b/graphics/pokemon/clamperl/overworld_normal.pal new file mode 100644 index 000000000000..0a797e60f5b3 --- /dev/null +++ b/graphics/pokemon/clamperl/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 104 +0 0 0 +136 160 208 +72 96 136 +208 216 232 +104 128 168 +96 104 128 +152 168 200 +48 48 64 +136 32 72 +232 120 160 +200 88 128 +168 64 104 +160 192 240 +0 0 0 diff --git a/graphics/pokemon/clamperl/overworld_shiny.pal b/graphics/pokemon/clamperl/overworld_shiny.pal new file mode 100644 index 000000000000..31efeb743959 --- /dev/null +++ b/graphics/pokemon/clamperl/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 48 104 +0 0 0 +176 128 216 +104 72 136 +208 216 232 +136 96 168 +96 104 128 +152 168 200 +48 48 64 +136 32 72 +232 120 160 +200 88 128 +168 64 104 +200 168 232 +0 0 0 diff --git a/graphics/pokemon/clauncher/overworld.png b/graphics/pokemon/clauncher/overworld.png new file mode 100644 index 000000000000..9459d44cef25 Binary files /dev/null and b/graphics/pokemon/clauncher/overworld.png differ diff --git a/graphics/pokemon/clauncher/overworld_normal.pal b/graphics/pokemon/clauncher/overworld_normal.pal new file mode 100644 index 000000000000..abe69db5ddf7 --- /dev/null +++ b/graphics/pokemon/clauncher/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +29 41 50 +80 77 76 +223 193 27 +92 174 210 +70 119 154 +16 16 16 +144 155 92 +0 0 0 +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/clauncher/overworld_shiny.pal b/graphics/pokemon/clauncher/overworld_shiny.pal new file mode 100644 index 000000000000..5bd5ba9cafc7 --- /dev/null +++ b/graphics/pokemon/clauncher/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +118 34 11 +238 237 237 +94 181 225 +254 128 95 +201 85 54 +16 16 16 +65 138 175 +0 0 0 +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/clawitzer/overworld.png b/graphics/pokemon/clawitzer/overworld.png new file mode 100644 index 000000000000..7912c401fda8 Binary files /dev/null and b/graphics/pokemon/clawitzer/overworld.png differ diff --git a/graphics/pokemon/clawitzer/overworld_normal.pal b/graphics/pokemon/clawitzer/overworld_normal.pal new file mode 100644 index 000000000000..fb24d54c98df --- /dev/null +++ b/graphics/pokemon/clawitzer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 63 90 +246 210 101 +64 126 203 +20 20 20 +93 162 228 +64 67 71 +74 103 151 +34 42 56 +195 139 56 +114 196 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clawitzer/overworld_shiny.pal b/graphics/pokemon/clawitzer/overworld_shiny.pal new file mode 100644 index 000000000000..99d1defde945 --- /dev/null +++ b/graphics/pokemon/clawitzer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +121 32 28 +52 160 211 +254 90 83 +20 20 20 +253 159 155 +220 220 220 +215 58 51 +121 32 28 +32 118 158 +254 114 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/claydol/overworld.png b/graphics/pokemon/claydol/overworld.png new file mode 100644 index 000000000000..23aaa3cdbcf8 Binary files /dev/null and b/graphics/pokemon/claydol/overworld.png differ diff --git a/graphics/pokemon/claydol/overworld_normal.pal b/graphics/pokemon/claydol/overworld_normal.pal new file mode 100644 index 000000000000..6e77b7af3a16 --- /dev/null +++ b/graphics/pokemon/claydol/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 40 +88 80 64 +0 0 0 +112 88 72 +136 120 88 +184 184 192 +192 72 120 +232 232 248 +136 40 64 +232 136 112 +216 184 88 +152 120 24 +136 136 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/claydol/overworld_shiny.pal b/graphics/pokemon/claydol/overworld_shiny.pal new file mode 100644 index 000000000000..7c5fef6b2204 --- /dev/null +++ b/graphics/pokemon/claydol/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 40 +88 80 64 +0 0 0 +112 88 72 +136 120 88 +184 184 192 +224 152 0 +232 232 248 +152 104 0 +240 192 88 +216 184 88 +152 120 24 +136 136 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clefable/overworld.png b/graphics/pokemon/clefable/overworld.png new file mode 100644 index 000000000000..90b47b2a5a92 Binary files /dev/null and b/graphics/pokemon/clefable/overworld.png differ diff --git a/graphics/pokemon/clefable/overworld_normal.pal b/graphics/pokemon/clefable/overworld_normal.pal new file mode 100644 index 000000000000..4aee1f611b3f --- /dev/null +++ b/graphics/pokemon/clefable/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +120 56 72 +120 96 72 +224 144 152 +248 192 192 +72 56 56 +216 80 120 +248 128 168 +200 200 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clefable/overworld_shiny.pal b/graphics/pokemon/clefable/overworld_shiny.pal new file mode 100644 index 000000000000..5ce44f090907 --- /dev/null +++ b/graphics/pokemon/clefable/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +128 80 96 +96 160 104 +240 144 160 +248 200 216 +56 96 72 +224 128 160 +248 152 192 +200 200 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clefairy/overworld.png b/graphics/pokemon/clefairy/overworld.png new file mode 100644 index 000000000000..92487e3fea8b Binary files /dev/null and b/graphics/pokemon/clefairy/overworld.png differ diff --git a/graphics/pokemon/clefairy/overworld_normal.pal b/graphics/pokemon/clefairy/overworld_normal.pal new file mode 100644 index 000000000000..9da22f51ac3e --- /dev/null +++ b/graphics/pokemon/clefairy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 56 64 +0 0 0 +240 152 168 +120 88 56 +184 104 128 +232 232 248 +160 80 96 +168 168 168 +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/clefairy/overworld_shiny.pal b/graphics/pokemon/clefairy/overworld_shiny.pal new file mode 100644 index 000000000000..e47b5bc8d76a --- /dev/null +++ b/graphics/pokemon/clefairy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 56 64 +0 0 0 +248 200 216 +96 160 104 +208 136 160 +232 232 248 +160 80 96 +168 168 168 +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/cleffa/overworld.png b/graphics/pokemon/cleffa/overworld.png new file mode 100644 index 000000000000..76c754fb44ab Binary files /dev/null and b/graphics/pokemon/cleffa/overworld.png differ diff --git a/graphics/pokemon/cleffa/overworld_normal.pal b/graphics/pokemon/cleffa/overworld_normal.pal new file mode 100644 index 000000000000..a8e2c0ada64e --- /dev/null +++ b/graphics/pokemon/cleffa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 64 +80 40 32 +240 184 192 +0 0 0 +128 72 56 +152 88 96 +200 152 152 +168 112 104 +232 232 248 +216 88 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cleffa/overworld_shiny.pal b/graphics/pokemon/cleffa/overworld_shiny.pal new file mode 100644 index 000000000000..598cce7acedb --- /dev/null +++ b/graphics/pokemon/cleffa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 32 88 +48 112 72 +248 192 240 +0 0 0 +104 192 128 +144 80 120 +224 144 184 +176 104 144 +232 232 248 +216 88 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clobbopus/overworld.png b/graphics/pokemon/clobbopus/overworld.png new file mode 100644 index 000000000000..2a2804431305 Binary files /dev/null and b/graphics/pokemon/clobbopus/overworld.png differ diff --git a/graphics/pokemon/clobbopus/overworld_normal.pal b/graphics/pokemon/clobbopus/overworld_normal.pal new file mode 100644 index 000000000000..765bfa8af380 --- /dev/null +++ b/graphics/pokemon/clobbopus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +62 58 57 +255 112 62 +201 83 41 +173 162 149 +235 225 213 +242 153 123 +17 15 27 +0 0 0 +64 58 94 +112 198 224 +40 36 62 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clobbopus/overworld_shiny.pal b/graphics/pokemon/clobbopus/overworld_shiny.pal new file mode 100644 index 000000000000..ac13d1c78833 --- /dev/null +++ b/graphics/pokemon/clobbopus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 49 65 +255 115 57 +205 82 41 +115 115 164 +164 164 205 +255 205 189 +123 123 123 +0 0 0 +255 238 238 +115 197 230 +213 197 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cloyster/overworld.png b/graphics/pokemon/cloyster/overworld.png new file mode 100644 index 000000000000..e01669bf69a2 Binary files /dev/null and b/graphics/pokemon/cloyster/overworld.png differ diff --git a/graphics/pokemon/cloyster/overworld_normal.pal b/graphics/pokemon/cloyster/overworld_normal.pal new file mode 100644 index 000000000000..f98a54cdd975 --- /dev/null +++ b/graphics/pokemon/cloyster/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +192 176 232 +144 112 184 +96 88 120 +40 40 48 +56 56 56 +232 232 248 +96 96 96 +152 152 152 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cloyster/overworld_shiny.pal b/graphics/pokemon/cloyster/overworld_shiny.pal new file mode 100644 index 000000000000..d58b2584e066 --- /dev/null +++ b/graphics/pokemon/cloyster/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +192 216 232 +136 176 232 +72 136 224 +40 40 48 +56 72 80 +232 232 248 +96 96 96 +152 152 152 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/coalossal/overworld.png b/graphics/pokemon/coalossal/overworld.png new file mode 100644 index 000000000000..1ec31140cf43 Binary files /dev/null and b/graphics/pokemon/coalossal/overworld.png differ diff --git a/graphics/pokemon/coalossal/overworld_normal.pal b/graphics/pokemon/coalossal/overworld_normal.pal new file mode 100644 index 000000000000..a7989f71f2de --- /dev/null +++ b/graphics/pokemon/coalossal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 42 +10 10 10 +50 50 50 +26 26 26 +212 83 83 +181 65 65 +2 2 2 +66 65 62 +34 33 33 +18 18 18 +0 0 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/coalossal/overworld_shiny.pal b/graphics/pokemon/coalossal/overworld_shiny.pal new file mode 100644 index 000000000000..3511dc8b7782 --- /dev/null +++ b/graphics/pokemon/coalossal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +49 49 49 +24 24 24 +213 82 82 +180 65 65 +16 32 32 +82 123 131 +49 82 98 +24 49 57 +0 0 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cobalion/overworld.png b/graphics/pokemon/cobalion/overworld.png new file mode 100644 index 000000000000..82064f39e89d Binary files /dev/null and b/graphics/pokemon/cobalion/overworld.png differ diff --git a/graphics/pokemon/cobalion/overworld_normal.pal b/graphics/pokemon/cobalion/overworld_normal.pal new file mode 100644 index 000000000000..8fb0e0c75159 --- /dev/null +++ b/graphics/pokemon/cobalion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 68 9 +231 178 49 +20 48 71 +75 171 208 +24 40 16 +84 84 86 +32 104 168 +48 136 192 +142 102 19 +161 159 160 +212 212 223 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cobalion/overworld_shiny.pal b/graphics/pokemon/cobalion/overworld_shiny.pal new file mode 100644 index 000000000000..60a5c54af452 --- /dev/null +++ b/graphics/pokemon/cobalion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 112 56 +173 204 102 +21 44 68 +27 93 154 +24 40 16 +76 91 87 +21 44 68 +27 93 154 +104 112 56 +111 151 136 +206 238 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cofagrigus/overworld.png b/graphics/pokemon/cofagrigus/overworld.png new file mode 100644 index 000000000000..9911f69a22e8 Binary files /dev/null and b/graphics/pokemon/cofagrigus/overworld.png differ diff --git a/graphics/pokemon/cofagrigus/overworld_normal.pal b/graphics/pokemon/cofagrigus/overworld_normal.pal new file mode 100644 index 000000000000..4f39f3d77ad9 --- /dev/null +++ b/graphics/pokemon/cofagrigus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +47 47 55 +4 4 4 +27 92 107 +40 138 164 +172 121 40 +87 76 38 +229 229 247 +4 4 4 +255 182 40 +47 47 55 +255 40 25 +87 76 38 +47 47 55 +4 4 4 +0 0 0 diff --git a/graphics/pokemon/cofagrigus/overworld_shiny.pal b/graphics/pokemon/cofagrigus/overworld_shiny.pal new file mode 100644 index 000000000000..242d54735535 --- /dev/null +++ b/graphics/pokemon/cofagrigus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 104 +0 0 0 +128 80 144 +216 120 208 +112 136 136 +88 40 72 +229 229 247 +11 11 11 +192 200 208 +47 47 55 +255 40 25 +112 112 112 +57 57 65 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combee/followerf.png b/graphics/pokemon/combee/followerf.png new file mode 100644 index 000000000000..e39109ce825f Binary files /dev/null and b/graphics/pokemon/combee/followerf.png differ diff --git a/graphics/pokemon/combee/overworld.png b/graphics/pokemon/combee/overworld.png new file mode 100644 index 000000000000..459538f5f07c Binary files /dev/null and b/graphics/pokemon/combee/overworld.png differ diff --git a/graphics/pokemon/combee/overworld_normal.pal b/graphics/pokemon/combee/overworld_normal.pal new file mode 100644 index 000000000000..ae404c011250 --- /dev/null +++ b/graphics/pokemon/combee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 104 128 +200 216 232 +48 48 48 +72 64 40 +0 0 0 +168 88 48 +200 144 24 +152 104 16 +232 176 56 +200 104 40 +152 184 232 +248 216 120 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combee/overworld_shiny.pal b/graphics/pokemon/combee/overworld_shiny.pal new file mode 100644 index 000000000000..01483e8cd601 --- /dev/null +++ b/graphics/pokemon/combee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 104 128 +200 216 232 +48 48 48 +72 64 40 +0 0 0 +168 88 48 +176 88 40 +144 48 0 +216 136 88 +200 104 40 +152 184 232 +248 176 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combusken/overworld.png b/graphics/pokemon/combusken/overworld.png new file mode 100644 index 000000000000..b4302f91aa97 Binary files /dev/null and b/graphics/pokemon/combusken/overworld.png differ diff --git a/graphics/pokemon/combusken/overworld_normal.pal b/graphics/pokemon/combusken/overworld_normal.pal new file mode 100644 index 000000000000..3cf730894c76 --- /dev/null +++ b/graphics/pokemon/combusken/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 48 8 +240 128 16 +0 0 0 +160 80 16 +72 64 16 +248 208 96 +232 232 248 +184 160 88 +112 104 48 +168 160 200 +200 104 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/combusken/overworld_shiny.pal b/graphics/pokemon/combusken/overworld_shiny.pal new file mode 100644 index 000000000000..86616744d72e --- /dev/null +++ b/graphics/pokemon/combusken/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 16 8 +240 80 16 +0 0 0 +152 32 8 +72 64 16 +248 208 152 +232 232 248 +184 168 120 +112 104 56 +168 160 200 +200 56 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/comfey/overworld.png b/graphics/pokemon/comfey/overworld.png new file mode 100644 index 000000000000..29075825aea6 Binary files /dev/null and b/graphics/pokemon/comfey/overworld.png differ diff --git a/graphics/pokemon/comfey/overworld_normal.pal b/graphics/pokemon/comfey/overworld_normal.pal new file mode 100644 index 000000000000..7f3a7eb6705f --- /dev/null +++ b/graphics/pokemon/comfey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +250 248 233 +202 238 122 +247 220 26 +216 209 192 +183 203 87 +105 182 218 +172 134 11 +139 123 49 +71 84 37 +57 90 106 +227 78 133 +230 82 65 +115 41 49 +80 80 80 +0 0 0 diff --git a/graphics/pokemon/comfey/overworld_shiny.pal b/graphics/pokemon/comfey/overworld_shiny.pal new file mode 100644 index 000000000000..bf5e705bc8c2 --- /dev/null +++ b/graphics/pokemon/comfey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +250 248 233 +120 184 232 +247 220 26 +216 209 192 +40 136 208 +105 182 218 +172 134 11 +248 224 64 +71 84 37 +57 90 106 +227 78 133 +230 82 65 +115 41 49 +80 80 80 +0 0 0 diff --git a/graphics/pokemon/conkeldurr/overworld.png b/graphics/pokemon/conkeldurr/overworld.png new file mode 100644 index 000000000000..fa83edbdc5ab Binary files /dev/null and b/graphics/pokemon/conkeldurr/overworld.png differ diff --git a/graphics/pokemon/conkeldurr/overworld_normal.pal b/graphics/pokemon/conkeldurr/overworld_normal.pal new file mode 100644 index 000000000000..6e4935354aae --- /dev/null +++ b/graphics/pokemon/conkeldurr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +89 53 34 +197 156 115 +10 10 10 +139 106 90 +57 57 49 +115 48 80 +173 87 151 +101 101 94 +144 144 137 +172 41 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/conkeldurr/overworld_shiny.pal b/graphics/pokemon/conkeldurr/overworld_shiny.pal new file mode 100644 index 000000000000..4ed16e43f94c --- /dev/null +++ b/graphics/pokemon/conkeldurr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 57 32 +200 136 112 +10 10 10 +144 88 88 +57 57 49 +114 25 27 +214 66 61 +103 92 90 +144 144 137 +214 66 61 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/copperajah/overworld.png b/graphics/pokemon/copperajah/overworld.png new file mode 100644 index 000000000000..28c0b53ef5b3 Binary files /dev/null and b/graphics/pokemon/copperajah/overworld.png differ diff --git a/graphics/pokemon/copperajah/overworld_normal.pal b/graphics/pokemon/copperajah/overworld_normal.pal new file mode 100644 index 000000000000..38b755708dbc --- /dev/null +++ b/graphics/pokemon/copperajah/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 42 +0 14 14 +0 42 42 +0 82 82 +251 152 51 +177 101 23 +0 0 0 +255 255 255 +38 200 179 +199 199 199 +10 141 124 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/copperajah/overworld_shiny.pal b/graphics/pokemon/copperajah/overworld_shiny.pal new file mode 100644 index 000000000000..2ac41287b87e --- /dev/null +++ b/graphics/pokemon/copperajah/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 42 +8 16 8 +24 49 32 +57 98 65 +238 197 32 +180 156 16 +0 0 0 +255 255 255 +148 222 197 +197 197 197 +90 156 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corphish/overworld.png b/graphics/pokemon/corphish/overworld.png new file mode 100644 index 000000000000..a930c891bddf Binary files /dev/null and b/graphics/pokemon/corphish/overworld.png differ diff --git a/graphics/pokemon/corphish/overworld_normal.pal b/graphics/pokemon/corphish/overworld_normal.pal new file mode 100644 index 000000000000..3cf33df08c27 --- /dev/null +++ b/graphics/pokemon/corphish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 24 0 +232 136 96 +152 48 8 +0 0 0 +216 104 64 +192 72 32 +160 152 128 +120 112 96 +56 72 88 +88 80 64 +112 120 144 +232 232 248 +176 176 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corphish/overworld_shiny.pal b/graphics/pokemon/corphish/overworld_shiny.pal new file mode 100644 index 000000000000..b8de31ba4319 --- /dev/null +++ b/graphics/pokemon/corphish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 24 8 +216 112 144 +104 48 40 +0 0 0 +184 80 104 +144 64 72 +160 152 128 +120 112 96 +56 72 88 +88 80 64 +112 120 144 +232 232 248 +176 176 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corsola/galarian/overworld.png b/graphics/pokemon/corsola/galarian/overworld.png new file mode 100644 index 000000000000..1d606c6c579e Binary files /dev/null and b/graphics/pokemon/corsola/galarian/overworld.png differ diff --git a/graphics/pokemon/corsola/galarian/overworld_normal.pal b/graphics/pokemon/corsola/galarian/overworld_normal.pal new file mode 100644 index 000000000000..f4c705d38f20 --- /dev/null +++ b/graphics/pokemon/corsola/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +83 112 198 +44 43 41 +151 149 145 +0 0 0 +110 109 104 +234 233 229 +177 176 173 +173 112 134 +136 136 136 +158 158 158 +47 47 47 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/corsola/galarian/overworld_shiny.pal b/graphics/pokemon/corsola/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..f4c705d38f20 --- /dev/null +++ b/graphics/pokemon/corsola/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +83 112 198 +44 43 41 +151 149 145 +0 0 0 +110 109 104 +234 233 229 +177 176 173 +173 112 134 +136 136 136 +158 158 158 +47 47 47 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/corsola/overworld.png b/graphics/pokemon/corsola/overworld.png new file mode 100644 index 000000000000..4b7131a846ff Binary files /dev/null and b/graphics/pokemon/corsola/overworld.png differ diff --git a/graphics/pokemon/corsola/overworld_normal.pal b/graphics/pokemon/corsola/overworld_normal.pal new file mode 100644 index 000000000000..3d3ce3b5cab9 --- /dev/null +++ b/graphics/pokemon/corsola/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 32 64 +216 104 128 +0 0 0 +168 64 88 +240 168 192 +232 128 160 +232 232 248 +168 184 208 +192 208 232 +72 80 96 +128 144 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corsola/overworld_shiny.pal b/graphics/pokemon/corsola/overworld_shiny.pal new file mode 100644 index 000000000000..c0082e1280ea --- /dev/null +++ b/graphics/pokemon/corsola/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 160 +80 152 208 +0 0 0 +72 112 176 +136 200 248 +104 176 216 +232 232 248 +168 184 208 +192 208 232 +72 80 96 +128 144 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corviknight/overworld.png b/graphics/pokemon/corviknight/overworld.png new file mode 100644 index 000000000000..ea0244698cfa Binary files /dev/null and b/graphics/pokemon/corviknight/overworld.png differ diff --git a/graphics/pokemon/corviknight/overworld_normal.pal b/graphics/pokemon/corviknight/overworld_normal.pal new file mode 100644 index 000000000000..5c28cf9a80f9 --- /dev/null +++ b/graphics/pokemon/corviknight/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +28 26 59 +43 41 92 +58 56 125 +0 0 0 +18 16 37 +33 31 70 +11 11 11 +151 151 151 +171 32 33 +23 21 48 +38 36 81 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corviknight/overworld_shiny.pal b/graphics/pokemon/corviknight/overworld_shiny.pal new file mode 100644 index 000000000000..b3f9456052dd --- /dev/null +++ b/graphics/pokemon/corviknight/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +115 98 90 +172 164 156 +205 197 189 +0 0 0 +49 41 32 +139 131 123 +8 8 8 +148 148 148 +172 32 32 +49 49 49 +49 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/corvisquire/overworld.png b/graphics/pokemon/corvisquire/overworld.png new file mode 100644 index 000000000000..2c5a7edbc906 Binary files /dev/null and b/graphics/pokemon/corvisquire/overworld.png differ diff --git a/graphics/pokemon/corvisquire/overworld_normal.pal b/graphics/pokemon/corvisquire/overworld_normal.pal new file mode 100644 index 000000000000..7ad121704f02 --- /dev/null +++ b/graphics/pokemon/corvisquire/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 41 +8 8 8 +8 24 41 +24 24 24 +0 0 0 +49 106 172 +32 74 115 +172 32 32 +255 255 255 +57 65 90 +115 123 156 +139 148 180 +123 164 189 +90 131 156 +115 123 156 +0 0 0 diff --git a/graphics/pokemon/corvisquire/overworld_shiny.pal b/graphics/pokemon/corvisquire/overworld_shiny.pal new file mode 100644 index 000000000000..7982bff06d9e --- /dev/null +++ b/graphics/pokemon/corvisquire/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 41 +16 16 16 +65 57 57 +41 41 41 +0 0 0 +180 164 156 +148 131 123 +172 32 32 +255 255 255 +57 65 90 +115 123 156 +139 148 180 +222 213 205 +172 164 156 +115 123 156 +0 0 0 diff --git a/graphics/pokemon/cosmoem/overworld.png b/graphics/pokemon/cosmoem/overworld.png new file mode 100644 index 000000000000..c05ab505cf12 Binary files /dev/null and b/graphics/pokemon/cosmoem/overworld.png differ diff --git a/graphics/pokemon/cosmoem/overworld_normal.pal b/graphics/pokemon/cosmoem/overworld_normal.pal new file mode 100644 index 000000000000..f6818c322737 --- /dev/null +++ b/graphics/pokemon/cosmoem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 237 88 +229 211 79 +213 196 74 +196 148 58 +97 193 255 +77 114 237 +32 132 197 +57 86 181 +233 80 216 +101 78 44 +76 76 76 +42 42 42 +28 35 77 +20 18 18 +0 0 0 diff --git a/graphics/pokemon/cosmoem/overworld_shiny.pal b/graphics/pokemon/cosmoem/overworld_shiny.pal new file mode 100644 index 000000000000..881d09112aa7 --- /dev/null +++ b/graphics/pokemon/cosmoem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 237 88 +229 211 79 +213 196 74 +196 148 58 +97 193 255 +160 40 64 +32 132 197 +184 72 128 +233 80 216 +101 78 44 +76 76 76 +42 42 42 +28 35 77 +20 18 18 +0 0 0 diff --git a/graphics/pokemon/cosmog/overworld.png b/graphics/pokemon/cosmog/overworld.png new file mode 100644 index 000000000000..f13a79bfbb56 Binary files /dev/null and b/graphics/pokemon/cosmog/overworld.png differ diff --git a/graphics/pokemon/cosmog/overworld_normal.pal b/graphics/pokemon/cosmog/overworld_normal.pal new file mode 100644 index 000000000000..e08b3a68f983 --- /dev/null +++ b/graphics/pokemon/cosmog/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +187 234 250 +243 223 61 +173 174 59 +41 131 196 +28 176 226 +122 78 173 +101 78 44 +11 78 102 +58 72 155 +88 68 155 +46 42 42 +36 47 113 +30 38 87 +32 29 29 +0 0 0 diff --git a/graphics/pokemon/cosmog/overworld_shiny.pal b/graphics/pokemon/cosmog/overworld_shiny.pal new file mode 100644 index 000000000000..162674bf93b2 --- /dev/null +++ b/graphics/pokemon/cosmog/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +187 234 250 +243 223 61 +173 174 59 +41 131 196 +28 176 226 +240 136 88 +101 78 44 +11 78 102 +58 72 155 +88 68 155 +46 42 42 +36 47 113 +30 38 87 +32 29 29 +0 0 0 diff --git a/graphics/pokemon/cottonee/overworld.png b/graphics/pokemon/cottonee/overworld.png new file mode 100644 index 000000000000..15aec0406727 Binary files /dev/null and b/graphics/pokemon/cottonee/overworld.png differ diff --git a/graphics/pokemon/cottonee/overworld_normal.pal b/graphics/pokemon/cottonee/overworld_normal.pal new file mode 100644 index 000000000000..76222db0ce6b --- /dev/null +++ b/graphics/pokemon/cottonee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +110 110 110 +204 227 209 +208 241 229 +164 207 173 +64 128 16 +92 224 48 +74 176 49 +47 46 47 +198 196 235 +137 162 175 +238 238 247 +137 117 107 +230 77 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cottonee/overworld_shiny.pal b/graphics/pokemon/cottonee/overworld_shiny.pal new file mode 100644 index 000000000000..bb3d8c85c8f3 --- /dev/null +++ b/graphics/pokemon/cottonee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 0 +240 240 192 +240 240 192 +192 176 136 +152 40 8 +232 144 32 +192 96 40 +47 46 47 +192 176 136 +137 162 175 +248 248 248 +137 117 107 +230 77 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crabominable/overworld.png b/graphics/pokemon/crabominable/overworld.png new file mode 100644 index 000000000000..619af9186c8a Binary files /dev/null and b/graphics/pokemon/crabominable/overworld.png differ diff --git a/graphics/pokemon/crabominable/overworld_normal.pal b/graphics/pokemon/crabominable/overworld_normal.pal new file mode 100644 index 000000000000..2d20fdc88405 --- /dev/null +++ b/graphics/pokemon/crabominable/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +220 227 228 +229 221 131 +202 188 120 +145 211 225 +156 165 166 +154 154 154 +74 123 134 +109 110 110 +99 95 181 +106 98 56 +75 74 124 +72 74 74 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crabominable/overworld_shiny.pal b/graphics/pokemon/crabominable/overworld_shiny.pal new file mode 100644 index 000000000000..ada6989131a7 --- /dev/null +++ b/graphics/pokemon/crabominable/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +220 227 228 +248 216 176 +202 188 120 +240 96 80 +156 165 166 +154 154 154 +128 40 40 +109 110 110 +80 88 120 +144 88 64 +56 56 88 +72 74 74 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crabrawler/overworld.png b/graphics/pokemon/crabrawler/overworld.png new file mode 100644 index 000000000000..3c3d39d04c0d Binary files /dev/null and b/graphics/pokemon/crabrawler/overworld.png differ diff --git a/graphics/pokemon/crabrawler/overworld_normal.pal b/graphics/pokemon/crabrawler/overworld_normal.pal new file mode 100644 index 000000000000..569201c5598f --- /dev/null +++ b/graphics/pokemon/crabrawler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +212 220 220 +239 208 99 +209 167 67 +77 187 205 +63 137 158 +160 72 200 +64 99 118 +120 48 152 +98 84 34 +37 53 62 +47 45 69 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crabrawler/overworld_shiny.pal b/graphics/pokemon/crabrawler/overworld_shiny.pal new file mode 100644 index 000000000000..755afbeb8b50 --- /dev/null +++ b/graphics/pokemon/crabrawler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +212 220 220 +248 216 176 +224 152 120 +240 96 80 +208 48 48 +160 72 200 +64 99 118 +84 79 119 +98 84 34 +37 53 62 +47 45 69 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cradily/overworld.png b/graphics/pokemon/cradily/overworld.png new file mode 100644 index 000000000000..784f7ea9009f Binary files /dev/null and b/graphics/pokemon/cradily/overworld.png differ diff --git a/graphics/pokemon/cradily/overworld_normal.pal b/graphics/pokemon/cradily/overworld_normal.pal new file mode 100644 index 000000000000..c7a6dab18dd5 --- /dev/null +++ b/graphics/pokemon/cradily/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +208 104 136 +160 48 88 +136 24 56 +192 64 96 +32 88 48 +96 168 96 +72 128 88 +152 216 152 +48 40 48 +240 208 96 +240 184 0 +128 112 64 +88 80 48 +0 0 0 diff --git a/graphics/pokemon/cradily/overworld_shiny.pal b/graphics/pokemon/cradily/overworld_shiny.pal new file mode 100644 index 000000000000..aba268d08295 --- /dev/null +++ b/graphics/pokemon/cradily/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +208 104 136 +160 48 88 +136 24 56 +192 64 96 +80 48 88 +192 104 192 +136 80 120 +216 152 216 +48 40 48 +240 208 96 +240 184 0 +128 112 64 +88 80 48 +0 0 0 diff --git a/graphics/pokemon/cramorant/overworld.png b/graphics/pokemon/cramorant/overworld.png new file mode 100644 index 000000000000..050cb330be52 Binary files /dev/null and b/graphics/pokemon/cramorant/overworld.png differ diff --git a/graphics/pokemon/cramorant/overworld_normal.pal b/graphics/pokemon/cramorant/overworld_normal.pal new file mode 100644 index 000000000000..d5f4002dcc49 --- /dev/null +++ b/graphics/pokemon/cramorant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +0 59 97 +0 113 187 +0 0 0 +0 86 142 +159 128 23 +229 194 73 +101 170 79 +198 161 29 +117 119 164 +189 191 212 +153 155 188 +0 77 127 +20 20 20 +76 76 76 +52 52 52 diff --git a/graphics/pokemon/cramorant/overworld_shiny.pal b/graphics/pokemon/cramorant/overworld_shiny.pal new file mode 100644 index 000000000000..b581b9f49d34 --- /dev/null +++ b/graphics/pokemon/cramorant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +65 32 8 +255 156 57 +0 0 0 +222 131 41 +156 131 16 +230 197 74 +98 172 74 +197 164 24 +164 139 115 +222 205 189 +189 172 156 +164 98 32 +16 16 16 +74 74 74 +49 49 49 diff --git a/graphics/pokemon/cranidos/overworld.png b/graphics/pokemon/cranidos/overworld.png new file mode 100644 index 000000000000..c0f27f15b1cc Binary files /dev/null and b/graphics/pokemon/cranidos/overworld.png differ diff --git a/graphics/pokemon/cranidos/overworld_normal.pal b/graphics/pokemon/cranidos/overworld_normal.pal new file mode 100644 index 000000000000..cffa311a1dd3 --- /dev/null +++ b/graphics/pokemon/cranidos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +48 56 80 +200 200 200 +0 0 0 +64 88 152 +88 128 232 +152 152 152 +112 112 112 +232 232 248 +144 8 32 +152 152 152 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cranidos/overworld_shiny.pal b/graphics/pokemon/cranidos/overworld_shiny.pal new file mode 100644 index 000000000000..b477880a239e --- /dev/null +++ b/graphics/pokemon/cranidos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +104 8 32 +224 224 160 +0 0 0 +168 32 64 +240 56 96 +168 168 120 +144 144 88 +232 232 248 +144 8 32 +176 176 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crawdaunt/overworld.png b/graphics/pokemon/crawdaunt/overworld.png new file mode 100644 index 000000000000..4f9acced4450 Binary files /dev/null and b/graphics/pokemon/crawdaunt/overworld.png differ diff --git a/graphics/pokemon/crawdaunt/overworld_normal.pal b/graphics/pokemon/crawdaunt/overworld_normal.pal new file mode 100644 index 000000000000..d530da4af8b6 --- /dev/null +++ b/graphics/pokemon/crawdaunt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 24 +248 216 88 +0 0 0 +184 152 40 +88 40 8 +248 104 96 +200 80 64 +144 56 32 +48 56 72 +232 232 248 +168 168 184 +168 152 144 +40 128 168 +88 80 64 +56 144 200 diff --git a/graphics/pokemon/crawdaunt/overworld_shiny.pal b/graphics/pokemon/crawdaunt/overworld_shiny.pal new file mode 100644 index 000000000000..16f9fad35d82 --- /dev/null +++ b/graphics/pokemon/crawdaunt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 24 +248 240 184 +0 0 0 +248 192 0 +88 40 8 +248 160 96 +224 120 56 +160 80 32 +48 56 72 +232 232 248 +168 168 184 +176 176 200 +160 72 224 +88 80 64 +192 112 248 diff --git a/graphics/pokemon/cresselia/overworld.png b/graphics/pokemon/cresselia/overworld.png new file mode 100644 index 000000000000..dd48c81cc1cb Binary files /dev/null and b/graphics/pokemon/cresselia/overworld.png differ diff --git a/graphics/pokemon/cresselia/overworld_normal.pal b/graphics/pokemon/cresselia/overworld_normal.pal new file mode 100644 index 000000000000..6a3209ed3a42 --- /dev/null +++ b/graphics/pokemon/cresselia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 32 +248 232 168 +240 192 96 +176 136 72 +0 0 0 +104 40 56 +104 88 56 +216 104 168 +248 168 224 +160 72 112 +80 104 160 +88 144 224 +232 232 248 +64 64 64 +0 0 0 diff --git a/graphics/pokemon/cresselia/overworld_shiny.pal b/graphics/pokemon/cresselia/overworld_shiny.pal new file mode 100644 index 000000000000..349315038275 --- /dev/null +++ b/graphics/pokemon/cresselia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 32 +248 232 168 +240 192 96 +176 136 72 +0 0 0 +8 80 120 +104 88 56 +72 168 160 +96 208 184 +48 120 136 +104 72 136 +160 112 216 +232 232 248 +64 64 64 +0 0 0 diff --git a/graphics/pokemon/croagunk/overworld.png b/graphics/pokemon/croagunk/overworld.png new file mode 100644 index 000000000000..f822f403bdb4 Binary files /dev/null and b/graphics/pokemon/croagunk/overworld.png differ diff --git a/graphics/pokemon/croagunk/overworld_normal.pal b/graphics/pokemon/croagunk/overworld_normal.pal new file mode 100644 index 000000000000..5604dd41da7c --- /dev/null +++ b/graphics/pokemon/croagunk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 48 88 +56 72 128 +88 128 208 +48 96 192 +248 128 8 +48 48 48 +248 216 56 +192 152 0 +192 88 0 +200 200 200 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/croagunk/overworld_shiny.pal b/graphics/pokemon/croagunk/overworld_shiny.pal new file mode 100644 index 000000000000..045c97797014 --- /dev/null +++ b/graphics/pokemon/croagunk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +40 56 56 +56 104 88 +88 200 168 +72 152 128 +248 112 144 +48 48 48 +248 216 56 +192 152 0 +176 64 128 +200 200 200 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crobat/overworld.png b/graphics/pokemon/crobat/overworld.png new file mode 100644 index 000000000000..28add5ba23ca Binary files /dev/null and b/graphics/pokemon/crobat/overworld.png differ diff --git a/graphics/pokemon/crobat/overworld_normal.pal b/graphics/pokemon/crobat/overworld_normal.pal new file mode 100644 index 000000000000..1fe057d5614f --- /dev/null +++ b/graphics/pokemon/crobat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 24 120 +160 112 184 +120 80 144 +16 96 144 +40 144 184 +0 0 0 +232 216 96 +160 48 56 +168 184 208 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crobat/overworld_shiny.pal b/graphics/pokemon/crobat/overworld_shiny.pal new file mode 100644 index 000000000000..bf03b689ca64 --- /dev/null +++ b/graphics/pokemon/crobat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 56 64 +232 168 184 +176 112 136 +64 80 88 +120 136 72 +0 0 0 +232 216 96 +160 48 56 +168 184 208 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/croconaw/overworld.png b/graphics/pokemon/croconaw/overworld.png new file mode 100644 index 000000000000..b028b22f560e Binary files /dev/null and b/graphics/pokemon/croconaw/overworld.png differ diff --git a/graphics/pokemon/croconaw/overworld_normal.pal b/graphics/pokemon/croconaw/overworld_normal.pal new file mode 100644 index 000000000000..69cdb80a80dc --- /dev/null +++ b/graphics/pokemon/croconaw/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 24 40 +168 40 64 +0 0 0 +208 48 72 +40 64 96 +112 192 224 +64 104 136 +56 168 192 +232 232 248 +72 64 16 +136 72 0 +224 208 120 +184 160 88 +120 104 40 +0 0 0 diff --git a/graphics/pokemon/croconaw/overworld_shiny.pal b/graphics/pokemon/croconaw/overworld_shiny.pal new file mode 100644 index 000000000000..8a0ba385e8e4 --- /dev/null +++ b/graphics/pokemon/croconaw/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +16 56 136 +32 96 224 +0 0 0 +16 120 248 +24 80 88 +104 224 184 +48 120 128 +56 192 168 +232 232 248 +72 64 16 +136 72 0 +224 192 120 +184 160 88 +120 104 40 +0 0 0 diff --git a/graphics/pokemon/crustle/overworld.png b/graphics/pokemon/crustle/overworld.png new file mode 100644 index 000000000000..1132e915c326 Binary files /dev/null and b/graphics/pokemon/crustle/overworld.png differ diff --git a/graphics/pokemon/crustle/overworld_normal.pal b/graphics/pokemon/crustle/overworld_normal.pal new file mode 100644 index 000000000000..fe051f639a4d --- /dev/null +++ b/graphics/pokemon/crustle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 64 +0 0 0 +160 160 128 +128 96 64 +224 192 64 +192 128 0 +229 229 247 +96 32 0 +224 128 64 +192 96 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/crustle/overworld_shiny.pal b/graphics/pokemon/crustle/overworld_shiny.pal new file mode 100644 index 000000000000..3104d02abadd --- /dev/null +++ b/graphics/pokemon/crustle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 56 +0 0 0 +160 160 128 +96 88 80 +176 192 72 +48 40 24 +229 229 247 +48 40 24 +136 152 72 +96 104 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cryogonal/overworld.png b/graphics/pokemon/cryogonal/overworld.png new file mode 100644 index 000000000000..a1249fae839c Binary files /dev/null and b/graphics/pokemon/cryogonal/overworld.png differ diff --git a/graphics/pokemon/cryogonal/overworld_normal.pal b/graphics/pokemon/cryogonal/overworld_normal.pal new file mode 100644 index 000000000000..1539494c585b --- /dev/null +++ b/graphics/pokemon/cryogonal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 93 199 +40 47 101 +138 174 252 +0 0 0 +41 57 168 +189 223 255 +205 221 254 +205 221 254 +123 217 227 +41 57 168 +40 47 101 +189 223 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cryogonal/overworld_shiny.pal b/graphics/pokemon/cryogonal/overworld_shiny.pal new file mode 100644 index 000000000000..9195f2c0912a --- /dev/null +++ b/graphics/pokemon/cryogonal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 136 192 +40 64 88 +138 174 252 +0 0 0 +48 96 160 +200 232 248 +205 221 254 +232 152 96 +232 200 128 +41 57 168 +40 47 101 +189 223 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cubchoo/overworld.png b/graphics/pokemon/cubchoo/overworld.png new file mode 100644 index 000000000000..f01f0f212b3f Binary files /dev/null and b/graphics/pokemon/cubchoo/overworld.png differ diff --git a/graphics/pokemon/cubchoo/overworld_normal.pal b/graphics/pokemon/cubchoo/overworld_normal.pal new file mode 100644 index 000000000000..50d75a0e2938 --- /dev/null +++ b/graphics/pokemon/cubchoo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 115 115 +0 0 0 +148 213 238 +115 164 180 +74 115 164 +123 172 230 +232 232 248 +98 131 205 +57 74 74 +139 148 148 +176 184 192 +245 245 245 +200 208 224 +238 246 255 +197 205 222 diff --git a/graphics/pokemon/cubchoo/overworld_shiny.pal b/graphics/pokemon/cubchoo/overworld_shiny.pal new file mode 100644 index 000000000000..384414bd4fed --- /dev/null +++ b/graphics/pokemon/cubchoo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 128 +0 0 0 +192 160 240 +160 112 216 +98 98 202 +120 128 224 +228 231 237 +98 98 202 +57 74 74 +144 163 168 +144 163 168 +228 231 237 +228 231 237 +228 231 237 +197 205 222 diff --git a/graphics/pokemon/cubone/overworld.png b/graphics/pokemon/cubone/overworld.png new file mode 100644 index 000000000000..26802dc5aea3 Binary files /dev/null and b/graphics/pokemon/cubone/overworld.png differ diff --git a/graphics/pokemon/cubone/overworld_normal.pal b/graphics/pokemon/cubone/overworld_normal.pal new file mode 100644 index 000000000000..955a43e179a9 --- /dev/null +++ b/graphics/pokemon/cubone/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 72 72 +216 224 224 +192 192 192 +128 128 128 +136 96 24 +168 136 88 +232 232 248 +72 48 48 +160 160 160 +208 176 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cubone/overworld_shiny.pal b/graphics/pokemon/cubone/overworld_shiny.pal new file mode 100644 index 000000000000..84e8a88a933d --- /dev/null +++ b/graphics/pokemon/cubone/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 72 72 +224 224 200 +200 192 176 +128 128 128 +88 112 48 +136 152 64 +232 232 248 +40 64 24 +160 160 160 +208 176 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cufant/overworld.png b/graphics/pokemon/cufant/overworld.png new file mode 100644 index 000000000000..46df401e6d59 Binary files /dev/null and b/graphics/pokemon/cufant/overworld.png differ diff --git a/graphics/pokemon/cufant/overworld_normal.pal b/graphics/pokemon/cufant/overworld_normal.pal new file mode 100644 index 000000000000..3deec461909a --- /dev/null +++ b/graphics/pokemon/cufant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +76 255 40 +2 27 26 +182 180 117 +5 83 82 +249 246 169 +14 127 125 +51 28 14 +247 171 122 +190 124 81 +0 0 0 +255 255 255 +16 16 16 +199 199 199 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cufant/overworld_shiny.pal b/graphics/pokemon/cufant/overworld_shiny.pal new file mode 100644 index 000000000000..96c7b05b69a3 --- /dev/null +++ b/graphics/pokemon/cufant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +76 255 40 +0 24 16 +180 180 115 +0 90 57 +255 246 172 +0 148 98 +65 57 16 +246 222 115 +189 164 74 +0 0 0 +255 255 255 +16 16 16 +197 197 197 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cursola/overworld.png b/graphics/pokemon/cursola/overworld.png new file mode 100644 index 000000000000..08c11e0f83d4 Binary files /dev/null and b/graphics/pokemon/cursola/overworld.png differ diff --git a/graphics/pokemon/cursola/overworld_normal.pal b/graphics/pokemon/cursola/overworld_normal.pal new file mode 100644 index 000000000000..ab614dd1d90d --- /dev/null +++ b/graphics/pokemon/cursola/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +76 252 40 +60 56 56 +0 0 0 +160 160 156 +220 216 212 +100 100 96 +252 252 252 +176 176 172 +232 232 228 +204 92 132 +44 40 40 +176 176 172 +0 0 0 +92 92 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cursola/overworld_shiny.pal b/graphics/pokemon/cursola/overworld_shiny.pal new file mode 100644 index 000000000000..9e82ed4fb1b7 --- /dev/null +++ b/graphics/pokemon/cursola/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 57 57 +0 0 0 +164 164 156 +222 222 213 +98 98 98 +255 255 255 +57 57 65 +90 98 106 +205 90 131 +24 24 24 +57 57 65 +0 0 0 +90 90 90 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cutiefly/overworld.png b/graphics/pokemon/cutiefly/overworld.png new file mode 100644 index 000000000000..26cc49748737 Binary files /dev/null and b/graphics/pokemon/cutiefly/overworld.png differ diff --git a/graphics/pokemon/cutiefly/overworld_normal.pal b/graphics/pokemon/cutiefly/overworld_normal.pal new file mode 100644 index 000000000000..741d0b11c090 --- /dev/null +++ b/graphics/pokemon/cutiefly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 224 208 +217 195 75 +182 181 166 +183 146 45 +177 127 63 +134 67 38 +80 80 80 +78 63 46 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cutiefly/overworld_shiny.pal b/graphics/pokemon/cutiefly/overworld_shiny.pal new file mode 100644 index 000000000000..eba66bf48046 --- /dev/null +++ b/graphics/pokemon/cutiefly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 224 208 +240 184 192 +182 181 166 +200 120 128 +177 127 63 +184 48 32 +80 80 80 +78 63 46 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cyndaquil/overworld.png b/graphics/pokemon/cyndaquil/overworld.png new file mode 100644 index 000000000000..8e48ebada892 Binary files /dev/null and b/graphics/pokemon/cyndaquil/overworld.png differ diff --git a/graphics/pokemon/cyndaquil/overworld_normal.pal b/graphics/pokemon/cyndaquil/overworld_normal.pal new file mode 100644 index 000000000000..6af9f489233c --- /dev/null +++ b/graphics/pokemon/cyndaquil/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 40 40 +128 24 24 +240 160 16 +208 56 48 +32 48 80 +96 128 224 +80 96 160 +72 72 112 +0 0 0 +208 168 24 +248 208 96 +88 64 16 +232 232 248 +168 184 208 +56 64 80 diff --git a/graphics/pokemon/cyndaquil/overworld_shiny.pal b/graphics/pokemon/cyndaquil/overworld_shiny.pal new file mode 100644 index 000000000000..6e05ed9f5010 --- /dev/null +++ b/graphics/pokemon/cyndaquil/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 40 40 +128 24 24 +240 160 16 +208 56 48 +104 56 0 +208 144 40 +168 112 8 +144 96 8 +0 0 0 +216 184 40 +248 208 96 +88 64 16 +232 232 248 +168 184 208 +56 64 80 diff --git a/graphics/pokemon/darkrai/overworld.png b/graphics/pokemon/darkrai/overworld.png new file mode 100644 index 000000000000..048ed473f440 Binary files /dev/null and b/graphics/pokemon/darkrai/overworld.png differ diff --git a/graphics/pokemon/darkrai/overworld_normal.pal b/graphics/pokemon/darkrai/overworld_normal.pal new file mode 100644 index 000000000000..e28e62917eb7 --- /dev/null +++ b/graphics/pokemon/darkrai/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 80 +48 48 48 +192 192 224 +136 144 168 +0 0 0 +96 104 120 +152 48 64 +248 72 64 +48 152 192 +248 248 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/darkrai/overworld_shiny.pal b/graphics/pokemon/darkrai/overworld_shiny.pal new file mode 100644 index 000000000000..abfcb759e174 --- /dev/null +++ b/graphics/pokemon/darkrai/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 120 +48 48 88 +192 192 232 +136 144 184 +0 0 0 +96 104 152 +144 56 96 +232 80 104 +32 136 168 +248 248 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/darmanitan/galarian/overworld.png b/graphics/pokemon/darmanitan/galarian/overworld.png new file mode 100644 index 000000000000..dda43e6e075e Binary files /dev/null and b/graphics/pokemon/darmanitan/galarian/overworld.png differ diff --git a/graphics/pokemon/darmanitan/galarian/overworld_normal.pal b/graphics/pokemon/darmanitan/galarian/overworld_normal.pal new file mode 100644 index 000000000000..f573721897cd --- /dev/null +++ b/graphics/pokemon/darmanitan/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +140 78 78 +36 36 36 +167 167 167 +215 215 215 +10 34 40 +93 188 210 +0 0 0 +120 155 209 +79 111 160 +255 255 255 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/darmanitan/galarian/overworld_shiny.pal b/graphics/pokemon/darmanitan/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..f573721897cd --- /dev/null +++ b/graphics/pokemon/darmanitan/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +140 78 78 +36 36 36 +167 167 167 +215 215 215 +10 34 40 +93 188 210 +0 0 0 +120 155 209 +79 111 160 +255 255 255 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/darmanitan/overworld.png b/graphics/pokemon/darmanitan/overworld.png new file mode 100644 index 000000000000..6de83551bcf9 Binary files /dev/null and b/graphics/pokemon/darmanitan/overworld.png differ diff --git a/graphics/pokemon/darmanitan/overworld_normal.pal b/graphics/pokemon/darmanitan/overworld_normal.pal new file mode 100644 index 000000000000..985972ce943b --- /dev/null +++ b/graphics/pokemon/darmanitan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +182 0 0 +87 18 18 +91 77 17 +228 172 48 +164 25 18 +202 63 38 +0 0 0 +197 197 215 +71 47 25 +129 18 33 +39 39 39 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/darmanitan/overworld_shiny.pal b/graphics/pokemon/darmanitan/overworld_shiny.pal new file mode 100644 index 000000000000..dde3fd5efa61 --- /dev/null +++ b/graphics/pokemon/darmanitan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +182 0 0 +32 16 16 +99 85 21 +222 179 97 +120 48 72 +191 62 86 +0 0 0 +197 197 215 +71 30 30 +71 30 30 +39 39 39 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dartrix/overworld.png b/graphics/pokemon/dartrix/overworld.png new file mode 100644 index 000000000000..c5cdd65daa30 Binary files /dev/null and b/graphics/pokemon/dartrix/overworld.png differ diff --git a/graphics/pokemon/dartrix/overworld_normal.pal b/graphics/pokemon/dartrix/overworld_normal.pal new file mode 100644 index 000000000000..3adac8f4bf6b --- /dev/null +++ b/graphics/pokemon/dartrix/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +225 226 227 +167 173 181 +121 178 82 +240 132 94 +181 150 95 +156 120 78 +74 134 86 +99 100 103 +218 86 64 +122 81 70 +71 47 43 +52 58 55 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dartrix/overworld_shiny.pal b/graphics/pokemon/dartrix/overworld_shiny.pal new file mode 100644 index 000000000000..389a1829e9d8 --- /dev/null +++ b/graphics/pokemon/dartrix/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +225 226 227 +167 173 181 +87 199 178 +240 104 94 +181 150 95 +56 110 120 +74 134 125 +99 100 103 +218 64 82 +51 84 89 +34 58 60 +52 58 55 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/darumaka/galarian/overworld.png b/graphics/pokemon/darumaka/galarian/overworld.png new file mode 100644 index 000000000000..9e0554edc9b2 Binary files /dev/null and b/graphics/pokemon/darumaka/galarian/overworld.png differ diff --git a/graphics/pokemon/darumaka/galarian/overworld_normal.pal b/graphics/pokemon/darumaka/galarian/overworld_normal.pal new file mode 100644 index 000000000000..44a066b5bca5 --- /dev/null +++ b/graphics/pokemon/darumaka/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 19 175 +10 34 40 +36 36 36 +0 0 0 +93 188 210 +215 215 215 +56 134 152 +29 45 70 +128 128 128 +120 155 209 +79 111 160 +167 167 167 +55 72 127 +255 255 255 +80 108 152 +15 15 15 diff --git a/graphics/pokemon/darumaka/galarian/overworld_shiny.pal b/graphics/pokemon/darumaka/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..44a066b5bca5 --- /dev/null +++ b/graphics/pokemon/darumaka/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 19 175 +10 34 40 +36 36 36 +0 0 0 +93 188 210 +215 215 215 +56 134 152 +29 45 70 +128 128 128 +120 155 209 +79 111 160 +167 167 167 +55 72 127 +255 255 255 +80 108 152 +15 15 15 diff --git a/graphics/pokemon/darumaka/overworld.png b/graphics/pokemon/darumaka/overworld.png new file mode 100644 index 000000000000..e481a5971b0e Binary files /dev/null and b/graphics/pokemon/darumaka/overworld.png differ diff --git a/graphics/pokemon/darumaka/overworld_normal.pal b/graphics/pokemon/darumaka/overworld_normal.pal new file mode 100644 index 000000000000..beeb87003057 --- /dev/null +++ b/graphics/pokemon/darumaka/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +79 18 18 +199 40 40 +147 33 33 +87 55 40 +138 104 11 +0 0 0 +255 199 25 +164 79 33 +255 138 71 +229 229 229 +155 155 164 +79 79 79 +199 155 18 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/darumaka/overworld_shiny.pal b/graphics/pokemon/darumaka/overworld_shiny.pal new file mode 100644 index 000000000000..ed6cf7dc1c79 --- /dev/null +++ b/graphics/pokemon/darumaka/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +79 18 18 +224 136 152 +160 80 104 +87 55 40 +144 120 64 +0 0 0 +248 224 104 +164 79 33 +248 184 88 +229 229 229 +155 155 164 +79 79 79 +232 184 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/decidueye/hisuian/overworld.png b/graphics/pokemon/decidueye/hisuian/overworld.png new file mode 100644 index 000000000000..d528a33f2da7 Binary files /dev/null and b/graphics/pokemon/decidueye/hisuian/overworld.png differ diff --git a/graphics/pokemon/decidueye/hisuian/overworld_normal.pal b/graphics/pokemon/decidueye/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..ed0e1cf36a38 --- /dev/null +++ b/graphics/pokemon/decidueye/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +205 49 65 +131 24 24 +57 65 57 +255 90 90 +222 222 222 +222 180 90 +98 82 57 +74 57 41 +172 148 82 +164 139 123 +230 131 49 +74 82 82 +255 205 82 +222 65 49 diff --git a/graphics/pokemon/decidueye/hisuian/overworld_shiny.pal b/graphics/pokemon/decidueye/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..14dffa72c0eb --- /dev/null +++ b/graphics/pokemon/decidueye/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +41 123 106 +24 57 49 +57 65 57 +90 189 106 +222 222 222 +205 131 74 +98 82 57 +74 57 41 +172 98 65 +164 139 123 +222 65 49 +74 82 82 +230 131 49 +197 57 49 diff --git a/graphics/pokemon/decidueye/overworld.png b/graphics/pokemon/decidueye/overworld.png new file mode 100644 index 000000000000..14b8113c7b95 Binary files /dev/null and b/graphics/pokemon/decidueye/overworld.png differ diff --git a/graphics/pokemon/decidueye/overworld_normal.pal b/graphics/pokemon/decidueye/overworld_normal.pal new file mode 100644 index 000000000000..4d41e9da4a1d --- /dev/null +++ b/graphics/pokemon/decidueye/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +66 68 74 +216 220 222 +164 141 122 +24 61 53 +227 132 49 +41 125 107 +95 187 111 +219 70 51 +16 16 16 +63 67 63 +204 133 78 +173 97 71 +68 67 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/decidueye/overworld_shiny.pal b/graphics/pokemon/decidueye/overworld_shiny.pal new file mode 100644 index 000000000000..9f3a7bc1491c --- /dev/null +++ b/graphics/pokemon/decidueye/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +66 68 74 +216 220 222 +164 141 122 +24 61 53 +238 97 74 +41 119 125 +95 187 179 +219 51 62 +16 16 16 +63 67 63 +128 128 128 +92 94 100 +68 67 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dedenne/overworld.png b/graphics/pokemon/dedenne/overworld.png new file mode 100644 index 000000000000..d92c317d75e0 Binary files /dev/null and b/graphics/pokemon/dedenne/overworld.png differ diff --git a/graphics/pokemon/dedenne/overworld_normal.pal b/graphics/pokemon/dedenne/overworld_normal.pal new file mode 100644 index 000000000000..d427c6fdc3cc --- /dev/null +++ b/graphics/pokemon/dedenne/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 49 49 +82 82 82 +250 218 144 +104 61 32 +255 242 115 +255 198 49 +0 0 0 +193 119 23 +232 180 63 +255 255 255 +240 68 31 +244 177 23 +251 241 219 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dedenne/overworld_shiny.pal b/graphics/pokemon/dedenne/overworld_shiny.pal new file mode 100644 index 000000000000..8c43e5b3ff00 --- /dev/null +++ b/graphics/pokemon/dedenne/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 49 49 +82 82 82 +207 174 52 +85 65 54 +245 211 65 +255 198 49 +0 0 0 +139 103 84 +155 118 98 +255 255 255 +101 76 64 +244 177 23 +251 241 219 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/autumn/overworld.png b/graphics/pokemon/deerling/autumn/overworld.png new file mode 100644 index 000000000000..eda763b62191 Binary files /dev/null and b/graphics/pokemon/deerling/autumn/overworld.png differ diff --git a/graphics/pokemon/deerling/autumn/overworld_normal.pal b/graphics/pokemon/deerling/autumn/overworld_normal.pal new file mode 100644 index 000000000000..ea85feef5ee0 --- /dev/null +++ b/graphics/pokemon/deerling/autumn/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +216 145 19 +63 33 13 +132 91 14 +246 236 65 +246 228 194 +206 164 103 +63 33 13 +216 145 19 +99 99 99 +62 62 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/autumn/overworld_shiny.pal b/graphics/pokemon/deerling/autumn/overworld_shiny.pal new file mode 100644 index 000000000000..e49a9a7f7a83 --- /dev/null +++ b/graphics/pokemon/deerling/autumn/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +232 128 24 +128 72 16 +160 112 32 +248 208 240 +246 228 194 +206 164 103 +63 33 13 +216 145 19 +99 99 99 +62 62 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/overworld.png b/graphics/pokemon/deerling/overworld.png new file mode 100644 index 000000000000..e2bfd0d9d32c Binary files /dev/null and b/graphics/pokemon/deerling/overworld.png differ diff --git a/graphics/pokemon/deerling/overworld_normal.pal b/graphics/pokemon/deerling/overworld_normal.pal new file mode 100644 index 000000000000..f5fd58d7c477 --- /dev/null +++ b/graphics/pokemon/deerling/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 16 +240 129 184 +102 56 100 +142 102 19 +247 238 76 +194 96 140 +220 154 25 +194 96 140 +247 231 200 +211 172 114 +110 110 110 +73 73 77 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/overworld_shiny.pal b/graphics/pokemon/deerling/overworld_shiny.pal new file mode 100644 index 000000000000..5517152271a4 --- /dev/null +++ b/graphics/pokemon/deerling/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 16 +248 152 168 +136 64 64 +142 102 19 +248 208 240 +176 104 104 +248 152 232 +194 96 140 +247 231 200 +211 172 114 +110 110 110 +73 73 77 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/summer/overworld.png b/graphics/pokemon/deerling/summer/overworld.png new file mode 100644 index 000000000000..fcbc6a19fad2 Binary files /dev/null and b/graphics/pokemon/deerling/summer/overworld.png differ diff --git a/graphics/pokemon/deerling/summer/overworld_normal.pal b/graphics/pokemon/deerling/summer/overworld_normal.pal new file mode 100644 index 000000000000..12c0a070e034 --- /dev/null +++ b/graphics/pokemon/deerling/summer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +63 168 40 +35 61 29 +132 91 14 +246 236 65 +43 97 38 +216 145 19 +246 228 194 +206 164 103 +99 99 99 +62 62 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/summer/overworld_shiny.pal b/graphics/pokemon/deerling/summer/overworld_shiny.pal new file mode 100644 index 000000000000..0c6f48254ac5 --- /dev/null +++ b/graphics/pokemon/deerling/summer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +64 176 64 +35 61 29 +132 91 14 +248 208 240 +48 120 64 +248 152 232 +246 228 194 +206 164 103 +99 99 99 +62 62 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/winter/overworld.png b/graphics/pokemon/deerling/winter/overworld.png new file mode 100644 index 000000000000..0b619b55ac4c Binary files /dev/null and b/graphics/pokemon/deerling/winter/overworld.png differ diff --git a/graphics/pokemon/deerling/winter/overworld_normal.pal b/graphics/pokemon/deerling/winter/overworld_normal.pal new file mode 100644 index 000000000000..0c74439bd505 --- /dev/null +++ b/graphics/pokemon/deerling/winter/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +134 102 61 +37 26 13 +132 91 14 +246 236 65 +35 61 29 +102 61 36 +216 145 19 +134 102 61 +246 228 194 +206 164 103 +99 99 99 +62 62 66 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deerling/winter/overworld_shiny.pal b/graphics/pokemon/deerling/winter/overworld_shiny.pal new file mode 100644 index 000000000000..1628855ed136 --- /dev/null +++ b/graphics/pokemon/deerling/winter/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +168 128 96 +37 26 13 +132 91 14 +248 208 240 +35 61 29 +120 80 72 +248 152 232 +134 102 61 +246 228 194 +206 164 103 +99 99 99 +62 62 66 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deino/overworld.png b/graphics/pokemon/deino/overworld.png new file mode 100644 index 000000000000..491f6a170ca4 Binary files /dev/null and b/graphics/pokemon/deino/overworld.png differ diff --git a/graphics/pokemon/deino/overworld_normal.pal b/graphics/pokemon/deino/overworld_normal.pal new file mode 100644 index 000000000000..4643179060e9 --- /dev/null +++ b/graphics/pokemon/deino/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 32 41 +16 16 16 +82 82 82 +65 57 65 +0 0 0 +57 98 164 +24 49 106 +98 148 222 +156 65 49 +82 82 82 +156 57 106 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deino/overworld_shiny.pal b/graphics/pokemon/deino/overworld_shiny.pal new file mode 100644 index 000000000000..5ab732da3c01 --- /dev/null +++ b/graphics/pokemon/deino/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 32 41 +16 16 16 +96 88 80 +80 64 64 +0 0 0 +88 104 48 +40 40 24 +112 152 72 +156 65 49 +82 82 82 +160 96 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/delcatty/overworld.png b/graphics/pokemon/delcatty/overworld.png new file mode 100644 index 000000000000..0e4a1b0ed53e Binary files /dev/null and b/graphics/pokemon/delcatty/overworld.png differ diff --git a/graphics/pokemon/delcatty/overworld_normal.pal b/graphics/pokemon/delcatty/overworld_normal.pal new file mode 100644 index 000000000000..119d3d3b01c9 --- /dev/null +++ b/graphics/pokemon/delcatty/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 136 +152 104 200 +64 48 104 +192 144 216 +0 0 0 +224 184 56 +80 72 56 +176 120 72 +232 208 128 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/delcatty/overworld_shiny.pal b/graphics/pokemon/delcatty/overworld_shiny.pal new file mode 100644 index 000000000000..4ff5fe6bd42b --- /dev/null +++ b/graphics/pokemon/delcatty/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 56 56 +208 88 88 +104 32 32 +216 128 112 +0 0 0 +240 160 56 +80 72 56 +176 104 72 +248 192 128 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/delibird/overworld.png b/graphics/pokemon/delibird/overworld.png new file mode 100644 index 000000000000..d80f62384e7d Binary files /dev/null and b/graphics/pokemon/delibird/overworld.png differ diff --git a/graphics/pokemon/delibird/overworld_normal.pal b/graphics/pokemon/delibird/overworld_normal.pal new file mode 100644 index 000000000000..4e03f4337f84 --- /dev/null +++ b/graphics/pokemon/delibird/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +144 160 176 +0 0 0 +232 232 248 +88 8 8 +200 24 24 +192 208 232 +152 8 8 +128 104 16 +248 216 88 +184 160 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/delibird/overworld_shiny.pal b/graphics/pokemon/delibird/overworld_shiny.pal new file mode 100644 index 000000000000..7f3cc6a4e9a0 --- /dev/null +++ b/graphics/pokemon/delibird/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +144 160 176 +0 0 0 +232 232 248 +88 8 88 +208 144 208 +192 208 232 +152 72 152 +128 104 16 +248 216 88 +184 160 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/delphox/overworld.png b/graphics/pokemon/delphox/overworld.png new file mode 100644 index 000000000000..e490e31cd818 Binary files /dev/null and b/graphics/pokemon/delphox/overworld.png differ diff --git a/graphics/pokemon/delphox/overworld_normal.pal b/graphics/pokemon/delphox/overworld_normal.pal new file mode 100644 index 000000000000..78bf3748c221 --- /dev/null +++ b/graphics/pokemon/delphox/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 96 32 +0 0 0 +148 41 34 +250 224 96 +201 66 48 +243 86 58 +224 173 16 +153 68 75 +20 20 20 +255 255 255 +115 49 37 +111 51 51 +144 112 32 +51 36 53 +0 0 0 diff --git a/graphics/pokemon/delphox/overworld_shiny.pal b/graphics/pokemon/delphox/overworld_shiny.pal new file mode 100644 index 000000000000..0ce8eda4cbe5 --- /dev/null +++ b/graphics/pokemon/delphox/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 135 135 +0 0 0 +148 41 34 +208 208 208 +201 66 48 +243 86 58 +183 183 183 +121 92 131 +20 20 20 +255 255 255 +65 43 72 +101 69 111 +136 135 135 +51 36 53 +0 0 0 diff --git a/graphics/pokemon/deoxys/attack/overworld.png b/graphics/pokemon/deoxys/attack/overworld.png new file mode 100644 index 000000000000..33d68d6b0721 Binary files /dev/null and b/graphics/pokemon/deoxys/attack/overworld.png differ diff --git a/graphics/pokemon/deoxys/attack/overworld_normal.pal b/graphics/pokemon/deoxys/attack/overworld_normal.pal new file mode 100644 index 000000000000..645290954fdc --- /dev/null +++ b/graphics/pokemon/deoxys/attack/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 16 16 +0 0 0 +248 128 80 +184 40 40 +224 72 64 +64 168 152 +48 120 104 +184 88 208 +32 72 64 +56 56 56 +232 232 248 +120 64 128 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/attack/overworld_shiny.pal b/graphics/pokemon/deoxys/attack/overworld_shiny.pal new file mode 100644 index 000000000000..ffda233a8106 --- /dev/null +++ b/graphics/pokemon/deoxys/attack/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 64 16 +0 0 0 +248 208 40 +192 112 0 +240 168 0 +64 168 152 +48 120 104 +184 88 208 +32 72 64 +56 56 56 +232 232 248 +120 64 128 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/defense/overworld.png b/graphics/pokemon/deoxys/defense/overworld.png new file mode 100644 index 000000000000..3565df1926ee Binary files /dev/null and b/graphics/pokemon/deoxys/defense/overworld.png differ diff --git a/graphics/pokemon/deoxys/defense/overworld_normal.pal b/graphics/pokemon/deoxys/defense/overworld_normal.pal new file mode 100644 index 000000000000..172e6b3e003f --- /dev/null +++ b/graphics/pokemon/deoxys/defense/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 16 16 +0 0 0 +248 128 80 +224 72 64 +184 40 40 +64 168 152 +184 88 208 +32 72 64 +48 120 104 +56 56 56 +120 64 128 +232 232 248 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/defense/overworld_shiny.pal b/graphics/pokemon/deoxys/defense/overworld_shiny.pal new file mode 100644 index 000000000000..95aecde7a0a5 --- /dev/null +++ b/graphics/pokemon/deoxys/defense/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 64 16 +0 0 0 +248 208 40 +240 168 0 +192 112 0 +64 168 152 +184 88 208 +32 72 64 +48 120 104 +56 56 56 +120 64 128 +232 232 248 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/overworld.png b/graphics/pokemon/deoxys/overworld.png new file mode 100644 index 000000000000..7a46c8b23ac6 Binary files /dev/null and b/graphics/pokemon/deoxys/overworld.png differ diff --git a/graphics/pokemon/deoxys/overworld_normal.pal b/graphics/pokemon/deoxys/overworld_normal.pal new file mode 100644 index 000000000000..d88224cc9ad9 --- /dev/null +++ b/graphics/pokemon/deoxys/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 16 16 +248 128 80 +0 0 0 +224 72 64 +184 40 40 +64 168 152 +184 88 208 +48 120 104 +56 56 56 +232 232 248 +120 64 128 +32 72 64 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/overworld_shiny.pal b/graphics/pokemon/deoxys/overworld_shiny.pal new file mode 100644 index 000000000000..f656d65d96a1 --- /dev/null +++ b/graphics/pokemon/deoxys/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +96 64 16 +248 208 40 +0 0 0 +240 168 0 +192 112 0 +64 168 152 +184 88 208 +48 120 104 +56 56 56 +232 232 248 +120 64 128 +32 72 64 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/speed/overworld.png b/graphics/pokemon/deoxys/speed/overworld.png new file mode 100644 index 000000000000..24e4ba48ee2d Binary files /dev/null and b/graphics/pokemon/deoxys/speed/overworld.png differ diff --git a/graphics/pokemon/deoxys/speed/overworld_normal.pal b/graphics/pokemon/deoxys/speed/overworld_normal.pal new file mode 100644 index 000000000000..caa4f6fbfb40 --- /dev/null +++ b/graphics/pokemon/deoxys/speed/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +32 72 64 +64 168 152 +0 0 0 +48 120 104 +184 40 40 +248 128 80 +96 16 16 +224 72 64 +184 88 208 +56 56 56 +232 232 248 +120 64 128 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/deoxys/speed/overworld_shiny.pal b/graphics/pokemon/deoxys/speed/overworld_shiny.pal new file mode 100644 index 000000000000..c8122e3382bb --- /dev/null +++ b/graphics/pokemon/deoxys/speed/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +32 72 64 +64 168 152 +0 0 0 +48 120 104 +192 112 0 +248 208 40 +96 64 16 +240 168 0 +184 88 208 +56 56 56 +232 232 248 +120 64 128 +80 88 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dewgong/overworld.png b/graphics/pokemon/dewgong/overworld.png new file mode 100644 index 000000000000..1959cc4fb3b6 Binary files /dev/null and b/graphics/pokemon/dewgong/overworld.png differ diff --git a/graphics/pokemon/dewgong/overworld_normal.pal b/graphics/pokemon/dewgong/overworld_normal.pal new file mode 100644 index 000000000000..0c2bd6a12cbb --- /dev/null +++ b/graphics/pokemon/dewgong/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +48 48 80 +176 184 216 +224 224 240 +72 80 120 +0 0 0 +232 232 248 +112 128 184 +0 0 0 +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/dewgong/overworld_shiny.pal b/graphics/pokemon/dewgong/overworld_shiny.pal new file mode 100644 index 000000000000..8473af74eb6d --- /dev/null +++ b/graphics/pokemon/dewgong/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +80 80 64 +184 184 184 +232 232 232 +104 104 64 +0 0 0 +232 232 248 +144 144 120 +0 0 0 +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/dewott/overworld.png b/graphics/pokemon/dewott/overworld.png new file mode 100644 index 000000000000..7f28592c7776 Binary files /dev/null and b/graphics/pokemon/dewott/overworld.png differ diff --git a/graphics/pokemon/dewott/overworld_normal.pal b/graphics/pokemon/dewott/overworld_normal.pal new file mode 100644 index 000000000000..3ef7077292a9 --- /dev/null +++ b/graphics/pokemon/dewott/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 88 105 +0 0 0 +32 139 148 +32 139 148 +82 189 189 +49 49 49 +74 74 74 +115 57 57 +250 247 240 +82 189 189 +46 56 92 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dewott/overworld_shiny.pal b/graphics/pokemon/dewott/overworld_shiny.pal new file mode 100644 index 000000000000..8c28ea7eda18 --- /dev/null +++ b/graphics/pokemon/dewott/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +51 76 90 +0 0 0 +64 176 152 +32 139 148 +80 208 184 +49 49 49 +74 74 74 +197 82 90 +250 247 240 +82 189 189 +128 56 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dewpider/overworld.png b/graphics/pokemon/dewpider/overworld.png new file mode 100644 index 000000000000..a5851c7ff85a Binary files /dev/null and b/graphics/pokemon/dewpider/overworld.png differ diff --git a/graphics/pokemon/dewpider/overworld_normal.pal b/graphics/pokemon/dewpider/overworld_normal.pal new file mode 100644 index 000000000000..1c6033a2832f --- /dev/null +++ b/graphics/pokemon/dewpider/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +232 232 232 +163 185 55 +79 156 197 +101 108 143 +70 119 37 +77 83 108 +96 54 50 +34 36 43 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dewpider/overworld_shiny.pal b/graphics/pokemon/dewpider/overworld_shiny.pal new file mode 100644 index 000000000000..45e31b40525a --- /dev/null +++ b/graphics/pokemon/dewpider/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +232 232 232 +160 80 192 +248 128 80 +101 108 143 +104 48 144 +77 83 108 +96 54 50 +34 36 43 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dhelmise/overworld.png b/graphics/pokemon/dhelmise/overworld.png new file mode 100644 index 000000000000..f291a0c0a268 Binary files /dev/null and b/graphics/pokemon/dhelmise/overworld.png differ diff --git a/graphics/pokemon/dhelmise/overworld_normal.pal b/graphics/pokemon/dhelmise/overworld_normal.pal new file mode 100644 index 000000000000..9b14093407b8 --- /dev/null +++ b/graphics/pokemon/dhelmise/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 246 217 +227 210 73 +52 146 161 +241 145 98 +118 141 46 +42 113 124 +255 83 0 +164 101 128 +159 107 54 +141 94 46 +91 96 32 +109 62 46 +101 61 71 +20 49 65 +16 16 16 diff --git a/graphics/pokemon/dhelmise/overworld_shiny.pal b/graphics/pokemon/dhelmise/overworld_shiny.pal new file mode 100644 index 000000000000..6eb64cd0178a --- /dev/null +++ b/graphics/pokemon/dhelmise/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 246 217 +232 232 232 +232 72 72 +241 145 98 +184 104 136 +184 32 32 +255 83 0 +216 160 184 +159 107 54 +141 94 46 +120 96 112 +109 62 46 +101 61 71 +20 49 65 +16 16 16 diff --git a/graphics/pokemon/dialga/origin/overworld.png b/graphics/pokemon/dialga/origin/overworld.png new file mode 100644 index 000000000000..f0e7a4429796 Binary files /dev/null and b/graphics/pokemon/dialga/origin/overworld.png differ diff --git a/graphics/pokemon/dialga/origin/overworld_normal.pal b/graphics/pokemon/dialga/origin/overworld_normal.pal new file mode 100644 index 000000000000..e6bfc48201b1 --- /dev/null +++ b/graphics/pokemon/dialga/origin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +98 182 49 +0 0 0 +65 129 255 +189 32 16 +246 80 65 +57 121 180 +98 121 139 +32 64 106 +16 56 90 +24 64 106 +189 202 222 +32 89 148 +139 161 180 +156 210 246 +16 16 16 +24 40 49 diff --git a/graphics/pokemon/dialga/overworld.png b/graphics/pokemon/dialga/overworld.png new file mode 100644 index 000000000000..d7632b6dc02c Binary files /dev/null and b/graphics/pokemon/dialga/overworld.png differ diff --git a/graphics/pokemon/dialga/overworld_normal.pal b/graphics/pokemon/dialga/overworld_normal.pal new file mode 100644 index 000000000000..e536b2eab85b --- /dev/null +++ b/graphics/pokemon/dialga/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +96 160 192 +32 88 144 +32 64 104 +40 56 72 +184 200 216 +136 160 176 +96 120 136 +56 120 176 +152 208 240 +216 232 248 +184 32 16 +240 80 64 +64 128 248 +0 0 0 diff --git a/graphics/pokemon/dialga/overworld_shiny.pal b/graphics/pokemon/dialga/overworld_shiny.pal new file mode 100644 index 000000000000..e0a10b98fde0 --- /dev/null +++ b/graphics/pokemon/dialga/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +96 168 192 +0 136 152 +24 72 88 +64 64 64 +216 208 144 +184 184 136 +136 136 56 +40 160 160 +152 208 240 +232 224 176 +184 32 16 +240 80 64 +64 128 248 +0 0 0 diff --git a/graphics/pokemon/diancie/overworld.png b/graphics/pokemon/diancie/overworld.png new file mode 100644 index 000000000000..7c1eb759e11a Binary files /dev/null and b/graphics/pokemon/diancie/overworld.png differ diff --git a/graphics/pokemon/diancie/overworld_normal.pal b/graphics/pokemon/diancie/overworld_normal.pal new file mode 100644 index 000000000000..990c8faba8dc --- /dev/null +++ b/graphics/pokemon/diancie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +225 213 222 +242 154 218 +131 31 71 +206 86 159 +37 38 48 +116 120 150 +75 77 101 +227 199 137 +198 152 98 +225 213 222 +182 166 178 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/diancie/overworld_shiny.pal b/graphics/pokemon/diancie/overworld_shiny.pal new file mode 100644 index 000000000000..d09a01beec12 --- /dev/null +++ b/graphics/pokemon/diancie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +251 194 216 +243 148 184 +161 42 109 +217 100 143 +30 29 29 +77 77 77 +50 49 49 +227 199 137 +198 152 98 +226 66 127 +168 45 92 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/diggersby/overworld.png b/graphics/pokemon/diggersby/overworld.png new file mode 100644 index 000000000000..03d6b5906674 Binary files /dev/null and b/graphics/pokemon/diggersby/overworld.png differ diff --git a/graphics/pokemon/diggersby/overworld_normal.pal b/graphics/pokemon/diggersby/overworld_normal.pal new file mode 100644 index 000000000000..6676ad6c6eb6 --- /dev/null +++ b/graphics/pokemon/diggersby/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 88 +66 53 35 +221 221 221 +153 119 68 +161 161 161 +117 90 55 +16 16 16 +238 153 170 +230 238 248 +196 179 152 +200 169 86 +255 221 119 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/diggersby/overworld_shiny.pal b/graphics/pokemon/diggersby/overworld_shiny.pal new file mode 100644 index 000000000000..a9e53ba65541 --- /dev/null +++ b/graphics/pokemon/diggersby/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 88 +66 53 35 +169 175 161 +233 235 229 +115 116 109 +197 198 194 +16 16 16 +238 153 170 +230 238 248 +196 179 152 +123 104 90 +168 142 123 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/diglett/alolan/overworld.png b/graphics/pokemon/diglett/alolan/overworld.png new file mode 100644 index 000000000000..0e26118a99ab Binary files /dev/null and b/graphics/pokemon/diglett/alolan/overworld.png differ diff --git a/graphics/pokemon/diglett/alolan/overworld_normal.pal b/graphics/pokemon/diglett/alolan/overworld_normal.pal new file mode 100644 index 000000000000..666679790db7 --- /dev/null +++ b/graphics/pokemon/diglett/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +142 136 86 +0 0 0 +255 253 159 +204 199 145 +90 49 24 +197 115 65 +149 69 115 +148 86 48 +255 214 243 +233 122 186 +197 35 136 +47 47 47 +60 59 59 +149 149 149 +112 112 112 diff --git a/graphics/pokemon/diglett/alolan/overworld_shiny.pal b/graphics/pokemon/diglett/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..0de622feb7db --- /dev/null +++ b/graphics/pokemon/diglett/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +142 136 86 +0 0 0 +255 253 159 +204 199 145 +100 25 14 +229 88 72 +80 87 138 +175 66 54 +255 214 243 +137 147 217 +57 77 174 +47 47 47 +60 59 59 +149 149 149 +112 112 112 diff --git a/graphics/pokemon/diglett/overworld.png b/graphics/pokemon/diglett/overworld.png new file mode 100644 index 000000000000..e1dd33f63ec3 Binary files /dev/null and b/graphics/pokemon/diglett/overworld.png differ diff --git a/graphics/pokemon/diglett/overworld_normal.pal b/graphics/pokemon/diglett/overworld_normal.pal new file mode 100644 index 000000000000..ed1417709e1c --- /dev/null +++ b/graphics/pokemon/diglett/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 48 16 +152 120 56 +104 8 40 +112 72 32 +200 200 200 +0 0 0 +208 64 104 +232 112 152 +152 32 72 +64 64 64 +112 112 112 +168 168 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/diglett/overworld_shiny.pal b/graphics/pokemon/diglett/overworld_shiny.pal new file mode 100644 index 000000000000..f93b4caa0759 --- /dev/null +++ b/graphics/pokemon/diglett/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 48 16 +152 120 56 +0 48 80 +112 72 32 +200 200 200 +0 0 0 +56 136 216 +136 192 248 +24 80 160 +64 64 64 +112 112 112 +168 168 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ditto/overworld.png b/graphics/pokemon/ditto/overworld.png new file mode 100644 index 000000000000..a74652588e5c Binary files /dev/null and b/graphics/pokemon/ditto/overworld.png differ diff --git a/graphics/pokemon/ditto/overworld_normal.pal b/graphics/pokemon/ditto/overworld_normal.pal new file mode 100644 index 000000000000..d21458714fa3 --- /dev/null +++ b/graphics/pokemon/ditto/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +144 120 176 +184 144 224 +224 176 240 +112 80 144 +0 0 0 +0 0 0 +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/ditto/overworld_shiny.pal b/graphics/pokemon/ditto/overworld_shiny.pal new file mode 100644 index 000000000000..b5f8d3f9b145 --- /dev/null +++ b/graphics/pokemon/ditto/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +104 160 208 +128 184 224 +160 232 240 +48 112 168 +0 0 0 +0 0 0 +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/dodrio/overworld.png b/graphics/pokemon/dodrio/overworld.png new file mode 100644 index 000000000000..b9d1b7ffb16b Binary files /dev/null and b/graphics/pokemon/dodrio/overworld.png differ diff --git a/graphics/pokemon/dodrio/overworld_normal.pal b/graphics/pokemon/dodrio/overworld_normal.pal new file mode 100644 index 000000000000..b636b4382add --- /dev/null +++ b/graphics/pokemon/dodrio/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +128 128 128 +0 0 0 +64 48 32 +136 96 40 +184 128 72 +120 80 40 +232 232 248 +176 176 152 +248 176 48 +136 112 40 +96 24 32 +184 64 88 +224 128 144 +192 160 64 diff --git a/graphics/pokemon/dodrio/overworld_shiny.pal b/graphics/pokemon/dodrio/overworld_shiny.pal new file mode 100644 index 000000000000..e153881f09dd --- /dev/null +++ b/graphics/pokemon/dodrio/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +120 120 120 +0 0 0 +72 80 48 +128 120 56 +184 160 72 +112 104 56 +232 232 248 +176 176 152 +248 176 48 +136 112 40 +96 24 32 +184 64 88 +224 128 144 +192 160 64 diff --git a/graphics/pokemon/doduo/overworld.png b/graphics/pokemon/doduo/overworld.png new file mode 100644 index 000000000000..5877cb1e7bdc Binary files /dev/null and b/graphics/pokemon/doduo/overworld.png differ diff --git a/graphics/pokemon/doduo/overworld_normal.pal b/graphics/pokemon/doduo/overworld_normal.pal new file mode 100644 index 000000000000..6a2e2d3e46b0 --- /dev/null +++ b/graphics/pokemon/doduo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 40 +136 96 40 +104 72 32 +0 0 0 +224 176 104 +192 120 24 +184 128 72 +112 104 96 +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/doduo/overworld_shiny.pal b/graphics/pokemon/doduo/overworld_shiny.pal new file mode 100644 index 000000000000..f1d64b254cf5 --- /dev/null +++ b/graphics/pokemon/doduo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 48 +144 136 64 +112 104 56 +0 0 0 +224 176 104 +192 120 24 +184 160 72 +112 104 96 +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/donphan/overworld.png b/graphics/pokemon/donphan/overworld.png new file mode 100644 index 000000000000..e6afdd6f2f76 Binary files /dev/null and b/graphics/pokemon/donphan/overworld.png differ diff --git a/graphics/pokemon/donphan/overworld_normal.pal b/graphics/pokemon/donphan/overworld_normal.pal new file mode 100644 index 000000000000..e90107418931 --- /dev/null +++ b/graphics/pokemon/donphan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +48 72 80 +120 136 152 +16 16 16 +72 88 112 +72 64 72 +120 120 128 +152 152 160 +88 8 8 +136 24 24 +184 184 200 +248 248 248 +184 184 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/donphan/overworld_shiny.pal b/graphics/pokemon/donphan/overworld_shiny.pal new file mode 100644 index 000000000000..22f9a2b5d827 --- /dev/null +++ b/graphics/pokemon/donphan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 24 24 +120 48 32 +184 136 96 +16 16 16 +152 96 64 +72 64 72 +128 136 96 +168 176 144 +88 8 8 +136 24 24 +184 184 200 +248 248 248 +184 184 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dottler/overworld.png b/graphics/pokemon/dottler/overworld.png new file mode 100644 index 000000000000..4b627b4df28f Binary files /dev/null and b/graphics/pokemon/dottler/overworld.png differ diff --git a/graphics/pokemon/dottler/overworld_normal.pal b/graphics/pokemon/dottler/overworld_normal.pal new file mode 100644 index 000000000000..48eaed7716ef --- /dev/null +++ b/graphics/pokemon/dottler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +32 252 12 +132 100 40 +96 196 228 +252 252 252 +252 216 136 +100 96 120 +60 60 76 +232 172 48 +252 192 88 +0 0 0 +20 20 24 +232 104 20 +172 224 220 +252 168 80 +96 196 228 +0 0 0 diff --git a/graphics/pokemon/dottler/overworld_shiny.pal b/graphics/pokemon/dottler/overworld_shiny.pal new file mode 100644 index 000000000000..b4f2a1978a93 --- /dev/null +++ b/graphics/pokemon/dottler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +32 252 12 +49 41 57 +98 197 230 +255 255 255 +180 164 222 +98 98 123 +57 57 74 +131 123 164 +156 148 197 +0 0 0 +16 16 24 +238 106 16 +172 230 222 +255 172 82 +98 197 230 +0 0 0 diff --git a/graphics/pokemon/doublade/overworld.png b/graphics/pokemon/doublade/overworld.png new file mode 100644 index 000000000000..93b31c056763 Binary files /dev/null and b/graphics/pokemon/doublade/overworld.png differ diff --git a/graphics/pokemon/doublade/overworld_normal.pal b/graphics/pokemon/doublade/overworld_normal.pal new file mode 100644 index 000000000000..76af98f462cf --- /dev/null +++ b/graphics/pokemon/doublade/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 52 81 +16 16 16 +48 47 47 +157 77 143 +185 171 151 +127 110 94 +238 155 191 +156 141 123 +251 254 255 +207 126 177 +185 171 151 +81 78 78 +127 110 94 +156 141 123 +0 0 0 diff --git a/graphics/pokemon/doublade/overworld_shiny.pal b/graphics/pokemon/doublade/overworld_shiny.pal new file mode 100644 index 000000000000..d1fb5b574bee --- /dev/null +++ b/graphics/pokemon/doublade/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +67 40 86 +16 16 16 +48 47 47 +109 66 132 +152 150 149 +106 104 103 +247 223 143 +126 123 122 +251 254 255 +197 171 112 +185 171 151 +81 78 78 +127 110 94 +156 141 123 +0 0 0 diff --git a/graphics/pokemon/dracovish/overworld.png b/graphics/pokemon/dracovish/overworld.png new file mode 100644 index 000000000000..16efb8cc148c Binary files /dev/null and b/graphics/pokemon/dracovish/overworld.png differ diff --git a/graphics/pokemon/dracovish/overworld_normal.pal b/graphics/pokemon/dracovish/overworld_normal.pal new file mode 100644 index 000000000000..9a08cd6df10f --- /dev/null +++ b/graphics/pokemon/dracovish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +12 252 96 +0 0 0 +44 20 24 +12 48 48 +0 108 92 +244 72 88 +244 88 100 +0 20 16 +236 120 128 +100 136 160 +240 132 144 +252 168 176 +172 184 192 +152 204 236 +216 236 252 +252 252 252 diff --git a/graphics/pokemon/dracovish/overworld_shiny.pal b/graphics/pokemon/dracovish/overworld_shiny.pal new file mode 100644 index 000000000000..d8b11a9e9490 --- /dev/null +++ b/graphics/pokemon/dracovish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 24 24 +90 82 82 +131 123 123 +24 24 24 +98 90 115 +24 24 24 +57 57 57 +156 164 156 +139 123 156 +74 74 74 +172 189 197 +189 205 189 +222 238 213 +255 255 255 diff --git a/graphics/pokemon/dracozolt/overworld.png b/graphics/pokemon/dracozolt/overworld.png new file mode 100644 index 000000000000..8cbd25de4adf Binary files /dev/null and b/graphics/pokemon/dracozolt/overworld.png differ diff --git a/graphics/pokemon/dracozolt/overworld_normal.pal b/graphics/pokemon/dracozolt/overworld_normal.pal new file mode 100644 index 000000000000..11b3c9f0464e --- /dev/null +++ b/graphics/pokemon/dracozolt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +92 92 40 +216 216 128 +0 0 0 +252 252 164 +244 72 88 +0 108 92 +20 40 36 +244 208 44 +252 168 176 +188 156 12 +244 72 88 +236 120 128 +240 164 112 +188 124 80 +196 196 124 diff --git a/graphics/pokemon/dracozolt/overworld_shiny.pal b/graphics/pokemon/dracozolt/overworld_shiny.pal new file mode 100644 index 000000000000..7f93f86fd687 --- /dev/null +++ b/graphics/pokemon/dracozolt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 41 41 +213 213 205 +0 0 0 +238 238 230 +131 115 148 +131 123 115 +82 74 74 +213 213 205 +98 115 131 +156 156 156 +57 65 82 +82 98 115 +197 172 230 +131 115 148 +164 156 156 diff --git a/graphics/pokemon/dragalge/overworld.png b/graphics/pokemon/dragalge/overworld.png new file mode 100644 index 000000000000..b19bc7d03c45 Binary files /dev/null and b/graphics/pokemon/dragalge/overworld.png differ diff --git a/graphics/pokemon/dragalge/overworld_normal.pal b/graphics/pokemon/dragalge/overworld_normal.pal new file mode 100644 index 000000000000..fab860d1e0f0 --- /dev/null +++ b/graphics/pokemon/dragalge/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +40 63 31 +54 33 27 +123 179 61 +158 56 92 +195 65 104 +16 16 16 +91 125 51 +54 33 27 +131 87 62 +109 67 49 +222 148 200 +173 98 156 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dragalge/overworld_shiny.pal b/graphics/pokemon/dragalge/overworld_shiny.pal new file mode 100644 index 000000000000..28e15a75429a --- /dev/null +++ b/graphics/pokemon/dragalge/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +139 121 53 +83 130 65 +255 234 156 +129 180 110 +165 216 144 +16 16 16 +198 176 94 +93 56 73 +179 126 152 +141 89 114 +183 247 247 +119 195 195 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dragapult/overworld.png b/graphics/pokemon/dragapult/overworld.png new file mode 100644 index 000000000000..cae22a731aba Binary files /dev/null and b/graphics/pokemon/dragapult/overworld.png differ diff --git a/graphics/pokemon/dragapult/overworld_normal.pal b/graphics/pokemon/dragapult/overworld_normal.pal new file mode 100644 index 000000000000..944e5572f689 --- /dev/null +++ b/graphics/pokemon/dragapult/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +4 8 8 +48 72 84 +96 136 120 +228 96 116 +172 60 76 +72 100 112 +16 40 44 +96 28 36 +216 212 104 +232 228 52 +252 248 140 +208 244 244 +56 152 152 +92 200 200 +228 96 116 diff --git a/graphics/pokemon/dragapult/overworld_shiny.pal b/graphics/pokemon/dragapult/overworld_shiny.pal new file mode 100644 index 000000000000..e81e1be403d0 --- /dev/null +++ b/graphics/pokemon/dragapult/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 8 +49 74 82 +74 164 189 +238 255 74 +189 197 49 +74 98 115 +16 41 41 +106 115 24 +148 164 164 +238 230 49 +213 238 238 +213 238 238 +57 156 156 +90 205 205 +222 82 106 diff --git a/graphics/pokemon/dragonair/overworld.png b/graphics/pokemon/dragonair/overworld.png new file mode 100644 index 000000000000..6186bbad5aff Binary files /dev/null and b/graphics/pokemon/dragonair/overworld.png differ diff --git a/graphics/pokemon/dragonair/overworld_normal.pal b/graphics/pokemon/dragonair/overworld_normal.pal new file mode 100644 index 000000000000..50e4ce59c79b --- /dev/null +++ b/graphics/pokemon/dragonair/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +0 0 0 +240 240 240 +48 64 104 +208 208 208 +112 176 240 +160 200 248 +104 104 104 +80 144 216 +88 176 216 +232 232 248 +40 120 168 +80 112 176 +144 40 32 +0 0 0 diff --git a/graphics/pokemon/dragonair/overworld_shiny.pal b/graphics/pokemon/dragonair/overworld_shiny.pal new file mode 100644 index 000000000000..9ba2f48f7d0b --- /dev/null +++ b/graphics/pokemon/dragonair/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +0 0 0 +240 240 240 +96 64 96 +208 208 208 +216 160 248 +240 200 248 +104 104 104 +176 128 208 +248 216 120 +232 232 248 +248 168 32 +152 104 152 +144 40 32 +0 0 0 diff --git a/graphics/pokemon/dragonite/overworld.png b/graphics/pokemon/dragonite/overworld.png new file mode 100644 index 000000000000..fbb49598d3d3 Binary files /dev/null and b/graphics/pokemon/dragonite/overworld.png differ diff --git a/graphics/pokemon/dragonite/overworld_normal.pal b/graphics/pokemon/dragonite/overworld_normal.pal new file mode 100644 index 000000000000..d0b3851741db --- /dev/null +++ b/graphics/pokemon/dragonite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 32 +0 0 0 +232 200 152 +216 136 64 +240 176 80 +152 96 48 +56 128 112 +40 96 80 +232 232 248 +96 96 96 +184 192 208 +208 168 120 +184 128 64 +152 152 152 +0 0 0 diff --git a/graphics/pokemon/dragonite/overworld_shiny.pal b/graphics/pokemon/dragonite/overworld_shiny.pal new file mode 100644 index 000000000000..9957a95f9804 --- /dev/null +++ b/graphics/pokemon/dragonite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 56 32 +0 0 0 +232 200 152 +112 144 72 +160 192 96 +64 104 48 +176 88 128 +128 64 112 +232 232 248 +96 96 96 +184 192 208 +208 168 120 +184 128 64 +152 152 152 +0 0 0 diff --git a/graphics/pokemon/drakloak/overworld.png b/graphics/pokemon/drakloak/overworld.png new file mode 100644 index 000000000000..4dbcfd72a40d Binary files /dev/null and b/graphics/pokemon/drakloak/overworld.png differ diff --git a/graphics/pokemon/drakloak/overworld_normal.pal b/graphics/pokemon/drakloak/overworld_normal.pal new file mode 100644 index 000000000000..4237502ce8c6 --- /dev/null +++ b/graphics/pokemon/drakloak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +104 36 44 +0 4 4 +252 112 132 +28 44 48 +104 36 44 +216 84 104 +136 164 156 +96 136 120 +72 100 108 +252 248 140 +216 212 104 +48 72 84 +232 228 52 +92 136 132 +128 176 176 diff --git a/graphics/pokemon/drakloak/overworld_shiny.pal b/graphics/pokemon/drakloak/overworld_shiny.pal new file mode 100644 index 000000000000..3ee7b64a1758 --- /dev/null +++ b/graphics/pokemon/drakloak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 0 +0 8 8 +230 238 24 +0 57 82 +106 32 49 +197 65 90 +131 172 180 +90 148 148 +8 106 148 +156 205 213 +131 172 180 +0 82 115 +230 238 24 +90 148 148 +131 172 180 diff --git a/graphics/pokemon/drampa/overworld.png b/graphics/pokemon/drampa/overworld.png new file mode 100644 index 000000000000..8b92f1196c2f Binary files /dev/null and b/graphics/pokemon/drampa/overworld.png differ diff --git a/graphics/pokemon/drampa/overworld_normal.pal b/graphics/pokemon/drampa/overworld_normal.pal new file mode 100644 index 000000000000..5749f136083a --- /dev/null +++ b/graphics/pokemon/drampa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +239 239 231 +205 200 190 +185 201 156 +247 170 206 +156 146 126 +102 188 176 +139 154 118 +86 150 145 +241 139 198 +181 105 16 +195 91 151 +74 71 62 +72 123 125 +52 83 89 +0 0 0 diff --git a/graphics/pokemon/drampa/overworld_shiny.pal b/graphics/pokemon/drampa/overworld_shiny.pal new file mode 100644 index 000000000000..de7f5f00ef24 --- /dev/null +++ b/graphics/pokemon/drampa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +239 239 231 +205 200 190 +240 232 144 +247 170 206 +156 146 126 +224 176 112 +139 154 118 +200 120 64 +241 139 198 +40 48 72 +195 91 151 +74 71 62 +72 123 125 +64 80 112 +0 0 0 diff --git a/graphics/pokemon/drapion/overworld.png b/graphics/pokemon/drapion/overworld.png new file mode 100644 index 000000000000..8490d39a7127 Binary files /dev/null and b/graphics/pokemon/drapion/overworld.png differ diff --git a/graphics/pokemon/drapion/overworld_normal.pal b/graphics/pokemon/drapion/overworld_normal.pal new file mode 100644 index 000000000000..63d1088a1089 --- /dev/null +++ b/graphics/pokemon/drapion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 56 +176 184 192 +144 96 160 +72 48 80 +32 120 112 +0 0 0 +168 136 200 +40 160 152 +104 64 112 +232 232 248 +120 128 136 +80 32 72 +128 88 168 +32 32 40 +0 0 0 diff --git a/graphics/pokemon/drapion/overworld_shiny.pal b/graphics/pokemon/drapion/overworld_shiny.pal new file mode 100644 index 000000000000..e0f3bd1a7baf --- /dev/null +++ b/graphics/pokemon/drapion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 8 16 +176 184 192 +200 96 136 +128 24 48 +32 120 112 +0 0 0 +208 104 160 +40 160 152 +168 40 80 +232 232 248 +120 128 136 +80 32 72 +184 64 128 +32 32 40 +0 0 0 diff --git a/graphics/pokemon/dratini/overworld.png b/graphics/pokemon/dratini/overworld.png new file mode 100644 index 000000000000..1a744c59f10b Binary files /dev/null and b/graphics/pokemon/dratini/overworld.png differ diff --git a/graphics/pokemon/dratini/overworld_normal.pal b/graphics/pokemon/dratini/overworld_normal.pal new file mode 100644 index 000000000000..dd8d13fb5641 --- /dev/null +++ b/graphics/pokemon/dratini/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +216 216 216 +0 0 0 +56 64 96 +192 192 216 +128 136 208 +152 160 224 +96 112 168 +232 232 248 +104 104 104 +144 40 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dratini/overworld_shiny.pal b/graphics/pokemon/dratini/overworld_shiny.pal new file mode 100644 index 000000000000..de7653816480 --- /dev/null +++ b/graphics/pokemon/dratini/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +216 216 216 +0 0 0 +96 64 96 +192 192 216 +184 136 224 +208 160 248 +160 112 208 +232 232 248 +104 104 104 +144 40 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/drednaw/overworld.png b/graphics/pokemon/drednaw/overworld.png new file mode 100644 index 000000000000..7514ada70136 Binary files /dev/null and b/graphics/pokemon/drednaw/overworld.png differ diff --git a/graphics/pokemon/drednaw/overworld_normal.pal b/graphics/pokemon/drednaw/overworld_normal.pal new file mode 100644 index 000000000000..ff9e1ac8a9f3 --- /dev/null +++ b/graphics/pokemon/drednaw/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +12 252 96 +0 0 0 +84 40 24 +108 48 32 +64 112 120 +148 108 28 +144 68 40 +200 152 96 +220 168 60 +224 184 100 +72 120 128 +92 156 168 +112 168 176 +228 196 128 +148 184 192 +252 252 252 diff --git a/graphics/pokemon/drednaw/overworld_shiny.pal b/graphics/pokemon/drednaw/overworld_shiny.pal new file mode 100644 index 000000000000..032ee7c779c7 --- /dev/null +++ b/graphics/pokemon/drednaw/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +41 24 24 +65 49 32 +0 24 8 +82 41 16 +90 65 49 +222 164 57 +180 90 49 +213 106 57 +16 74 41 +16 74 41 +16 74 41 +230 197 131 +32 115 65 +238 238 255 diff --git a/graphics/pokemon/dreepy/overworld.png b/graphics/pokemon/dreepy/overworld.png new file mode 100644 index 000000000000..15666515741c Binary files /dev/null and b/graphics/pokemon/dreepy/overworld.png differ diff --git a/graphics/pokemon/dreepy/overworld_normal.pal b/graphics/pokemon/dreepy/overworld_normal.pal new file mode 100644 index 000000000000..e36e561c8517 --- /dev/null +++ b/graphics/pokemon/dreepy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +100 32 40 +28 44 36 +0 0 0 +252 112 132 +112 160 132 +176 60 76 +216 84 104 +136 164 156 +96 136 120 +144 188 160 +108 36 48 +68 104 88 +176 60 76 +252 248 140 +0 0 0 diff --git a/graphics/pokemon/dreepy/overworld_shiny.pal b/graphics/pokemon/dreepy/overworld_shiny.pal new file mode 100644 index 000000000000..2afaf14cc75b --- /dev/null +++ b/graphics/pokemon/dreepy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 0 +16 41 49 +0 0 0 +246 246 115 +115 164 131 +189 57 82 +222 98 115 +115 205 230 +74 164 189 +148 189 164 +106 32 49 +32 82 98 +230 238 16 +255 255 139 +0 0 0 diff --git a/graphics/pokemon/drifblim/overworld.png b/graphics/pokemon/drifblim/overworld.png new file mode 100644 index 000000000000..ff4dcf65c525 Binary files /dev/null and b/graphics/pokemon/drifblim/overworld.png differ diff --git a/graphics/pokemon/drifblim/overworld_normal.pal b/graphics/pokemon/drifblim/overworld_normal.pal new file mode 100644 index 000000000000..ac241c17f125 --- /dev/null +++ b/graphics/pokemon/drifblim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 112 +64 64 64 +232 232 248 +168 160 200 +0 0 0 +88 64 120 +128 96 184 +152 120 224 +136 120 56 +208 176 88 +216 16 40 +104 16 24 +104 104 128 +128 128 152 +48 48 48 diff --git a/graphics/pokemon/drifblim/overworld_shiny.pal b/graphics/pokemon/drifblim/overworld_shiny.pal new file mode 100644 index 000000000000..cd5344a2e8bc --- /dev/null +++ b/graphics/pokemon/drifblim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +200 128 216 +192 160 56 +64 64 64 +232 232 248 +192 184 136 +0 0 0 +192 128 0 +240 208 88 +240 208 88 +32 112 136 +112 176 200 +24 216 16 +16 104 16 +184 144 8 +240 208 88 +48 48 48 diff --git a/graphics/pokemon/drifloon/overworld.png b/graphics/pokemon/drifloon/overworld.png new file mode 100644 index 000000000000..321190861119 Binary files /dev/null and b/graphics/pokemon/drifloon/overworld.png differ diff --git a/graphics/pokemon/drifloon/overworld_normal.pal b/graphics/pokemon/drifloon/overworld_normal.pal new file mode 100644 index 000000000000..f89e056781a6 --- /dev/null +++ b/graphics/pokemon/drifloon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 112 +168 160 200 +232 232 248 +0 0 0 +88 64 120 +64 64 64 +128 96 184 +168 136 224 +224 176 88 +136 120 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/drifloon/overworld_shiny.pal b/graphics/pokemon/drifloon/overworld_shiny.pal new file mode 100644 index 000000000000..0287fab8e594 --- /dev/null +++ b/graphics/pokemon/drifloon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 112 +168 160 200 +232 232 248 +0 0 0 +192 128 0 +64 64 64 +240 208 88 +248 224 184 +136 200 200 +16 128 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/drilbur/overworld.png b/graphics/pokemon/drilbur/overworld.png new file mode 100644 index 000000000000..9d1c7ddcf8dc Binary files /dev/null and b/graphics/pokemon/drilbur/overworld.png differ diff --git a/graphics/pokemon/drilbur/overworld_normal.pal b/graphics/pokemon/drilbur/overworld_normal.pal new file mode 100644 index 000000000000..34ab39137a68 --- /dev/null +++ b/graphics/pokemon/drilbur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +40 40 40 +11 11 11 +55 55 55 +55 55 55 +87 87 87 +0 0 0 +208 208 208 +229 229 247 +155 155 155 +63 63 79 +236 147 129 +87 95 121 +199 112 95 +0 0 0 diff --git a/graphics/pokemon/drilbur/overworld_shiny.pal b/graphics/pokemon/drilbur/overworld_shiny.pal new file mode 100644 index 000000000000..87c4e96618b1 --- /dev/null +++ b/graphics/pokemon/drilbur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +48 48 48 +11 11 11 +55 55 55 +64 64 64 +87 87 87 +0 0 0 +208 208 208 +229 229 247 +155 155 155 +152 72 104 +136 184 216 +184 112 136 +40 96 136 +0 0 0 diff --git a/graphics/pokemon/drizzile/overworld.png b/graphics/pokemon/drizzile/overworld.png new file mode 100644 index 000000000000..c4eb47d930e7 Binary files /dev/null and b/graphics/pokemon/drizzile/overworld.png differ diff --git a/graphics/pokemon/drizzile/overworld_normal.pal b/graphics/pokemon/drizzile/overworld_normal.pal new file mode 100644 index 000000000000..a18b3f533e24 --- /dev/null +++ b/graphics/pokemon/drizzile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 108 +64 88 36 +24 60 96 +72 48 84 +24 72 88 +116 160 64 +0 4 8 +164 216 104 +40 96 136 +128 84 152 +60 148 184 +64 156 192 +116 184 212 +172 128 196 +8 88 184 +232 232 232 diff --git a/graphics/pokemon/drizzile/overworld_shiny.pal b/graphics/pokemon/drizzile/overworld_shiny.pal new file mode 100644 index 000000000000..c991a792d45f --- /dev/null +++ b/graphics/pokemon/drizzile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 49 74 +8 164 180 +90 49 74 +41 57 82 +164 90 148 +0 0 0 +246 131 189 +8 213 238 +164 90 148 +57 148 189 +82 131 172 +106 156 205 +172 131 197 +41 115 139 +238 238 238 diff --git a/graphics/pokemon/drowzee/overworld.png b/graphics/pokemon/drowzee/overworld.png new file mode 100644 index 000000000000..0d34c68c7f7a Binary files /dev/null and b/graphics/pokemon/drowzee/overworld.png differ diff --git a/graphics/pokemon/drowzee/overworld_normal.pal b/graphics/pokemon/drowzee/overworld_normal.pal new file mode 100644 index 000000000000..53a5a66ac623 --- /dev/null +++ b/graphics/pokemon/drowzee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 48 +0 0 0 +120 104 32 +232 200 80 +184 152 40 +104 80 120 +232 232 248 +48 48 48 +88 80 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/drowzee/overworld_shiny.pal b/graphics/pokemon/drowzee/overworld_shiny.pal new file mode 100644 index 000000000000..68dbf146621f --- /dev/null +++ b/graphics/pokemon/drowzee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 56 +0 0 0 +128 80 112 +200 176 184 +168 128 152 +128 80 96 +232 232 248 +48 48 48 +104 56 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/druddigon/overworld.png b/graphics/pokemon/druddigon/overworld.png new file mode 100644 index 000000000000..6bcdebf3081f Binary files /dev/null and b/graphics/pokemon/druddigon/overworld.png differ diff --git a/graphics/pokemon/druddigon/overworld_normal.pal b/graphics/pokemon/druddigon/overworld_normal.pal new file mode 100644 index 000000000000..10535d161123 --- /dev/null +++ b/graphics/pokemon/druddigon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 16 49 +15 15 15 +16 49 98 +213 0 65 +148 0 65 +49 106 172 +16 74 139 +206 194 144 +206 194 144 +88 80 62 +139 123 90 +206 194 144 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/druddigon/overworld_shiny.pal b/graphics/pokemon/druddigon/overworld_shiny.pal new file mode 100644 index 000000000000..4f6cf407e125 --- /dev/null +++ b/graphics/pokemon/druddigon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 16 49 +15 15 15 +32 80 32 +248 152 8 +144 64 0 +16 152 24 +24 112 16 +207 207 220 +112 232 0 +88 80 62 +141 95 84 +207 183 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dubwool/overworld.png b/graphics/pokemon/dubwool/overworld.png new file mode 100644 index 000000000000..d9d4a3bc2811 Binary files /dev/null and b/graphics/pokemon/dubwool/overworld.png differ diff --git a/graphics/pokemon/dubwool/overworld_normal.pal b/graphics/pokemon/dubwool/overworld_normal.pal new file mode 100644 index 000000000000..a056c5b56313 --- /dev/null +++ b/graphics/pokemon/dubwool/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 192 +0 0 0 +40 32 28 +28 32 32 +64 48 44 +64 68 72 +100 68 72 +92 100 104 +108 108 108 +20 12 12 +248 252 116 +64 48 44 +200 200 200 +240 212 216 +252 252 252 +236 236 236 diff --git a/graphics/pokemon/dubwool/overworld_shiny.pal b/graphics/pokemon/dubwool/overworld_shiny.pal new file mode 100644 index 000000000000..48e8b3e5c030 --- /dev/null +++ b/graphics/pokemon/dubwool/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +197 197 197 +24 32 32 +255 255 255 +74 65 74 +98 65 74 +90 98 106 +0 0 0 +16 8 8 +255 255 115 +65 32 32 +24 24 24 +41 24 24 +49 41 41 +49 41 41 diff --git a/graphics/pokemon/ducklett/overworld.png b/graphics/pokemon/ducklett/overworld.png new file mode 100644 index 000000000000..d05f7cb8d710 Binary files /dev/null and b/graphics/pokemon/ducklett/overworld.png differ diff --git a/graphics/pokemon/ducklett/overworld_normal.pal b/graphics/pokemon/ducklett/overworld_normal.pal new file mode 100644 index 000000000000..0d22d152b0af --- /dev/null +++ b/graphics/pokemon/ducklett/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +10 61 77 +44 196 215 +147 227 236 +164 155 87 +229 229 247 +177 177 177 +245 245 63 +95 95 55 +63 203 219 +40 63 104 +33 172 218 +18 129 164 +194 177 109 +0 0 0 diff --git a/graphics/pokemon/ducklett/overworld_shiny.pal b/graphics/pokemon/ducklett/overworld_shiny.pal new file mode 100644 index 000000000000..7ed37a370b57 --- /dev/null +++ b/graphics/pokemon/ducklett/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 72 128 +216 128 176 +248 176 184 +164 155 87 +229 229 247 +177 177 177 +245 245 63 +95 95 55 +248 176 184 +96 72 128 +176 112 208 +152 88 168 +194 177 109 +0 0 0 diff --git a/graphics/pokemon/dugtrio/alolan/overworld.png b/graphics/pokemon/dugtrio/alolan/overworld.png new file mode 100644 index 000000000000..b6c5d11209ae Binary files /dev/null and b/graphics/pokemon/dugtrio/alolan/overworld.png differ diff --git a/graphics/pokemon/dugtrio/alolan/overworld_normal.pal b/graphics/pokemon/dugtrio/alolan/overworld_normal.pal new file mode 100644 index 000000000000..12cf548756e1 --- /dev/null +++ b/graphics/pokemon/dugtrio/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +255 214 243 +242 188 82 +163 126 20 +197 115 65 +148 86 48 +149 69 115 +107 84 14 +233 122 186 +197 35 136 +90 49 24 +60 59 59 +112 112 112 +47 47 47 +149 149 149 diff --git a/graphics/pokemon/dugtrio/alolan/overworld_shiny.pal b/graphics/pokemon/dugtrio/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..dfea0fb76dcb --- /dev/null +++ b/graphics/pokemon/dugtrio/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +255 214 243 +242 188 82 +163 126 20 +229 88 72 +175 66 54 +80 87 138 +107 84 14 +137 147 217 +57 77 174 +100 25 14 +60 59 59 +112 112 112 +47 47 47 +149 149 149 diff --git a/graphics/pokemon/dugtrio/overworld.png b/graphics/pokemon/dugtrio/overworld.png new file mode 100644 index 000000000000..997c8b5f7e06 Binary files /dev/null and b/graphics/pokemon/dugtrio/overworld.png differ diff --git a/graphics/pokemon/dugtrio/overworld_normal.pal b/graphics/pokemon/dugtrio/overworld_normal.pal new file mode 100644 index 000000000000..487bcf3ac0cd --- /dev/null +++ b/graphics/pokemon/dugtrio/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 40 16 +152 120 56 +112 72 32 +200 200 200 +128 16 48 +136 104 56 +208 64 104 +232 120 152 +152 32 72 +64 64 64 +112 112 112 +168 168 168 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dugtrio/overworld_shiny.pal b/graphics/pokemon/dugtrio/overworld_shiny.pal new file mode 100644 index 000000000000..a11109d5e7a7 --- /dev/null +++ b/graphics/pokemon/dugtrio/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 40 16 +152 120 56 +112 72 32 +200 200 200 +0 48 80 +136 104 56 +56 136 216 +136 192 248 +24 80 160 +64 64 64 +112 112 112 +168 168 168 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dunsparce/overworld.png b/graphics/pokemon/dunsparce/overworld.png new file mode 100644 index 000000000000..c95127f2adc1 Binary files /dev/null and b/graphics/pokemon/dunsparce/overworld.png differ diff --git a/graphics/pokemon/dunsparce/overworld_normal.pal b/graphics/pokemon/dunsparce/overworld_normal.pal new file mode 100644 index 000000000000..b9da33e354b1 --- /dev/null +++ b/graphics/pokemon/dunsparce/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 56 +248 232 112 +192 168 0 +216 192 0 +152 136 104 +24 56 72 +64 80 96 +80 160 184 +248 224 160 +232 232 248 +120 192 216 +136 184 224 +184 208 240 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dunsparce/overworld_shiny.pal b/graphics/pokemon/dunsparce/overworld_shiny.pal new file mode 100644 index 000000000000..fb39cb1d277c --- /dev/null +++ b/graphics/pokemon/dunsparce/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 56 +248 232 112 +192 168 0 +216 192 0 +152 136 104 +64 32 72 +64 80 96 +184 80 200 +248 224 160 +232 232 248 +216 136 224 +168 144 168 +192 168 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/duosion/overworld.png b/graphics/pokemon/duosion/overworld.png new file mode 100644 index 000000000000..6e0819c46ad8 Binary files /dev/null and b/graphics/pokemon/duosion/overworld.png differ diff --git a/graphics/pokemon/duosion/overworld_normal.pal b/graphics/pokemon/duosion/overworld_normal.pal new file mode 100644 index 000000000000..2a71820b18d9 --- /dev/null +++ b/graphics/pokemon/duosion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +54 117 54 +85 185 117 +85 117 117 +185 216 185 +151 185 117 +117 220 117 +234 234 245 +0 0 0 +234 93 137 +244 128 244 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/duosion/overworld_shiny.pal b/graphics/pokemon/duosion/overworld_shiny.pal new file mode 100644 index 000000000000..ad761d41eb60 --- /dev/null +++ b/graphics/pokemon/duosion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 96 120 +88 176 168 +96 112 80 +216 224 168 +168 168 120 +136 216 248 +234 234 245 +0 0 0 +168 64 80 +128 24 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/duraludon/overworld.png b/graphics/pokemon/duraludon/overworld.png new file mode 100644 index 000000000000..0c8228abcb18 Binary files /dev/null and b/graphics/pokemon/duraludon/overworld.png differ diff --git a/graphics/pokemon/duraludon/overworld_normal.pal b/graphics/pokemon/duraludon/overworld_normal.pal new file mode 100644 index 000000000000..7e26475605b5 --- /dev/null +++ b/graphics/pokemon/duraludon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +115 98 115 +16 16 16 +230 230 246 +82 98 139 +131 131 156 +189 180 189 +41 49 82 +205 172 16 +255 213 98 +172 148 172 +106 24 24 +90 82 8 +156 32 32 +205 74 74 +238 123 123 diff --git a/graphics/pokemon/duraludon/overworld_shiny.pal b/graphics/pokemon/duraludon/overworld_shiny.pal new file mode 100644 index 000000000000..8b3e89163ae2 --- /dev/null +++ b/graphics/pokemon/duraludon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +106 131 115 +16 16 16 +238 238 222 +65 98 156 +123 123 164 +180 197 189 +32 49 90 +205 156 16 +255 197 98 +139 164 148 +90 90 90 +90 74 8 +131 131 131 +172 172 172 +213 213 213 diff --git a/graphics/pokemon/durant/overworld.png b/graphics/pokemon/durant/overworld.png new file mode 100644 index 000000000000..2ac0b505a99b Binary files /dev/null and b/graphics/pokemon/durant/overworld.png differ diff --git a/graphics/pokemon/durant/overworld_normal.pal b/graphics/pokemon/durant/overworld_normal.pal new file mode 100644 index 000000000000..a5a0c7fcc436 --- /dev/null +++ b/graphics/pokemon/durant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +66 66 66 +189 189 189 +132 132 115 +40 40 40 +223 237 142 +49 49 49 +99 99 90 +214 99 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/durant/overworld_shiny.pal b/graphics/pokemon/durant/overworld_shiny.pal new file mode 100644 index 000000000000..fe02680bdc7c --- /dev/null +++ b/graphics/pokemon/durant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 64 64 +216 184 168 +184 152 144 +66 66 66 +40 40 40 +49 49 49 +99 99 90 +214 99 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dusclops/overworld.png b/graphics/pokemon/dusclops/overworld.png new file mode 100644 index 000000000000..1efad8ec93fd Binary files /dev/null and b/graphics/pokemon/dusclops/overworld.png differ diff --git a/graphics/pokemon/dusclops/overworld_normal.pal b/graphics/pokemon/dusclops/overworld_normal.pal new file mode 100644 index 000000000000..5639076ddeba --- /dev/null +++ b/graphics/pokemon/dusclops/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 48 +0 0 0 +224 216 216 +184 176 176 +64 64 64 +136 120 112 +160 160 160 +120 120 120 +184 184 184 +232 232 248 +208 96 96 +144 32 32 +168 176 200 +104 88 80 +0 0 0 diff --git a/graphics/pokemon/dusclops/overworld_shiny.pal b/graphics/pokemon/dusclops/overworld_shiny.pal new file mode 100644 index 000000000000..814235da231a --- /dev/null +++ b/graphics/pokemon/dusclops/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 48 +0 0 0 +224 216 216 +184 176 176 +128 56 56 +136 120 112 +208 88 88 +176 72 72 +216 120 120 +232 232 248 +208 96 96 +144 32 32 +168 176 200 +104 88 80 +0 0 0 diff --git a/graphics/pokemon/dusknoir/overworld.png b/graphics/pokemon/dusknoir/overworld.png new file mode 100644 index 000000000000..6026e02e5b93 Binary files /dev/null and b/graphics/pokemon/dusknoir/overworld.png differ diff --git a/graphics/pokemon/dusknoir/overworld_normal.pal b/graphics/pokemon/dusknoir/overworld_normal.pal new file mode 100644 index 000000000000..5d25fe25349f --- /dev/null +++ b/graphics/pokemon/dusknoir/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 96 8 +240 176 0 +80 80 80 +200 128 16 +48 48 48 +120 120 120 +0 0 0 +160 160 160 +208 96 96 +144 32 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dusknoir/overworld_shiny.pal b/graphics/pokemon/dusknoir/overworld_shiny.pal new file mode 100644 index 000000000000..bd669cada045 --- /dev/null +++ b/graphics/pokemon/dusknoir/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 168 8 +232 224 48 +64 88 88 +184 192 24 +32 48 48 +104 144 144 +0 0 0 +144 184 176 +208 96 96 +144 32 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/duskull/overworld.png b/graphics/pokemon/duskull/overworld.png new file mode 100644 index 000000000000..5b19b52f0fe7 Binary files /dev/null and b/graphics/pokemon/duskull/overworld.png differ diff --git a/graphics/pokemon/duskull/overworld_normal.pal b/graphics/pokemon/duskull/overworld_normal.pal new file mode 100644 index 000000000000..3a1ef1c57ecb --- /dev/null +++ b/graphics/pokemon/duskull/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 56 +56 64 80 +104 112 144 +80 88 112 +0 0 0 +224 216 216 +200 184 184 +136 120 112 +144 32 32 +216 112 112 +192 56 56 +72 64 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/duskull/overworld_shiny.pal b/graphics/pokemon/duskull/overworld_shiny.pal new file mode 100644 index 000000000000..a6aec56f90f0 --- /dev/null +++ b/graphics/pokemon/duskull/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 8 8 +96 24 24 +192 56 56 +144 40 40 +0 0 0 +224 216 216 +200 184 184 +136 120 112 +144 32 32 +216 112 112 +192 56 56 +72 64 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dustox/overworld.png b/graphics/pokemon/dustox/overworld.png new file mode 100644 index 000000000000..a9436bcfdece Binary files /dev/null and b/graphics/pokemon/dustox/overworld.png differ diff --git a/graphics/pokemon/dustox/overworld_normal.pal b/graphics/pokemon/dustox/overworld_normal.pal new file mode 100644 index 000000000000..8fa7b93bc219 --- /dev/null +++ b/graphics/pokemon/dustox/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 144 248 +0 0 0 +64 88 32 +104 152 40 +96 72 32 +240 216 104 +144 112 56 +72 56 112 +160 144 216 +168 216 88 +120 96 168 +240 104 104 +184 48 72 +56 56 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dustox/overworld_shiny.pal b/graphics/pokemon/dustox/overworld_shiny.pal new file mode 100644 index 000000000000..e34210ad4cc2 --- /dev/null +++ b/graphics/pokemon/dustox/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 144 248 +0 0 0 +96 48 32 +184 128 56 +96 72 32 +240 216 104 +144 112 56 +72 56 112 +160 144 216 +240 176 104 +120 96 168 +240 104 104 +184 48 72 +56 56 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dwebble/overworld.png b/graphics/pokemon/dwebble/overworld.png new file mode 100644 index 000000000000..fe33f3a71b6c Binary files /dev/null and b/graphics/pokemon/dwebble/overworld.png differ diff --git a/graphics/pokemon/dwebble/overworld_normal.pal b/graphics/pokemon/dwebble/overworld_normal.pal new file mode 100644 index 000000000000..c55257d70b1a --- /dev/null +++ b/graphics/pokemon/dwebble/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 80 72 +160 152 136 +0 0 0 +120 112 112 +192 184 128 +232 232 248 +96 64 40 +232 152 72 +192 96 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dwebble/overworld_shiny.pal b/graphics/pokemon/dwebble/overworld_shiny.pal new file mode 100644 index 000000000000..0782375b6e57 --- /dev/null +++ b/graphics/pokemon/dwebble/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 80 72 +112 112 104 +0 0 0 +88 80 80 +120 152 32 +232 232 248 +80 24 16 +232 120 72 +208 64 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eelektrik/overworld.png b/graphics/pokemon/eelektrik/overworld.png new file mode 100644 index 000000000000..449b25ca595d Binary files /dev/null and b/graphics/pokemon/eelektrik/overworld.png differ diff --git a/graphics/pokemon/eelektrik/overworld_normal.pal b/graphics/pokemon/eelektrik/overworld_normal.pal new file mode 100644 index 000000000000..83febacc1b48 --- /dev/null +++ b/graphics/pokemon/eelektrik/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 64 +224 224 128 +192 160 128 +32 32 64 +32 96 128 +32 64 64 +224 192 0 +128 32 0 +0 0 0 +224 128 64 +236 255 255 +224 224 0 +192 64 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eelektrik/overworld_shiny.pal b/graphics/pokemon/eelektrik/overworld_shiny.pal new file mode 100644 index 000000000000..5b1f52ed60b1 --- /dev/null +++ b/graphics/pokemon/eelektrik/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 64 +159 227 0 +170 191 77 +32 32 64 +31 90 163 +31 90 163 +159 227 0 +128 32 0 +0 0 0 +213 107 53 +236 255 255 +159 227 0 +128 128 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eelektross/overworld.png b/graphics/pokemon/eelektross/overworld.png new file mode 100644 index 000000000000..094e7d46b0a8 Binary files /dev/null and b/graphics/pokemon/eelektross/overworld.png differ diff --git a/graphics/pokemon/eelektross/overworld_normal.pal b/graphics/pokemon/eelektross/overworld_normal.pal new file mode 100644 index 000000000000..7b9abbb4abea --- /dev/null +++ b/graphics/pokemon/eelektross/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 120 0 +0 32 49 +32 98 115 +115 180 205 +131 115 65 +16 49 65 +197 172 123 +242 200 0 +12 14 19 +92 92 92 +188 81 48 +198 190 163 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eelektross/overworld_shiny.pal b/graphics/pokemon/eelektross/overworld_shiny.pal new file mode 100644 index 000000000000..3d0e7cc1f564 --- /dev/null +++ b/graphics/pokemon/eelektross/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 120 0 +0 32 49 +48 160 112 +115 180 205 +112 144 168 +16 112 80 +176 208 224 +196 242 68 +12 14 19 +112 144 168 +183 79 109 +176 208 224 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eevee/overworld.png b/graphics/pokemon/eevee/overworld.png new file mode 100644 index 000000000000..9b29013b43b0 Binary files /dev/null and b/graphics/pokemon/eevee/overworld.png differ diff --git a/graphics/pokemon/eevee/overworld_normal.pal b/graphics/pokemon/eevee/overworld_normal.pal new file mode 100644 index 000000000000..aae9670b7832 --- /dev/null +++ b/graphics/pokemon/eevee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 48 24 +0 0 0 +192 144 80 +168 128 64 +128 96 48 +232 232 248 +120 96 64 +184 160 96 +224 208 168 +96 64 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eevee/overworld_shiny.pal b/graphics/pokemon/eevee/overworld_shiny.pal new file mode 100644 index 000000000000..266ba6885b73 --- /dev/null +++ b/graphics/pokemon/eevee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 40 +0 0 0 +208 192 184 +176 160 144 +144 128 112 +232 232 248 +128 128 120 +184 184 176 +216 216 216 +104 88 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eiscue/overworld.png b/graphics/pokemon/eiscue/overworld.png new file mode 100644 index 000000000000..5935fb72fdfa Binary files /dev/null and b/graphics/pokemon/eiscue/overworld.png differ diff --git a/graphics/pokemon/eiscue/overworld_normal.pal b/graphics/pokemon/eiscue/overworld_normal.pal new file mode 100644 index 000000000000..0194ad503e6b --- /dev/null +++ b/graphics/pokemon/eiscue/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +15 255 99 +0 0 0 +56 62 70 +232 252 254 +200 220 222 +145 155 175 +218 232 233 +169 181 206 +14 14 14 +199 199 199 +38 38 38 +255 255 255 +143 206 218 +117 166 175 +222 164 61 +250 194 94 diff --git a/graphics/pokemon/eiscue/overworld_shiny.pal b/graphics/pokemon/eiscue/overworld_shiny.pal new file mode 100644 index 000000000000..a32860185d71 --- /dev/null +++ b/graphics/pokemon/eiscue/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +98 74 98 +255 246 255 +255 222 255 +197 156 197 +230 189 230 +213 180 213 +172 106 139 +197 197 197 +189 123 156 +255 246 255 +255 205 255 +238 172 238 +222 164 57 +255 197 90 diff --git a/graphics/pokemon/ekans/overworld.png b/graphics/pokemon/ekans/overworld.png new file mode 100644 index 000000000000..d592065d67c9 Binary files /dev/null and b/graphics/pokemon/ekans/overworld.png differ diff --git a/graphics/pokemon/ekans/overworld_normal.pal b/graphics/pokemon/ekans/overworld_normal.pal new file mode 100644 index 000000000000..460fe3d3dc38 --- /dev/null +++ b/graphics/pokemon/ekans/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 104 +200 128 192 +144 96 144 +0 0 0 +112 96 40 +248 216 64 +208 160 48 +120 80 120 +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/ekans/overworld_shiny.pal b/graphics/pokemon/ekans/overworld_shiny.pal new file mode 100644 index 000000000000..a7c3c199eb70 --- /dev/null +++ b/graphics/pokemon/ekans/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 48 +192 200 120 +136 152 64 +0 0 0 +104 112 48 +248 216 64 +208 160 48 +128 128 48 +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/eldegoss/overworld.png b/graphics/pokemon/eldegoss/overworld.png new file mode 100644 index 000000000000..113a8c690bbc Binary files /dev/null and b/graphics/pokemon/eldegoss/overworld.png differ diff --git a/graphics/pokemon/eldegoss/overworld_normal.pal b/graphics/pokemon/eldegoss/overworld_normal.pal new file mode 100644 index 000000000000..389c86496b66 --- /dev/null +++ b/graphics/pokemon/eldegoss/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +112 112 96 +248 248 212 +136 144 64 +136 88 56 +0 0 0 +204 196 176 +128 136 56 +176 176 56 +180 168 140 +184 176 64 +184 176 64 +152 96 48 +240 208 32 +232 228 104 +224 160 40 diff --git a/graphics/pokemon/eldegoss/overworld_shiny.pal b/graphics/pokemon/eldegoss/overworld_shiny.pal new file mode 100644 index 000000000000..0fb159592b36 --- /dev/null +++ b/graphics/pokemon/eldegoss/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +115 115 98 +255 255 213 +106 65 74 +246 246 189 +0 0 0 +205 197 180 +139 90 82 +255 180 148 +106 82 41 +115 115 98 +139 90 82 +0 0 0 +106 65 74 +139 90 82 +180 123 131 diff --git a/graphics/pokemon/electabuzz/overworld.png b/graphics/pokemon/electabuzz/overworld.png new file mode 100644 index 000000000000..8eabb6c8ff40 Binary files /dev/null and b/graphics/pokemon/electabuzz/overworld.png differ diff --git a/graphics/pokemon/electabuzz/overworld_normal.pal b/graphics/pokemon/electabuzz/overworld_normal.pal new file mode 100644 index 000000000000..9d1762d9a4e4 --- /dev/null +++ b/graphics/pokemon/electabuzz/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 32 +240 208 0 +0 0 0 +184 136 16 +72 80 80 +232 232 248 +48 48 48 +144 144 144 +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/electabuzz/overworld_shiny.pal b/graphics/pokemon/electabuzz/overworld_shiny.pal new file mode 100644 index 000000000000..b7418ac89b4c --- /dev/null +++ b/graphics/pokemon/electabuzz/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 32 +240 176 0 +0 0 0 +200 120 16 +72 80 80 +232 232 248 +48 48 48 +144 144 144 +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/electivire/overworld.png b/graphics/pokemon/electivire/overworld.png new file mode 100644 index 000000000000..eee454c9d81d Binary files /dev/null and b/graphics/pokemon/electivire/overworld.png differ diff --git a/graphics/pokemon/electivire/overworld_normal.pal b/graphics/pokemon/electivire/overworld_normal.pal new file mode 100644 index 000000000000..c38111523f4c --- /dev/null +++ b/graphics/pokemon/electivire/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 32 +240 208 0 +248 232 120 +184 136 16 +48 48 48 +240 96 112 +176 8 32 +0 0 0 +88 88 88 +72 24 32 +112 88 24 +192 192 208 +232 232 248 +144 144 144 +0 0 0 diff --git a/graphics/pokemon/electivire/overworld_shiny.pal b/graphics/pokemon/electivire/overworld_shiny.pal new file mode 100644 index 000000000000..dae78611d3de --- /dev/null +++ b/graphics/pokemon/electivire/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 24 16 +248 184 0 +248 208 120 +184 104 16 +48 48 48 +48 176 232 +48 88 152 +0 0 0 +88 88 88 +72 24 32 +112 88 24 +192 192 208 +232 232 248 +144 144 144 +0 0 0 diff --git a/graphics/pokemon/electrike/overworld.png b/graphics/pokemon/electrike/overworld.png new file mode 100644 index 000000000000..265a1a63b6e5 Binary files /dev/null and b/graphics/pokemon/electrike/overworld.png differ diff --git a/graphics/pokemon/electrike/overworld_normal.pal b/graphics/pokemon/electrike/overworld_normal.pal new file mode 100644 index 000000000000..c5769b84996a --- /dev/null +++ b/graphics/pokemon/electrike/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +112 80 24 +192 144 40 +32 56 8 +88 136 64 +0 0 0 +176 224 112 +152 200 96 +128 168 96 +248 208 64 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/electrike/overworld_shiny.pal b/graphics/pokemon/electrike/overworld_shiny.pal new file mode 100644 index 000000000000..90eb2cd788fc --- /dev/null +++ b/graphics/pokemon/electrike/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 80 24 +192 144 40 +32 56 88 +56 96 128 +0 0 0 +136 216 248 +112 176 208 +80 136 168 +248 208 64 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/electrode/hisuian/overworld.png b/graphics/pokemon/electrode/hisuian/overworld.png new file mode 100644 index 000000000000..f3297669aada Binary files /dev/null and b/graphics/pokemon/electrode/hisuian/overworld.png differ diff --git a/graphics/pokemon/electrode/hisuian/overworld_normal.pal b/graphics/pokemon/electrode/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..b39616c0cfc7 --- /dev/null +++ b/graphics/pokemon/electrode/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +106 74 32 +0 0 0 +238 180 82 +205 32 32 +246 222 139 +189 139 41 +156 106 32 +255 246 197 +238 238 238 +189 172 172 +82 74 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/electrode/hisuian/overworld_shiny.pal b/graphics/pokemon/electrode/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..c2cedbc2326e --- /dev/null +++ b/graphics/pokemon/electrode/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +106 74 32 +0 0 0 +238 180 82 +32 32 32 +246 222 139 +189 139 41 +156 106 32 +255 246 197 +238 238 238 +189 172 172 +82 74 65 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/electrode/overworld.png b/graphics/pokemon/electrode/overworld.png new file mode 100644 index 000000000000..50f529895065 Binary files /dev/null and b/graphics/pokemon/electrode/overworld.png differ diff --git a/graphics/pokemon/electrode/overworld_normal.pal b/graphics/pokemon/electrode/overworld_normal.pal new file mode 100644 index 000000000000..760c7082a1e9 --- /dev/null +++ b/graphics/pokemon/electrode/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +216 216 216 +232 232 248 +184 184 192 +104 104 104 +0 0 0 +200 32 32 +160 160 160 +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/electrode/overworld_shiny.pal b/graphics/pokemon/electrode/overworld_shiny.pal new file mode 100644 index 000000000000..12c20793b215 --- /dev/null +++ b/graphics/pokemon/electrode/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +216 216 216 +232 232 248 +184 184 192 +104 104 104 +0 0 0 +32 104 200 +160 160 160 +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/elekid/overworld.png b/graphics/pokemon/elekid/overworld.png new file mode 100644 index 000000000000..ea838908cd85 Binary files /dev/null and b/graphics/pokemon/elekid/overworld.png differ diff --git a/graphics/pokemon/elekid/overworld_normal.pal b/graphics/pokemon/elekid/overworld_normal.pal new file mode 100644 index 000000000000..16204e870a56 --- /dev/null +++ b/graphics/pokemon/elekid/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 0 +0 0 0 +248 168 0 +248 216 96 +232 232 248 +56 64 72 +192 112 0 +0 0 0 +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/elekid/overworld_shiny.pal b/graphics/pokemon/elekid/overworld_shiny.pal new file mode 100644 index 000000000000..85143102e02a --- /dev/null +++ b/graphics/pokemon/elekid/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 0 +0 0 0 +216 184 0 +216 224 96 +232 232 248 +56 64 72 +192 112 0 +0 0 0 +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/elgyem/overworld.png b/graphics/pokemon/elgyem/overworld.png new file mode 100644 index 000000000000..a6613905b72b Binary files /dev/null and b/graphics/pokemon/elgyem/overworld.png differ diff --git a/graphics/pokemon/elgyem/overworld_normal.pal b/graphics/pokemon/elgyem/overworld_normal.pal new file mode 100644 index 000000000000..9ac3a4d35a5d --- /dev/null +++ b/graphics/pokemon/elgyem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +7 59 25 +141 187 169 +74 124 106 +44 44 44 +82 82 90 +0 0 0 +74 124 106 +7 59 25 +141 187 169 +19 132 7 +187 0 0 +216 187 0 +82 74 7 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/elgyem/overworld_shiny.pal b/graphics/pokemon/elgyem/overworld_shiny.pal new file mode 100644 index 000000000000..8932c555d55a --- /dev/null +++ b/graphics/pokemon/elgyem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +48 88 112 +152 184 184 +96 136 144 +44 44 44 +82 82 90 +0 0 0 +74 124 106 +80 56 104 +141 187 169 +32 152 216 +168 64 136 +224 200 0 +82 74 7 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/emboar/overworld.png b/graphics/pokemon/emboar/overworld.png new file mode 100644 index 000000000000..06e17288d7ea Binary files /dev/null and b/graphics/pokemon/emboar/overworld.png differ diff --git a/graphics/pokemon/emboar/overworld_normal.pal b/graphics/pokemon/emboar/overworld_normal.pal new file mode 100644 index 000000000000..e9f672d506f8 --- /dev/null +++ b/graphics/pokemon/emboar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 32 +5 5 5 +48 48 48 +111 40 1 +216 85 36 +188 82 31 +119 19 12 +215 195 196 +230 49 41 +237 172 8 +180 139 32 +123 90 8 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/emboar/overworld_shiny.pal b/graphics/pokemon/emboar/overworld_shiny.pal new file mode 100644 index 000000000000..1c5459473dc7 --- /dev/null +++ b/graphics/pokemon/emboar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 41 41 +5 5 5 +41 41 41 +117 70 5 +229 130 31 +41 41 41 +41 41 41 +229 130 31 +128 152 224 +151 195 221 +128 152 224 +117 70 5 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/emolga/overworld.png b/graphics/pokemon/emolga/overworld.png new file mode 100644 index 000000000000..77e657c28e70 Binary files /dev/null and b/graphics/pokemon/emolga/overworld.png differ diff --git a/graphics/pokemon/emolga/overworld_normal.pal b/graphics/pokemon/emolga/overworld_normal.pal new file mode 100644 index 000000000000..e92fff7b853b --- /dev/null +++ b/graphics/pokemon/emolga/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +3 3 3 +54 54 54 +204 158 61 +25 25 54 +192 188 173 +40 40 40 +240 240 247 +235 214 0 +88 81 45 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/emolga/overworld_shiny.pal b/graphics/pokemon/emolga/overworld_shiny.pal new file mode 100644 index 000000000000..9e77aa55969c --- /dev/null +++ b/graphics/pokemon/emolga/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +3 3 3 +160 112 80 +210 163 39 +84 77 46 +219 204 152 +112 80 64 +247 247 247 +219 204 152 +84 77 46 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/empoleon/overworld.png b/graphics/pokemon/empoleon/overworld.png new file mode 100644 index 000000000000..3d81600cb782 Binary files /dev/null and b/graphics/pokemon/empoleon/overworld.png differ diff --git a/graphics/pokemon/empoleon/overworld_normal.pal b/graphics/pokemon/empoleon/overworld_normal.pal new file mode 100644 index 000000000000..6257260ecb1a --- /dev/null +++ b/graphics/pokemon/empoleon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +0 0 0 +208 136 24 +248 200 88 +40 40 40 +64 72 144 +80 128 160 +232 232 248 +120 192 240 +56 56 96 +184 192 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/empoleon/overworld_shiny.pal b/graphics/pokemon/empoleon/overworld_shiny.pal new file mode 100644 index 000000000000..441b13708818 --- /dev/null +++ b/graphics/pokemon/empoleon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +0 0 0 +208 136 24 +248 200 88 +40 40 40 +56 112 136 +96 160 176 +232 232 248 +136 216 240 +48 96 112 +184 192 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/enamorus/overworld.png b/graphics/pokemon/enamorus/overworld.png new file mode 100644 index 000000000000..077dae310a00 Binary files /dev/null and b/graphics/pokemon/enamorus/overworld.png differ diff --git a/graphics/pokemon/enamorus/overworld_normal.pal b/graphics/pokemon/enamorus/overworld_normal.pal new file mode 100644 index 000000000000..88fa42851ff7 --- /dev/null +++ b/graphics/pokemon/enamorus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +41 165 49 +0 0 0 +164 133 41 +230 117 156 +189 60 90 +172 72 82 +238 234 255 +32 36 32 +57 60 57 +205 202 222 +148 32 24 +255 198 57 +16 16 16 +246 85 139 +82 80 90 +115 48 57 diff --git a/graphics/pokemon/enamorus/therian/overworld.png b/graphics/pokemon/enamorus/therian/overworld.png new file mode 100644 index 000000000000..f588895eb276 Binary files /dev/null and b/graphics/pokemon/enamorus/therian/overworld.png differ diff --git a/graphics/pokemon/enamorus/therian/overworld_normal.pal b/graphics/pokemon/enamorus/therian/overworld_normal.pal new file mode 100644 index 000000000000..c799ddfb8975 --- /dev/null +++ b/graphics/pokemon/enamorus/therian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +80 80 88 +118 50 58 +232 232 248 +200 200 216 +224 116 156 +174 74 87 +16 16 16 +243 46 46 +199 46 41 +147 33 30 +243 84 143 +187 62 94 +247 238 76 +255 197 60 +0 0 0 diff --git a/graphics/pokemon/entei/overworld.png b/graphics/pokemon/entei/overworld.png new file mode 100644 index 000000000000..2b9bc83f4fa7 Binary files /dev/null and b/graphics/pokemon/entei/overworld.png differ diff --git a/graphics/pokemon/entei/overworld_normal.pal b/graphics/pokemon/entei/overworld_normal.pal new file mode 100644 index 000000000000..a6231855f054 --- /dev/null +++ b/graphics/pokemon/entei/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 120 +48 56 80 +232 232 248 +168 192 208 +72 48 40 +128 88 56 +0 0 0 +168 120 80 +112 136 144 +248 216 56 +192 136 24 +88 80 24 +216 72 32 +96 64 48 +168 24 0 diff --git a/graphics/pokemon/entei/overworld_shiny.pal b/graphics/pokemon/entei/overworld_shiny.pal new file mode 100644 index 000000000000..800f56ef16d4 --- /dev/null +++ b/graphics/pokemon/entei/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 120 +48 56 80 +232 232 248 +168 192 208 +72 32 48 +160 104 104 +0 0 0 +192 128 120 +112 136 144 +248 216 56 +192 136 24 +88 80 24 +176 176 192 +112 56 64 +128 128 144 diff --git a/graphics/pokemon/escavalier/overworld.png b/graphics/pokemon/escavalier/overworld.png new file mode 100644 index 000000000000..340131a534ce Binary files /dev/null and b/graphics/pokemon/escavalier/overworld.png differ diff --git a/graphics/pokemon/escavalier/overworld_normal.pal b/graphics/pokemon/escavalier/overworld_normal.pal new file mode 100644 index 000000000000..5920e3a5fec9 --- /dev/null +++ b/graphics/pokemon/escavalier/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +121 5 5 +16 16 16 +182 25 71 +236 33 71 +56 64 72 +138 138 147 +191 191 191 +192 80 0 +255 218 18 +182 147 18 +104 87 25 +25 47 79 +152 208 160 +40 95 255 +8 168 144 diff --git a/graphics/pokemon/escavalier/overworld_shiny.pal b/graphics/pokemon/escavalier/overworld_shiny.pal new file mode 100644 index 000000000000..d647cda1779b --- /dev/null +++ b/graphics/pokemon/escavalier/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 40 96 +16 16 16 +184 24 128 +248 56 184 +56 64 72 +152 152 96 +200 200 176 +192 80 0 +176 248 16 +128 168 24 +80 112 32 +8 64 48 +223 237 142 +8 120 104 +8 168 144 diff --git a/graphics/pokemon/espeon/overworld.png b/graphics/pokemon/espeon/overworld.png new file mode 100644 index 000000000000..158ba055c9b3 Binary files /dev/null and b/graphics/pokemon/espeon/overworld.png differ diff --git a/graphics/pokemon/espeon/overworld_normal.pal b/graphics/pokemon/espeon/overworld_normal.pal new file mode 100644 index 000000000000..80d1e3988e6e --- /dev/null +++ b/graphics/pokemon/espeon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 40 120 +240 200 232 +224 176 216 +168 104 160 +0 0 0 +200 144 208 +56 112 176 +200 56 48 +232 136 176 +232 232 248 +48 32 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/espeon/overworld_shiny.pal b/graphics/pokemon/espeon/overworld_shiny.pal new file mode 100644 index 000000000000..308eb31594e6 --- /dev/null +++ b/graphics/pokemon/espeon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 88 16 +184 216 136 +144 192 96 +80 136 72 +0 0 0 +96 152 64 +56 128 176 +200 64 24 +232 128 48 +232 232 248 +48 32 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/espurr/overworld.png b/graphics/pokemon/espurr/overworld.png new file mode 100644 index 000000000000..f7ba8e08a0a7 Binary files /dev/null and b/graphics/pokemon/espurr/overworld.png differ diff --git a/graphics/pokemon/espurr/overworld_normal.pal b/graphics/pokemon/espurr/overworld_normal.pal new file mode 100644 index 000000000000..02bd48ed1e9c --- /dev/null +++ b/graphics/pokemon/espurr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 54 71 +16 16 16 +135 139 167 +97 98 143 +244 245 246 +174 156 192 +223 177 222 +74 41 141 +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/espurr/overworld_shiny.pal b/graphics/pokemon/espurr/overworld_shiny.pal new file mode 100644 index 000000000000..caceee3ef280 --- /dev/null +++ b/graphics/pokemon/espurr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +108 78 88 +16 16 16 +241 211 223 +202 153 171 +244 245 246 +174 156 192 +223 177 222 +74 41 141 +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/eternatus/overworld.png b/graphics/pokemon/eternatus/overworld.png new file mode 100644 index 000000000000..28a3ef1c36a7 Binary files /dev/null and b/graphics/pokemon/eternatus/overworld.png differ diff --git a/graphics/pokemon/eternatus/overworld_normal.pal b/graphics/pokemon/eternatus/overworld_normal.pal new file mode 100644 index 000000000000..f140e24cacf2 --- /dev/null +++ b/graphics/pokemon/eternatus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 252 32 +0 0 0 +4 40 124 +164 28 64 +252 68 120 +32 76 176 +60 0 16 +204 32 80 +228 168 168 +164 28 64 +96 0 28 +252 68 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/eternatus/overworld_shiny.pal b/graphics/pokemon/eternatus/overworld_shiny.pal new file mode 100644 index 000000000000..8715d80d8734 --- /dev/null +++ b/graphics/pokemon/eternatus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 32 104 +176 24 48 +240 104 112 +168 24 168 +152 32 48 +248 32 80 +248 184 184 +248 32 80 +152 32 48 +232 16 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/excadrill/overworld.png b/graphics/pokemon/excadrill/overworld.png new file mode 100644 index 000000000000..00bd8575d0d5 Binary files /dev/null and b/graphics/pokemon/excadrill/overworld.png differ diff --git a/graphics/pokemon/excadrill/overworld_normal.pal b/graphics/pokemon/excadrill/overworld_normal.pal new file mode 100644 index 000000000000..7f4595da39c7 --- /dev/null +++ b/graphics/pokemon/excadrill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +208 208 208 +55 40 33 +79 63 55 +155 155 155 +87 87 87 +121 55 55 +182 55 55 +0 0 0 +229 229 247 +199 112 95 +236 147 129 +164 71 71 +236 121 112 +33 25 18 diff --git a/graphics/pokemon/excadrill/overworld_shiny.pal b/graphics/pokemon/excadrill/overworld_shiny.pal new file mode 100644 index 000000000000..4879340ef865 --- /dev/null +++ b/graphics/pokemon/excadrill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +5 5 5 +201 206 220 +120 48 64 +176 64 96 +152 152 192 +75 81 113 +78 140 154 +78 140 154 +5 5 5 +201 206 220 +208 114 99 +208 114 99 +164 71 71 +208 114 99 +33 25 18 diff --git a/graphics/pokemon/exeggcute/overworld.png b/graphics/pokemon/exeggcute/overworld.png new file mode 100644 index 000000000000..002ffd58229b Binary files /dev/null and b/graphics/pokemon/exeggcute/overworld.png differ diff --git a/graphics/pokemon/exeggcute/overworld_normal.pal b/graphics/pokemon/exeggcute/overworld_normal.pal new file mode 100644 index 000000000000..a86c530ffbf4 --- /dev/null +++ b/graphics/pokemon/exeggcute/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 64 +0 0 0 +240 208 216 +232 176 184 +232 232 248 +160 96 104 +208 120 104 +232 176 56 +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/exeggcute/overworld_shiny.pal b/graphics/pokemon/exeggcute/overworld_shiny.pal new file mode 100644 index 000000000000..347796436cf9 --- /dev/null +++ b/graphics/pokemon/exeggcute/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 64 +0 0 0 +248 216 88 +248 184 48 +232 232 248 +160 112 64 +216 136 16 +232 176 56 +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/exeggutor/alolan/overworld.png b/graphics/pokemon/exeggutor/alolan/overworld.png new file mode 100644 index 000000000000..6597515899cf Binary files /dev/null and b/graphics/pokemon/exeggutor/alolan/overworld.png differ diff --git a/graphics/pokemon/exeggutor/alolan/overworld_normal.pal b/graphics/pokemon/exeggutor/alolan/overworld_normal.pal new file mode 100644 index 000000000000..036f31f5604c --- /dev/null +++ b/graphics/pokemon/exeggutor/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +54 78 40 +128 216 88 +0 0 0 +80 168 40 +64 40 40 +208 160 88 +248 200 88 +144 96 56 +232 232 248 +200 136 88 +200 88 120 +88 72 64 +157 229 108 +108 178 64 +244 178 129 diff --git a/graphics/pokemon/exeggutor/alolan/overworld_shiny.pal b/graphics/pokemon/exeggutor/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..8740260214bb --- /dev/null +++ b/graphics/pokemon/exeggutor/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +152 56 24 +248 160 88 +0 0 0 +200 104 64 +64 40 40 +208 160 88 +248 200 88 +192 152 32 +232 232 248 +232 200 88 +200 88 120 +88 72 64 +217 229 108 +169 178 64 +247 222 135 diff --git a/graphics/pokemon/exeggutor/overworld.png b/graphics/pokemon/exeggutor/overworld.png new file mode 100644 index 000000000000..7ab99d1faba9 Binary files /dev/null and b/graphics/pokemon/exeggutor/overworld.png differ diff --git a/graphics/pokemon/exeggutor/overworld_normal.pal b/graphics/pokemon/exeggutor/overworld_normal.pal new file mode 100644 index 000000000000..89e31c5e63bd --- /dev/null +++ b/graphics/pokemon/exeggutor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 80 40 +128 216 88 +0 0 0 +80 168 40 +64 40 40 +208 160 88 +248 200 88 +232 232 248 +144 96 56 +200 88 120 +200 136 88 +88 72 64 +160 160 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/exeggutor/overworld_shiny.pal b/graphics/pokemon/exeggutor/overworld_shiny.pal new file mode 100644 index 000000000000..86399820cc8d --- /dev/null +++ b/graphics/pokemon/exeggutor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +152 56 24 +248 160 88 +0 0 0 +200 104 64 +64 40 40 +208 160 88 +248 200 88 +232 232 248 +192 152 32 +200 88 120 +232 200 88 +104 88 64 +160 160 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/exploud/overworld.png b/graphics/pokemon/exploud/overworld.png new file mode 100644 index 000000000000..6aa5e5247d7d Binary files /dev/null and b/graphics/pokemon/exploud/overworld.png differ diff --git a/graphics/pokemon/exploud/overworld_normal.pal b/graphics/pokemon/exploud/overworld_normal.pal new file mode 100644 index 000000000000..144de7f83fa1 --- /dev/null +++ b/graphics/pokemon/exploud/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 32 +0 0 0 +184 144 48 +232 208 104 +40 48 64 +176 168 224 +104 96 152 +136 128 184 +80 72 104 +184 64 104 +112 32 48 +136 40 64 +104 112 136 +232 232 248 +168 176 192 diff --git a/graphics/pokemon/exploud/overworld_shiny.pal b/graphics/pokemon/exploud/overworld_shiny.pal new file mode 100644 index 000000000000..73ab3ead16ed --- /dev/null +++ b/graphics/pokemon/exploud/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 80 32 +0 0 0 +208 152 80 +248 192 104 +40 48 64 +208 168 224 +136 96 152 +168 128 184 +88 64 96 +184 64 104 +112 32 48 +136 40 64 +104 112 136 +232 232 248 +168 176 192 diff --git a/graphics/pokemon/falinks/overworld.png b/graphics/pokemon/falinks/overworld.png new file mode 100644 index 000000000000..810cf1e45b85 Binary files /dev/null and b/graphics/pokemon/falinks/overworld.png differ diff --git a/graphics/pokemon/falinks/overworld_normal.pal b/graphics/pokemon/falinks/overworld_normal.pal new file mode 100644 index 000000000000..2353d20f237a --- /dev/null +++ b/graphics/pokemon/falinks/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +15 255 99 +81 11 10 +187 23 21 +72 61 17 +216 59 57 +199 167 44 +251 214 74 +24 24 24 +255 255 255 +0 0 0 +8 8 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/falinks/overworld_shiny.pal b/graphics/pokemon/falinks/overworld_shiny.pal new file mode 100644 index 000000000000..0b8ba7e4d888 --- /dev/null +++ b/graphics/pokemon/falinks/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +15 255 99 +65 57 16 +164 139 41 +41 24 24 +222 189 74 +106 74 65 +156 115 90 +24 24 24 +255 255 255 +0 0 0 +8 8 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/farfetchd/galarian/overworld.png b/graphics/pokemon/farfetchd/galarian/overworld.png new file mode 100644 index 000000000000..343ece6bd681 Binary files /dev/null and b/graphics/pokemon/farfetchd/galarian/overworld.png differ diff --git a/graphics/pokemon/farfetchd/galarian/overworld_normal.pal b/graphics/pokemon/farfetchd/galarian/overworld_normal.pal new file mode 100644 index 000000000000..0a555549b15c --- /dev/null +++ b/graphics/pokemon/farfetchd/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +57 153 197 +0 0 0 +156 161 115 +180 174 156 +180 145 41 +115 93 90 +238 234 255 +49 89 41 +255 202 49 +0 0 0 +65 117 57 +57 48 49 +82 68 65 +213 210 197 +24 20 16 +41 44 41 diff --git a/graphics/pokemon/farfetchd/galarian/overworld_shiny.pal b/graphics/pokemon/farfetchd/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..0a555549b15c --- /dev/null +++ b/graphics/pokemon/farfetchd/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +57 153 197 +0 0 0 +156 161 115 +180 174 156 +180 145 41 +115 93 90 +238 234 255 +49 89 41 +255 202 49 +0 0 0 +65 117 57 +57 48 49 +82 68 65 +213 210 197 +24 20 16 +41 44 41 diff --git a/graphics/pokemon/farfetchd/overworld.png b/graphics/pokemon/farfetchd/overworld.png new file mode 100644 index 000000000000..530741a8732a Binary files /dev/null and b/graphics/pokemon/farfetchd/overworld.png differ diff --git a/graphics/pokemon/farfetchd/overworld_normal.pal b/graphics/pokemon/farfetchd/overworld_normal.pal new file mode 100644 index 000000000000..0acf61c8df06 --- /dev/null +++ b/graphics/pokemon/farfetchd/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 40 +216 168 120 +0 0 0 +176 128 72 +136 112 64 +80 80 80 +168 168 168 +80 144 32 +232 232 248 +176 144 40 +152 160 112 +248 200 48 +208 208 192 +200 184 120 +240 224 160 diff --git a/graphics/pokemon/farfetchd/overworld_shiny.pal b/graphics/pokemon/farfetchd/overworld_shiny.pal new file mode 100644 index 000000000000..269b9ef2718e --- /dev/null +++ b/graphics/pokemon/farfetchd/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 40 72 +224 152 160 +0 0 0 +184 112 128 +136 72 104 +80 80 80 +168 168 168 +136 144 32 +232 232 248 +176 144 40 +176 176 112 +248 200 48 +208 208 192 +200 184 120 +240 224 160 diff --git a/graphics/pokemon/fearow/overworld.png b/graphics/pokemon/fearow/overworld.png new file mode 100644 index 000000000000..ef6825b1c564 Binary files /dev/null and b/graphics/pokemon/fearow/overworld.png differ diff --git a/graphics/pokemon/fearow/overworld_normal.pal b/graphics/pokemon/fearow/overworld_normal.pal new file mode 100644 index 000000000000..9bb484e708bb --- /dev/null +++ b/graphics/pokemon/fearow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 16 8 +88 56 16 +224 128 96 +224 200 168 +192 64 0 +184 168 112 +232 144 32 +176 112 16 +64 64 64 +0 0 0 +176 80 120 +232 232 248 +240 128 152 +184 184 184 +0 0 0 diff --git a/graphics/pokemon/fearow/overworld_shiny.pal b/graphics/pokemon/fearow/overworld_shiny.pal new file mode 100644 index 000000000000..fbd9f3c70715 --- /dev/null +++ b/graphics/pokemon/fearow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 16 +88 96 16 +248 200 32 +224 216 136 +248 152 16 +192 184 80 +208 176 16 +176 144 0 +64 64 64 +0 0 0 +200 136 0 +232 232 248 +248 176 16 +184 184 184 +0 0 0 diff --git a/graphics/pokemon/feebas/overworld.png b/graphics/pokemon/feebas/overworld.png new file mode 100644 index 000000000000..096d67682d8e Binary files /dev/null and b/graphics/pokemon/feebas/overworld.png differ diff --git a/graphics/pokemon/feebas/overworld_normal.pal b/graphics/pokemon/feebas/overworld_normal.pal new file mode 100644 index 000000000000..3b33f32c956a --- /dev/null +++ b/graphics/pokemon/feebas/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 40 64 +48 80 112 +112 160 208 +0 0 0 +80 120 160 +72 56 32 +136 120 72 +168 152 88 +104 88 48 +200 184 112 +192 192 208 +232 232 248 +192 64 104 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/feebas/overworld_shiny.pal b/graphics/pokemon/feebas/overworld_shiny.pal new file mode 100644 index 000000000000..f7fb5580a0ef --- /dev/null +++ b/graphics/pokemon/feebas/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 48 +64 80 104 +160 168 176 +0 0 0 +112 128 144 +88 80 96 +128 120 136 +144 144 160 +104 104 112 +160 160 176 +192 192 208 +232 232 248 +192 64 104 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fennekin/overworld.png b/graphics/pokemon/fennekin/overworld.png new file mode 100644 index 000000000000..db31b0fd04c7 Binary files /dev/null and b/graphics/pokemon/fennekin/overworld.png differ diff --git a/graphics/pokemon/fennekin/overworld_normal.pal b/graphics/pokemon/fennekin/overworld_normal.pal new file mode 100644 index 000000000000..5b5f78aaeac3 --- /dev/null +++ b/graphics/pokemon/fennekin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +251 104 57 +147 137 76 +255 250 127 +227 199 97 +245 216 75 +88 56 48 +214 82 52 +255 255 255 +118 108 103 +174 167 164 +231 228 228 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fennekin/overworld_shiny.pal b/graphics/pokemon/fennekin/overworld_shiny.pal new file mode 100644 index 000000000000..488c07656a03 --- /dev/null +++ b/graphics/pokemon/fennekin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +251 104 57 +101 100 100 +199 199 199 +159 159 159 +159 159 159 +88 56 48 +214 82 52 +255 255 255 +118 108 103 +174 167 164 +231 228 228 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/feraligatr/overworld.png b/graphics/pokemon/feraligatr/overworld.png new file mode 100644 index 000000000000..dc2f26ebe094 Binary files /dev/null and b/graphics/pokemon/feraligatr/overworld.png differ diff --git a/graphics/pokemon/feraligatr/overworld_normal.pal b/graphics/pokemon/feraligatr/overworld_normal.pal new file mode 100644 index 000000000000..a3c21a2ab7ba --- /dev/null +++ b/graphics/pokemon/feraligatr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 40 +0 0 0 +168 40 64 +208 48 72 +16 64 96 +112 176 232 +80 128 184 +160 208 240 +72 64 16 +224 192 120 +232 232 248 +184 160 88 +144 120 40 +64 104 136 +160 176 200 diff --git a/graphics/pokemon/feraligatr/overworld_shiny.pal b/graphics/pokemon/feraligatr/overworld_shiny.pal new file mode 100644 index 000000000000..9546df3e50ee --- /dev/null +++ b/graphics/pokemon/feraligatr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +16 56 136 +0 0 0 +32 96 224 +16 120 248 +24 80 88 +80 200 184 +40 152 184 +136 224 208 +72 64 16 +224 192 120 +232 232 248 +184 160 88 +120 104 40 +48 120 128 +168 184 208 diff --git a/graphics/pokemon/ferroseed/overworld.png b/graphics/pokemon/ferroseed/overworld.png new file mode 100644 index 000000000000..b61dd226093f Binary files /dev/null and b/graphics/pokemon/ferroseed/overworld.png differ diff --git a/graphics/pokemon/ferroseed/overworld_normal.pal b/graphics/pokemon/ferroseed/overworld_normal.pal new file mode 100644 index 000000000000..ebec33f1457e --- /dev/null +++ b/graphics/pokemon/ferroseed/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 65 32 +0 180 90 +16 16 16 +0 0 0 +180 189 189 +139 139 139 +139 139 139 +65 65 65 +232 232 248 +65 65 65 +16 65 32 +90 90 90 +32 106 65 +180 139 65 +232 136 72 diff --git a/graphics/pokemon/ferroseed/overworld_shiny.pal b/graphics/pokemon/ferroseed/overworld_shiny.pal new file mode 100644 index 000000000000..8520ca1c8570 --- /dev/null +++ b/graphics/pokemon/ferroseed/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 64 +0 136 176 +16 16 16 +0 0 0 +176 184 200 +120 136 160 +139 139 139 +65 65 65 +232 232 232 +72 88 120 +16 65 32 +56 64 104 +32 88 104 +192 104 48 +232 136 72 diff --git a/graphics/pokemon/ferrothorn/overworld.png b/graphics/pokemon/ferrothorn/overworld.png new file mode 100644 index 000000000000..cfbe242688a1 Binary files /dev/null and b/graphics/pokemon/ferrothorn/overworld.png differ diff --git a/graphics/pokemon/ferrothorn/overworld_normal.pal b/graphics/pokemon/ferrothorn/overworld_normal.pal new file mode 100644 index 000000000000..05000ab76d1f --- /dev/null +++ b/graphics/pokemon/ferrothorn/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +55 55 55 +0 0 0 +172 182 182 +129 129 129 +8 8 8 +11 55 25 +25 95 55 +0 172 79 +232 232 248 +236 182 63 +172 129 55 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ferrothorn/overworld_shiny.pal b/graphics/pokemon/ferrothorn/overworld_shiny.pal new file mode 100644 index 000000000000..f26a52fbc932 --- /dev/null +++ b/graphics/pokemon/ferrothorn/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 48 +0 0 0 +200 192 112 +144 136 72 +8 8 8 +96 24 40 +152 40 64 +200 72 88 +232 232 248 +240 192 72 +200 136 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/finneon/overworld.png b/graphics/pokemon/finneon/overworld.png new file mode 100644 index 000000000000..ac2d22c51c95 Binary files /dev/null and b/graphics/pokemon/finneon/overworld.png differ diff --git a/graphics/pokemon/finneon/overworld_normal.pal b/graphics/pokemon/finneon/overworld_normal.pal new file mode 100644 index 000000000000..f1c1774e99a2 --- /dev/null +++ b/graphics/pokemon/finneon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 56 64 +160 208 216 +48 72 64 +72 96 96 +240 120 160 +168 64 112 +104 136 160 +104 0 16 +248 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/finneon/overworld_shiny.pal b/graphics/pokemon/finneon/overworld_shiny.pal new file mode 100644 index 000000000000..5ee22cfe7381 --- /dev/null +++ b/graphics/pokemon/finneon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 32 64 +208 168 216 +96 32 64 +120 88 96 +240 120 160 +168 64 112 +176 112 160 +104 0 16 +248 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flaaffy/overworld.png b/graphics/pokemon/flaaffy/overworld.png new file mode 100644 index 000000000000..e13f4b730084 Binary files /dev/null and b/graphics/pokemon/flaaffy/overworld.png differ diff --git a/graphics/pokemon/flaaffy/overworld_normal.pal b/graphics/pokemon/flaaffy/overworld_normal.pal new file mode 100644 index 000000000000..225e4789351f --- /dev/null +++ b/graphics/pokemon/flaaffy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 104 120 +232 232 248 +48 56 64 +0 0 0 +136 152 176 +184 200 224 +224 144 184 +112 40 64 +184 96 128 +248 184 216 +32 88 144 +56 152 192 +96 200 240 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flaaffy/overworld_shiny.pal b/graphics/pokemon/flaaffy/overworld_shiny.pal new file mode 100644 index 000000000000..060d27de6a25 --- /dev/null +++ b/graphics/pokemon/flaaffy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 72 +232 232 248 +48 56 64 +0 0 0 +168 160 136 +200 192 176 +240 168 232 +112 40 64 +208 120 168 +248 208 248 +24 128 96 +16 192 144 +152 224 208 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flabebe/blue_flower/overworld.png b/graphics/pokemon/flabebe/blue_flower/overworld.png new file mode 100644 index 000000000000..02176b255c3d Binary files /dev/null and b/graphics/pokemon/flabebe/blue_flower/overworld.png differ diff --git a/graphics/pokemon/flabebe/blue_flower/overworld_normal.pal b/graphics/pokemon/flabebe/blue_flower/overworld_normal.pal new file mode 100644 index 000000000000..a1225bc27060 --- /dev/null +++ b/graphics/pokemon/flabebe/blue_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +21 44 77 +35 69 35 +70 144 248 +91 185 75 +68 125 57 +0 0 0 diff --git a/graphics/pokemon/flabebe/blue_flower/overworld_shiny.pal b/graphics/pokemon/flabebe/blue_flower/overworld_shiny.pal new file mode 100644 index 000000000000..4a019608b5c4 --- /dev/null +++ b/graphics/pokemon/flabebe/blue_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +21 44 77 +69 66 127 +70 144 248 +154 149 228 +96 90 188 +0 0 0 diff --git a/graphics/pokemon/flabebe/orange_flower/overworld.png b/graphics/pokemon/flabebe/orange_flower/overworld.png new file mode 100644 index 000000000000..af5fe1322db5 Binary files /dev/null and b/graphics/pokemon/flabebe/orange_flower/overworld.png differ diff --git a/graphics/pokemon/flabebe/orange_flower/overworld_normal.pal b/graphics/pokemon/flabebe/orange_flower/overworld_normal.pal new file mode 100644 index 000000000000..9729c86612d1 --- /dev/null +++ b/graphics/pokemon/flabebe/orange_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +171 61 1 +35 69 35 +253 145 59 +91 185 75 +68 125 57 +0 0 0 diff --git a/graphics/pokemon/flabebe/orange_flower/overworld_shiny.pal b/graphics/pokemon/flabebe/orange_flower/overworld_shiny.pal new file mode 100644 index 000000000000..678dd2b20533 --- /dev/null +++ b/graphics/pokemon/flabebe/orange_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +171 61 1 +69 66 127 +253 145 59 +154 149 228 +96 90 188 +0 0 0 diff --git a/graphics/pokemon/flabebe/overworld.png b/graphics/pokemon/flabebe/overworld.png new file mode 100644 index 000000000000..922fed03cd94 Binary files /dev/null and b/graphics/pokemon/flabebe/overworld.png differ diff --git a/graphics/pokemon/flabebe/overworld_normal.pal b/graphics/pokemon/flabebe/overworld_normal.pal new file mode 100644 index 000000000000..d153782d63e0 --- /dev/null +++ b/graphics/pokemon/flabebe/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +107 36 33 +35 69 35 +91 185 75 +68 125 57 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flabebe/overworld_shiny.pal b/graphics/pokemon/flabebe/overworld_shiny.pal new file mode 100644 index 000000000000..4b3bd7e5c5ab --- /dev/null +++ b/graphics/pokemon/flabebe/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +107 36 33 +96 90 188 +154 149 228 +96 90 188 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flabebe/white_flower/overworld.png b/graphics/pokemon/flabebe/white_flower/overworld.png new file mode 100644 index 000000000000..843d45c96d8a Binary files /dev/null and b/graphics/pokemon/flabebe/white_flower/overworld.png differ diff --git a/graphics/pokemon/flabebe/white_flower/overworld_normal.pal b/graphics/pokemon/flabebe/white_flower/overworld_normal.pal new file mode 100644 index 000000000000..34f9822fd34e --- /dev/null +++ b/graphics/pokemon/flabebe/white_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +35 69 35 +91 185 75 +68 125 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flabebe/white_flower/overworld_shiny.pal b/graphics/pokemon/flabebe/white_flower/overworld_shiny.pal new file mode 100644 index 000000000000..66317d403732 --- /dev/null +++ b/graphics/pokemon/flabebe/white_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +69 66 127 +154 149 228 +96 90 188 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flabebe/yellow_flower/overworld.png b/graphics/pokemon/flabebe/yellow_flower/overworld.png new file mode 100644 index 000000000000..d170322b186c Binary files /dev/null and b/graphics/pokemon/flabebe/yellow_flower/overworld.png differ diff --git a/graphics/pokemon/flabebe/yellow_flower/overworld_normal.pal b/graphics/pokemon/flabebe/yellow_flower/overworld_normal.pal new file mode 100644 index 000000000000..ec2afcb3a638 --- /dev/null +++ b/graphics/pokemon/flabebe/yellow_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +148 81 2 +35 69 35 +230 206 10 +91 185 75 +68 125 57 +0 0 0 diff --git a/graphics/pokemon/flabebe/yellow_flower/overworld_shiny.pal b/graphics/pokemon/flabebe/yellow_flower/overworld_shiny.pal new file mode 100644 index 000000000000..04f701918cee --- /dev/null +++ b/graphics/pokemon/flabebe/yellow_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +242 243 238 +187 106 1 +255 255 0 +145 145 137 +232 153 2 +221 181 0 +243 86 75 +148 81 2 +69 66 127 +230 206 10 +154 149 228 +96 90 188 +0 0 0 diff --git a/graphics/pokemon/flapple/overworld.png b/graphics/pokemon/flapple/overworld.png new file mode 100644 index 000000000000..edd01a68a254 Binary files /dev/null and b/graphics/pokemon/flapple/overworld.png differ diff --git a/graphics/pokemon/flapple/overworld_normal.pal b/graphics/pokemon/flapple/overworld_normal.pal new file mode 100644 index 000000000000..77aadabac64a --- /dev/null +++ b/graphics/pokemon/flapple/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +92 17 17 +171 42 42 +226 91 91 +28 55 11 +96 84 33 +92 143 59 +167 152 82 +212 197 128 +0 0 0 +58 104 28 +111 95 18 +236 210 95 +224 193 48 +194 167 51 +136 116 31 diff --git a/graphics/pokemon/flapple/overworld_shiny.pal b/graphics/pokemon/flapple/overworld_shiny.pal new file mode 100644 index 000000000000..065c05dbf680 --- /dev/null +++ b/graphics/pokemon/flapple/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +49 82 24 +123 180 65 +164 238 98 +24 49 8 +98 82 32 +90 139 57 +164 156 82 +213 197 131 +0 0 0 +57 106 24 +106 90 16 +238 213 90 +230 197 49 +197 164 49 +139 115 24 diff --git a/graphics/pokemon/flareon/overworld.png b/graphics/pokemon/flareon/overworld.png new file mode 100644 index 000000000000..c32cab6f9d2a Binary files /dev/null and b/graphics/pokemon/flareon/overworld.png differ diff --git a/graphics/pokemon/flareon/overworld_normal.pal b/graphics/pokemon/flareon/overworld_normal.pal new file mode 100644 index 000000000000..ccc4e8701666 --- /dev/null +++ b/graphics/pokemon/flareon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 40 +216 168 72 +232 216 152 +0 0 0 +248 128 72 +152 120 48 +216 88 32 +152 64 40 +80 64 64 +192 64 32 +232 232 248 +216 192 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flareon/overworld_shiny.pal b/graphics/pokemon/flareon/overworld_shiny.pal new file mode 100644 index 000000000000..b2cdf694c90f --- /dev/null +++ b/graphics/pokemon/flareon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 40 +216 168 72 +232 216 152 +0 0 0 +248 168 72 +152 104 48 +216 128 48 +144 96 40 +80 64 64 +200 120 24 +232 232 248 +216 192 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fletchinder/overworld.png b/graphics/pokemon/fletchinder/overworld.png new file mode 100644 index 000000000000..a987365357f7 Binary files /dev/null and b/graphics/pokemon/fletchinder/overworld.png differ diff --git a/graphics/pokemon/fletchinder/overworld_normal.pal b/graphics/pokemon/fletchinder/overworld_normal.pal new file mode 100644 index 000000000000..80fab4ddf1d9 --- /dev/null +++ b/graphics/pokemon/fletchinder/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +113 79 25 +250 199 62 +16 16 16 +112 103 96 +58 56 57 +86 24 18 +255 104 79 +224 54 32 +233 157 37 +230 238 248 +194 203 232 +153 163 195 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fletchinder/overworld_shiny.pal b/graphics/pokemon/fletchinder/overworld_shiny.pal new file mode 100644 index 000000000000..36f64c6a053d --- /dev/null +++ b/graphics/pokemon/fletchinder/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +113 79 25 +250 199 62 +16 16 16 +88 56 58 +56 33 34 +144 41 27 +244 86 59 +175 61 46 +233 157 37 +230 238 248 +230 193 154 +191 158 125 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fletchling/overworld.png b/graphics/pokemon/fletchling/overworld.png new file mode 100644 index 000000000000..acfc95f616a7 Binary files /dev/null and b/graphics/pokemon/fletchling/overworld.png differ diff --git a/graphics/pokemon/fletchling/overworld_normal.pal b/graphics/pokemon/fletchling/overworld_normal.pal new file mode 100644 index 000000000000..dffd5c93d506 --- /dev/null +++ b/graphics/pokemon/fletchling/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +119 183 167 +125 33 9 +254 135 94 +0 0 0 +213 80 45 +81 81 81 +252 252 252 +163 163 163 +36 25 25 +225 188 51 +111 53 33 +109 167 152 +120 184 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fletchling/overworld_shiny.pal b/graphics/pokemon/fletchling/overworld_shiny.pal new file mode 100644 index 000000000000..706ab10c6e4a --- /dev/null +++ b/graphics/pokemon/fletchling/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +119 183 167 +138 50 18 +234 121 72 +0 0 0 +199 71 31 +81 81 81 +234 214 193 +36 25 25 +225 188 51 +188 155 122 +111 53 33 +109 167 152 +120 184 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floatzel/overworld.png b/graphics/pokemon/floatzel/overworld.png new file mode 100644 index 000000000000..cd7c20372c42 Binary files /dev/null and b/graphics/pokemon/floatzel/overworld.png differ diff --git a/graphics/pokemon/floatzel/overworld_normal.pal b/graphics/pokemon/floatzel/overworld_normal.pal new file mode 100644 index 000000000000..68cff42330d9 --- /dev/null +++ b/graphics/pokemon/floatzel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 40 +232 112 48 +0 0 0 +184 72 32 +128 64 32 +208 184 96 +240 224 128 +248 192 32 +232 232 248 +208 128 0 +88 88 88 +168 184 200 +64 96 120 +72 136 192 +160 96 0 diff --git a/graphics/pokemon/floatzel/overworld_shiny.pal b/graphics/pokemon/floatzel/overworld_shiny.pal new file mode 100644 index 000000000000..a04429411778 --- /dev/null +++ b/graphics/pokemon/floatzel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 32 +232 192 88 +0 0 0 +176 144 56 +112 96 32 +224 208 152 +248 240 184 +200 200 200 +232 232 248 +152 152 152 +88 88 88 +168 184 200 +64 96 120 +72 136 192 +152 128 56 diff --git a/graphics/pokemon/floette/blue_flower/overworld.png b/graphics/pokemon/floette/blue_flower/overworld.png new file mode 100644 index 000000000000..034b336557f1 Binary files /dev/null and b/graphics/pokemon/floette/blue_flower/overworld.png differ diff --git a/graphics/pokemon/floette/blue_flower/overworld_normal.pal b/graphics/pokemon/floette/blue_flower/overworld_normal.pal new file mode 100644 index 000000000000..b071d3f4d3e9 --- /dev/null +++ b/graphics/pokemon/floette/blue_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +21 44 77 +188 118 10 +253 236 58 +70 144 248 +33 89 169 +66 95 29 +25 105 88 +126 181 59 +12 180 149 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/blue_flower/overworld_shiny.pal b/graphics/pokemon/floette/blue_flower/overworld_shiny.pal new file mode 100644 index 000000000000..7c429dca6d6c --- /dev/null +++ b/graphics/pokemon/floette/blue_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +21 44 77 +188 118 10 +253 236 58 +70 144 248 +33 89 169 +66 95 29 +96 90 188 +126 181 59 +154 149 228 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/eternal_flower/overworld.png b/graphics/pokemon/floette/eternal_flower/overworld.png new file mode 100644 index 000000000000..890288792cdd Binary files /dev/null and b/graphics/pokemon/floette/eternal_flower/overworld.png differ diff --git a/graphics/pokemon/floette/eternal_flower/overworld_normal.pal b/graphics/pokemon/floette/eternal_flower/overworld_normal.pal new file mode 100644 index 000000000000..4ec25cf4e618 --- /dev/null +++ b/graphics/pokemon/floette/eternal_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +40 38 38 +107 33 62 +16 16 16 +103 95 95 +255 93 135 +59 55 55 +205 39 81 +49 67 149 +120 137 214 +251 254 255 +99 113 115 +197 199 199 +230 238 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/eternal_flower/overworld_shiny.pal b/graphics/pokemon/floette/eternal_flower/overworld_shiny.pal new file mode 100644 index 000000000000..3917a8c5fc88 --- /dev/null +++ b/graphics/pokemon/floette/eternal_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +40 38 38 +107 33 62 +16 16 16 +103 95 95 +255 93 135 +59 55 55 +205 39 81 +25 105 88 +12 180 149 +251 254 255 +99 113 115 +197 199 199 +230 238 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/orange_flower/overworld.png b/graphics/pokemon/floette/orange_flower/overworld.png new file mode 100644 index 000000000000..f1559fcdc53a Binary files /dev/null and b/graphics/pokemon/floette/orange_flower/overworld.png differ diff --git a/graphics/pokemon/floette/orange_flower/overworld_normal.pal b/graphics/pokemon/floette/orange_flower/overworld_normal.pal new file mode 100644 index 000000000000..20c727f0222d --- /dev/null +++ b/graphics/pokemon/floette/orange_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +171 61 1 +188 118 10 +253 236 58 +253 145 59 +240 101 26 +66 95 29 +25 105 88 +126 181 59 +12 180 149 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/orange_flower/overworld_shiny.pal b/graphics/pokemon/floette/orange_flower/overworld_shiny.pal new file mode 100644 index 000000000000..b5ef2a806cf3 --- /dev/null +++ b/graphics/pokemon/floette/orange_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +171 61 1 +188 118 10 +253 236 58 +253 145 59 +240 101 26 +66 95 29 +96 90 188 +126 181 59 +154 149 228 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/overworld.png b/graphics/pokemon/floette/overworld.png new file mode 100644 index 000000000000..54f4dd54affb Binary files /dev/null and b/graphics/pokemon/floette/overworld.png differ diff --git a/graphics/pokemon/floette/overworld_normal.pal b/graphics/pokemon/floette/overworld_normal.pal new file mode 100644 index 000000000000..1b7a65a8b1fe --- /dev/null +++ b/graphics/pokemon/floette/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +107 36 33 +188 118 10 +253 236 58 +243 86 75 +182 64 56 +66 95 29 +25 105 88 +126 181 59 +12 180 149 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/overworld_shiny.pal b/graphics/pokemon/floette/overworld_shiny.pal new file mode 100644 index 000000000000..39e73ff789fc --- /dev/null +++ b/graphics/pokemon/floette/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +107 36 33 +188 118 10 +253 236 58 +243 86 75 +182 64 56 +66 95 29 +96 90 188 +126 181 59 +154 149 228 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/white_flower/overworld.png b/graphics/pokemon/floette/white_flower/overworld.png new file mode 100644 index 000000000000..af49bcc9211f Binary files /dev/null and b/graphics/pokemon/floette/white_flower/overworld.png differ diff --git a/graphics/pokemon/floette/white_flower/overworld_normal.pal b/graphics/pokemon/floette/white_flower/overworld_normal.pal new file mode 100644 index 000000000000..6e6e7242f57a --- /dev/null +++ b/graphics/pokemon/floette/white_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +188 118 10 +253 236 58 +242 243 238 +197 199 199 +66 95 29 +25 105 88 +126 181 59 +12 180 149 +251 254 255 +99 113 115 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/white_flower/overworld_shiny.pal b/graphics/pokemon/floette/white_flower/overworld_shiny.pal new file mode 100644 index 000000000000..81be54505166 --- /dev/null +++ b/graphics/pokemon/floette/white_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +88 89 77 +188 118 10 +253 236 58 +242 243 238 +197 199 199 +66 95 29 +96 90 188 +126 181 59 +154 149 228 +251 254 255 +99 113 115 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/yellow_flower/overworld.png b/graphics/pokemon/floette/yellow_flower/overworld.png new file mode 100644 index 000000000000..647e8149779e Binary files /dev/null and b/graphics/pokemon/floette/yellow_flower/overworld.png differ diff --git a/graphics/pokemon/floette/yellow_flower/overworld_normal.pal b/graphics/pokemon/floette/yellow_flower/overworld_normal.pal new file mode 100644 index 000000000000..b4ad160f52f9 --- /dev/null +++ b/graphics/pokemon/floette/yellow_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +148 81 2 +188 118 10 +253 236 58 +230 206 10 +232 153 2 +66 95 29 +25 105 88 +126 181 59 +12 180 149 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/floette/yellow_flower/overworld_shiny.pal b/graphics/pokemon/floette/yellow_flower/overworld_shiny.pal new file mode 100644 index 000000000000..b3fd29046266 --- /dev/null +++ b/graphics/pokemon/floette/yellow_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +16 16 16 +148 81 2 +188 118 10 +253 236 58 +230 206 10 +232 153 2 +66 95 29 +96 90 188 +126 181 59 +154 149 228 +251 254 255 +99 113 115 +197 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/florges/blue_flower/overworld.png b/graphics/pokemon/florges/blue_flower/overworld.png new file mode 100644 index 000000000000..7231b8e323fc Binary files /dev/null and b/graphics/pokemon/florges/blue_flower/overworld.png differ diff --git a/graphics/pokemon/florges/blue_flower/overworld_normal.pal b/graphics/pokemon/florges/blue_flower/overworld_normal.pal new file mode 100644 index 000000000000..a7fc95c86b69 --- /dev/null +++ b/graphics/pokemon/florges/blue_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +77 137 151 +16 16 16 +21 44 77 +142 213 232 +70 144 248 +55 104 173 +75 169 118 +30 56 41 +59 123 75 +253 145 59 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/blue_flower/overworld_shiny.pal b/graphics/pokemon/florges/blue_flower/overworld_shiny.pal new file mode 100644 index 000000000000..dff565005906 --- /dev/null +++ b/graphics/pokemon/florges/blue_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +77 137 151 +16 16 16 +21 44 77 +142 213 232 +70 144 248 +55 104 173 +154 149 228 +69 66 127 +96 90 188 +253 145 59 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/orange_flower/overworld.png b/graphics/pokemon/florges/orange_flower/overworld.png new file mode 100644 index 000000000000..ef910fcfc3d3 Binary files /dev/null and b/graphics/pokemon/florges/orange_flower/overworld.png differ diff --git a/graphics/pokemon/florges/orange_flower/overworld_normal.pal b/graphics/pokemon/florges/orange_flower/overworld_normal.pal new file mode 100644 index 000000000000..50a974fef608 --- /dev/null +++ b/graphics/pokemon/florges/orange_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +126 86 62 +16 16 16 +171 61 1 +235 185 151 +253 145 59 +238 113 22 +75 169 118 +30 56 41 +59 123 75 +123 101 157 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/orange_flower/overworld_shiny.pal b/graphics/pokemon/florges/orange_flower/overworld_shiny.pal new file mode 100644 index 000000000000..e7957e79ab24 --- /dev/null +++ b/graphics/pokemon/florges/orange_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +126 86 62 +16 16 16 +171 61 1 +235 185 151 +253 145 59 +238 113 22 +154 149 228 +69 66 127 +96 90 188 +123 101 157 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/overworld.png b/graphics/pokemon/florges/overworld.png new file mode 100644 index 000000000000..efa6efdd9c2d Binary files /dev/null and b/graphics/pokemon/florges/overworld.png differ diff --git a/graphics/pokemon/florges/overworld_normal.pal b/graphics/pokemon/florges/overworld_normal.pal new file mode 100644 index 000000000000..20b9d250f48e --- /dev/null +++ b/graphics/pokemon/florges/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +126 62 104 +16 16 16 +107 36 33 +215 159 196 +243 86 75 +214 44 36 +75 169 118 +30 56 41 +59 123 75 +253 236 58 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/overworld_shiny.pal b/graphics/pokemon/florges/overworld_shiny.pal new file mode 100644 index 000000000000..744516f42c08 --- /dev/null +++ b/graphics/pokemon/florges/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 194 164 +126 62 104 +16 16 16 +107 36 33 +215 159 196 +243 86 75 +214 44 36 +154 149 228 +69 66 127 +96 90 188 +253 236 58 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/white_flower/overworld.png b/graphics/pokemon/florges/white_flower/overworld.png new file mode 100644 index 000000000000..b5548c273b7d Binary files /dev/null and b/graphics/pokemon/florges/white_flower/overworld.png differ diff --git a/graphics/pokemon/florges/white_flower/overworld_normal.pal b/graphics/pokemon/florges/white_flower/overworld_normal.pal new file mode 100644 index 000000000000..a6a7d39f74c9 --- /dev/null +++ b/graphics/pokemon/florges/white_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +205 166 174 +16 16 16 +62 62 62 +252 235 238 +251 254 255 +183 181 181 +75 169 118 +30 56 41 +59 123 75 +120 195 216 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/white_flower/overworld_shiny.pal b/graphics/pokemon/florges/white_flower/overworld_shiny.pal new file mode 100644 index 000000000000..ff775da51ca8 --- /dev/null +++ b/graphics/pokemon/florges/white_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +205 166 174 +16 16 16 +62 62 62 +252 235 238 +251 254 255 +183 181 181 +154 149 228 +69 66 127 +96 90 188 +120 195 216 +203 207 209 +252 254 255 +86 97 102 +74 76 75 +0 0 0 diff --git a/graphics/pokemon/florges/yellow_flower/overworld.png b/graphics/pokemon/florges/yellow_flower/overworld.png new file mode 100644 index 000000000000..cf000fb73923 Binary files /dev/null and b/graphics/pokemon/florges/yellow_flower/overworld.png differ diff --git a/graphics/pokemon/florges/yellow_flower/overworld_normal.pal b/graphics/pokemon/florges/yellow_flower/overworld_normal.pal new file mode 100644 index 000000000000..fdfc589dcdc6 --- /dev/null +++ b/graphics/pokemon/florges/yellow_flower/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +125 133 135 +16 16 16 +148 81 2 +252 254 255 +230 206 10 +232 153 2 +75 169 118 +30 56 41 +59 123 75 +253 236 58 +203 207 209 +86 97 102 +74 76 75 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/florges/yellow_flower/overworld_shiny.pal b/graphics/pokemon/florges/yellow_flower/overworld_shiny.pal new file mode 100644 index 000000000000..4668878bfc3b --- /dev/null +++ b/graphics/pokemon/florges/yellow_flower/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 183 239 +125 133 135 +16 16 16 +148 81 2 +252 254 255 +230 206 10 +232 153 2 +154 149 228 +69 66 127 +96 90 188 +253 236 58 +203 207 209 +86 97 102 +74 76 75 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/flygon/overworld.png b/graphics/pokemon/flygon/overworld.png new file mode 100644 index 000000000000..eac77815f611 Binary files /dev/null and b/graphics/pokemon/flygon/overworld.png differ diff --git a/graphics/pokemon/flygon/overworld_normal.pal b/graphics/pokemon/flygon/overworld_normal.pal new file mode 100644 index 000000000000..e3d9262d5473 --- /dev/null +++ b/graphics/pokemon/flygon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +176 176 176 +48 72 48 +64 104 56 +16 16 16 +72 136 64 +128 32 32 +208 64 88 +192 216 152 +168 48 64 +248 128 152 +160 192 96 +248 248 248 +120 144 56 +96 96 96 +184 192 208 +0 0 0 diff --git a/graphics/pokemon/flygon/overworld_shiny.pal b/graphics/pokemon/flygon/overworld_shiny.pal new file mode 100644 index 000000000000..8accf94da7c9 --- /dev/null +++ b/graphics/pokemon/flygon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +176 176 176 +48 72 88 +56 104 120 +16 16 16 +72 136 160 +128 64 32 +208 120 64 +192 216 152 +168 88 48 +248 184 128 +160 192 96 +248 248 248 +120 144 56 +96 96 96 +184 192 208 +0 0 0 diff --git a/graphics/pokemon/fomantis/overworld.png b/graphics/pokemon/fomantis/overworld.png new file mode 100644 index 000000000000..f5d1da87824a Binary files /dev/null and b/graphics/pokemon/fomantis/overworld.png differ diff --git a/graphics/pokemon/fomantis/overworld_normal.pal b/graphics/pokemon/fomantis/overworld_normal.pal new file mode 100644 index 000000000000..d0f124555d42 --- /dev/null +++ b/graphics/pokemon/fomantis/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +250 222 241 +108 213 148 +248 192 232 +243 175 199 +68 154 94 +46 160 89 +37 129 71 +28 99 54 +232 98 124 +108 31 69 +28 91 51 +17 55 31 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fomantis/overworld_shiny.pal b/graphics/pokemon/fomantis/overworld_shiny.pal new file mode 100644 index 000000000000..225677ce78d3 --- /dev/null +++ b/graphics/pokemon/fomantis/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +248 216 128 +108 213 148 +224 160 72 +176 112 48 +68 154 94 +46 160 89 +37 129 71 +28 99 54 +128 192 96 +72 128 48 +28 91 51 +17 55 31 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/foongus/overworld.png b/graphics/pokemon/foongus/overworld.png new file mode 100644 index 000000000000..aefcd2c5181d Binary files /dev/null and b/graphics/pokemon/foongus/overworld.png differ diff --git a/graphics/pokemon/foongus/overworld_normal.pal b/graphics/pokemon/foongus/overworld_normal.pal new file mode 100644 index 000000000000..5b1bd986b01e --- /dev/null +++ b/graphics/pokemon/foongus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 49 49 +106 74 49 +65 41 41 +156 57 57 +222 90 82 +197 180 156 +255 246 230 +65 41 41 +255 246 230 +16 16 16 +0 0 0 +106 74 49 +156 57 123 +213 98 156 +0 0 0 diff --git a/graphics/pokemon/foongus/overworld_shiny.pal b/graphics/pokemon/foongus/overworld_shiny.pal new file mode 100644 index 000000000000..59d28d5af40d --- /dev/null +++ b/graphics/pokemon/foongus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 120 +72 88 48 +40 64 40 +112 56 240 +144 112 216 +200 168 136 +255 246 230 +65 41 41 +248 240 224 +16 16 16 +0 0 0 +106 74 49 +184 72 88 +224 112 112 +0 0 0 diff --git a/graphics/pokemon/forretress/overworld.png b/graphics/pokemon/forretress/overworld.png new file mode 100644 index 000000000000..f3994240fab3 Binary files /dev/null and b/graphics/pokemon/forretress/overworld.png differ diff --git a/graphics/pokemon/forretress/overworld_normal.pal b/graphics/pokemon/forretress/overworld_normal.pal new file mode 100644 index 000000000000..b213db8f9200 --- /dev/null +++ b/graphics/pokemon/forretress/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 64 104 +208 184 216 +184 152 184 +224 208 248 +136 112 144 +104 16 24 +192 48 56 +48 48 48 +216 96 64 +136 136 136 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/forretress/overworld_shiny.pal b/graphics/pokemon/forretress/overworld_shiny.pal new file mode 100644 index 000000000000..8dd78f9ff78f --- /dev/null +++ b/graphics/pokemon/forretress/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 80 24 +216 192 128 +184 152 80 +240 224 184 +160 112 32 +80 56 24 +112 88 56 +48 48 48 +152 128 96 +136 136 136 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fraxure/overworld.png b/graphics/pokemon/fraxure/overworld.png new file mode 100644 index 000000000000..ce5eef781e26 Binary files /dev/null and b/graphics/pokemon/fraxure/overworld.png differ diff --git a/graphics/pokemon/fraxure/overworld_normal.pal b/graphics/pokemon/fraxure/overworld_normal.pal new file mode 100644 index 000000000000..ff3615706be2 --- /dev/null +++ b/graphics/pokemon/fraxure/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 73 40 +111 159 30 +68 107 57 +17 17 17 +42 48 37 +98 98 96 +156 165 154 +0 0 0 +98 0 0 +209 52 52 +111 159 30 +68 107 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fraxure/overworld_shiny.pal b/graphics/pokemon/fraxure/overworld_shiny.pal new file mode 100644 index 000000000000..f68e1f5ff04d --- /dev/null +++ b/graphics/pokemon/fraxure/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 56 +120 136 72 +96 96 64 +17 17 17 +42 48 37 +98 98 96 +162 170 159 +0 0 0 +8 64 88 +101 174 220 +111 159 30 +95 112 63 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/frillish/followerf.png b/graphics/pokemon/frillish/followerf.png new file mode 100644 index 000000000000..4fcc86d96f15 Binary files /dev/null and b/graphics/pokemon/frillish/followerf.png differ diff --git a/graphics/pokemon/frillish/overworld.png b/graphics/pokemon/frillish/overworld.png new file mode 100644 index 000000000000..46abf27e23ff Binary files /dev/null and b/graphics/pokemon/frillish/overworld.png differ diff --git a/graphics/pokemon/frillish/overworld_normal.pal b/graphics/pokemon/frillish/overworld_normal.pal new file mode 100644 index 000000000000..5ea6bf9b8acd --- /dev/null +++ b/graphics/pokemon/frillish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +79 155 191 +47 79 95 +172 191 227 +208 227 255 +121 208 255 +46 61 85 +11 11 11 +229 229 247 +47 87 191 +218 33 11 +208 227 255 +79 155 191 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/frillish/overworld_shiny.pal b/graphics/pokemon/frillish/overworld_shiny.pal new file mode 100644 index 000000000000..cb56fe4d857a --- /dev/null +++ b/graphics/pokemon/frillish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 152 136 +47 79 95 +208 200 120 +232 224 184 +120 216 192 +46 61 85 +11 11 11 +229 229 247 +96 64 192 +216 16 208 +208 227 255 +79 155 191 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/froakie/overworld.png b/graphics/pokemon/froakie/overworld.png new file mode 100644 index 000000000000..bc82d543b343 Binary files /dev/null and b/graphics/pokemon/froakie/overworld.png differ diff --git a/graphics/pokemon/froakie/overworld_normal.pal b/graphics/pokemon/froakie/overworld_normal.pal new file mode 100644 index 000000000000..385140b8dbcb --- /dev/null +++ b/graphics/pokemon/froakie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +136 192 240 +48 64 104 +72 152 200 +248 216 88 +230 234 234 +188 192 192 +230 238 248 +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/froakie/overworld_shiny.pal b/graphics/pokemon/froakie/overworld_shiny.pal new file mode 100644 index 000000000000..ea4dbcab0970 --- /dev/null +++ b/graphics/pokemon/froakie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +187 255 255 +75 130 130 +97 183 183 +248 216 88 +230 234 234 +188 192 192 +230 238 248 +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/frogadier/overworld.png b/graphics/pokemon/frogadier/overworld.png new file mode 100644 index 000000000000..2c4ff43dbb23 Binary files /dev/null and b/graphics/pokemon/frogadier/overworld.png differ diff --git a/graphics/pokemon/frogadier/overworld_normal.pal b/graphics/pokemon/frogadier/overworld_normal.pal new file mode 100644 index 000000000000..08d38f157471 --- /dev/null +++ b/graphics/pokemon/frogadier/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +95 137 191 +37 57 83 +136 192 240 +248 216 88 +230 234 234 +188 192 192 +0 0 0 +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/frogadier/overworld_shiny.pal b/graphics/pokemon/frogadier/overworld_shiny.pal new file mode 100644 index 000000000000..35f7a785c331 --- /dev/null +++ b/graphics/pokemon/frogadier/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +42 85 128 +1 49 99 +180 231 240 +248 216 88 +230 234 234 +188 192 192 +0 0 0 +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/froslass/overworld.png b/graphics/pokemon/froslass/overworld.png new file mode 100644 index 000000000000..473b0a75af70 Binary files /dev/null and b/graphics/pokemon/froslass/overworld.png differ diff --git a/graphics/pokemon/froslass/overworld_normal.pal b/graphics/pokemon/froslass/overworld_normal.pal new file mode 100644 index 000000000000..a619e318b75a --- /dev/null +++ b/graphics/pokemon/froslass/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 88 +0 0 0 +64 64 64 +56 120 152 +88 160 200 +112 120 136 +192 200 216 +232 232 248 +152 160 176 +80 40 80 +128 72 128 +248 224 8 +192 56 32 +120 64 56 +0 0 0 diff --git a/graphics/pokemon/froslass/overworld_shiny.pal b/graphics/pokemon/froslass/overworld_shiny.pal new file mode 100644 index 000000000000..d049c4cdc924 --- /dev/null +++ b/graphics/pokemon/froslass/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 64 +0 0 0 +64 64 64 +80 104 112 +136 168 176 +112 120 136 +192 200 216 +232 232 248 +152 160 176 +80 40 80 +128 72 128 +248 224 8 +184 88 160 +120 56 144 +0 0 0 diff --git a/graphics/pokemon/frosmoth/overworld.png b/graphics/pokemon/frosmoth/overworld.png new file mode 100644 index 000000000000..480ee8ef6854 Binary files /dev/null and b/graphics/pokemon/frosmoth/overworld.png differ diff --git a/graphics/pokemon/frosmoth/overworld_normal.pal b/graphics/pokemon/frosmoth/overworld_normal.pal new file mode 100644 index 000000000000..fb7a83cf3833 --- /dev/null +++ b/graphics/pokemon/frosmoth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +44 56 60 +96 96 96 +180 200 212 +240 240 236 +220 240 248 +204 204 204 +0 0 0 +184 212 224 +160 188 200 +68 88 212 +132 140 228 +160 160 160 +160 204 136 +192 216 128 +0 0 0 diff --git a/graphics/pokemon/frosmoth/overworld_shiny.pal b/graphics/pokemon/frosmoth/overworld_shiny.pal new file mode 100644 index 000000000000..ebcc1aaf1251 --- /dev/null +++ b/graphics/pokemon/frosmoth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 57 +98 98 98 +180 205 213 +246 246 238 +222 238 213 +205 205 205 +0 0 0 +197 230 189 +180 205 172 +41 148 74 +90 189 115 +164 164 164 +205 205 205 +41 148 74 +0 0 0 diff --git a/graphics/pokemon/furfrou/dandy_trim/overworld.png b/graphics/pokemon/furfrou/dandy_trim/overworld.png new file mode 100644 index 000000000000..4fa5e53c1c30 Binary files /dev/null and b/graphics/pokemon/furfrou/dandy_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/dandy_trim/overworld_normal.pal b/graphics/pokemon/furfrou/dandy_trim/overworld_normal.pal new file mode 100644 index 000000000000..16e445224afa --- /dev/null +++ b/graphics/pokemon/furfrou/dandy_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +54 91 49 +88 88 88 +103 184 66 +237 241 227 +177 175 160 +16 16 16 +65 145 57 +91 134 247 +88 88 88 +237 241 227 +119 118 115 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/dandy_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/dandy_trim/overworld_shiny.pal new file mode 100644 index 000000000000..f25fd2922d4a --- /dev/null +++ b/graphics/pokemon/furfrou/dandy_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +54 91 49 +50 48 48 +103 184 66 +119 118 115 +88 88 88 +16 16 16 +65 145 57 +91 134 247 +177 175 160 +255 255 255 +237 241 227 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/debutante_trim/overworld.png b/graphics/pokemon/furfrou/debutante_trim/overworld.png new file mode 100644 index 000000000000..4ba981659cf7 Binary files /dev/null and b/graphics/pokemon/furfrou/debutante_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/debutante_trim/overworld_normal.pal b/graphics/pokemon/furfrou/debutante_trim/overworld_normal.pal new file mode 100644 index 000000000000..6acebd65028b --- /dev/null +++ b/graphics/pokemon/furfrou/debutante_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +177 175 160 +237 241 227 +120 85 30 +229 214 89 +88 88 88 +188 149 56 +16 16 16 +91 134 247 +119 118 115 +237 241 227 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/debutante_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/debutante_trim/overworld_shiny.pal new file mode 100644 index 000000000000..43cfed54c84e --- /dev/null +++ b/graphics/pokemon/furfrou/debutante_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +88 88 88 +119 118 115 +120 85 30 +229 214 89 +177 175 160 +188 149 56 +16 16 16 +91 134 247 +237 241 227 +255 255 255 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/diamond_trim/overworld.png b/graphics/pokemon/furfrou/diamond_trim/overworld.png new file mode 100644 index 000000000000..ca116d2624da Binary files /dev/null and b/graphics/pokemon/furfrou/diamond_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/diamond_trim/overworld_normal.pal b/graphics/pokemon/furfrou/diamond_trim/overworld_normal.pal new file mode 100644 index 000000000000..1251ffea2cc7 --- /dev/null +++ b/graphics/pokemon/furfrou/diamond_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +111 51 19 +237 241 227 +252 141 44 +177 175 160 +16 16 16 +228 94 48 +119 118 115 +59 86 159 +91 134 247 +88 88 88 +119 118 115 +237 241 227 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/diamond_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/diamond_trim/overworld_shiny.pal new file mode 100644 index 000000000000..8daa740a74ac --- /dev/null +++ b/graphics/pokemon/furfrou/diamond_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +111 51 19 +119 118 115 +252 141 44 +88 88 88 +16 16 16 +228 94 48 +67 65 65 +59 86 159 +91 134 247 +177 175 160 +237 241 227 +255 255 255 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/heart_trim/overworld.png b/graphics/pokemon/furfrou/heart_trim/overworld.png new file mode 100644 index 000000000000..226b08ce7d8c Binary files /dev/null and b/graphics/pokemon/furfrou/heart_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/heart_trim/overworld_normal.pal b/graphics/pokemon/furfrou/heart_trim/overworld_normal.pal new file mode 100644 index 000000000000..dda4559267dd --- /dev/null +++ b/graphics/pokemon/furfrou/heart_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +99 51 78 +88 88 88 +224 98 118 +177 175 160 +237 241 227 +16 16 16 +188 62 109 +119 118 115 +88 88 88 +91 134 247 +59 86 159 +188 4 0 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/heart_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/heart_trim/overworld_shiny.pal new file mode 100644 index 000000000000..9718218e1e1a --- /dev/null +++ b/graphics/pokemon/furfrou/heart_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +99 51 78 +50 48 48 +224 98 118 +88 88 88 +119 118 115 +16 16 16 +188 62 109 +237 241 227 +177 175 160 +91 134 247 +59 86 159 +188 4 0 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/kabuki_trim/overworld.png b/graphics/pokemon/furfrou/kabuki_trim/overworld.png new file mode 100644 index 000000000000..97cf66d39fd3 Binary files /dev/null and b/graphics/pokemon/furfrou/kabuki_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/kabuki_trim/overworld_normal.pal b/graphics/pokemon/furfrou/kabuki_trim/overworld_normal.pal new file mode 100644 index 000000000000..b88fca160e69 --- /dev/null +++ b/graphics/pokemon/furfrou/kabuki_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +177 175 160 +237 241 227 +16 16 16 +99 32 31 +255 108 63 +201 52 49 +119 118 115 +91 134 247 +88 88 88 +59 86 159 +59 85 156 +237 241 227 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/kabuki_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/kabuki_trim/overworld_shiny.pal new file mode 100644 index 000000000000..ec0564b46385 --- /dev/null +++ b/graphics/pokemon/furfrou/kabuki_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +88 88 88 +119 118 115 +16 16 16 +99 32 31 +255 108 63 +201 52 49 +237 241 227 +91 134 247 +177 175 160 +59 86 159 +59 85 156 +255 255 255 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/la_reine_trim/overworld.png b/graphics/pokemon/furfrou/la_reine_trim/overworld.png new file mode 100644 index 000000000000..79ab66d7fd06 Binary files /dev/null and b/graphics/pokemon/furfrou/la_reine_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/la_reine_trim/overworld_normal.pal b/graphics/pokemon/furfrou/la_reine_trim/overworld_normal.pal new file mode 100644 index 000000000000..d93d3a1acf4f --- /dev/null +++ b/graphics/pokemon/furfrou/la_reine_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +37 64 73 +50 48 48 +70 200 206 +177 175 160 +237 241 227 +16 16 16 +119 118 115 +23 128 149 +91 134 247 +59 86 159 +88 88 88 +119 118 115 +237 241 227 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/la_reine_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/la_reine_trim/overworld_shiny.pal new file mode 100644 index 000000000000..4a660b347f56 --- /dev/null +++ b/graphics/pokemon/furfrou/la_reine_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +37 64 73 +50 48 48 +70 200 206 +88 88 88 +119 118 115 +16 16 16 +60 59 59 +23 128 149 +91 134 247 +59 86 159 +177 175 160 +237 241 227 +255 255 255 +188 4 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/matron_trim/overworld.png b/graphics/pokemon/furfrou/matron_trim/overworld.png new file mode 100644 index 000000000000..34ba857e57d7 Binary files /dev/null and b/graphics/pokemon/furfrou/matron_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/matron_trim/overworld_normal.pal b/graphics/pokemon/furfrou/matron_trim/overworld_normal.pal new file mode 100644 index 000000000000..ba544e822b82 --- /dev/null +++ b/graphics/pokemon/furfrou/matron_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +88 88 88 +237 241 227 +181 107 211 +16 16 16 +177 175 160 +73 47 89 +136 62 182 +91 134 247 +88 88 88 +119 118 115 +237 241 227 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/matron_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/matron_trim/overworld_shiny.pal new file mode 100644 index 000000000000..617f8f6753c0 --- /dev/null +++ b/graphics/pokemon/furfrou/matron_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +119 118 115 +181 107 211 +16 16 16 +88 88 88 +73 47 89 +136 62 182 +91 134 247 +177 175 160 +237 241 227 +255 255 255 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/overworld.png b/graphics/pokemon/furfrou/overworld.png new file mode 100644 index 000000000000..e0c16890f10d Binary files /dev/null and b/graphics/pokemon/furfrou/overworld.png differ diff --git a/graphics/pokemon/furfrou/overworld_normal.pal b/graphics/pokemon/furfrou/overworld_normal.pal new file mode 100644 index 000000000000..d8ec8b9e10f1 --- /dev/null +++ b/graphics/pokemon/furfrou/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +95 94 92 +16 16 16 +237 241 227 +177 175 160 +91 134 247 +95 94 92 +188 4 0 +230 238 248 +71 70 69 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/overworld_shiny.pal b/graphics/pokemon/furfrou/overworld_shiny.pal new file mode 100644 index 000000000000..7cc4146a1e7a --- /dev/null +++ b/graphics/pokemon/furfrou/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 53 53 +16 16 16 +112 111 110 +86 85 85 +91 134 247 +237 241 227 +188 4 0 +243 244 245 +177 175 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/pharaoh_trim/overworld.png b/graphics/pokemon/furfrou/pharaoh_trim/overworld.png new file mode 100644 index 000000000000..dc51c70e514f Binary files /dev/null and b/graphics/pokemon/furfrou/pharaoh_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/pharaoh_trim/overworld_normal.pal b/graphics/pokemon/furfrou/pharaoh_trim/overworld_normal.pal new file mode 100644 index 000000000000..24d49d04c4bc --- /dev/null +++ b/graphics/pokemon/furfrou/pharaoh_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +237 241 227 +177 175 160 +16 16 16 +34 50 102 +57 91 209 +91 134 247 +112 184 248 +88 88 88 +119 118 115 +237 241 227 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/pharaoh_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/pharaoh_trim/overworld_shiny.pal new file mode 100644 index 000000000000..bca12d7faac4 --- /dev/null +++ b/graphics/pokemon/furfrou/pharaoh_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +119 118 115 +88 88 88 +16 16 16 +34 50 102 +57 91 209 +91 134 247 +112 184 248 +177 175 160 +237 241 227 +255 255 255 +188 4 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/star_trim/overworld.png b/graphics/pokemon/furfrou/star_trim/overworld.png new file mode 100644 index 000000000000..09cd1a2e4097 Binary files /dev/null and b/graphics/pokemon/furfrou/star_trim/overworld.png differ diff --git a/graphics/pokemon/furfrou/star_trim/overworld_normal.pal b/graphics/pokemon/furfrou/star_trim/overworld_normal.pal new file mode 100644 index 000000000000..5814a041a682 --- /dev/null +++ b/graphics/pokemon/furfrou/star_trim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +237 241 227 +44 105 154 +177 175 160 +80 163 212 +16 16 16 +28 60 86 +119 118 115 +91 134 247 +88 88 88 +188 4 0 +237 241 227 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furfrou/star_trim/overworld_shiny.pal b/graphics/pokemon/furfrou/star_trim/overworld_shiny.pal new file mode 100644 index 000000000000..55b7e6f09c5b --- /dev/null +++ b/graphics/pokemon/furfrou/star_trim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +50 48 48 +119 118 115 +44 105 154 +88 88 88 +80 163 212 +16 16 16 +28 60 86 +237 241 227 +91 134 247 +177 175 160 +188 4 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/furret/overworld.png b/graphics/pokemon/furret/overworld.png new file mode 100644 index 000000000000..de8beb85169e Binary files /dev/null and b/graphics/pokemon/furret/overworld.png differ diff --git a/graphics/pokemon/furret/overworld_normal.pal b/graphics/pokemon/furret/overworld_normal.pal new file mode 100644 index 000000000000..6c65763c63bb --- /dev/null +++ b/graphics/pokemon/furret/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +152 112 64 +88 56 24 +240 208 160 +208 176 112 +64 32 8 +112 80 48 +232 232 248 +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/furret/overworld_shiny.pal b/graphics/pokemon/furret/overworld_shiny.pal new file mode 100644 index 000000000000..381f36fc75ca --- /dev/null +++ b/graphics/pokemon/furret/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +192 120 136 +80 16 80 +240 224 192 +232 200 152 +64 32 8 +144 72 80 +232 232 248 +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/gabite/overworld.png b/graphics/pokemon/gabite/overworld.png new file mode 100644 index 000000000000..a0aa0c65279b Binary files /dev/null and b/graphics/pokemon/gabite/overworld.png differ diff --git a/graphics/pokemon/gabite/overworld_normal.pal b/graphics/pokemon/gabite/overworld_normal.pal new file mode 100644 index 000000000000..47f6efaf92bb --- /dev/null +++ b/graphics/pokemon/gabite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 96 +0 0 0 +80 112 184 +120 136 208 +176 176 232 +56 80 120 +104 144 192 +248 224 8 +200 152 8 +152 152 152 +128 48 16 +184 64 24 +232 232 248 +104 104 104 +0 0 0 diff --git a/graphics/pokemon/gabite/overworld_shiny.pal b/graphics/pokemon/gabite/overworld_shiny.pal new file mode 100644 index 000000000000..b5a8192aa202 --- /dev/null +++ b/graphics/pokemon/gabite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 96 +0 0 0 +32 96 200 +120 136 208 +176 176 232 +40 80 144 +56 136 216 +248 224 8 +200 152 8 +152 152 152 +128 48 16 +184 64 24 +232 232 248 +104 104 104 +0 0 0 diff --git a/graphics/pokemon/gallade/overworld.png b/graphics/pokemon/gallade/overworld.png new file mode 100644 index 000000000000..ead3234d1d17 Binary files /dev/null and b/graphics/pokemon/gallade/overworld.png differ diff --git a/graphics/pokemon/gallade/overworld_normal.pal b/graphics/pokemon/gallade/overworld_normal.pal new file mode 100644 index 000000000000..121745d5f33e --- /dev/null +++ b/graphics/pokemon/gallade/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 104 96 +0 0 0 +104 200 224 +24 184 200 +0 72 16 +24 144 48 +48 176 64 +8 104 24 +72 72 80 +232 232 248 +208 208 224 +184 48 72 +192 192 200 +136 136 152 +128 32 56 diff --git a/graphics/pokemon/gallade/overworld_shiny.pal b/graphics/pokemon/gallade/overworld_shiny.pal new file mode 100644 index 000000000000..54ba329dd082 --- /dev/null +++ b/graphics/pokemon/gallade/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 112 112 +0 0 0 +200 200 200 +152 208 160 +0 72 120 +32 144 192 +48 168 216 +16 112 160 +72 72 80 +232 232 248 +208 208 224 +224 128 40 +192 192 200 +136 136 152 +128 32 56 diff --git a/graphics/pokemon/galvantula/overworld.png b/graphics/pokemon/galvantula/overworld.png new file mode 100644 index 000000000000..8e9eeb8e66a5 Binary files /dev/null and b/graphics/pokemon/galvantula/overworld.png differ diff --git a/graphics/pokemon/galvantula/overworld_normal.pal b/graphics/pokemon/galvantula/overworld_normal.pal new file mode 100644 index 000000000000..651f2c478a3e --- /dev/null +++ b/graphics/pokemon/galvantula/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 220 0 +36 48 92 +60 80 172 +16 16 16 +112 100 100 +200 176 64 +252 220 80 +104 88 0 +164 144 160 +0 0 0 +48 40 32 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/galvantula/overworld_shiny.pal b/graphics/pokemon/galvantula/overworld_shiny.pal new file mode 100644 index 000000000000..e3e49deac886 --- /dev/null +++ b/graphics/pokemon/galvantula/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 82 +16 65 98 +24 41 65 +65 74 74 +238 164 0 +255 213 82 +106 57 57 +98 106 98 +0 0 0 +0 0 0 +180 180 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/garbodor/overworld.png b/graphics/pokemon/garbodor/overworld.png new file mode 100644 index 000000000000..66b437edaae3 Binary files /dev/null and b/graphics/pokemon/garbodor/overworld.png differ diff --git a/graphics/pokemon/garbodor/overworld_normal.pal b/graphics/pokemon/garbodor/overworld_normal.pal new file mode 100644 index 000000000000..7ab2233f4560 --- /dev/null +++ b/graphics/pokemon/garbodor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 39 35 +164 139 115 +90 74 65 +0 0 0 +123 106 90 +103 118 172 +24 57 41 +115 115 115 +188 187 188 +41 106 74 +24 74 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/garbodor/overworld_shiny.pal b/graphics/pokemon/garbodor/overworld_shiny.pal new file mode 100644 index 000000000000..a80760629d4d --- /dev/null +++ b/graphics/pokemon/garbodor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 33 30 +157 152 146 +80 72 71 +0 0 0 +107 107 102 +141 186 84 +16 64 72 +107 107 102 +157 152 146 +40 160 160 +16 120 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/garchomp/overworld.png b/graphics/pokemon/garchomp/overworld.png new file mode 100644 index 000000000000..2a6a93bd54a4 Binary files /dev/null and b/graphics/pokemon/garchomp/overworld.png differ diff --git a/graphics/pokemon/garchomp/overworld_normal.pal b/graphics/pokemon/garchomp/overworld_normal.pal new file mode 100644 index 000000000000..ec2e1d504e31 --- /dev/null +++ b/graphics/pokemon/garchomp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 112 160 +72 80 120 +48 48 80 +120 152 200 +248 224 8 +192 152 0 +128 48 16 +104 104 104 +168 168 168 +232 232 248 +200 200 208 +184 64 24 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/garchomp/overworld_shiny.pal b/graphics/pokemon/garchomp/overworld_shiny.pal new file mode 100644 index 000000000000..1855aa765800 --- /dev/null +++ b/graphics/pokemon/garchomp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 88 112 +48 72 88 +32 48 56 +72 112 136 +248 224 8 +192 152 0 +128 48 16 +104 104 104 +152 152 152 +232 232 248 +200 200 208 +184 64 24 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gardevoir/overworld.png b/graphics/pokemon/gardevoir/overworld.png new file mode 100644 index 000000000000..d09e002a8be4 Binary files /dev/null and b/graphics/pokemon/gardevoir/overworld.png differ diff --git a/graphics/pokemon/gardevoir/overworld_normal.pal b/graphics/pokemon/gardevoir/overworld_normal.pal new file mode 100644 index 000000000000..3b82b2d5c8b4 --- /dev/null +++ b/graphics/pokemon/gardevoir/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +40 128 56 +72 176 88 +16 64 32 +104 200 128 +72 72 80 +232 232 248 +128 128 144 +200 200 216 +168 168 176 +184 48 72 +240 104 104 +128 32 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gardevoir/overworld_shiny.pal b/graphics/pokemon/gardevoir/overworld_shiny.pal new file mode 100644 index 000000000000..21ce10171773 --- /dev/null +++ b/graphics/pokemon/gardevoir/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 144 120 +88 200 176 +16 96 120 +160 224 200 +88 88 64 +232 232 248 +128 128 112 +208 208 184 +168 168 144 +208 104 64 +240 160 72 +128 80 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastly/overworld.png b/graphics/pokemon/gastly/overworld.png new file mode 100644 index 000000000000..4df5a7740ca6 Binary files /dev/null and b/graphics/pokemon/gastly/overworld.png differ diff --git a/graphics/pokemon/gastly/overworld_normal.pal b/graphics/pokemon/gastly/overworld_normal.pal new file mode 100644 index 000000000000..e4e4f4b6db96 --- /dev/null +++ b/graphics/pokemon/gastly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 152 +136 112 160 +80 56 104 +40 40 56 +56 56 56 +72 72 72 +0 0 0 +184 184 184 +232 232 248 +136 136 136 +64 16 56 +152 8 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastly/overworld_shiny.pal b/graphics/pokemon/gastly/overworld_shiny.pal new file mode 100644 index 000000000000..154bd818a3ed --- /dev/null +++ b/graphics/pokemon/gastly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 128 208 +112 176 248 +56 64 120 +56 16 56 +64 32 64 +88 48 88 +0 0 0 +184 184 184 +232 232 248 +136 136 136 +64 16 56 +152 8 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastrodon/east_sea/overworld.png b/graphics/pokemon/gastrodon/east_sea/overworld.png new file mode 100644 index 000000000000..038846ad45f0 Binary files /dev/null and b/graphics/pokemon/gastrodon/east_sea/overworld.png differ diff --git a/graphics/pokemon/gastrodon/east_sea/overworld_normal.pal b/graphics/pokemon/gastrodon/east_sea/overworld_normal.pal new file mode 100644 index 000000000000..34392afb93b9 --- /dev/null +++ b/graphics/pokemon/gastrodon/east_sea/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +48 80 48 +0 0 0 +200 160 0 +88 160 64 +48 48 48 +248 208 88 +56 120 40 +184 184 200 +64 184 232 +48 112 128 +40 152 184 +144 120 48 +32 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastrodon/east_sea/overworld_shiny.pal b/graphics/pokemon/gastrodon/east_sea/overworld_shiny.pal new file mode 100644 index 000000000000..9269b3503a36 --- /dev/null +++ b/graphics/pokemon/gastrodon/east_sea/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +80 80 48 +0 0 0 +200 160 0 +152 184 40 +48 48 48 +248 208 88 +96 136 0 +184 184 200 +152 224 248 +8 160 200 +104 192 224 +144 120 48 +32 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastrodon/overworld.png b/graphics/pokemon/gastrodon/overworld.png new file mode 100644 index 000000000000..3d67e41b61a4 Binary files /dev/null and b/graphics/pokemon/gastrodon/overworld.png differ diff --git a/graphics/pokemon/gastrodon/overworld_normal.pal b/graphics/pokemon/gastrodon/overworld_normal.pal new file mode 100644 index 000000000000..2e367aa8c290 --- /dev/null +++ b/graphics/pokemon/gastrodon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 40 +48 48 48 +200 160 0 +160 104 64 +112 72 56 +0 0 0 +248 208 88 +184 184 200 +232 152 216 +152 96 128 +144 120 48 +200 120 168 +80 40 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gastrodon/overworld_shiny.pal b/graphics/pokemon/gastrodon/overworld_shiny.pal new file mode 100644 index 000000000000..d493e9aa1cef --- /dev/null +++ b/graphics/pokemon/gastrodon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 40 +48 48 48 +200 160 0 +160 144 64 +112 104 56 +0 0 0 +248 208 88 +184 184 200 +232 168 160 +152 80 64 +144 120 48 +200 120 104 +96 24 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/genesect/overworld.png b/graphics/pokemon/genesect/overworld.png new file mode 100644 index 000000000000..ed29dd09d0f5 Binary files /dev/null and b/graphics/pokemon/genesect/overworld.png differ diff --git a/graphics/pokemon/genesect/overworld_normal.pal b/graphics/pokemon/genesect/overworld_normal.pal new file mode 100644 index 000000000000..c01dbd0a2fb1 --- /dev/null +++ b/graphics/pokemon/genesect/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +71 33 63 +104 55 129 +147 79 191 +199 172 255 +11 11 11 +155 121 182 +240 228 0 +206 196 0 +0 0 0 +104 40 33 +229 229 247 +245 71 25 +172 55 25 +104 104 104 +223 237 142 diff --git a/graphics/pokemon/genesect/overworld_shiny.pal b/graphics/pokemon/genesect/overworld_shiny.pal new file mode 100644 index 000000000000..c6f59d674d17 --- /dev/null +++ b/graphics/pokemon/genesect/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 32 24 +144 48 40 +208 64 72 +71 33 63 +248 176 200 +11 11 11 +184 120 144 +232 184 0 +192 128 0 +0 0 0 +104 40 33 +229 229 247 +168 168 184 +88 88 112 +104 104 104 diff --git a/graphics/pokemon/gengar/overworld.png b/graphics/pokemon/gengar/overworld.png new file mode 100644 index 000000000000..514d080e1cc4 Binary files /dev/null and b/graphics/pokemon/gengar/overworld.png differ diff --git a/graphics/pokemon/gengar/overworld_normal.pal b/graphics/pokemon/gengar/overworld_normal.pal new file mode 100644 index 000000000000..5450ef839ca0 --- /dev/null +++ b/graphics/pokemon/gengar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 56 +0 0 0 +144 120 160 +104 80 128 +80 56 104 +216 96 96 +248 168 160 +152 152 152 +96 96 96 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gengar/overworld_shiny.pal b/graphics/pokemon/gengar/overworld_shiny.pal new file mode 100644 index 000000000000..b0bf73361671 --- /dev/null +++ b/graphics/pokemon/gengar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 64 72 +0 0 0 +144 144 160 +120 112 128 +96 88 120 +216 144 136 +248 192 184 +152 152 152 +96 96 96 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/geodude/alolan/overworld.png b/graphics/pokemon/geodude/alolan/overworld.png new file mode 100644 index 000000000000..9897707a297c Binary files /dev/null and b/graphics/pokemon/geodude/alolan/overworld.png differ diff --git a/graphics/pokemon/geodude/alolan/overworld_normal.pal b/graphics/pokemon/geodude/alolan/overworld_normal.pal new file mode 100644 index 000000000000..bea7c262fa2b --- /dev/null +++ b/graphics/pokemon/geodude/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +51 47 47 +74 101 112 +0 0 0 +173 185 198 +119 134 150 +46 64 71 +99 102 105 +55 59 61 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/geodude/alolan/overworld_shiny.pal b/graphics/pokemon/geodude/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..7d1d0a50e07b --- /dev/null +++ b/graphics/pokemon/geodude/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +51 47 47 +74 101 112 +0 0 0 +248 184 56 +208 136 56 +80 56 16 +99 102 105 +55 59 61 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/geodude/overworld.png b/graphics/pokemon/geodude/overworld.png new file mode 100644 index 000000000000..b3410ecca1fe Binary files /dev/null and b/graphics/pokemon/geodude/overworld.png differ diff --git a/graphics/pokemon/geodude/overworld_normal.pal b/graphics/pokemon/geodude/overworld_normal.pal new file mode 100644 index 000000000000..94158f3e268b --- /dev/null +++ b/graphics/pokemon/geodude/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 48 32 +0 0 0 +184 168 128 +120 112 96 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +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/geodude/overworld_shiny.pal b/graphics/pokemon/geodude/overworld_shiny.pal new file mode 100644 index 000000000000..c548276f7b2f --- /dev/null +++ b/graphics/pokemon/geodude/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 16 +0 0 0 +248 184 56 +208 136 56 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +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/gible/overworld.png b/graphics/pokemon/gible/overworld.png new file mode 100644 index 000000000000..05c3846855e2 Binary files /dev/null and b/graphics/pokemon/gible/overworld.png differ diff --git a/graphics/pokemon/gible/overworld_normal.pal b/graphics/pokemon/gible/overworld_normal.pal new file mode 100644 index 000000000000..224ec1fb0bb2 --- /dev/null +++ b/graphics/pokemon/gible/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 48 +104 168 168 +48 88 88 +80 136 136 +112 168 184 +136 192 216 +0 0 0 +152 152 152 +56 56 56 +224 224 224 +184 64 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gible/overworld_shiny.pal b/graphics/pokemon/gible/overworld_shiny.pal new file mode 100644 index 000000000000..c8af4ae6e74a --- /dev/null +++ b/graphics/pokemon/gible/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 64 88 +64 176 200 +24 88 144 +40 144 176 +112 168 184 +136 192 216 +0 0 0 +152 152 152 +56 56 56 +224 224 224 +184 152 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gigalith/overworld.png b/graphics/pokemon/gigalith/overworld.png new file mode 100644 index 000000000000..8e5b2b7b3532 Binary files /dev/null and b/graphics/pokemon/gigalith/overworld.png differ diff --git a/graphics/pokemon/gigalith/overworld_normal.pal b/graphics/pokemon/gigalith/overworld_normal.pal new file mode 100644 index 000000000000..54840537bacd --- /dev/null +++ b/graphics/pokemon/gigalith/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +95 25 25 +236 104 104 +147 40 40 +33 47 95 +227 40 40 +55 71 129 +25 33 55 +25 33 55 +0 0 0 +164 121 18 +218 182 79 +32 46 85 +25 25 33 +54 61 77 +0 0 0 diff --git a/graphics/pokemon/gigalith/overworld_shiny.pal b/graphics/pokemon/gigalith/overworld_shiny.pal new file mode 100644 index 000000000000..5b24f52b1447 --- /dev/null +++ b/graphics/pokemon/gigalith/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 72 +176 248 248 +40 120 152 +64 40 104 +16 200 192 +88 64 136 +25 33 55 +40 16 64 +0 0 0 +168 96 32 +248 120 32 +32 46 85 +25 25 33 +54 61 77 +0 0 0 diff --git a/graphics/pokemon/girafarig/overworld.png b/graphics/pokemon/girafarig/overworld.png new file mode 100644 index 000000000000..8c9402494e2d Binary files /dev/null and b/graphics/pokemon/girafarig/overworld.png differ diff --git a/graphics/pokemon/girafarig/overworld_normal.pal b/graphics/pokemon/girafarig/overworld_normal.pal new file mode 100644 index 000000000000..4050cdf2873c --- /dev/null +++ b/graphics/pokemon/girafarig/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 88 +0 0 0 +232 232 248 +160 176 200 +96 112 152 +104 80 56 +72 48 16 +200 160 80 +248 208 96 +152 120 80 +184 80 104 +56 112 160 +232 112 184 +32 64 120 +40 48 56 diff --git a/graphics/pokemon/girafarig/overworld_shiny.pal b/graphics/pokemon/girafarig/overworld_shiny.pal new file mode 100644 index 000000000000..8ea6ebaac1a3 --- /dev/null +++ b/graphics/pokemon/girafarig/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 88 +0 0 0 +232 232 248 +160 176 200 +96 112 152 +136 96 56 +72 48 16 +216 160 56 +248 200 80 +176 112 80 +0 136 192 +56 112 160 +24 184 248 +32 64 120 +40 48 56 diff --git a/graphics/pokemon/giratina/origin/overworld.png b/graphics/pokemon/giratina/origin/overworld.png new file mode 100644 index 000000000000..cf022c485830 Binary files /dev/null and b/graphics/pokemon/giratina/origin/overworld.png differ diff --git a/graphics/pokemon/giratina/origin/overworld_normal.pal b/graphics/pokemon/giratina/origin/overworld_normal.pal new file mode 100644 index 000000000000..c05ed66c48e5 --- /dev/null +++ b/graphics/pokemon/giratina/origin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +96 80 16 +40 40 40 +248 248 208 +176 152 24 +56 56 56 +240 80 64 +168 48 64 +232 208 24 +184 184 184 +144 144 144 +80 80 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/giratina/origin/overworld_shiny.pal b/graphics/pokemon/giratina/origin/overworld_shiny.pal new file mode 100644 index 000000000000..560f34aaf5a8 --- /dev/null +++ b/graphics/pokemon/giratina/origin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +80 80 80 +40 40 40 +248 248 208 +144 144 144 +56 48 24 +16 184 192 +8 112 120 +184 184 184 +248 224 96 +200 144 48 +112 96 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/giratina/overworld.png b/graphics/pokemon/giratina/overworld.png new file mode 100644 index 000000000000..8caa512dc119 Binary files /dev/null and b/graphics/pokemon/giratina/overworld.png differ diff --git a/graphics/pokemon/giratina/overworld_normal.pal b/graphics/pokemon/giratina/overworld_normal.pal new file mode 100644 index 000000000000..7d21338a8b4b --- /dev/null +++ b/graphics/pokemon/giratina/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +56 64 64 +104 96 24 +232 208 24 +16 16 16 +176 152 24 +248 248 208 +136 136 168 +168 176 200 +240 80 64 +168 48 64 +88 88 112 +112 112 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/giratina/overworld_shiny.pal b/graphics/pokemon/giratina/overworld_shiny.pal new file mode 100644 index 000000000000..4e7f9da3449e --- /dev/null +++ b/graphics/pokemon/giratina/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +56 64 64 +96 104 128 +200 200 208 +16 16 16 +168 168 184 +248 248 208 +224 200 48 +248 240 136 +16 184 192 +8 112 120 +160 128 24 +192 160 24 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/glaceon/overworld.png b/graphics/pokemon/glaceon/overworld.png new file mode 100644 index 000000000000..84100e04d074 Binary files /dev/null and b/graphics/pokemon/glaceon/overworld.png differ diff --git a/graphics/pokemon/glaceon/overworld_normal.pal b/graphics/pokemon/glaceon/overworld_normal.pal new file mode 100644 index 000000000000..6280c829b6ad --- /dev/null +++ b/graphics/pokemon/glaceon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 80 +0 0 0 +32 104 104 +80 184 216 +24 96 112 +48 152 176 +40 152 168 +136 224 232 +176 232 248 +112 200 224 +48 144 136 +208 224 232 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/glaceon/overworld_shiny.pal b/graphics/pokemon/glaceon/overworld_shiny.pal new file mode 100644 index 000000000000..50db4a295b40 --- /dev/null +++ b/graphics/pokemon/glaceon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 80 +0 0 0 +56 152 144 +160 216 232 +56 136 152 +64 192 216 +136 200 208 +192 240 240 +208 240 248 +112 200 224 +64 192 176 +208 224 232 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/glalie/overworld.png b/graphics/pokemon/glalie/overworld.png new file mode 100644 index 000000000000..3ce1fda91ed2 Binary files /dev/null and b/graphics/pokemon/glalie/overworld.png differ diff --git a/graphics/pokemon/glalie/overworld_normal.pal b/graphics/pokemon/glalie/overworld_normal.pal new file mode 100644 index 000000000000..7784213a6dc6 --- /dev/null +++ b/graphics/pokemon/glalie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 56 72 +40 40 56 +80 80 96 +152 160 176 +112 120 136 +192 200 216 +40 128 192 +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/glalie/overworld_shiny.pal b/graphics/pokemon/glalie/overworld_shiny.pal new file mode 100644 index 000000000000..a02592dd4d99 --- /dev/null +++ b/graphics/pokemon/glalie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 64 80 +40 48 64 +80 88 104 +152 168 184 +112 128 144 +192 208 224 +208 48 32 +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/glameow/overworld.png b/graphics/pokemon/glameow/overworld.png new file mode 100644 index 000000000000..5c305aec9085 Binary files /dev/null and b/graphics/pokemon/glameow/overworld.png differ diff --git a/graphics/pokemon/glameow/overworld_normal.pal b/graphics/pokemon/glameow/overworld_normal.pal new file mode 100644 index 000000000000..1358d05bff57 --- /dev/null +++ b/graphics/pokemon/glameow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +192 192 192 +0 0 0 +232 232 248 +128 128 128 +112 112 112 +152 152 152 +176 56 104 +208 96 176 +16 32 104 +224 152 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/glameow/overworld_shiny.pal b/graphics/pokemon/glameow/overworld_shiny.pal new file mode 100644 index 000000000000..5406a32b48b1 --- /dev/null +++ b/graphics/pokemon/glameow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +192 192 192 +0 0 0 +232 232 248 +128 128 128 +112 72 88 +168 120 144 +176 56 104 +208 96 176 +16 32 104 +224 152 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/glastrier/overworld.png b/graphics/pokemon/glastrier/overworld.png new file mode 100644 index 000000000000..44bd656b6764 Binary files /dev/null and b/graphics/pokemon/glastrier/overworld.png differ diff --git a/graphics/pokemon/glastrier/overworld_normal.pal b/graphics/pokemon/glastrier/overworld_normal.pal new file mode 100644 index 000000000000..1c1d0e7162c3 --- /dev/null +++ b/graphics/pokemon/glastrier/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 88 80 +168 224 240 +168 168 192 +16 16 16 +248 248 248 +0 40 88 +192 200 200 +0 0 0 +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/glastrier/overworld_shiny.pal b/graphics/pokemon/glastrier/overworld_shiny.pal new file mode 100644 index 000000000000..e45960848df3 --- /dev/null +++ b/graphics/pokemon/glastrier/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 82 98 +197 197 255 +148 156 213 +0 0 0 +246 246 246 +49 49 49 +189 189 189 +0 0 0 +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/gligar/overworld.png b/graphics/pokemon/gligar/overworld.png new file mode 100644 index 000000000000..50f94601f185 Binary files /dev/null and b/graphics/pokemon/gligar/overworld.png differ diff --git a/graphics/pokemon/gligar/overworld_normal.pal b/graphics/pokemon/gligar/overworld_normal.pal new file mode 100644 index 000000000000..afbe559d8a5d --- /dev/null +++ b/graphics/pokemon/gligar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 40 96 +200 112 176 +0 0 0 +240 192 216 +224 152 208 +160 88 136 +232 232 248 +0 56 88 +40 144 168 +16 96 128 +200 208 216 +136 32 56 +176 72 120 +208 104 152 +0 0 0 diff --git a/graphics/pokemon/gligar/overworld_shiny.pal b/graphics/pokemon/gligar/overworld_shiny.pal new file mode 100644 index 000000000000..63e0e8afd30d --- /dev/null +++ b/graphics/pokemon/gligar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 48 112 +128 160 216 +0 0 0 +176 232 248 +152 192 232 +80 112 208 +232 232 248 +24 56 128 +96 128 224 +56 112 184 +200 208 216 +136 32 56 +176 72 120 +208 104 152 +0 0 0 diff --git a/graphics/pokemon/gliscor/overworld.png b/graphics/pokemon/gliscor/overworld.png new file mode 100644 index 000000000000..397301fa3f31 Binary files /dev/null and b/graphics/pokemon/gliscor/overworld.png differ diff --git a/graphics/pokemon/gliscor/overworld_normal.pal b/graphics/pokemon/gliscor/overworld_normal.pal new file mode 100644 index 000000000000..e04040ea2313 --- /dev/null +++ b/graphics/pokemon/gliscor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 40 88 +152 168 224 +168 40 24 +136 136 208 +120 24 16 +32 32 32 +248 216 56 +144 112 0 +96 96 112 +64 64 64 +168 168 168 +104 32 80 +96 96 96 +0 0 0 diff --git a/graphics/pokemon/gliscor/overworld_shiny.pal b/graphics/pokemon/gliscor/overworld_shiny.pal new file mode 100644 index 000000000000..45cb85b28f68 --- /dev/null +++ b/graphics/pokemon/gliscor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 64 88 +128 200 248 +248 216 56 +48 144 200 +200 176 0 +32 32 32 +248 216 56 +144 112 0 +72 104 120 +32 32 32 +152 208 160 +104 32 80 +56 56 56 +0 0 0 diff --git a/graphics/pokemon/gloom/overworld.png b/graphics/pokemon/gloom/overworld.png new file mode 100644 index 000000000000..349429731a0a Binary files /dev/null and b/graphics/pokemon/gloom/overworld.png differ diff --git a/graphics/pokemon/gloom/overworld_normal.pal b/graphics/pokemon/gloom/overworld_normal.pal new file mode 100644 index 000000000000..d519e23b1ca8 --- /dev/null +++ b/graphics/pokemon/gloom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 32 16 +168 80 16 +0 0 0 +168 48 72 +216 96 112 +216 144 144 +248 112 24 +48 80 112 +32 56 104 +64 112 152 +80 40 128 +168 168 168 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gloom/overworld_shiny.pal b/graphics/pokemon/gloom/overworld_shiny.pal new file mode 100644 index 000000000000..1bef80553895 --- /dev/null +++ b/graphics/pokemon/gloom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 64 24 +168 128 16 +0 0 0 +136 80 16 +192 112 24 +216 144 144 +248 160 24 +88 128 64 +32 72 40 +160 184 48 +160 96 24 +208 208 208 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gogoat/overworld.png b/graphics/pokemon/gogoat/overworld.png new file mode 100644 index 000000000000..2043a6150784 Binary files /dev/null and b/graphics/pokemon/gogoat/overworld.png differ diff --git a/graphics/pokemon/gogoat/overworld_normal.pal b/graphics/pokemon/gogoat/overworld_normal.pal new file mode 100644 index 000000000000..450b906627bc --- /dev/null +++ b/graphics/pokemon/gogoat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +10 68 43 +1 146 83 +71 51 28 +16 16 16 +151 151 151 +139 94 42 +250 251 253 +99 99 99 +55 55 55 +5 111 65 +233 89 75 +188 159 124 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gogoat/overworld_shiny.pal b/graphics/pokemon/gogoat/overworld_shiny.pal new file mode 100644 index 000000000000..06829425dce4 --- /dev/null +++ b/graphics/pokemon/gogoat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +126 155 52 +185 226 67 +47 38 34 +16 16 16 +254 215 81 +63 53 48 +250 251 253 +184 160 62 +129 111 40 +5 111 65 +233 89 75 +81 70 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golbat/overworld.png b/graphics/pokemon/golbat/overworld.png new file mode 100644 index 000000000000..9ec0ecc2d8e7 Binary files /dev/null and b/graphics/pokemon/golbat/overworld.png differ diff --git a/graphics/pokemon/golbat/overworld_normal.pal b/graphics/pokemon/golbat/overworld_normal.pal new file mode 100644 index 000000000000..cd9ef090691d --- /dev/null +++ b/graphics/pokemon/golbat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 64 +64 112 120 +80 184 176 +0 0 0 +96 64 128 +56 24 88 +136 96 184 +72 144 152 +232 232 248 +184 184 192 +56 56 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golbat/overworld_shiny.pal b/graphics/pokemon/golbat/overworld_shiny.pal new file mode 100644 index 000000000000..ebc603b29b89 --- /dev/null +++ b/graphics/pokemon/golbat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 24 +96 120 56 +160 184 88 +0 0 0 +184 112 136 +144 88 88 +216 144 184 +128 152 72 +232 232 248 +184 184 192 +64 64 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goldeen/overworld.png b/graphics/pokemon/goldeen/overworld.png new file mode 100644 index 000000000000..a8f8ac58a30f Binary files /dev/null and b/graphics/pokemon/goldeen/overworld.png differ diff --git a/graphics/pokemon/goldeen/overworld_normal.pal b/graphics/pokemon/goldeen/overworld_normal.pal new file mode 100644 index 000000000000..98c9aeb76f44 --- /dev/null +++ b/graphics/pokemon/goldeen/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +232 232 248 +0 0 0 +248 232 160 +176 176 176 +232 72 32 +216 160 80 +160 32 16 +96 16 0 +200 88 120 +240 128 160 +40 128 112 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goldeen/overworld_shiny.pal b/graphics/pokemon/goldeen/overworld_shiny.pal new file mode 100644 index 000000000000..a3932f12c40c --- /dev/null +++ b/graphics/pokemon/goldeen/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +232 232 248 +0 0 0 +248 232 160 +176 176 176 +248 168 32 +216 160 80 +216 120 16 +192 72 0 +200 88 120 +240 128 160 +40 128 112 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golduck/overworld.png b/graphics/pokemon/golduck/overworld.png new file mode 100644 index 000000000000..4eccae74c417 Binary files /dev/null and b/graphics/pokemon/golduck/overworld.png differ diff --git a/graphics/pokemon/golduck/overworld_normal.pal b/graphics/pokemon/golduck/overworld_normal.pal new file mode 100644 index 000000000000..ffe266945036 --- /dev/null +++ b/graphics/pokemon/golduck/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 80 +120 160 248 +80 120 168 +0 0 0 +240 48 112 +232 232 248 +176 176 208 +248 232 136 +200 184 64 +88 16 32 +248 192 80 +64 64 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golduck/overworld_shiny.pal b/graphics/pokemon/golduck/overworld_shiny.pal new file mode 100644 index 000000000000..fa8c9b31c522 --- /dev/null +++ b/graphics/pokemon/golduck/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 80 +88 184 248 +40 136 168 +0 0 0 +240 48 112 +232 232 248 +176 176 208 +248 192 200 +200 120 128 +88 16 32 +224 168 176 +64 64 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golem/alolan/overworld.png b/graphics/pokemon/golem/alolan/overworld.png new file mode 100644 index 000000000000..d5d950f84dd5 Binary files /dev/null and b/graphics/pokemon/golem/alolan/overworld.png differ diff --git a/graphics/pokemon/golem/alolan/overworld_normal.pal b/graphics/pokemon/golem/alolan/overworld_normal.pal new file mode 100644 index 000000000000..a0d2c141a38b --- /dev/null +++ b/graphics/pokemon/golem/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +82 99 107 +43 68 77 +226 191 84 +24 37 41 +48 48 48 +157 168 157 +130 138 130 +89 96 89 +131 121 112 +168 157 147 +103 96 88 +192 192 192 +104 16 24 +232 232 248 diff --git a/graphics/pokemon/golem/alolan/overworld_shiny.pal b/graphics/pokemon/golem/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..6207cd3977af --- /dev/null +++ b/graphics/pokemon/golem/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +82 99 107 +43 68 77 +226 191 84 +24 37 41 +49 40 20 +163 126 64 +131 82 61 +90 62 30 +184 138 128 +208 169 160 +103 96 88 +192 192 192 +104 16 24 +232 232 248 diff --git a/graphics/pokemon/golem/overworld.png b/graphics/pokemon/golem/overworld.png new file mode 100644 index 000000000000..9400d2d42926 Binary files /dev/null and b/graphics/pokemon/golem/overworld.png differ diff --git a/graphics/pokemon/golem/overworld_normal.pal b/graphics/pokemon/golem/overworld_normal.pal new file mode 100644 index 000000000000..d05008296afd --- /dev/null +++ b/graphics/pokemon/golem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +160 144 104 +120 112 80 +88 80 56 +144 112 96 +192 152 120 +112 88 72 +192 192 192 +232 232 248 +160 160 160 +104 16 24 +152 152 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golem/overworld_shiny.pal b/graphics/pokemon/golem/overworld_shiny.pal new file mode 100644 index 000000000000..6bba9477df56 --- /dev/null +++ b/graphics/pokemon/golem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 24 +0 0 0 +160 128 80 +128 88 72 +88 64 40 +184 128 128 +208 160 160 +128 88 80 +192 192 192 +232 232 248 +160 160 160 +104 16 24 +152 152 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/golett/overworld.png b/graphics/pokemon/golett/overworld.png new file mode 100644 index 000000000000..7a393c8b265a Binary files /dev/null and b/graphics/pokemon/golett/overworld.png differ diff --git a/graphics/pokemon/golett/overworld_normal.pal b/graphics/pokemon/golett/overworld_normal.pal new file mode 100644 index 000000000000..2ace7bf7eab1 --- /dev/null +++ b/graphics/pokemon/golett/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 64 +128 192 192 +0 0 0 +96 160 192 +32 96 128 +0 64 64 +224 224 128 +32 128 128 +160 128 64 +18 25 32 +0 64 64 +46 54 69 +192 160 64 +128 192 192 +0 0 0 diff --git a/graphics/pokemon/golett/overworld_shiny.pal b/graphics/pokemon/golett/overworld_shiny.pal new file mode 100644 index 000000000000..2ec1b5742be8 --- /dev/null +++ b/graphics/pokemon/golett/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +32 32 64 +144 184 184 +0 0 0 +104 152 144 +40 56 64 +64 72 88 +208 248 64 +32 128 128 +160 128 64 +18 25 32 +0 64 64 +46 54 69 +192 160 64 +128 192 192 +0 0 0 diff --git a/graphics/pokemon/golisopod/overworld.png b/graphics/pokemon/golisopod/overworld.png new file mode 100644 index 000000000000..8415b0b75fbb Binary files /dev/null and b/graphics/pokemon/golisopod/overworld.png differ diff --git a/graphics/pokemon/golisopod/overworld_normal.pal b/graphics/pokemon/golisopod/overworld_normal.pal new file mode 100644 index 000000000000..78d579d20cc7 --- /dev/null +++ b/graphics/pokemon/golisopod/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +157 203 179 +145 189 166 +112 180 146 +161 130 162 +83 145 147 +112 92 121 +177 87 165 +112 84 113 +43 79 80 +138 66 131 +74 74 74 +67 33 63 +32 57 58 +25 25 25 +0 0 0 diff --git a/graphics/pokemon/golisopod/overworld_shiny.pal b/graphics/pokemon/golisopod/overworld_shiny.pal new file mode 100644 index 000000000000..9a4c65e3ace5 --- /dev/null +++ b/graphics/pokemon/golisopod/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 232 +168 160 168 +168 160 168 +168 160 168 +32 152 208 +112 92 121 +248 40 40 +112 84 113 +88 80 88 +120 0 0 +74 74 74 +67 33 63 +32 57 58 +25 25 25 +0 0 0 diff --git a/graphics/pokemon/golurk/overworld.png b/graphics/pokemon/golurk/overworld.png new file mode 100644 index 000000000000..7aeb780b5be5 Binary files /dev/null and b/graphics/pokemon/golurk/overworld.png differ diff --git a/graphics/pokemon/golurk/overworld_normal.pal b/graphics/pokemon/golurk/overworld_normal.pal new file mode 100644 index 000000000000..ed3e86a69287 --- /dev/null +++ b/graphics/pokemon/golurk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +25 25 54 +41 123 139 +44 122 140 +131 197 205 +132 198 204 +90 164 164 +255 238 164 +189 172 115 +92 166 164 +156 115 41 +197 156 82 +32 32 64 +24 90 123 +96 160 192 diff --git a/graphics/pokemon/golurk/overworld_shiny.pal b/graphics/pokemon/golurk/overworld_shiny.pal new file mode 100644 index 000000000000..80eb88b78db5 --- /dev/null +++ b/graphics/pokemon/golurk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +25 25 54 +64 72 88 +64 72 88 +160 184 184 +120 136 136 +120 136 136 +168 248 64 +189 172 115 +120 136 136 +136 104 56 +176 144 96 +32 32 64 +64 72 88 +96 160 192 diff --git a/graphics/pokemon/goodra/hisuian/overworld.png b/graphics/pokemon/goodra/hisuian/overworld.png new file mode 100644 index 000000000000..5bc1d200c897 Binary files /dev/null and b/graphics/pokemon/goodra/hisuian/overworld.png differ diff --git a/graphics/pokemon/goodra/hisuian/overworld_normal.pal b/graphics/pokemon/goodra/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..f2bf5d8a84e0 --- /dev/null +++ b/graphics/pokemon/goodra/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 41 90 +16 16 16 +189 148 213 +222 205 230 +0 0 0 +131 131 131 +172 172 172 +255 255 255 +164 82 197 +106 106 106 +106 82 115 +65 65 65 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goodra/hisuian/overworld_shiny.pal b/graphics/pokemon/goodra/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..70ff17dbc3c4 --- /dev/null +++ b/graphics/pokemon/goodra/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 41 90 +16 16 16 +189 148 213 +222 205 230 +0 0 0 +172 115 41 +205 172 82 +255 255 255 +164 82 197 +156 106 41 +106 82 115 +115 74 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goodra/overworld.png b/graphics/pokemon/goodra/overworld.png new file mode 100644 index 000000000000..7a218e5ec29d Binary files /dev/null and b/graphics/pokemon/goodra/overworld.png differ diff --git a/graphics/pokemon/goodra/overworld_normal.pal b/graphics/pokemon/goodra/overworld_normal.pal new file mode 100644 index 000000000000..d77971c86742 --- /dev/null +++ b/graphics/pokemon/goodra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +73 42 88 +190 147 214 +218 207 228 +16 16 16 +249 254 255 +46 188 78 +34 106 46 +162 87 199 +104 83 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goodra/overworld_shiny.pal b/graphics/pokemon/goodra/overworld_shiny.pal new file mode 100644 index 000000000000..59e42b34e7a5 --- /dev/null +++ b/graphics/pokemon/goodra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +140 131 69 +215 213 142 +255 255 193 +16 16 16 +249 254 255 +167 164 205 +128 125 167 +254 194 176 +203 152 137 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/goomy/overworld.png b/graphics/pokemon/goomy/overworld.png new file mode 100644 index 000000000000..a5088f4c2f60 Binary files /dev/null and b/graphics/pokemon/goomy/overworld.png differ diff --git a/graphics/pokemon/goomy/overworld_normal.pal b/graphics/pokemon/goomy/overworld_normal.pal new file mode 100644 index 000000000000..e9c570611099 --- /dev/null +++ b/graphics/pokemon/goomy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +223 207 241 +76 63 75 +174 163 181 +87 135 79 +118 195 107 +128 80 125 +163 113 160 +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/goomy/overworld_shiny.pal b/graphics/pokemon/goomy/overworld_shiny.pal new file mode 100644 index 000000000000..a88611d164fd --- /dev/null +++ b/graphics/pokemon/goomy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +255 230 156 +141 116 43 +210 184 108 +70 96 196 +105 131 230 +207 127 127 +255 172 172 +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/gorebyss/overworld.png b/graphics/pokemon/gorebyss/overworld.png new file mode 100644 index 000000000000..7b405894dd03 Binary files /dev/null and b/graphics/pokemon/gorebyss/overworld.png differ diff --git a/graphics/pokemon/gorebyss/overworld_normal.pal b/graphics/pokemon/gorebyss/overworld_normal.pal new file mode 100644 index 000000000000..2afabc7b9196 --- /dev/null +++ b/graphics/pokemon/gorebyss/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 128 +168 152 240 +0 0 0 +144 128 216 +120 104 184 +136 32 72 +216 120 136 +232 144 160 +184 80 96 +200 88 112 +48 48 64 +152 168 200 +96 104 128 +232 232 248 +208 216 232 diff --git a/graphics/pokemon/gorebyss/overworld_shiny.pal b/graphics/pokemon/gorebyss/overworld_shiny.pal new file mode 100644 index 000000000000..c94d7b42f3f0 --- /dev/null +++ b/graphics/pokemon/gorebyss/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 128 +168 152 240 +0 0 0 +144 128 216 +120 104 184 +136 96 0 +248 192 8 +224 216 136 +216 152 0 +232 168 0 +48 48 64 +152 168 200 +96 104 128 +232 232 248 +208 216 232 diff --git a/graphics/pokemon/gossifleur/overworld.png b/graphics/pokemon/gossifleur/overworld.png new file mode 100644 index 000000000000..1ca072254f55 Binary files /dev/null and b/graphics/pokemon/gossifleur/overworld.png differ diff --git a/graphics/pokemon/gossifleur/overworld_normal.pal b/graphics/pokemon/gossifleur/overworld_normal.pal new file mode 100644 index 000000000000..528908056120 --- /dev/null +++ b/graphics/pokemon/gossifleur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +193 170 7 +249 227 91 +0 0 0 +248 221 46 +238 209 9 +248 237 152 +223 196 8 +153 56 31 +215 95 65 +192 71 40 +90 167 123 +85 72 55 +64 118 88 +130 187 155 +160 202 179 diff --git a/graphics/pokemon/gossifleur/overworld_shiny.pal b/graphics/pokemon/gossifleur/overworld_shiny.pal new file mode 100644 index 000000000000..4e47e232ddb3 --- /dev/null +++ b/graphics/pokemon/gossifleur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +148 65 90 +230 131 164 +0 0 0 +197 106 131 +172 82 106 +246 246 246 +172 82 106 +74 106 106 +189 230 230 +123 172 180 +74 172 106 +82 74 49 +49 123 74 +115 222 156 +148 238 180 diff --git a/graphics/pokemon/gothita/overworld.png b/graphics/pokemon/gothita/overworld.png new file mode 100644 index 000000000000..0aebbc3d5f11 Binary files /dev/null and b/graphics/pokemon/gothita/overworld.png differ diff --git a/graphics/pokemon/gothita/overworld_normal.pal b/graphics/pokemon/gothita/overworld_normal.pal new file mode 100644 index 000000000000..ffa296562455 --- /dev/null +++ b/graphics/pokemon/gothita/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +24 24 24 +64 64 64 +112 112 112 +0 0 0 +88 48 72 +248 248 248 +200 136 184 +176 176 176 +144 104 128 +56 160 248 +120 72 64 +8 72 136 +248 104 72 +0 0 0 diff --git a/graphics/pokemon/gothita/overworld_shiny.pal b/graphics/pokemon/gothita/overworld_shiny.pal new file mode 100644 index 000000000000..4d2e69d492e0 --- /dev/null +++ b/graphics/pokemon/gothita/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 48 +24 24 24 +64 64 88 +112 112 112 +0 0 0 +88 48 72 +248 248 248 +200 136 160 +176 176 176 +144 104 112 +120 16 112 +120 72 64 +48 24 48 +248 104 72 +0 0 0 diff --git a/graphics/pokemon/gothitelle/overworld.png b/graphics/pokemon/gothitelle/overworld.png new file mode 100644 index 000000000000..49ddc3ff3768 Binary files /dev/null and b/graphics/pokemon/gothitelle/overworld.png differ diff --git a/graphics/pokemon/gothitelle/overworld_normal.pal b/graphics/pokemon/gothitelle/overworld_normal.pal new file mode 100644 index 000000000000..93328cc89669 --- /dev/null +++ b/graphics/pokemon/gothitelle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 24 24 +80 80 80 +176 167 172 +222 205 228 +40 40 40 +112 110 110 +48 48 48 +32 116 192 +182 93 102 +64 64 64 +48 24 32 +84 49 71 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gothitelle/overworld_shiny.pal b/graphics/pokemon/gothitelle/overworld_shiny.pal new file mode 100644 index 000000000000..a2329df97597 --- /dev/null +++ b/graphics/pokemon/gothitelle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 32 48 +64 64 112 +205 192 203 +205 192 203 +40 40 71 +111 110 110 +32 32 48 +64 64 112 +182 104 97 +40 40 71 +48 24 32 +88 48 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gothorita/overworld.png b/graphics/pokemon/gothorita/overworld.png new file mode 100644 index 000000000000..0d0cbd90c2b2 Binary files /dev/null and b/graphics/pokemon/gothorita/overworld.png differ diff --git a/graphics/pokemon/gothorita/overworld_normal.pal b/graphics/pokemon/gothorita/overworld_normal.pal new file mode 100644 index 000000000000..3e2888379c44 --- /dev/null +++ b/graphics/pokemon/gothorita/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 176 +233 233 246 +24 24 24 +112 111 110 +64 64 64 +40 40 40 +88 48 72 +144 104 128 +200 136 184 +148 109 127 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gothorita/overworld_shiny.pal b/graphics/pokemon/gothorita/overworld_shiny.pal new file mode 100644 index 000000000000..ff2c016b78f9 --- /dev/null +++ b/graphics/pokemon/gothorita/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 176 +233 233 246 +24 24 24 +112 111 110 +64 64 88 +34 34 45 +88 48 72 +200 136 176 +178 80 140 +48 24 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gourgeist/overworld.png b/graphics/pokemon/gourgeist/overworld.png new file mode 100644 index 000000000000..f2184b2cfc56 Binary files /dev/null and b/graphics/pokemon/gourgeist/overworld.png differ diff --git a/graphics/pokemon/gourgeist/overworld_normal.pal b/graphics/pokemon/gourgeist/overworld_normal.pal new file mode 100644 index 000000000000..3039d5410f13 --- /dev/null +++ b/graphics/pokemon/gourgeist/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +51 34 24 +101 85 61 +16 16 16 +96 18 21 +224 91 78 +151 47 51 +248 147 112 +170 108 79 +255 211 37 +245 236 155 +176 132 64 +72 54 38 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gourgeist/overworld_shiny.pal b/graphics/pokemon/gourgeist/overworld_shiny.pal new file mode 100644 index 000000000000..02ecd8afdf67 --- /dev/null +++ b/graphics/pokemon/gourgeist/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +21 21 21 +71 71 71 +16 16 16 +72 35 96 +156 91 196 +118 65 151 +187 121 215 +169 146 101 +210 171 98 +253 220 121 +217 188 133 +39 39 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/granbull/overworld.png b/graphics/pokemon/granbull/overworld.png new file mode 100644 index 000000000000..9bb9eab7b7d1 Binary files /dev/null and b/graphics/pokemon/granbull/overworld.png differ diff --git a/graphics/pokemon/granbull/overworld_normal.pal b/graphics/pokemon/granbull/overworld_normal.pal new file mode 100644 index 000000000000..20c73cebbce9 --- /dev/null +++ b/graphics/pokemon/granbull/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 64 104 +224 184 240 +0 0 0 +192 144 208 +128 88 136 +232 232 248 +96 120 136 +160 112 168 +48 64 80 +176 192 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/granbull/overworld_shiny.pal b/graphics/pokemon/granbull/overworld_shiny.pal new file mode 100644 index 000000000000..e79344702586 --- /dev/null +++ b/graphics/pokemon/granbull/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 80 +216 208 176 +0 0 0 +192 168 152 +120 112 120 +232 232 248 +96 120 136 +144 136 144 +48 64 80 +176 192 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grapploct/overworld.png b/graphics/pokemon/grapploct/overworld.png new file mode 100644 index 000000000000..d271bcacbca5 Binary files /dev/null and b/graphics/pokemon/grapploct/overworld.png differ diff --git a/graphics/pokemon/grapploct/overworld_normal.pal b/graphics/pokemon/grapploct/overworld_normal.pal new file mode 100644 index 000000000000..1c202d904618 --- /dev/null +++ b/graphics/pokemon/grapploct/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 221 1 +1 10 25 +0 51 134 +1 72 188 +45 118 237 +0 0 0 +168 204 33 +15 13 23 +233 231 23 +194 192 21 +62 56 92 +32 28 49 +112 198 224 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grapploct/overworld_shiny.pal b/graphics/pokemon/grapploct/overworld_shiny.pal new file mode 100644 index 000000000000..17f80b3e3b78 --- /dev/null +++ b/graphics/pokemon/grapploct/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 16 16 +156 24 24 +205 41 41 +246 82 82 +0 0 0 +255 189 65 +65 65 65 +238 230 16 +197 197 16 +230 230 230 +189 189 189 +115 197 230 +255 255 255 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/graveler/alolan/overworld.png b/graphics/pokemon/graveler/alolan/overworld.png new file mode 100644 index 000000000000..7ff3687da6b7 Binary files /dev/null and b/graphics/pokemon/graveler/alolan/overworld.png differ diff --git a/graphics/pokemon/graveler/alolan/overworld_normal.pal b/graphics/pokemon/graveler/alolan/overworld_normal.pal new file mode 100644 index 000000000000..64ef5263be0d --- /dev/null +++ b/graphics/pokemon/graveler/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +55 63 80 +0 0 0 +167 175 175 +118 127 127 +51 47 47 +85 91 91 +70 86 95 +140 148 148 +250 216 80 +232 232 248 +168 168 176 +176 80 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/graveler/alolan/overworld_shiny.pal b/graphics/pokemon/graveler/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..d46824bee3a1 --- /dev/null +++ b/graphics/pokemon/graveler/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 32 8 +0 0 0 +200 123 48 +152 74 48 +51 47 47 +112 60 24 +70 86 95 +176 95 48 +250 216 80 +232 232 248 +168 168 176 +176 80 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/graveler/overworld.png b/graphics/pokemon/graveler/overworld.png new file mode 100644 index 000000000000..41ce30ae1b01 Binary files /dev/null and b/graphics/pokemon/graveler/overworld.png differ diff --git a/graphics/pokemon/graveler/overworld_normal.pal b/graphics/pokemon/graveler/overworld_normal.pal new file mode 100644 index 000000000000..e9b28a20d689 --- /dev/null +++ b/graphics/pokemon/graveler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 48 +0 0 0 +184 168 128 +120 112 96 +80 72 64 +144 136 104 +232 232 248 +168 168 176 +176 80 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/graveler/overworld_shiny.pal b/graphics/pokemon/graveler/overworld_shiny.pal new file mode 100644 index 000000000000..7a75636b5af9 --- /dev/null +++ b/graphics/pokemon/graveler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 40 8 +0 0 0 +200 144 48 +152 88 48 +112 72 24 +176 112 48 +232 232 248 +168 168 176 +176 80 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/greedent/overworld.png b/graphics/pokemon/greedent/overworld.png new file mode 100644 index 000000000000..b4b99bda523f Binary files /dev/null and b/graphics/pokemon/greedent/overworld.png differ diff --git a/graphics/pokemon/greedent/overworld_normal.pal b/graphics/pokemon/greedent/overworld_normal.pal new file mode 100644 index 000000000000..48df51552b37 --- /dev/null +++ b/graphics/pokemon/greedent/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 221 1 +56 35 33 +187 135 124 +0 0 0 +155 102 94 +218 170 160 +25 16 15 +97 63 61 +124 75 71 +226 145 83 +255 255 255 +255 173 109 +239 239 239 +199 199 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/greedent/overworld_shiny.pal b/graphics/pokemon/greedent/overworld_shiny.pal new file mode 100644 index 000000000000..923380d2fda0 --- /dev/null +++ b/graphics/pokemon/greedent/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 221 1 +57 49 41 +222 189 164 +0 0 0 +189 156 131 +246 222 197 +90 49 57 +139 82 90 +180 106 123 +230 148 82 +255 255 255 +255 172 106 +238 238 238 +197 197 197 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/greninja/overworld.png b/graphics/pokemon/greninja/overworld.png new file mode 100644 index 000000000000..bb08608ca5b8 Binary files /dev/null and b/graphics/pokemon/greninja/overworld.png differ diff --git a/graphics/pokemon/greninja/overworld_normal.pal b/graphics/pokemon/greninja/overworld_normal.pal new file mode 100644 index 000000000000..33fe49de2b56 --- /dev/null +++ b/graphics/pokemon/greninja/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +46 58 91 +95 55 74 +20 20 20 +220 212 133 +234 152 208 +72 95 157 +245 103 190 +115 151 212 +136 186 226 +184 152 83 +176 97 134 +222 231 235 +233 85 88 +241 174 219 +128 85 41 diff --git a/graphics/pokemon/greninja/overworld_shiny.pal b/graphics/pokemon/greninja/overworld_shiny.pal new file mode 100644 index 000000000000..48e25a2ce11f --- /dev/null +++ b/graphics/pokemon/greninja/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +20 24 25 +92 22 25 +20 20 20 +81 94 95 +255 139 136 +29 38 41 +232 57 65 +38 50 54 +136 186 226 +59 70 71 +118 35 38 +222 231 235 +233 85 88 +44 51 52 +180 180 180 diff --git a/graphics/pokemon/grimer/alolan/overworld.png b/graphics/pokemon/grimer/alolan/overworld.png new file mode 100644 index 000000000000..b0e3140c9e1f Binary files /dev/null and b/graphics/pokemon/grimer/alolan/overworld.png differ diff --git a/graphics/pokemon/grimer/alolan/overworld_normal.pal b/graphics/pokemon/grimer/alolan/overworld_normal.pal new file mode 100644 index 000000000000..4dcf5f24a18a --- /dev/null +++ b/graphics/pokemon/grimer/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 74 45 +116 180 117 +187 222 169 +102 142 91 +232 232 248 +109 147 98 +0 0 0 +74 114 69 +64 56 64 +114 145 106 +240 228 0 +77 111 156 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grimer/alolan/overworld_shiny.pal b/graphics/pokemon/grimer/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..388abadd7db8 --- /dev/null +++ b/graphics/pokemon/grimer/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 56 64 +176 144 184 +200 176 216 +120 96 152 +232 232 248 +128 104 136 +0 0 0 +104 80 120 +64 56 64 +99 79 105 +240 228 0 +77 111 156 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grimer/overworld.png b/graphics/pokemon/grimer/overworld.png new file mode 100644 index 000000000000..a8639d44669a Binary files /dev/null and b/graphics/pokemon/grimer/overworld.png differ diff --git a/graphics/pokemon/grimer/overworld_normal.pal b/graphics/pokemon/grimer/overworld_normal.pal new file mode 100644 index 000000000000..c80dd2ef0c8d --- /dev/null +++ b/graphics/pokemon/grimer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 64 +176 144 184 +200 176 216 +120 96 152 +232 232 248 +128 104 136 +0 0 0 +104 80 120 +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/grimer/overworld_shiny.pal b/graphics/pokemon/grimer/overworld_shiny.pal new file mode 100644 index 000000000000..f886e1cd8973 --- /dev/null +++ b/graphics/pokemon/grimer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 80 64 +168 184 136 +184 200 160 +128 160 56 +232 232 248 +128 136 112 +0 0 0 +96 112 32 +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/grimmsnarl/overworld.png b/graphics/pokemon/grimmsnarl/overworld.png new file mode 100644 index 000000000000..06f6b343882b Binary files /dev/null and b/graphics/pokemon/grimmsnarl/overworld.png differ diff --git a/graphics/pokemon/grimmsnarl/overworld_normal.pal b/graphics/pokemon/grimmsnarl/overworld_normal.pal new file mode 100644 index 000000000000..0b4921558a7f --- /dev/null +++ b/graphics/pokemon/grimmsnarl/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 228 252 +0 40 24 +28 28 48 +40 40 40 +60 60 96 +76 76 76 +200 36 92 +236 52 68 +232 64 120 +4 4 4 +0 148 92 +136 252 36 +152 252 68 +0 204 128 +220 220 220 +252 252 252 diff --git a/graphics/pokemon/grimmsnarl/overworld_shiny.pal b/graphics/pokemon/grimmsnarl/overworld_shiny.pal new file mode 100644 index 000000000000..babd54aac98a --- /dev/null +++ b/graphics/pokemon/grimmsnarl/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 24 41 +148 148 148 +82 82 82 +213 213 213 +123 123 123 +0 115 148 +238 49 65 +0 148 189 +0 0 0 +115 57 98 +0 0 0 +0 0 0 +156 90 148 +222 222 222 +255 255 255 diff --git a/graphics/pokemon/grookey/overworld.png b/graphics/pokemon/grookey/overworld.png new file mode 100644 index 000000000000..2fb83529569e Binary files /dev/null and b/graphics/pokemon/grookey/overworld.png differ diff --git a/graphics/pokemon/grookey/overworld_normal.pal b/graphics/pokemon/grookey/overworld_normal.pal new file mode 100644 index 000000000000..555241f84bb0 --- /dev/null +++ b/graphics/pokemon/grookey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 244 +108 56 20 +68 44 24 +112 76 40 +68 96 40 +148 88 48 +208 104 48 +216 124 72 +96 140 60 +0 0 0 +112 160 72 +136 184 96 +220 140 100 +232 216 124 +160 200 128 +252 252 252 diff --git a/graphics/pokemon/grookey/overworld_shiny.pal b/graphics/pokemon/grookey/overworld_shiny.pal new file mode 100644 index 000000000000..b53bc34b0b5d --- /dev/null +++ b/graphics/pokemon/grookey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +131 57 8 +57 8 16 +131 41 57 +106 106 24 +156 57 74 +230 106 24 +222 123 74 +172 172 49 +0 0 0 +213 213 82 +246 246 115 +230 106 24 +246 238 197 +255 255 156 +255 255 255 diff --git a/graphics/pokemon/grotle/overworld.png b/graphics/pokemon/grotle/overworld.png new file mode 100644 index 000000000000..d040992350c6 Binary files /dev/null and b/graphics/pokemon/grotle/overworld.png differ diff --git a/graphics/pokemon/grotle/overworld_normal.pal b/graphics/pokemon/grotle/overworld_normal.pal new file mode 100644 index 000000000000..78c07db4d5e0 --- /dev/null +++ b/graphics/pokemon/grotle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 80 56 +0 0 0 +128 200 48 +64 160 48 +72 72 72 +152 112 56 +200 144 24 +224 184 40 +80 72 56 +104 88 72 +96 176 80 +160 224 112 +168 176 200 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/grotle/overworld_shiny.pal b/graphics/pokemon/grotle/overworld_shiny.pal new file mode 100644 index 000000000000..5b61202b19cf --- /dev/null +++ b/graphics/pokemon/grotle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 96 56 +0 0 0 +184 200 48 +144 160 48 +72 72 72 +80 152 104 +96 176 120 +144 224 168 +56 72 88 +72 120 96 +200 160 24 +224 192 40 +168 176 200 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/groudon/overworld.png b/graphics/pokemon/groudon/overworld.png new file mode 100644 index 000000000000..0520115d2dfc Binary files /dev/null and b/graphics/pokemon/groudon/overworld.png differ diff --git a/graphics/pokemon/groudon/overworld_normal.pal b/graphics/pokemon/groudon/overworld_normal.pal new file mode 100644 index 000000000000..5ebdf0d5967d --- /dev/null +++ b/graphics/pokemon/groudon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 16 8 +136 24 16 +216 72 64 +176 32 32 +56 64 80 +32 40 56 +144 152 176 +232 232 248 +128 112 24 +184 200 216 +208 192 48 +96 104 120 +120 128 144 +72 80 96 diff --git a/graphics/pokemon/groudon/overworld_shiny.pal b/graphics/pokemon/groudon/overworld_shiny.pal new file mode 100644 index 000000000000..18430c35e5a7 --- /dev/null +++ b/graphics/pokemon/groudon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 104 16 +152 144 32 +240 240 80 +200 192 40 +56 64 80 +32 40 56 +144 152 176 +232 232 248 +128 112 24 +184 200 216 +208 192 48 +96 104 120 +120 128 144 +72 80 96 diff --git a/graphics/pokemon/grovyle/overworld.png b/graphics/pokemon/grovyle/overworld.png new file mode 100644 index 000000000000..3b25fd5c5b09 Binary files /dev/null and b/graphics/pokemon/grovyle/overworld.png differ diff --git a/graphics/pokemon/grovyle/overworld_normal.pal b/graphics/pokemon/grovyle/overworld_normal.pal new file mode 100644 index 000000000000..526c5f392a3e --- /dev/null +++ b/graphics/pokemon/grovyle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +200 128 216 +0 0 0 +96 152 72 +8 56 48 +56 120 64 +64 104 40 +152 200 120 +40 56 16 +112 152 72 +248 216 88 +104 24 24 +152 40 40 +184 48 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grovyle/overworld_shiny.pal b/graphics/pokemon/grovyle/overworld_shiny.pal new file mode 100644 index 000000000000..9c84147b17ed --- /dev/null +++ b/graphics/pokemon/grovyle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +200 128 216 +0 0 0 +208 96 48 +104 24 24 +176 72 32 +72 120 64 +184 232 216 +24 48 56 +128 176 144 +248 216 88 +160 112 40 +192 152 80 +224 192 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/growlithe/hisuian/overworld.png b/graphics/pokemon/growlithe/hisuian/overworld.png new file mode 100644 index 000000000000..f9cb0ef6cca6 Binary files /dev/null and b/graphics/pokemon/growlithe/hisuian/overworld.png differ diff --git a/graphics/pokemon/growlithe/hisuian/overworld_normal.pal b/graphics/pokemon/growlithe/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..70c37011656e --- /dev/null +++ b/graphics/pokemon/growlithe/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +230 82 57 +180 49 24 +41 41 49 +139 57 41 +156 123 115 +90 65 57 +98 24 24 +197 180 172 +180 148 98 +148 74 32 +230 205 172 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/growlithe/hisuian/overworld_shiny.pal b/graphics/pokemon/growlithe/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..a3b8d19a42ee --- /dev/null +++ b/graphics/pokemon/growlithe/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +230 205 65 +205 180 57 +41 41 49 +139 57 41 +156 123 115 +90 65 57 +139 123 24 +197 180 172 +180 148 98 +148 74 32 +230 205 172 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/growlithe/overworld.png b/graphics/pokemon/growlithe/overworld.png new file mode 100644 index 000000000000..76265d168742 Binary files /dev/null and b/graphics/pokemon/growlithe/overworld.png differ diff --git a/graphics/pokemon/growlithe/overworld_normal.pal b/graphics/pokemon/growlithe/overworld_normal.pal new file mode 100644 index 000000000000..8c0ab3d8bc3e --- /dev/null +++ b/graphics/pokemon/growlithe/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 24 +224 192 144 +200 152 80 +0 0 0 +232 120 72 +144 72 32 +184 80 24 +136 88 40 +176 176 208 +88 88 88 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/growlithe/overworld_shiny.pal b/graphics/pokemon/growlithe/overworld_shiny.pal new file mode 100644 index 000000000000..0745fb2a999f --- /dev/null +++ b/graphics/pokemon/growlithe/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 24 +224 192 144 +200 152 80 +0 0 0 +232 192 72 +128 104 40 +168 136 48 +136 88 40 +176 176 208 +88 88 88 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grubbin/overworld.png b/graphics/pokemon/grubbin/overworld.png new file mode 100644 index 000000000000..d4d41084cdfa Binary files /dev/null and b/graphics/pokemon/grubbin/overworld.png differ diff --git a/graphics/pokemon/grubbin/overworld_normal.pal b/graphics/pokemon/grubbin/overworld_normal.pal new file mode 100644 index 000000000000..3d0e980cd471 --- /dev/null +++ b/graphics/pokemon/grubbin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 224 208 +248 208 96 +173 171 161 +207 143 43 +169 111 65 +248 96 88 +213 75 73 +182 57 58 +94 93 88 +68 68 64 +87 58 33 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grubbin/overworld_shiny.pal b/graphics/pokemon/grubbin/overworld_shiny.pal new file mode 100644 index 000000000000..cc957019c642 --- /dev/null +++ b/graphics/pokemon/grubbin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 224 208 +232 128 104 +173 171 161 +192 64 40 +169 111 65 +192 64 40 +213 75 73 +182 57 58 +94 93 88 +68 68 64 +128 128 128 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/grumpig/overworld.png b/graphics/pokemon/grumpig/overworld.png new file mode 100644 index 000000000000..650792871150 Binary files /dev/null and b/graphics/pokemon/grumpig/overworld.png differ diff --git a/graphics/pokemon/grumpig/overworld_normal.pal b/graphics/pokemon/grumpig/overworld_normal.pal new file mode 100644 index 000000000000..b79dbb1b9b34 --- /dev/null +++ b/graphics/pokemon/grumpig/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +16 16 16 +112 120 120 +80 40 104 +72 80 88 +144 48 96 +192 120 224 +104 24 64 +152 88 184 +120 64 144 +224 96 160 +192 192 192 +248 248 248 +184 72 128 +136 72 168 diff --git a/graphics/pokemon/grumpig/overworld_shiny.pal b/graphics/pokemon/grumpig/overworld_shiny.pal new file mode 100644 index 000000000000..cfc56b11d14a --- /dev/null +++ b/graphics/pokemon/grumpig/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +16 16 16 +112 120 120 +96 80 0 +72 80 88 +144 48 96 +248 184 80 +104 24 64 +216 160 56 +136 104 16 +224 96 160 +192 192 192 +248 248 248 +184 72 128 +176 128 40 diff --git a/graphics/pokemon/gulpin/overworld.png b/graphics/pokemon/gulpin/overworld.png new file mode 100644 index 000000000000..41fe6631fb7c Binary files /dev/null and b/graphics/pokemon/gulpin/overworld.png differ diff --git a/graphics/pokemon/gulpin/overworld_normal.pal b/graphics/pokemon/gulpin/overworld_normal.pal new file mode 100644 index 000000000000..0fa22dcbab05 --- /dev/null +++ b/graphics/pokemon/gulpin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +112 88 40 +0 0 0 +232 184 64 +56 96 16 +168 128 56 +32 48 16 +104 152 64 +136 192 112 +72 88 96 +80 120 40 +56 72 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gulpin/overworld_shiny.pal b/graphics/pokemon/gulpin/overworld_shiny.pal new file mode 100644 index 000000000000..346c4d6a4070 --- /dev/null +++ b/graphics/pokemon/gulpin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 48 40 +0 0 0 +232 136 64 +80 112 152 +192 104 48 +64 80 96 +96 176 224 +144 200 232 +72 88 96 +40 136 208 +56 72 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gumshoos/overworld.png b/graphics/pokemon/gumshoos/overworld.png new file mode 100644 index 000000000000..483c405e17d0 Binary files /dev/null and b/graphics/pokemon/gumshoos/overworld.png differ diff --git a/graphics/pokemon/gumshoos/overworld_normal.pal b/graphics/pokemon/gumshoos/overworld_normal.pal new file mode 100644 index 000000000000..26be101007fe --- /dev/null +++ b/graphics/pokemon/gumshoos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +239 215 129 +151 170 177 +171 153 92 +169 136 104 +162 119 59 +138 105 84 +227 101 142 +206 60 94 +128 95 41 +98 73 59 +102 56 51 +78 95 105 +74 49 46 +16 16 16 diff --git a/graphics/pokemon/gumshoos/overworld_shiny.pal b/graphics/pokemon/gumshoos/overworld_shiny.pal new file mode 100644 index 000000000000..1e22a9077961 --- /dev/null +++ b/graphics/pokemon/gumshoos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +224 120 168 +151 170 177 +200 72 104 +184 96 88 +200 72 104 +152 64 56 +227 101 142 +206 60 94 +136 48 72 +98 73 59 +102 56 51 +224 224 224 +74 49 46 +16 16 16 diff --git a/graphics/pokemon/gurdurr/overworld.png b/graphics/pokemon/gurdurr/overworld.png new file mode 100644 index 000000000000..a2b8aabbfa70 Binary files /dev/null and b/graphics/pokemon/gurdurr/overworld.png differ diff --git a/graphics/pokemon/gurdurr/overworld_normal.pal b/graphics/pokemon/gurdurr/overworld_normal.pal new file mode 100644 index 000000000000..1219c452c470 --- /dev/null +++ b/graphics/pokemon/gurdurr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +94 32 47 +207 63 74 +7 7 7 +191 182 164 +146 129 121 +47 47 40 +147 63 121 +104 40 71 +200 95 172 +229 229 247 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gurdurr/overworld_shiny.pal b/graphics/pokemon/gurdurr/overworld_shiny.pal new file mode 100644 index 000000000000..09b2dfe70ca6 --- /dev/null +++ b/graphics/pokemon/gurdurr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +82 32 47 +136 40 51 +180 68 48 +7 7 7 +208 192 128 +174 151 96 +47 47 40 +224 80 69 +104 40 71 +229 229 247 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/guzzlord/overworld.png b/graphics/pokemon/guzzlord/overworld.png new file mode 100644 index 000000000000..f9e52bd08325 Binary files /dev/null and b/graphics/pokemon/guzzlord/overworld.png differ diff --git a/graphics/pokemon/guzzlord/overworld_normal.pal b/graphics/pokemon/guzzlord/overworld_normal.pal new file mode 100644 index 000000000000..d3f8d62b682a --- /dev/null +++ b/graphics/pokemon/guzzlord/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +253 209 72 +178 240 255 +56 162 200 +191 143 55 +82 87 101 +30 91 114 +69 73 85 +59 63 70 +42 45 50 +43 37 30 +29 31 37 +18 20 23 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/guzzlord/overworld_shiny.pal b/graphics/pokemon/guzzlord/overworld_shiny.pal new file mode 100644 index 000000000000..bc1316f82d77 --- /dev/null +++ b/graphics/pokemon/guzzlord/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 96 24 +178 240 255 +56 162 200 +168 64 16 +232 232 232 +30 91 114 +69 73 85 +176 168 168 +42 45 50 +43 37 30 +29 31 37 +18 20 23 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/gyarados/overworld.png b/graphics/pokemon/gyarados/overworld.png new file mode 100644 index 000000000000..7c0400b1e5b7 Binary files /dev/null and b/graphics/pokemon/gyarados/overworld.png differ diff --git a/graphics/pokemon/gyarados/overworld_normal.pal b/graphics/pokemon/gyarados/overworld_normal.pal new file mode 100644 index 000000000000..fca7fbe01ac5 --- /dev/null +++ b/graphics/pokemon/gyarados/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 56 80 +232 232 248 +192 192 208 +72 176 224 +136 144 144 +40 128 128 +64 120 152 +248 200 104 +176 136 48 +32 96 128 +136 0 24 +136 96 32 +184 64 104 +216 112 152 diff --git a/graphics/pokemon/gyarados/overworld_shiny.pal b/graphics/pokemon/gyarados/overworld_shiny.pal new file mode 100644 index 000000000000..8c0963eef73e --- /dev/null +++ b/graphics/pokemon/gyarados/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 0 0 +232 232 248 +216 216 224 +248 64 40 +176 144 120 +200 40 80 +200 24 0 +248 200 104 +176 136 48 +160 0 8 +136 0 24 +136 96 32 +184 64 104 +216 112 152 diff --git a/graphics/pokemon/hakamo_o/overworld.png b/graphics/pokemon/hakamo_o/overworld.png new file mode 100644 index 000000000000..86dfd2238c0e Binary files /dev/null and b/graphics/pokemon/hakamo_o/overworld.png differ diff --git a/graphics/pokemon/hakamo_o/overworld_normal.pal b/graphics/pokemon/hakamo_o/overworld_normal.pal new file mode 100644 index 000000000000..12daadf35dff --- /dev/null +++ b/graphics/pokemon/hakamo_o/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +16 16 16 +223 167 69 +244 234 84 +94 73 36 +69 68 67 +124 122 110 +188 187 176 +244 241 240 +227 70 59 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hakamo_o/overworld_shiny.pal b/graphics/pokemon/hakamo_o/overworld_shiny.pal new file mode 100644 index 000000000000..fab1014d102c --- /dev/null +++ b/graphics/pokemon/hakamo_o/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +16 16 16 +248 152 184 +248 200 224 +94 73 36 +69 68 67 +184 184 24 +224 240 32 +244 241 240 +227 70 59 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/happiny/overworld.png b/graphics/pokemon/happiny/overworld.png new file mode 100644 index 000000000000..3779dfcbd5fe Binary files /dev/null and b/graphics/pokemon/happiny/overworld.png differ diff --git a/graphics/pokemon/happiny/overworld_normal.pal b/graphics/pokemon/happiny/overworld_normal.pal new file mode 100644 index 000000000000..3fb8e878a01e --- /dev/null +++ b/graphics/pokemon/happiny/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 72 88 +248 176 192 +216 128 160 +184 96 128 +0 0 0 +96 32 40 +192 72 96 +216 96 112 +232 232 248 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/happiny/overworld_shiny.pal b/graphics/pokemon/happiny/overworld_shiny.pal new file mode 100644 index 000000000000..937d4cbe19ae --- /dev/null +++ b/graphics/pokemon/happiny/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 72 88 +240 192 216 +208 160 192 +168 112 176 +0 0 0 +88 24 80 +176 64 128 +200 80 136 +232 232 248 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hariyama/overworld.png b/graphics/pokemon/hariyama/overworld.png new file mode 100644 index 000000000000..52622056a8c8 Binary files /dev/null and b/graphics/pokemon/hariyama/overworld.png differ diff --git a/graphics/pokemon/hariyama/overworld_normal.pal b/graphics/pokemon/hariyama/overworld_normal.pal new file mode 100644 index 000000000000..d652e0414b59 --- /dev/null +++ b/graphics/pokemon/hariyama/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 80 64 +240 232 192 +24 40 88 +216 200 152 +96 32 8 +184 152 104 +64 80 136 +184 88 16 +104 128 176 +232 232 248 +208 128 56 +72 56 8 +176 120 32 +216 184 64 diff --git a/graphics/pokemon/hariyama/overworld_shiny.pal b/graphics/pokemon/hariyama/overworld_shiny.pal new file mode 100644 index 000000000000..e15d4cdadc93 --- /dev/null +++ b/graphics/pokemon/hariyama/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 80 64 +240 232 192 +24 40 88 +216 200 152 +72 32 56 +184 152 104 +64 80 136 +136 80 96 +104 128 176 +232 232 248 +184 136 152 +96 32 8 +184 88 16 +208 128 56 diff --git a/graphics/pokemon/hatenna/overworld.png b/graphics/pokemon/hatenna/overworld.png new file mode 100644 index 000000000000..35c3aa5acd50 Binary files /dev/null and b/graphics/pokemon/hatenna/overworld.png differ diff --git a/graphics/pokemon/hatenna/overworld_normal.pal b/graphics/pokemon/hatenna/overworld_normal.pal new file mode 100644 index 000000000000..6f85ef548d27 --- /dev/null +++ b/graphics/pokemon/hatenna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +76 77 85 +226 238 250 +0 0 0 +190 215 239 +130 146 162 +100 81 90 +211 163 186 +167 151 159 +255 244 244 +246 216 216 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hatenna/overworld_shiny.pal b/graphics/pokemon/hatenna/overworld_shiny.pal new file mode 100644 index 000000000000..a7c64401a852 --- /dev/null +++ b/graphics/pokemon/hatenna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +57 57 57 +255 246 246 +0 0 0 +230 222 213 +172 164 156 +98 82 90 +213 164 189 +164 148 156 +255 246 246 +246 222 222 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hatterene/overworld.png b/graphics/pokemon/hatterene/overworld.png new file mode 100644 index 000000000000..e1b1d6da638a Binary files /dev/null and b/graphics/pokemon/hatterene/overworld.png differ diff --git a/graphics/pokemon/hatterene/overworld_normal.pal b/graphics/pokemon/hatterene/overworld_normal.pal new file mode 100644 index 000000000000..87fce642a6fe --- /dev/null +++ b/graphics/pokemon/hatterene/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +24 0 252 +0 0 0 +48 60 64 +104 76 80 +120 120 120 +16 16 16 +0 0 0 +132 152 164 +188 188 188 +212 160 168 +188 220 240 +208 208 208 +252 208 212 +220 212 224 +236 248 252 +236 236 236 diff --git a/graphics/pokemon/hatterene/overworld_shiny.pal b/graphics/pokemon/hatterene/overworld_shiny.pal new file mode 100644 index 000000000000..5b745fa8b73f --- /dev/null +++ b/graphics/pokemon/hatterene/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +65 57 57 +115 74 82 +123 123 123 +16 16 16 +0 0 0 +156 139 148 +189 189 189 +238 139 172 +222 205 213 +213 213 213 +246 189 205 +222 213 230 +246 246 246 +238 238 238 diff --git a/graphics/pokemon/hattrem/overworld.png b/graphics/pokemon/hattrem/overworld.png new file mode 100644 index 000000000000..6f87f926eb8e Binary files /dev/null and b/graphics/pokemon/hattrem/overworld.png differ diff --git a/graphics/pokemon/hattrem/overworld_normal.pal b/graphics/pokemon/hattrem/overworld_normal.pal new file mode 100644 index 000000000000..6c0d886da1f4 --- /dev/null +++ b/graphics/pokemon/hattrem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 16 252 +16 16 16 +104 76 80 +76 92 104 +0 0 0 +148 144 148 +132 152 164 +212 160 168 +224 184 188 +188 220 240 +208 208 208 +252 208 212 +252 236 236 +252 236 240 +224 244 252 +252 252 252 diff --git a/graphics/pokemon/hattrem/overworld_shiny.pal b/graphics/pokemon/hattrem/overworld_shiny.pal new file mode 100644 index 000000000000..b5a715d2562b --- /dev/null +++ b/graphics/pokemon/hattrem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +115 74 82 +65 57 57 +0 0 0 +148 148 148 +156 139 148 +238 139 172 +255 172 197 +222 205 213 +213 213 213 +255 172 197 +255 238 238 +255 222 230 +255 255 255 +255 255 255 diff --git a/graphics/pokemon/haunter/overworld.png b/graphics/pokemon/haunter/overworld.png new file mode 100644 index 000000000000..0f2f1534e93a Binary files /dev/null and b/graphics/pokemon/haunter/overworld.png differ diff --git a/graphics/pokemon/haunter/overworld_normal.pal b/graphics/pokemon/haunter/overworld_normal.pal new file mode 100644 index 000000000000..d09731399504 --- /dev/null +++ b/graphics/pokemon/haunter/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 48 56 +160 136 160 +96 72 104 +128 96 128 +232 232 248 +184 184 184 +72 72 72 +152 152 152 +64 16 56 +96 32 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/haunter/overworld_shiny.pal b/graphics/pokemon/haunter/overworld_shiny.pal new file mode 100644 index 000000000000..23b14b673b53 --- /dev/null +++ b/graphics/pokemon/haunter/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 48 56 +152 120 144 +96 64 88 +128 88 120 +232 232 248 +184 184 184 +72 72 72 +152 152 152 +56 64 160 +56 112 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hawlucha/overworld.png b/graphics/pokemon/hawlucha/overworld.png new file mode 100644 index 000000000000..36fda946183b Binary files /dev/null and b/graphics/pokemon/hawlucha/overworld.png differ diff --git a/graphics/pokemon/hawlucha/overworld_normal.pal b/graphics/pokemon/hawlucha/overworld_normal.pal new file mode 100644 index 000000000000..fae2bd54057a --- /dev/null +++ b/graphics/pokemon/hawlucha/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +241 133 61 +83 25 29 +185 94 41 +49 149 114 +128 54 22 +75 207 161 +214 81 82 +230 238 248 +165 37 46 +184 176 179 +184 176 179 +16 72 49 +230 238 248 +0 0 0 diff --git a/graphics/pokemon/hawlucha/overworld_shiny.pal b/graphics/pokemon/hawlucha/overworld_shiny.pal new file mode 100644 index 000000000000..8ab0d4019318 --- /dev/null +++ b/graphics/pokemon/hawlucha/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +147 178 67 +32 32 36 +116 144 45 +112 104 159 +93 115 40 +154 143 212 +69 69 75 +236 187 92 +47 47 52 +162 44 68 +197 151 60 +72 65 108 +202 60 89 +0 0 0 diff --git a/graphics/pokemon/haxorus/overworld.png b/graphics/pokemon/haxorus/overworld.png new file mode 100644 index 000000000000..8d9d6b366a74 Binary files /dev/null and b/graphics/pokemon/haxorus/overworld.png differ diff --git a/graphics/pokemon/haxorus/overworld_normal.pal b/graphics/pokemon/haxorus/overworld_normal.pal new file mode 100644 index 000000000000..a6d09d754bc8 --- /dev/null +++ b/graphics/pokemon/haxorus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 28 +182 191 71 +87 95 11 +0 0 0 +72 2 3 +155 164 18 +161 0 0 +71 71 87 +202 202 234 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/haxorus/overworld_shiny.pal b/graphics/pokemon/haxorus/overworld_shiny.pal new file mode 100644 index 000000000000..78a753845ad0 --- /dev/null +++ b/graphics/pokemon/haxorus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +45 41 44 +136 136 136 +71 71 70 +0 0 0 +72 2 3 +104 104 104 +161 0 0 +71 71 70 +136 136 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/heatmor/overworld.png b/graphics/pokemon/heatmor/overworld.png new file mode 100644 index 000000000000..e6b8d575bd27 Binary files /dev/null and b/graphics/pokemon/heatmor/overworld.png differ diff --git a/graphics/pokemon/heatmor/overworld_normal.pal b/graphics/pokemon/heatmor/overworld_normal.pal new file mode 100644 index 000000000000..be4082d916ab --- /dev/null +++ b/graphics/pokemon/heatmor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +69 54 39 +96 64 64 +128 96 64 +160 128 128 +192 64 64 +0 0 0 +224 128 64 +224 192 64 +236 236 246 +128 64 64 +39 39 39 +96 32 0 +254 177 127 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/heatmor/overworld_shiny.pal b/graphics/pokemon/heatmor/overworld_shiny.pal new file mode 100644 index 000000000000..bbf238e6a9a4 --- /dev/null +++ b/graphics/pokemon/heatmor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 16 16 +56 48 48 +88 80 80 +104 48 48 +0 0 0 +176 64 32 +248 80 64 +96 64 64 +236 236 246 +69 54 39 +128 64 64 +39 39 39 +96 32 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/heatran/overworld.png b/graphics/pokemon/heatran/overworld.png new file mode 100644 index 000000000000..4939e6fbc98a Binary files /dev/null and b/graphics/pokemon/heatran/overworld.png differ diff --git a/graphics/pokemon/heatran/overworld_normal.pal b/graphics/pokemon/heatran/overworld_normal.pal new file mode 100644 index 000000000000..2744c5d02615 --- /dev/null +++ b/graphics/pokemon/heatran/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 64 +0 0 0 +64 24 40 +176 104 88 +72 80 96 +192 192 208 +136 64 64 +128 128 136 +40 40 40 +192 120 0 +232 152 0 +232 232 248 +48 56 80 +168 40 32 +240 80 64 diff --git a/graphics/pokemon/heatran/overworld_shiny.pal b/graphics/pokemon/heatran/overworld_shiny.pal new file mode 100644 index 000000000000..874053580da1 --- /dev/null +++ b/graphics/pokemon/heatran/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 0 0 +0 0 0 +80 0 0 +216 72 48 +120 112 88 +208 200 176 +160 40 24 +168 160 136 +40 40 40 +192 120 0 +232 152 0 +232 232 248 +80 72 48 +200 64 112 +240 128 168 diff --git a/graphics/pokemon/heliolisk/overworld.png b/graphics/pokemon/heliolisk/overworld.png new file mode 100644 index 000000000000..ae5a60907f0d Binary files /dev/null and b/graphics/pokemon/heliolisk/overworld.png differ diff --git a/graphics/pokemon/heliolisk/overworld_normal.pal b/graphics/pokemon/heliolisk/overworld_normal.pal new file mode 100644 index 000000000000..52ac0248ba33 --- /dev/null +++ b/graphics/pokemon/heliolisk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +48 48 48 +96 95 95 +75 74 74 +178 171 171 +213 203 203 +58 109 176 +116 42 20 +232 113 18 +214 163 42 +248 203 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/heliolisk/overworld_shiny.pal b/graphics/pokemon/heliolisk/overworld_shiny.pal new file mode 100644 index 000000000000..022071485b78 --- /dev/null +++ b/graphics/pokemon/heliolisk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +48 48 48 +96 95 95 +75 74 74 +178 171 171 +213 203 203 +58 109 176 +158 121 52 +235 208 94 +218 82 72 +178 63 55 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/helioptile/overworld.png b/graphics/pokemon/helioptile/overworld.png new file mode 100644 index 000000000000..587601065ed4 Binary files /dev/null and b/graphics/pokemon/helioptile/overworld.png differ diff --git a/graphics/pokemon/helioptile/overworld_normal.pal b/graphics/pokemon/helioptile/overworld_normal.pal new file mode 100644 index 000000000000..c807127b7a59 --- /dev/null +++ b/graphics/pokemon/helioptile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +99 95 77 +50 48 38 +192 152 90 +242 225 112 +192 152 90 +242 225 112 +49 102 159 +242 240 222 +214 185 100 +192 152 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/helioptile/overworld_shiny.pal b/graphics/pokemon/helioptile/overworld_shiny.pal new file mode 100644 index 000000000000..a08ee57ad720 --- /dev/null +++ b/graphics/pokemon/helioptile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +99 95 77 +50 48 38 +155 53 46 +205 72 63 +192 152 90 +242 225 112 +49 102 159 +242 240 222 +163 58 51 +138 43 36 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/heracross/overworld.png b/graphics/pokemon/heracross/overworld.png new file mode 100644 index 000000000000..4ce6d4a04432 Binary files /dev/null and b/graphics/pokemon/heracross/overworld.png differ diff --git a/graphics/pokemon/heracross/overworld_normal.pal b/graphics/pokemon/heracross/overworld_normal.pal new file mode 100644 index 000000000000..6ba2873796d6 --- /dev/null +++ b/graphics/pokemon/heracross/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +8 48 64 +16 72 96 +128 192 200 +80 152 176 +56 120 144 +240 176 64 +32 96 120 +248 248 248 +152 88 0 +216 136 8 +56 72 80 +184 200 216 +152 168 184 +0 0 0 diff --git a/graphics/pokemon/heracross/overworld_shiny.pal b/graphics/pokemon/heracross/overworld_shiny.pal new file mode 100644 index 000000000000..6fc7816a97f4 --- /dev/null +++ b/graphics/pokemon/heracross/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +72 48 88 +96 72 120 +216 160 248 +192 136 216 +160 112 184 +240 176 64 +128 88 152 +248 248 248 +152 88 0 +216 136 8 +56 72 80 +184 200 216 +152 168 184 +0 0 0 diff --git a/graphics/pokemon/herdier/overworld.png b/graphics/pokemon/herdier/overworld.png new file mode 100644 index 000000000000..51e2a2207bb9 Binary files /dev/null and b/graphics/pokemon/herdier/overworld.png differ diff --git a/graphics/pokemon/herdier/overworld_normal.pal b/graphics/pokemon/herdier/overworld_normal.pal new file mode 100644 index 000000000000..60614990e486 --- /dev/null +++ b/graphics/pokemon/herdier/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 54 78 +0 0 0 +54 54 78 +96 72 24 +96 96 140 +144 88 64 +72 72 104 +216 144 88 +232 200 144 +144 88 64 +88 88 88 +192 192 192 +232 232 248 +72 72 104 +0 0 0 diff --git a/graphics/pokemon/herdier/overworld_shiny.pal b/graphics/pokemon/herdier/overworld_shiny.pal new file mode 100644 index 000000000000..4713003a789c --- /dev/null +++ b/graphics/pokemon/herdier/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 54 78 +0 0 0 +64 64 64 +96 72 24 +152 152 152 +152 112 64 +104 104 104 +248 184 112 +248 216 176 +144 88 64 +88 88 88 +192 192 192 +232 232 248 +72 72 104 +0 0 0 diff --git a/graphics/pokemon/hippopotas/followerf.png b/graphics/pokemon/hippopotas/followerf.png new file mode 100644 index 000000000000..e8802de5c496 Binary files /dev/null and b/graphics/pokemon/hippopotas/followerf.png differ diff --git a/graphics/pokemon/hippopotas/overworld.png b/graphics/pokemon/hippopotas/overworld.png new file mode 100644 index 000000000000..4ff33e32f318 Binary files /dev/null and b/graphics/pokemon/hippopotas/overworld.png differ diff --git a/graphics/pokemon/hippopotas/overworld_normal.pal b/graphics/pokemon/hippopotas/overworld_normal.pal new file mode 100644 index 000000000000..8bada9c45fad --- /dev/null +++ b/graphics/pokemon/hippopotas/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 56 32 +184 120 80 +144 128 56 +208 176 56 +48 48 48 +208 176 80 +136 88 56 +232 232 248 +224 200 112 +184 184 192 +136 136 136 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hippopotas/overworld_shiny.pal b/graphics/pokemon/hippopotas/overworld_shiny.pal new file mode 100644 index 000000000000..eb4d0d164cc4 --- /dev/null +++ b/graphics/pokemon/hippopotas/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 56 32 +200 144 112 +184 152 80 +224 208 136 +48 48 48 +248 216 160 +176 112 72 +232 232 248 +248 232 200 +184 184 192 +136 136 136 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hippowdon/followerf.png b/graphics/pokemon/hippowdon/followerf.png new file mode 100644 index 000000000000..20ac193d7458 Binary files /dev/null and b/graphics/pokemon/hippowdon/followerf.png differ diff --git a/graphics/pokemon/hippowdon/overworld.png b/graphics/pokemon/hippowdon/overworld.png new file mode 100644 index 000000000000..f666ab8c5025 Binary files /dev/null and b/graphics/pokemon/hippowdon/overworld.png differ diff --git a/graphics/pokemon/hippowdon/overworld_normal.pal b/graphics/pokemon/hippowdon/overworld_normal.pal new file mode 100644 index 000000000000..d9c692e5e9bc --- /dev/null +++ b/graphics/pokemon/hippowdon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 96 96 +48 48 48 +72 72 72 +184 144 56 +208 176 80 +192 56 80 +168 168 168 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hippowdon/overworld_shiny.pal b/graphics/pokemon/hippowdon/overworld_shiny.pal new file mode 100644 index 000000000000..3e223a13c576 --- /dev/null +++ b/graphics/pokemon/hippowdon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 136 104 +48 48 48 +96 96 72 +208 176 120 +224 200 136 +192 56 80 +152 208 160 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmonchan/overworld.png b/graphics/pokemon/hitmonchan/overworld.png new file mode 100644 index 000000000000..3fceca61d1ec Binary files /dev/null and b/graphics/pokemon/hitmonchan/overworld.png differ diff --git a/graphics/pokemon/hitmonchan/overworld_normal.pal b/graphics/pokemon/hitmonchan/overworld_normal.pal new file mode 100644 index 000000000000..de26d921b2dc --- /dev/null +++ b/graphics/pokemon/hitmonchan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 48 +0 0 0 +192 160 104 +112 80 56 +152 112 64 +232 232 248 +144 24 40 +112 104 128 +224 56 56 +56 56 56 +160 136 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmonchan/overworld_shiny.pal b/graphics/pokemon/hitmonchan/overworld_shiny.pal new file mode 100644 index 000000000000..48bfc8d625e3 --- /dev/null +++ b/graphics/pokemon/hitmonchan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 72 48 +0 0 0 +176 176 104 +96 96 56 +136 128 64 +232 232 248 +40 72 136 +112 104 128 +80 152 192 +56 56 56 +160 136 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmonlee/overworld.png b/graphics/pokemon/hitmonlee/overworld.png new file mode 100644 index 000000000000..2cb159d14f36 Binary files /dev/null and b/graphics/pokemon/hitmonlee/overworld.png differ diff --git a/graphics/pokemon/hitmonlee/overworld_normal.pal b/graphics/pokemon/hitmonlee/overworld_normal.pal new file mode 100644 index 000000000000..3de1f1f732ac --- /dev/null +++ b/graphics/pokemon/hitmonlee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 48 +160 128 80 +120 96 56 +0 0 0 +200 200 208 +232 232 248 +152 136 88 +88 72 40 +208 184 112 +136 120 48 +96 96 96 +160 160 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmonlee/overworld_shiny.pal b/graphics/pokemon/hitmonlee/overworld_shiny.pal new file mode 100644 index 000000000000..9bfdbab384dd --- /dev/null +++ b/graphics/pokemon/hitmonlee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 72 48 +144 152 80 +104 112 56 +0 0 0 +200 200 208 +232 232 248 +152 136 88 +72 88 40 +208 184 112 +136 120 48 +96 96 96 +160 160 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmontop/overworld.png b/graphics/pokemon/hitmontop/overworld.png new file mode 100644 index 000000000000..5708d9b8181a Binary files /dev/null and b/graphics/pokemon/hitmontop/overworld.png differ diff --git a/graphics/pokemon/hitmontop/overworld_normal.pal b/graphics/pokemon/hitmontop/overworld_normal.pal new file mode 100644 index 000000000000..1450180c7fa7 --- /dev/null +++ b/graphics/pokemon/hitmontop/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 24 +208 160 104 +128 80 24 +184 128 72 +0 0 0 +232 232 248 +96 152 208 +56 112 160 +24 56 104 +176 184 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hitmontop/overworld_shiny.pal b/graphics/pokemon/hitmontop/overworld_shiny.pal new file mode 100644 index 000000000000..1e47650f4507 --- /dev/null +++ b/graphics/pokemon/hitmontop/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 88 +192 184 176 +120 120 128 +144 144 136 +0 0 0 +232 232 248 +216 144 232 +168 96 184 +96 40 112 +176 184 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ho_oh/overworld.png b/graphics/pokemon/ho_oh/overworld.png new file mode 100644 index 000000000000..ceba8ee16129 Binary files /dev/null and b/graphics/pokemon/ho_oh/overworld.png differ diff --git a/graphics/pokemon/ho_oh/overworld_normal.pal b/graphics/pokemon/ho_oh/overworld_normal.pal new file mode 100644 index 000000000000..1a28ecd192b5 --- /dev/null +++ b/graphics/pokemon/ho_oh/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +96 40 0 +0 0 0 +232 152 0 +248 208 96 +168 104 0 +80 24 0 +56 96 16 +216 80 48 +160 56 24 +128 200 80 +216 232 248 +56 56 56 +232 232 248 +168 184 208 +96 120 120 diff --git a/graphics/pokemon/ho_oh/overworld_shiny.pal b/graphics/pokemon/ho_oh/overworld_shiny.pal new file mode 100644 index 000000000000..3b8187019582 --- /dev/null +++ b/graphics/pokemon/ho_oh/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +40 40 40 +0 0 0 +160 176 176 +216 216 216 +112 128 152 +80 24 0 +160 56 24 +248 184 16 +216 112 40 +216 80 48 +240 184 0 +56 56 56 +232 232 248 +168 184 208 +96 120 120 diff --git a/graphics/pokemon/honchkrow/overworld.png b/graphics/pokemon/honchkrow/overworld.png new file mode 100644 index 000000000000..49e5f9b10903 Binary files /dev/null and b/graphics/pokemon/honchkrow/overworld.png differ diff --git a/graphics/pokemon/honchkrow/overworld_normal.pal b/graphics/pokemon/honchkrow/overworld_normal.pal new file mode 100644 index 000000000000..4c9cbf187c85 --- /dev/null +++ b/graphics/pokemon/honchkrow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 88 112 +32 40 48 +40 64 104 +48 56 72 +168 168 176 +232 232 248 +248 224 8 +120 16 24 +112 112 112 +192 152 0 +200 200 200 +56 56 56 +168 8 8 +80 64 48 diff --git a/graphics/pokemon/honchkrow/overworld_shiny.pal b/graphics/pokemon/honchkrow/overworld_shiny.pal new file mode 100644 index 000000000000..6412fd7c835e --- /dev/null +++ b/graphics/pokemon/honchkrow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +160 88 152 +56 40 64 +128 72 120 +88 56 96 +168 168 176 +232 232 248 +248 224 8 +120 16 24 +112 112 112 +192 152 0 +200 200 200 +56 56 56 +168 8 8 +80 64 48 diff --git a/graphics/pokemon/honedge/overworld.png b/graphics/pokemon/honedge/overworld.png new file mode 100644 index 000000000000..1e98eae01cbf Binary files /dev/null and b/graphics/pokemon/honedge/overworld.png differ diff --git a/graphics/pokemon/honedge/overworld_normal.pal b/graphics/pokemon/honedge/overworld_normal.pal new file mode 100644 index 000000000000..6c263df029e5 --- /dev/null +++ b/graphics/pokemon/honedge/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 55 77 +38 111 176 +16 16 16 +56 49 42 +122 112 92 +108 154 186 +166 209 225 +173 165 113 +97 82 69 +251 254 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/honedge/overworld_shiny.pal b/graphics/pokemon/honedge/overworld_shiny.pal new file mode 100644 index 000000000000..177af7bebc0d --- /dev/null +++ b/graphics/pokemon/honedge/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +139 43 53 +218 69 89 +16 16 16 +56 49 42 +122 112 92 +115 119 176 +141 153 228 +173 165 113 +97 82 69 +251 254 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoopa/overworld.png b/graphics/pokemon/hoopa/overworld.png new file mode 100644 index 000000000000..4f4cb43b246d Binary files /dev/null and b/graphics/pokemon/hoopa/overworld.png differ diff --git a/graphics/pokemon/hoopa/overworld_normal.pal b/graphics/pokemon/hoopa/overworld_normal.pal new file mode 100644 index 000000000000..3827861e2600 --- /dev/null +++ b/graphics/pokemon/hoopa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 168 144 +16 16 16 +104 88 78 +75 31 51 +184 116 53 +255 205 76 +255 131 207 +219 82 164 +140 118 166 +53 78 18 +209 196 230 +217 221 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoopa/overworld_shiny.pal b/graphics/pokemon/hoopa/overworld_shiny.pal new file mode 100644 index 000000000000..2cab22108790 --- /dev/null +++ b/graphics/pokemon/hoopa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 168 144 +16 16 16 +153 124 38 +80 62 11 +184 116 53 +255 205 76 +187 135 67 +148 107 53 +171 156 64 +53 78 18 +205 189 97 +217 221 225 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoopa/unbound/overworld.png b/graphics/pokemon/hoopa/unbound/overworld.png new file mode 100644 index 000000000000..93756e095bd5 Binary files /dev/null and b/graphics/pokemon/hoopa/unbound/overworld.png differ diff --git a/graphics/pokemon/hoopa/unbound/overworld_normal.pal b/graphics/pokemon/hoopa/unbound/overworld_normal.pal new file mode 100644 index 000000000000..169f56ef4bff --- /dev/null +++ b/graphics/pokemon/hoopa/unbound/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 168 144 +65 48 39 +238 190 74 +16 16 16 +68 76 88 +154 192 220 +95 41 66 +217 111 173 +172 111 52 +113 137 163 +178 66 134 +100 86 76 +217 219 221 +22 20 23 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoopa/unbound/overworld_shiny.pal b/graphics/pokemon/hoopa/unbound/overworld_shiny.pal new file mode 100644 index 000000000000..beb215b5108f --- /dev/null +++ b/graphics/pokemon/hoopa/unbound/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 168 144 +65 48 39 +243 183 37 +16 16 16 +120 107 29 +205 189 97 +80 62 11 +187 135 67 +172 111 52 +171 156 64 +148 107 53 +153 124 38 +217 219 221 +22 20 23 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoothoot/overworld.png b/graphics/pokemon/hoothoot/overworld.png new file mode 100644 index 000000000000..72ccbdc9d56f Binary files /dev/null and b/graphics/pokemon/hoothoot/overworld.png differ diff --git a/graphics/pokemon/hoothoot/overworld_normal.pal b/graphics/pokemon/hoothoot/overworld_normal.pal new file mode 100644 index 000000000000..3c77d7c67c7c --- /dev/null +++ b/graphics/pokemon/hoothoot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +64 80 88 +80 40 8 +0 0 0 +176 128 88 +136 88 64 +216 80 72 +224 168 168 +104 40 40 +200 112 112 +200 176 120 +232 216 160 +168 184 208 +136 72 56 +0 0 0 diff --git a/graphics/pokemon/hoothoot/overworld_shiny.pal b/graphics/pokemon/hoothoot/overworld_shiny.pal new file mode 100644 index 000000000000..f19b0baa4c0c --- /dev/null +++ b/graphics/pokemon/hoothoot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +64 80 88 +96 64 8 +0 0 0 +248 200 88 +216 136 64 +216 80 72 +224 168 168 +104 40 40 +200 112 112 +200 176 120 +232 216 160 +168 184 208 +136 88 56 +0 0 0 diff --git a/graphics/pokemon/hoppip/overworld.png b/graphics/pokemon/hoppip/overworld.png new file mode 100644 index 000000000000..77e1ea5bdecf Binary files /dev/null and b/graphics/pokemon/hoppip/overworld.png differ diff --git a/graphics/pokemon/hoppip/overworld_normal.pal b/graphics/pokemon/hoppip/overworld_normal.pal new file mode 100644 index 000000000000..bd0c077d62bf --- /dev/null +++ b/graphics/pokemon/hoppip/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 88 16 +0 0 0 +112 192 80 +96 152 64 +88 8 32 +168 64 88 +224 104 128 +240 144 192 +232 200 0 +200 88 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hoppip/overworld_shiny.pal b/graphics/pokemon/hoppip/overworld_shiny.pal new file mode 100644 index 000000000000..b67f960787fe --- /dev/null +++ b/graphics/pokemon/hoppip/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 88 16 +0 0 0 +136 200 80 +120 168 64 +24 32 0 +56 112 24 +104 176 56 +136 200 112 +232 200 0 +72 128 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/horsea/overworld.png b/graphics/pokemon/horsea/overworld.png new file mode 100644 index 000000000000..6c291b7d9328 Binary files /dev/null and b/graphics/pokemon/horsea/overworld.png differ diff --git a/graphics/pokemon/horsea/overworld_normal.pal b/graphics/pokemon/horsea/overworld_normal.pal new file mode 100644 index 000000000000..54a5cf1d3f6a --- /dev/null +++ b/graphics/pokemon/horsea/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 56 96 +96 152 192 +144 184 224 +40 88 136 +168 184 208 +232 232 248 +144 16 16 +64 64 64 +192 160 96 +248 208 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/horsea/overworld_shiny.pal b/graphics/pokemon/horsea/overworld_shiny.pal new file mode 100644 index 000000000000..28bd790daa83 --- /dev/null +++ b/graphics/pokemon/horsea/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 80 64 +96 184 168 +128 200 192 +40 136 112 +168 184 208 +232 232 248 +144 16 16 +64 64 64 +192 120 128 +248 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/houndoom/overworld.png b/graphics/pokemon/houndoom/overworld.png new file mode 100644 index 000000000000..96212ee3e5ea Binary files /dev/null and b/graphics/pokemon/houndoom/overworld.png differ diff --git a/graphics/pokemon/houndoom/overworld_normal.pal b/graphics/pokemon/houndoom/overworld_normal.pal new file mode 100644 index 000000000000..c3468aa5b0b0 --- /dev/null +++ b/graphics/pokemon/houndoom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 80 +0 0 0 +168 160 184 +232 232 248 +136 128 144 +40 40 48 +104 112 112 +80 80 88 +56 56 64 +224 184 160 +136 96 64 +184 136 96 +144 24 40 +112 96 120 +0 0 0 diff --git a/graphics/pokemon/houndoom/overworld_shiny.pal b/graphics/pokemon/houndoom/overworld_shiny.pal new file mode 100644 index 000000000000..05b66d6ede38 --- /dev/null +++ b/graphics/pokemon/houndoom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 80 +0 0 0 +168 160 184 +232 232 248 +136 128 144 +16 48 72 +72 144 192 +48 112 152 +24 56 80 +224 184 160 +136 96 64 +184 136 96 +144 24 40 +112 96 120 +0 0 0 diff --git a/graphics/pokemon/houndour/overworld.png b/graphics/pokemon/houndour/overworld.png new file mode 100644 index 000000000000..664fab3f83a2 Binary files /dev/null and b/graphics/pokemon/houndour/overworld.png differ diff --git a/graphics/pokemon/houndour/overworld_normal.pal b/graphics/pokemon/houndour/overworld_normal.pal new file mode 100644 index 000000000000..e8f3ee64e933 --- /dev/null +++ b/graphics/pokemon/houndour/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 80 +40 40 48 +56 56 64 +232 232 248 +80 80 88 +0 0 0 +104 112 112 +112 96 120 +168 160 184 +224 184 160 +176 184 192 +184 136 96 +136 128 144 +136 96 64 +0 0 0 diff --git a/graphics/pokemon/houndour/overworld_shiny.pal b/graphics/pokemon/houndour/overworld_shiny.pal new file mode 100644 index 000000000000..8d7f91222cc0 --- /dev/null +++ b/graphics/pokemon/houndour/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 80 +16 48 72 +24 56 80 +232 232 248 +48 112 152 +0 0 0 +72 144 192 +112 96 120 +168 160 184 +224 184 160 +176 184 248 +184 136 96 +136 128 144 +136 96 64 +0 0 0 diff --git a/graphics/pokemon/huntail/overworld.png b/graphics/pokemon/huntail/overworld.png new file mode 100644 index 000000000000..8a0b8ef8c382 Binary files /dev/null and b/graphics/pokemon/huntail/overworld.png differ diff --git a/graphics/pokemon/huntail/overworld_normal.pal b/graphics/pokemon/huntail/overworld_normal.pal new file mode 100644 index 000000000000..ae0c4771bb7a --- /dev/null +++ b/graphics/pokemon/huntail/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 96 136 +152 200 224 +128 48 24 +120 184 216 +0 0 0 +184 80 48 +96 152 216 +216 112 72 +208 216 232 +176 192 216 +232 232 248 +152 40 88 +48 48 64 +184 64 112 +0 0 0 diff --git a/graphics/pokemon/huntail/overworld_shiny.pal b/graphics/pokemon/huntail/overworld_shiny.pal new file mode 100644 index 000000000000..8d443a8a9b9e --- /dev/null +++ b/graphics/pokemon/huntail/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 144 112 +136 208 160 +128 48 24 +104 192 144 +0 0 0 +184 80 48 +72 168 128 +216 112 72 +208 216 232 +176 192 216 +232 232 248 +152 40 88 +48 48 64 +184 64 112 +0 0 0 diff --git a/graphics/pokemon/hydreigon/overworld.png b/graphics/pokemon/hydreigon/overworld.png new file mode 100644 index 000000000000..58e187d31bb1 Binary files /dev/null and b/graphics/pokemon/hydreigon/overworld.png differ diff --git a/graphics/pokemon/hydreigon/overworld_normal.pal b/graphics/pokemon/hydreigon/overworld_normal.pal new file mode 100644 index 000000000000..82af3b34282e --- /dev/null +++ b/graphics/pokemon/hydreigon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +82 82 82 +0 0 0 +65 57 65 +41 32 41 +139 41 98 +189 82 123 +98 32 65 +24 49 106 +57 90 156 +90 131 205 +156 65 49 +115 41 24 +230 222 222 +0 0 0 diff --git a/graphics/pokemon/hydreigon/overworld_shiny.pal b/graphics/pokemon/hydreigon/overworld_shiny.pal new file mode 100644 index 000000000000..9797e900198b --- /dev/null +++ b/graphics/pokemon/hydreigon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +2 2 2 +96 88 80 +2 2 2 +80 64 64 +55 39 40 +96 56 152 +160 96 192 +65 33 84 +55 39 40 +88 104 48 +112 152 72 +163 80 66 +80 64 64 +160 96 192 +0 0 0 diff --git a/graphics/pokemon/hypno/overworld.png b/graphics/pokemon/hypno/overworld.png new file mode 100644 index 000000000000..1ef615b2a36e Binary files /dev/null and b/graphics/pokemon/hypno/overworld.png differ diff --git a/graphics/pokemon/hypno/overworld_normal.pal b/graphics/pokemon/hypno/overworld_normal.pal new file mode 100644 index 000000000000..88d4aed1e032 --- /dev/null +++ b/graphics/pokemon/hypno/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 40 +0 0 0 +232 200 80 +184 152 40 +104 80 120 +120 104 32 +48 48 48 +168 168 168 +232 232 248 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/hypno/overworld_shiny.pal b/graphics/pokemon/hypno/overworld_shiny.pal new file mode 100644 index 000000000000..345a52c295dd --- /dev/null +++ b/graphics/pokemon/hypno/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 72 +0 0 0 +200 176 184 +168 128 152 +112 64 96 +128 80 112 +48 48 48 +184 176 144 +232 232 248 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/igglybuff/overworld.png b/graphics/pokemon/igglybuff/overworld.png new file mode 100644 index 000000000000..ab5af8ee16e1 Binary files /dev/null and b/graphics/pokemon/igglybuff/overworld.png differ diff --git a/graphics/pokemon/igglybuff/overworld_normal.pal b/graphics/pokemon/igglybuff/overworld_normal.pal new file mode 100644 index 000000000000..9d3a3a4ebc22 --- /dev/null +++ b/graphics/pokemon/igglybuff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 40 64 +248 200 216 +168 80 96 +224 144 168 +200 112 144 +224 112 120 +232 232 248 +168 48 56 +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/igglybuff/overworld_shiny.pal b/graphics/pokemon/igglybuff/overworld_shiny.pal new file mode 100644 index 000000000000..d9e101639e09 --- /dev/null +++ b/graphics/pokemon/igglybuff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 32 88 +248 200 248 +120 80 120 +216 160 216 +176 104 144 +224 112 120 +232 232 248 +168 48 56 +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/illumise/overworld.png b/graphics/pokemon/illumise/overworld.png new file mode 100644 index 000000000000..a5092316f4f0 Binary files /dev/null and b/graphics/pokemon/illumise/overworld.png differ diff --git a/graphics/pokemon/illumise/overworld_normal.pal b/graphics/pokemon/illumise/overworld_normal.pal new file mode 100644 index 000000000000..eb5efd177848 --- /dev/null +++ b/graphics/pokemon/illumise/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 88 56 +0 0 0 +104 56 104 +160 136 40 +200 184 88 +200 120 200 +208 176 232 +88 160 232 +160 192 232 +48 64 104 +232 232 248 +168 168 200 +40 40 48 +64 64 72 +104 104 112 diff --git a/graphics/pokemon/illumise/overworld_shiny.pal b/graphics/pokemon/illumise/overworld_shiny.pal new file mode 100644 index 000000000000..17e83d03ea67 --- /dev/null +++ b/graphics/pokemon/illumise/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +168 56 48 +0 0 0 +112 88 56 +216 112 96 +232 176 176 +224 160 40 +248 208 96 +88 160 232 +160 192 232 +48 64 104 +232 232 248 +168 168 200 +40 40 48 +64 64 72 +104 104 112 diff --git a/graphics/pokemon/impidimp/overworld.png b/graphics/pokemon/impidimp/overworld.png new file mode 100644 index 000000000000..20736c300e14 Binary files /dev/null and b/graphics/pokemon/impidimp/overworld.png differ diff --git a/graphics/pokemon/impidimp/overworld_normal.pal b/graphics/pokemon/impidimp/overworld_normal.pal new file mode 100644 index 000000000000..ecac15ae98cb --- /dev/null +++ b/graphics/pokemon/impidimp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 252 0 +56 24 36 +244 124 176 +0 0 0 +252 180 212 +8 8 12 +60 60 96 +176 84 124 +236 52 68 +28 28 48 +220 220 220 +252 252 252 +252 252 252 +56 24 36 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/impidimp/overworld_shiny.pal b/graphics/pokemon/impidimp/overworld_shiny.pal new file mode 100644 index 000000000000..1a28a86ad130 --- /dev/null +++ b/graphics/pokemon/impidimp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 252 0 +0 49 49 +0 164 180 +0 0 0 +32 205 230 +74 74 74 +230 222 230 +0 123 131 +238 49 65 +172 172 172 +222 222 222 +255 255 255 +255 255 255 +0 49 49 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/incineroar/overworld.png b/graphics/pokemon/incineroar/overworld.png new file mode 100644 index 000000000000..6c01302cfd36 Binary files /dev/null and b/graphics/pokemon/incineroar/overworld.png differ diff --git a/graphics/pokemon/incineroar/overworld_normal.pal b/graphics/pokemon/incineroar/overworld_normal.pal new file mode 100644 index 000000000000..2539d4db2eb2 --- /dev/null +++ b/graphics/pokemon/incineroar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +219 219 219 +246 207 88 +234 122 48 +110 148 86 +120 120 120 +105 102 102 +243 80 59 +208 62 65 +82 74 74 +60 50 50 +186 42 52 +75 19 20 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/incineroar/overworld_shiny.pal b/graphics/pokemon/incineroar/overworld_shiny.pal new file mode 100644 index 000000000000..24b3310b54e2 --- /dev/null +++ b/graphics/pokemon/incineroar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +219 219 219 +246 207 88 +234 122 48 +110 148 86 +120 120 120 +105 102 102 +240 48 32 +208 62 65 +240 232 224 +60 50 50 +186 42 52 +75 19 20 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/indeedee/female/overworld.png b/graphics/pokemon/indeedee/female/overworld.png new file mode 100644 index 000000000000..609039c70d30 Binary files /dev/null and b/graphics/pokemon/indeedee/female/overworld.png differ diff --git a/graphics/pokemon/indeedee/female/overworld_normal.pal b/graphics/pokemon/indeedee/female/overworld_normal.pal new file mode 100644 index 000000000000..d258b99c8df2 --- /dev/null +++ b/graphics/pokemon/indeedee/female/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +26 24 32 +135 128 162 +86 82 102 +8 8 14 +0 0 0 +37 37 62 +77 76 116 +255 255 255 +121 83 136 +61 37 19 +175 175 175 +121 72 39 +136 136 136 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/indeedee/female/overworld_shiny.pal b/graphics/pokemon/indeedee/female/overworld_shiny.pal new file mode 100644 index 000000000000..d258b99c8df2 --- /dev/null +++ b/graphics/pokemon/indeedee/female/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +26 24 32 +135 128 162 +86 82 102 +8 8 14 +0 0 0 +37 37 62 +77 76 116 +255 255 255 +121 83 136 +61 37 19 +175 175 175 +121 72 39 +136 136 136 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/indeedee/overworld.png b/graphics/pokemon/indeedee/overworld.png new file mode 100644 index 000000000000..71419fc897d9 Binary files /dev/null and b/graphics/pokemon/indeedee/overworld.png differ diff --git a/graphics/pokemon/indeedee/overworld_normal.pal b/graphics/pokemon/indeedee/overworld_normal.pal new file mode 100644 index 000000000000..dcb3b8aac8b0 --- /dev/null +++ b/graphics/pokemon/indeedee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 252 0 +24 24 32 +132 128 160 +84 80 100 +0 0 0 +252 252 252 +8 8 12 +36 36 60 +76 76 116 +172 172 172 +128 160 176 +120 72 36 +60 36 16 +136 136 136 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/indeedee/overworld_shiny.pal b/graphics/pokemon/indeedee/overworld_shiny.pal new file mode 100644 index 000000000000..41e77455de0d --- /dev/null +++ b/graphics/pokemon/indeedee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 252 0 +32 24 41 +115 98 156 +82 65 106 +0 0 0 +255 255 255 +16 32 32 +49 82 90 +82 123 139 +172 172 172 +131 164 180 +123 74 32 +57 32 16 +139 139 139 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/infernape/overworld.png b/graphics/pokemon/infernape/overworld.png new file mode 100644 index 000000000000..8e3187ca6d52 Binary files /dev/null and b/graphics/pokemon/infernape/overworld.png differ diff --git a/graphics/pokemon/infernape/overworld_normal.pal b/graphics/pokemon/infernape/overworld_normal.pal new file mode 100644 index 000000000000..1f13a34b3a58 --- /dev/null +++ b/graphics/pokemon/infernape/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 24 24 +240 56 40 +248 208 0 +64 64 64 +232 232 248 +216 216 216 +168 168 168 +0 0 0 +104 72 56 +200 56 88 +224 112 80 +192 64 32 +24 88 176 +208 152 0 +128 56 32 diff --git a/graphics/pokemon/infernape/overworld_shiny.pal b/graphics/pokemon/infernape/overworld_shiny.pal new file mode 100644 index 000000000000..ba4c61aec8c5 --- /dev/null +++ b/graphics/pokemon/infernape/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 24 24 +240 56 40 +248 232 128 +64 64 64 +232 232 248 +216 216 216 +168 168 168 +0 0 0 +104 64 96 +200 56 88 +248 104 160 +200 72 112 +160 72 224 +208 160 72 +144 32 80 diff --git a/graphics/pokemon/inkay/overworld.png b/graphics/pokemon/inkay/overworld.png new file mode 100644 index 000000000000..44e041110b18 Binary files /dev/null and b/graphics/pokemon/inkay/overworld.png differ diff --git a/graphics/pokemon/inkay/overworld_normal.pal b/graphics/pokemon/inkay/overworld_normal.pal new file mode 100644 index 000000000000..dc97a035c133 --- /dev/null +++ b/graphics/pokemon/inkay/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +86 86 86 +249 254 255 +175 211 246 +233 131 135 +253 236 58 +243 183 97 +59 92 139 +101 167 237 +84 137 198 +165 63 68 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/inkay/overworld_shiny.pal b/graphics/pokemon/inkay/overworld_shiny.pal new file mode 100644 index 000000000000..ba7a04a091a2 --- /dev/null +++ b/graphics/pokemon/inkay/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +86 86 86 +249 254 255 +175 211 246 +191 148 196 +253 236 58 +243 183 97 +176 143 70 +218 190 116 +202 167 88 +116 87 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/inteleon/overworld.png b/graphics/pokemon/inteleon/overworld.png new file mode 100644 index 000000000000..14059b3972fd Binary files /dev/null and b/graphics/pokemon/inteleon/overworld.png differ diff --git a/graphics/pokemon/inteleon/overworld_normal.pal b/graphics/pokemon/inteleon/overworld_normal.pal new file mode 100644 index 000000000000..2217c0ec8321 --- /dev/null +++ b/graphics/pokemon/inteleon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +116 252 0 +0 0 0 +4 20 32 +100 100 24 +24 60 96 +36 96 116 +36 36 36 +196 168 32 +16 16 16 +196 196 64 +224 224 84 +36 92 136 +60 148 184 +116 184 212 +176 216 232 +244 244 244 diff --git a/graphics/pokemon/inteleon/overworld_shiny.pal b/graphics/pokemon/inteleon/overworld_shiny.pal new file mode 100644 index 000000000000..28c81ff36ce6 --- /dev/null +++ b/graphics/pokemon/inteleon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +0 49 65 +74 32 49 +0 156 180 +16 32 49 +213 213 213 +115 57 82 +156 156 156 +172 82 123 +222 115 172 +16 230 255 +49 74 106 +74 106 156 +106 139 189 +213 213 213 diff --git a/graphics/pokemon/ivysaur/overworld.png b/graphics/pokemon/ivysaur/overworld.png new file mode 100644 index 000000000000..03e9ca56fc35 Binary files /dev/null and b/graphics/pokemon/ivysaur/overworld.png differ diff --git a/graphics/pokemon/ivysaur/overworld_normal.pal b/graphics/pokemon/ivysaur/overworld_normal.pal new file mode 100644 index 000000000000..c1f09aeed63b --- /dev/null +++ b/graphics/pokemon/ivysaur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 32 40 +240 128 160 +144 64 32 +200 88 120 +40 64 64 +48 88 24 +104 208 192 +72 168 152 +96 168 16 +0 0 0 +136 224 32 +64 128 120 +64 64 64 +232 232 248 +200 200 216 diff --git a/graphics/pokemon/ivysaur/overworld_shiny.pal b/graphics/pokemon/ivysaur/overworld_shiny.pal new file mode 100644 index 000000000000..28a0371d2590 --- /dev/null +++ b/graphics/pokemon/ivysaur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +136 72 0 +248 208 64 +144 64 32 +232 160 0 +64 80 32 +64 96 48 +160 208 56 +112 152 48 +56 144 16 +0 0 0 +96 184 56 +72 120 40 +64 64 64 +232 232 248 +176 176 176 diff --git a/graphics/pokemon/jangmo_o/overworld.png b/graphics/pokemon/jangmo_o/overworld.png new file mode 100644 index 000000000000..d21cda1e95e3 Binary files /dev/null and b/graphics/pokemon/jangmo_o/overworld.png differ diff --git a/graphics/pokemon/jangmo_o/overworld_normal.pal b/graphics/pokemon/jangmo_o/overworld_normal.pal new file mode 100644 index 000000000000..0bc5d026a79d --- /dev/null +++ b/graphics/pokemon/jangmo_o/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +122 98 34 +241 210 67 +75 75 75 +49 49 49 +16 16 16 +172 172 172 +127 127 127 +232 232 232 +203 63 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jangmo_o/overworld_shiny.pal b/graphics/pokemon/jangmo_o/overworld_shiny.pal new file mode 100644 index 000000000000..fb57b014b9f3 --- /dev/null +++ b/graphics/pokemon/jangmo_o/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +122 98 34 +248 120 192 +75 75 75 +49 49 49 +16 16 16 +224 248 56 +168 184 16 +232 232 232 +203 63 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jellicent/followerf.png b/graphics/pokemon/jellicent/followerf.png new file mode 100644 index 000000000000..1de8ee407b9c Binary files /dev/null and b/graphics/pokemon/jellicent/followerf.png differ diff --git a/graphics/pokemon/jellicent/overworld.png b/graphics/pokemon/jellicent/overworld.png new file mode 100644 index 000000000000..315750cd18d1 Binary files /dev/null and b/graphics/pokemon/jellicent/overworld.png differ diff --git a/graphics/pokemon/jellicent/overworld_normal.pal b/graphics/pokemon/jellicent/overworld_normal.pal new file mode 100644 index 000000000000..8b935ea96ce7 --- /dev/null +++ b/graphics/pokemon/jellicent/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +208 227 255 +208 227 255 +25 47 95 +47 121 199 +47 191 245 +218 63 33 +147 164 208 +25 47 95 +0 0 0 +147 164 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jellicent/overworld_shiny.pal b/graphics/pokemon/jellicent/overworld_shiny.pal new file mode 100644 index 000000000000..e63fc0fd0de7 --- /dev/null +++ b/graphics/pokemon/jellicent/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +208 224 248 +208 227 255 +40 72 56 +56 152 112 +32 208 136 +218 63 33 +152 184 176 +25 47 95 +0 0 0 +147 164 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jigglypuff/overworld.png b/graphics/pokemon/jigglypuff/overworld.png new file mode 100644 index 000000000000..7da20e473409 Binary files /dev/null and b/graphics/pokemon/jigglypuff/overworld.png differ diff --git a/graphics/pokemon/jigglypuff/overworld_normal.pal b/graphics/pokemon/jigglypuff/overworld_normal.pal new file mode 100644 index 000000000000..ff0e5bdb5085 --- /dev/null +++ b/graphics/pokemon/jigglypuff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +0 0 0 +144 72 88 +96 40 64 +248 168 184 +208 112 144 +96 72 64 +232 232 248 +112 160 248 +80 80 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jigglypuff/overworld_shiny.pal b/graphics/pokemon/jigglypuff/overworld_shiny.pal new file mode 100644 index 000000000000..7567d53695a0 --- /dev/null +++ b/graphics/pokemon/jigglypuff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +0 0 0 +152 72 96 +96 40 64 +248 200 216 +208 144 184 +96 72 64 +232 232 248 +136 232 144 +8 152 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jirachi/overworld.png b/graphics/pokemon/jirachi/overworld.png new file mode 100644 index 000000000000..91b63d0bb7fb Binary files /dev/null and b/graphics/pokemon/jirachi/overworld.png differ diff --git a/graphics/pokemon/jirachi/overworld_normal.pal b/graphics/pokemon/jirachi/overworld_normal.pal new file mode 100644 index 000000000000..1858bff2975f --- /dev/null +++ b/graphics/pokemon/jirachi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 16 +200 152 0 +248 216 88 +216 184 64 +0 0 0 +168 112 8 +32 88 80 +120 200 176 +56 128 112 +88 160 144 +232 232 248 +80 104 104 +176 184 184 +136 152 152 +208 208 224 diff --git a/graphics/pokemon/jirachi/overworld_shiny.pal b/graphics/pokemon/jirachi/overworld_shiny.pal new file mode 100644 index 000000000000..af5026555746 --- /dev/null +++ b/graphics/pokemon/jirachi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 16 +200 152 0 +248 216 88 +216 184 64 +0 0 0 +168 112 8 +96 48 48 +224 144 128 +176 48 48 +208 80 80 +232 232 248 +112 96 88 +192 176 168 +152 136 128 +232 216 208 diff --git a/graphics/pokemon/jolteon/overworld.png b/graphics/pokemon/jolteon/overworld.png new file mode 100644 index 000000000000..0c739e25ca9b Binary files /dev/null and b/graphics/pokemon/jolteon/overworld.png differ diff --git a/graphics/pokemon/jolteon/overworld_normal.pal b/graphics/pokemon/jolteon/overworld_normal.pal new file mode 100644 index 000000000000..4c5e10bff713 --- /dev/null +++ b/graphics/pokemon/jolteon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 40 +248 200 24 +248 248 80 +168 104 32 +232 160 32 +0 0 0 +72 64 80 +208 224 232 +168 168 192 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jolteon/overworld_shiny.pal b/graphics/pokemon/jolteon/overworld_shiny.pal new file mode 100644 index 000000000000..226c0bedb5ef --- /dev/null +++ b/graphics/pokemon/jolteon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 40 +208 232 24 +248 248 104 +112 144 32 +168 200 32 +0 0 0 +72 64 80 +208 224 232 +168 168 192 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/joltik/overworld.png b/graphics/pokemon/joltik/overworld.png new file mode 100644 index 000000000000..1a94172c2993 Binary files /dev/null and b/graphics/pokemon/joltik/overworld.png differ diff --git a/graphics/pokemon/joltik/overworld_normal.pal b/graphics/pokemon/joltik/overworld_normal.pal new file mode 100644 index 000000000000..28d37d4ea595 --- /dev/null +++ b/graphics/pokemon/joltik/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +199 164 5 +104 71 5 +245 218 55 +69 46 0 +18 33 55 +40 79 191 +87 95 227 +185 126 0 +218 218 236 +11 11 11 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/joltik/overworld_shiny.pal b/graphics/pokemon/joltik/overworld_shiny.pal new file mode 100644 index 000000000000..93966ce506e7 --- /dev/null +++ b/graphics/pokemon/joltik/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +184 184 24 +96 96 8 +216 224 80 +69 46 0 +18 33 55 +56 24 88 +184 72 216 +185 126 0 +218 218 236 +11 11 11 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jumpluff/overworld.png b/graphics/pokemon/jumpluff/overworld.png new file mode 100644 index 000000000000..b22b2d7c1c22 Binary files /dev/null and b/graphics/pokemon/jumpluff/overworld.png differ diff --git a/graphics/pokemon/jumpluff/overworld_normal.pal b/graphics/pokemon/jumpluff/overworld_normal.pal new file mode 100644 index 000000000000..2878d2f888dc --- /dev/null +++ b/graphics/pokemon/jumpluff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 112 96 +248 248 200 +0 0 0 +192 184 160 +32 56 96 +96 152 224 +56 112 216 +232 232 248 +120 16 8 +40 80 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jumpluff/overworld_shiny.pal b/graphics/pokemon/jumpluff/overworld_shiny.pal new file mode 100644 index 000000000000..9c46461e6eed --- /dev/null +++ b/graphics/pokemon/jumpluff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 80 112 +248 248 200 +0 0 0 +200 168 216 +64 32 48 +248 200 224 +216 152 192 +232 232 248 +120 16 8 +136 80 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/jynx/overworld.png b/graphics/pokemon/jynx/overworld.png new file mode 100644 index 000000000000..d53ff2d3c10c Binary files /dev/null and b/graphics/pokemon/jynx/overworld.png differ diff --git a/graphics/pokemon/jynx/overworld_normal.pal b/graphics/pokemon/jynx/overworld_normal.pal new file mode 100644 index 000000000000..801b1bb0f964 --- /dev/null +++ b/graphics/pokemon/jynx/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 56 56 +248 208 96 +192 152 24 +248 232 184 +136 96 192 +104 72 136 +240 128 160 +232 232 248 +192 192 208 +200 88 120 +248 224 32 +152 152 184 +248 88 72 +176 56 32 diff --git a/graphics/pokemon/jynx/overworld_shiny.pal b/graphics/pokemon/jynx/overworld_shiny.pal new file mode 100644 index 000000000000..dea4bbb264cc --- /dev/null +++ b/graphics/pokemon/jynx/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 56 56 +248 240 128 +200 176 112 +248 248 200 +136 96 192 +104 72 136 +240 144 192 +232 232 248 +192 192 208 +200 120 152 +248 224 32 +152 152 184 +240 144 184 +200 88 152 diff --git a/graphics/pokemon/kabuto/overworld.png b/graphics/pokemon/kabuto/overworld.png new file mode 100644 index 000000000000..d13b97f85542 Binary files /dev/null and b/graphics/pokemon/kabuto/overworld.png differ diff --git a/graphics/pokemon/kabuto/overworld_normal.pal b/graphics/pokemon/kabuto/overworld_normal.pal new file mode 100644 index 000000000000..9b372b52296d --- /dev/null +++ b/graphics/pokemon/kabuto/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 40 +120 96 64 +152 120 72 +0 0 0 +88 72 56 +208 64 64 +168 128 56 +48 56 72 +136 24 24 +232 184 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kabuto/overworld_shiny.pal b/graphics/pokemon/kabuto/overworld_shiny.pal new file mode 100644 index 000000000000..39c845e290f5 --- /dev/null +++ b/graphics/pokemon/kabuto/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 96 40 +96 176 56 +144 200 56 +0 0 0 +80 128 48 +208 64 64 +168 128 56 +48 56 72 +136 24 24 +232 184 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kabutops/overworld.png b/graphics/pokemon/kabutops/overworld.png new file mode 100644 index 000000000000..084d6339b7df Binary files /dev/null and b/graphics/pokemon/kabutops/overworld.png differ diff --git a/graphics/pokemon/kabutops/overworld_normal.pal b/graphics/pokemon/kabutops/overworld_normal.pal new file mode 100644 index 000000000000..04f6316663cf --- /dev/null +++ b/graphics/pokemon/kabutops/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 40 +88 56 32 +152 120 72 +0 0 0 +136 96 40 +104 72 48 +64 64 64 +152 208 160 +192 192 200 +232 232 248 +104 104 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kabutops/overworld_shiny.pal b/graphics/pokemon/kabutops/overworld_shiny.pal new file mode 100644 index 000000000000..f53dd0d57a1f --- /dev/null +++ b/graphics/pokemon/kabutops/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 40 +80 128 48 +176 192 72 +0 0 0 +136 176 64 +104 152 56 +64 64 64 +152 152 152 +192 192 200 +232 232 248 +104 104 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kadabra/overworld.png b/graphics/pokemon/kadabra/overworld.png new file mode 100644 index 000000000000..99b95ad6abdb Binary files /dev/null and b/graphics/pokemon/kadabra/overworld.png differ diff --git a/graphics/pokemon/kadabra/overworld_normal.pal b/graphics/pokemon/kadabra/overworld_normal.pal new file mode 100644 index 000000000000..cc955b59a3c6 --- /dev/null +++ b/graphics/pokemon/kadabra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 24 +0 0 0 +248 216 96 +144 120 56 +216 168 48 +96 72 48 +232 96 120 +192 40 64 +232 232 248 +176 176 184 +144 120 96 +248 240 192 +88 88 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kadabra/overworld_shiny.pal b/graphics/pokemon/kadabra/overworld_shiny.pal new file mode 100644 index 000000000000..cd209cc4b60b --- /dev/null +++ b/graphics/pokemon/kadabra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 64 +0 0 0 +248 224 144 +176 160 112 +232 192 112 +128 112 88 +232 96 120 +192 40 64 +232 232 248 +176 176 184 +168 144 128 +248 240 208 +88 88 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kakuna/overworld.png b/graphics/pokemon/kakuna/overworld.png new file mode 100644 index 000000000000..327951e5c3ff Binary files /dev/null and b/graphics/pokemon/kakuna/overworld.png differ diff --git a/graphics/pokemon/kakuna/overworld_normal.pal b/graphics/pokemon/kakuna/overworld_normal.pal new file mode 100644 index 000000000000..8cdc6d8be9b0 --- /dev/null +++ b/graphics/pokemon/kakuna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 40 +248 208 64 +192 152 64 +64 64 64 +0 0 0 +232 232 248 +144 112 32 +0 0 0 +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/kakuna/overworld_shiny.pal b/graphics/pokemon/kakuna/overworld_shiny.pal new file mode 100644 index 000000000000..5955987512b2 --- /dev/null +++ b/graphics/pokemon/kakuna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 96 40 +192 216 64 +136 152 64 +64 64 64 +0 0 0 +232 232 248 +112 144 32 +0 0 0 +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/kangaskhan/overworld.png b/graphics/pokemon/kangaskhan/overworld.png new file mode 100644 index 000000000000..2b1f21c66dfc Binary files /dev/null and b/graphics/pokemon/kangaskhan/overworld.png differ diff --git a/graphics/pokemon/kangaskhan/overworld_normal.pal b/graphics/pokemon/kangaskhan/overworld_normal.pal new file mode 100644 index 000000000000..9defd5939ff9 --- /dev/null +++ b/graphics/pokemon/kangaskhan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +208 168 96 +56 56 64 +112 112 112 +72 72 72 +160 120 40 +64 48 32 +248 200 120 +120 80 56 +184 120 112 +232 232 248 +104 8 16 +168 184 208 +128 112 144 +88 72 40 diff --git a/graphics/pokemon/kangaskhan/overworld_shiny.pal b/graphics/pokemon/kangaskhan/overworld_shiny.pal new file mode 100644 index 000000000000..d295826d5011 --- /dev/null +++ b/graphics/pokemon/kangaskhan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +208 168 96 +56 56 64 +120 144 96 +64 88 64 +160 120 40 +80 56 64 +248 200 120 +136 120 128 +176 168 144 +232 232 248 +104 8 16 +168 184 208 +128 112 144 +80 72 48 diff --git a/graphics/pokemon/karrablast/overworld.png b/graphics/pokemon/karrablast/overworld.png new file mode 100644 index 000000000000..1d4d9de0c10f Binary files /dev/null and b/graphics/pokemon/karrablast/overworld.png differ diff --git a/graphics/pokemon/karrablast/overworld_normal.pal b/graphics/pokemon/karrablast/overworld_normal.pal new file mode 100644 index 000000000000..c15bfcc4572f --- /dev/null +++ b/graphics/pokemon/karrablast/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +25 47 79 +71 129 255 +40 95 255 +11 11 11 +47 71 121 +47 71 121 +55 138 164 +104 208 255 +40 40 40 +63 63 63 +255 218 18 +191 71 0 +238 240 246 +104 87 25 +128 168 24 diff --git a/graphics/pokemon/karrablast/overworld_shiny.pal b/graphics/pokemon/karrablast/overworld_shiny.pal new file mode 100644 index 000000000000..6a9fdd5639be --- /dev/null +++ b/graphics/pokemon/karrablast/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +25 47 79 +16 216 200 +8 168 144 +11 11 11 +47 71 121 +8 120 104 +55 138 164 +112 208 248 +40 40 40 +63 63 63 +176 248 16 +191 71 0 +238 240 246 +80 112 32 +128 168 24 diff --git a/graphics/pokemon/kartana/overworld.png b/graphics/pokemon/kartana/overworld.png new file mode 100644 index 000000000000..30c3f272afe7 Binary files /dev/null and b/graphics/pokemon/kartana/overworld.png differ diff --git a/graphics/pokemon/kartana/overworld_normal.pal b/graphics/pokemon/kartana/overworld_normal.pal new file mode 100644 index 000000000000..3803c6dd2086 --- /dev/null +++ b/graphics/pokemon/kartana/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +73 51 187 +0 0 0 +255 255 255 +177 64 35 +216 88 56 +200 200 200 +135 133 133 +167 148 37 +255 225 86 +255 222 65 +112 99 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kartana/overworld_shiny.pal b/graphics/pokemon/kartana/overworld_shiny.pal new file mode 100644 index 000000000000..56caa2f57417 --- /dev/null +++ b/graphics/pokemon/kartana/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +73 51 187 +0 0 0 +208 224 224 +177 64 35 +216 88 56 +152 160 176 +135 133 133 +16 8 88 +24 48 160 +255 222 65 +112 99 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kecleon/overworld.png b/graphics/pokemon/kecleon/overworld.png new file mode 100644 index 000000000000..b41cf6884034 Binary files /dev/null and b/graphics/pokemon/kecleon/overworld.png differ diff --git a/graphics/pokemon/kecleon/overworld_normal.pal b/graphics/pokemon/kecleon/overworld_normal.pal new file mode 100644 index 000000000000..036c5783a994 --- /dev/null +++ b/graphics/pokemon/kecleon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +88 80 40 +248 224 120 +128 112 64 +216 168 32 +32 56 16 +144 192 88 +184 224 104 +248 192 64 +120 168 48 +96 128 40 +232 232 248 +152 40 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kecleon/overworld_shiny.pal b/graphics/pokemon/kecleon/overworld_shiny.pal new file mode 100644 index 000000000000..77cc0112e01f --- /dev/null +++ b/graphics/pokemon/kecleon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +88 80 40 +248 224 120 +128 112 64 +240 144 32 +32 56 16 +120 200 152 +152 224 176 +248 184 72 +96 168 120 +64 136 96 +232 232 248 +152 40 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/keldeo/overworld.png b/graphics/pokemon/keldeo/overworld.png new file mode 100644 index 000000000000..9e7fd65b83bc Binary files /dev/null and b/graphics/pokemon/keldeo/overworld.png differ diff --git a/graphics/pokemon/keldeo/overworld_normal.pal b/graphics/pokemon/keldeo/overworld_normal.pal new file mode 100644 index 000000000000..d967f0c6616f --- /dev/null +++ b/graphics/pokemon/keldeo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +142 40 17 +230 77 40 +173 48 18 +75 67 43 +247 229 180 +47 77 136 +237 209 118 +99 141 204 +177 138 76 +86 111 167 +153 207 251 +24 40 16 +86 180 226 +152 232 243 +238 238 247 diff --git a/graphics/pokemon/keldeo/overworld_shiny.pal b/graphics/pokemon/keldeo/overworld_shiny.pal new file mode 100644 index 000000000000..f9a004aae0db --- /dev/null +++ b/graphics/pokemon/keldeo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +80 40 16 +224 96 40 +170 68 25 +88 64 48 +222 214 170 +24 56 88 +222 214 170 +47 114 145 +122 166 83 +24 113 103 +222 214 170 +24 40 16 +72 144 200 +222 214 170 +238 238 247 diff --git a/graphics/pokemon/kingdra/overworld.png b/graphics/pokemon/kingdra/overworld.png new file mode 100644 index 000000000000..86a8e4f58a09 Binary files /dev/null and b/graphics/pokemon/kingdra/overworld.png differ diff --git a/graphics/pokemon/kingdra/overworld_normal.pal b/graphics/pokemon/kingdra/overworld_normal.pal new file mode 100644 index 000000000000..dbb4f4a0b32a --- /dev/null +++ b/graphics/pokemon/kingdra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 56 96 +40 80 128 +144 192 232 +0 0 0 +112 152 200 +192 208 232 +72 120 160 +168 184 208 +232 232 248 +112 16 16 +72 72 72 +176 128 40 +136 96 32 +216 160 56 +0 0 0 diff --git a/graphics/pokemon/kingdra/overworld_shiny.pal b/graphics/pokemon/kingdra/overworld_shiny.pal new file mode 100644 index 000000000000..a33944d23756 --- /dev/null +++ b/graphics/pokemon/kingdra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 96 +88 80 136 +192 184 248 +0 0 0 +160 152 216 +192 208 232 +120 120 176 +168 184 208 +232 232 248 +112 16 16 +72 72 72 +176 128 40 +136 96 32 +216 160 56 +0 0 0 diff --git a/graphics/pokemon/kingler/overworld.png b/graphics/pokemon/kingler/overworld.png new file mode 100644 index 000000000000..4538f564cf6c Binary files /dev/null and b/graphics/pokemon/kingler/overworld.png differ diff --git a/graphics/pokemon/kingler/overworld_normal.pal b/graphics/pokemon/kingler/overworld_normal.pal new file mode 100644 index 000000000000..f79648f08ba6 --- /dev/null +++ b/graphics/pokemon/kingler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 104 48 +168 64 56 +64 40 40 +176 152 104 +224 192 152 +232 232 248 +160 128 80 +152 208 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kingler/overworld_shiny.pal b/graphics/pokemon/kingler/overworld_shiny.pal new file mode 100644 index 000000000000..e95a5b2ab964 --- /dev/null +++ b/graphics/pokemon/kingler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +160 176 112 +112 128 56 +72 80 32 +192 184 120 +208 200 168 +232 232 248 +168 160 80 +200 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kirlia/overworld.png b/graphics/pokemon/kirlia/overworld.png new file mode 100644 index 000000000000..6536e6c1211c Binary files /dev/null and b/graphics/pokemon/kirlia/overworld.png differ diff --git a/graphics/pokemon/kirlia/overworld_normal.pal b/graphics/pokemon/kirlia/overworld_normal.pal new file mode 100644 index 000000000000..519ef3335d3a --- /dev/null +++ b/graphics/pokemon/kirlia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +192 160 232 +128 32 56 +184 48 72 +0 0 0 +240 104 104 +16 64 32 +72 176 88 +40 128 56 +104 200 128 +168 168 176 +232 232 248 +200 200 216 +128 128 144 +72 72 80 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kirlia/overworld_shiny.pal b/graphics/pokemon/kirlia/overworld_shiny.pal new file mode 100644 index 000000000000..f09a89f87555 --- /dev/null +++ b/graphics/pokemon/kirlia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 80 56 +208 104 64 +0 0 0 +240 160 72 +16 96 120 +88 200 176 +32 144 120 +160 224 200 +168 168 144 +232 232 248 +208 208 184 +128 128 112 +88 88 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klang/overworld.png b/graphics/pokemon/klang/overworld.png new file mode 100644 index 000000000000..ebe1563db754 Binary files /dev/null and b/graphics/pokemon/klang/overworld.png differ diff --git a/graphics/pokemon/klang/overworld_normal.pal b/graphics/pokemon/klang/overworld_normal.pal new file mode 100644 index 000000000000..b44ea14f551e --- /dev/null +++ b/graphics/pokemon/klang/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +40 40 40 +208 218 236 +96 88 80 +138 138 138 +0 0 0 +248 248 248 +88 96 88 +33 164 182 +33 129 138 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klang/overworld_shiny.pal b/graphics/pokemon/klang/overworld_shiny.pal new file mode 100644 index 000000000000..6c1adf445d77 --- /dev/null +++ b/graphics/pokemon/klang/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +40 40 40 +216 200 136 +96 88 80 +152 144 112 +0 0 0 +248 248 248 +88 96 88 +104 224 40 +80 120 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kleavor/overworld.png b/graphics/pokemon/kleavor/overworld.png new file mode 100644 index 000000000000..cce4eed8c9a1 Binary files /dev/null and b/graphics/pokemon/kleavor/overworld.png differ diff --git a/graphics/pokemon/kleavor/overworld_normal.pal b/graphics/pokemon/kleavor/overworld_normal.pal new file mode 100644 index 000000000000..c2a4f32ab375 --- /dev/null +++ b/graphics/pokemon/kleavor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +106 90 90 +82 65 65 +49 32 41 +74 49 32 +230 180 98 +106 115 139 +172 123 65 +148 131 115 +222 213 189 +238 238 255 +131 131 131 +148 156 180 +189 205 222 +180 180 205 diff --git a/graphics/pokemon/kleavor/overworld_shiny.pal b/graphics/pokemon/kleavor/overworld_shiny.pal new file mode 100644 index 000000000000..1e5e579a02dc --- /dev/null +++ b/graphics/pokemon/kleavor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +106 90 90 +82 65 65 +49 32 41 +74 49 32 +164 180 115 +106 115 139 +139 148 90 +148 131 115 +222 213 189 +238 238 255 +131 131 131 +148 156 180 +189 205 222 +180 180 205 diff --git a/graphics/pokemon/klefki/overworld.png b/graphics/pokemon/klefki/overworld.png new file mode 100644 index 000000000000..e24ad8ec69d7 Binary files /dev/null and b/graphics/pokemon/klefki/overworld.png differ diff --git a/graphics/pokemon/klefki/overworld_normal.pal b/graphics/pokemon/klefki/overworld_normal.pal new file mode 100644 index 000000000000..6c6b259d6763 --- /dev/null +++ b/graphics/pokemon/klefki/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +68 70 72 +233 231 233 +146 158 166 +16 16 16 +190 195 200 +250 72 143 +94 38 26 +239 173 69 +194 112 72 +96 64 50 +233 231 233 +146 158 166 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klefki/overworld_shiny.pal b/graphics/pokemon/klefki/overworld_shiny.pal new file mode 100644 index 000000000000..0a029849a617 --- /dev/null +++ b/graphics/pokemon/klefki/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +68 70 72 +217 209 139 +151 143 70 +16 16 16 +182 174 106 +250 72 143 +94 38 26 +239 173 69 +194 112 72 +96 64 50 +251 251 251 +188 188 188 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klink/overworld.png b/graphics/pokemon/klink/overworld.png new file mode 100644 index 000000000000..e52f7a5a6b01 Binary files /dev/null and b/graphics/pokemon/klink/overworld.png differ diff --git a/graphics/pokemon/klink/overworld_normal.pal b/graphics/pokemon/klink/overworld_normal.pal new file mode 100644 index 000000000000..c9ec80b5aabd --- /dev/null +++ b/graphics/pokemon/klink/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 54 54 +63 63 63 +104 104 114 +208 218 236 +138 138 138 +11 11 11 +95 95 104 +164 173 186 +229 229 247 +33 164 182 +28 142 159 +0 0 0 +90 90 98 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klink/overworld_shiny.pal b/graphics/pokemon/klink/overworld_shiny.pal new file mode 100644 index 000000000000..c226e97f8bf9 --- /dev/null +++ b/graphics/pokemon/klink/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 54 54 +63 63 63 +104 104 114 +208 192 136 +152 144 112 +11 11 11 +95 95 104 +229 229 247 +104 216 40 +104 168 48 +0 0 0 +90 90 98 +33 164 182 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klinklang/overworld.png b/graphics/pokemon/klinklang/overworld.png new file mode 100644 index 000000000000..818587505987 Binary files /dev/null and b/graphics/pokemon/klinklang/overworld.png differ diff --git a/graphics/pokemon/klinklang/overworld_normal.pal b/graphics/pokemon/klinklang/overworld_normal.pal new file mode 100644 index 000000000000..b459e2e9228a --- /dev/null +++ b/graphics/pokemon/klinklang/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 128 +40 40 40 +208 218 236 +104 104 129 +155 155 164 +0 0 0 +248 248 248 +88 96 88 +33 164 182 +33 129 138 +224 96 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/klinklang/overworld_shiny.pal b/graphics/pokemon/klinklang/overworld_shiny.pal new file mode 100644 index 000000000000..ec1ee862f6b2 --- /dev/null +++ b/graphics/pokemon/klinklang/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +40 40 40 +216 200 136 +96 88 80 +152 144 112 +0 0 0 +248 248 248 +88 96 88 +104 224 40 +80 120 32 +224 96 152 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/koffing/overworld.png b/graphics/pokemon/koffing/overworld.png new file mode 100644 index 000000000000..33fefbdcae7d Binary files /dev/null and b/graphics/pokemon/koffing/overworld.png differ diff --git a/graphics/pokemon/koffing/overworld_normal.pal b/graphics/pokemon/koffing/overworld_normal.pal new file mode 100644 index 000000000000..cbc0980a5bc1 --- /dev/null +++ b/graphics/pokemon/koffing/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 184 120 +144 128 40 +56 40 56 +88 80 120 +136 128 208 +120 104 192 +0 0 0 +232 232 248 +104 56 64 +168 168 208 +128 72 80 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/koffing/overworld_shiny.pal b/graphics/pokemon/koffing/overworld_shiny.pal new file mode 100644 index 000000000000..ad161817b013 --- /dev/null +++ b/graphics/pokemon/koffing/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 144 184 +128 72 128 +48 72 80 +72 112 96 +136 168 168 +104 144 136 +0 0 0 +232 232 248 +104 56 64 +168 168 208 +128 72 80 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/komala/overworld.png b/graphics/pokemon/komala/overworld.png new file mode 100644 index 000000000000..c7bbcb57a4ff Binary files /dev/null and b/graphics/pokemon/komala/overworld.png differ diff --git a/graphics/pokemon/komala/overworld_normal.pal b/graphics/pokemon/komala/overworld_normal.pal new file mode 100644 index 000000000000..c79f9d97d43f --- /dev/null +++ b/graphics/pokemon/komala/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +228 231 237 +236 199 158 +172 192 216 +213 168 142 +184 185 190 +168 176 192 +123 139 154 +172 134 78 +79 79 79 +118 74 51 +58 68 78 +81 59 47 +69 47 30 +36 36 36 +0 0 0 diff --git a/graphics/pokemon/komala/overworld_shiny.pal b/graphics/pokemon/komala/overworld_shiny.pal new file mode 100644 index 000000000000..75f12831d470 --- /dev/null +++ b/graphics/pokemon/komala/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +228 231 237 +236 199 158 +172 192 216 +213 168 142 +184 185 190 +168 176 192 +123 139 154 +232 88 96 +79 79 79 +240 240 240 +58 68 78 +81 59 47 +69 47 30 +36 36 36 +0 0 0 diff --git a/graphics/pokemon/kommo_o/overworld.png b/graphics/pokemon/kommo_o/overworld.png new file mode 100644 index 000000000000..91e7256a9975 Binary files /dev/null and b/graphics/pokemon/kommo_o/overworld.png differ diff --git a/graphics/pokemon/kommo_o/overworld_normal.pal b/graphics/pokemon/kommo_o/overworld_normal.pal new file mode 100644 index 000000000000..09421fc5f87d --- /dev/null +++ b/graphics/pokemon/kommo_o/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +16 16 16 +240 211 94 +92 82 42 +207 151 63 +224 81 62 +91 91 91 +231 228 217 +72 70 70 +177 171 171 +140 136 136 +101 104 55 +26 30 23 +25 19 18 +33 21 20 +0 0 0 diff --git a/graphics/pokemon/kommo_o/overworld_shiny.pal b/graphics/pokemon/kommo_o/overworld_shiny.pal new file mode 100644 index 000000000000..dcdea738cc3e --- /dev/null +++ b/graphics/pokemon/kommo_o/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +16 16 16 +240 136 184 +92 82 42 +240 40 80 +224 81 62 +91 91 91 +231 228 217 +72 70 70 +200 208 0 +160 152 0 +101 104 55 +26 30 23 +25 19 18 +33 21 20 +0 0 0 diff --git a/graphics/pokemon/krabby/overworld.png b/graphics/pokemon/krabby/overworld.png new file mode 100644 index 000000000000..abe66ceb6f23 Binary files /dev/null and b/graphics/pokemon/krabby/overworld.png differ diff --git a/graphics/pokemon/krabby/overworld_normal.pal b/graphics/pokemon/krabby/overworld_normal.pal new file mode 100644 index 000000000000..0c429de50a4e --- /dev/null +++ b/graphics/pokemon/krabby/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 48 +0 0 0 +200 96 32 +168 64 56 +192 168 128 +200 200 208 +232 232 248 +160 128 80 +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/krabby/overworld_shiny.pal b/graphics/pokemon/krabby/overworld_shiny.pal new file mode 100644 index 000000000000..2285ef39740b --- /dev/null +++ b/graphics/pokemon/krabby/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 48 +0 0 0 +200 176 32 +168 136 40 +192 184 128 +200 200 208 +232 232 248 +160 152 80 +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/kricketot/overworld.png b/graphics/pokemon/kricketot/overworld.png new file mode 100644 index 000000000000..d9b6033cb939 Binary files /dev/null and b/graphics/pokemon/kricketot/overworld.png differ diff --git a/graphics/pokemon/kricketot/overworld_normal.pal b/graphics/pokemon/kricketot/overworld_normal.pal new file mode 100644 index 000000000000..633580b433fe --- /dev/null +++ b/graphics/pokemon/kricketot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +0 0 0 +96 64 32 +104 104 104 +224 160 80 +80 40 24 +224 112 88 +168 80 56 +184 88 32 +240 208 144 +144 72 24 +232 232 248 +136 56 32 +176 128 72 +0 0 0 diff --git a/graphics/pokemon/kricketot/overworld_shiny.pal b/graphics/pokemon/kricketot/overworld_shiny.pal new file mode 100644 index 000000000000..ae480c7e4511 --- /dev/null +++ b/graphics/pokemon/kricketot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +0 0 0 +96 64 32 +104 104 104 +224 192 80 +80 40 24 +224 152 72 +184 120 56 +184 88 32 +240 208 144 +144 72 24 +232 232 248 +152 80 32 +176 128 72 +0 0 0 diff --git a/graphics/pokemon/kricketune/overworld.png b/graphics/pokemon/kricketune/overworld.png new file mode 100644 index 000000000000..285d4e2baa53 Binary files /dev/null and b/graphics/pokemon/kricketune/overworld.png differ diff --git a/graphics/pokemon/kricketune/overworld_normal.pal b/graphics/pokemon/kricketune/overworld_normal.pal new file mode 100644 index 000000000000..9a0d8a3900b9 --- /dev/null +++ b/graphics/pokemon/kricketune/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 56 32 +168 80 56 +80 40 24 +224 112 88 +0 0 0 +104 104 104 +232 232 248 +56 56 56 +80 80 80 +144 72 24 +96 64 32 +184 88 32 +224 160 80 +240 208 144 +176 128 72 diff --git a/graphics/pokemon/kricketune/overworld_shiny.pal b/graphics/pokemon/kricketune/overworld_shiny.pal new file mode 100644 index 000000000000..df6ae941dc67 --- /dev/null +++ b/graphics/pokemon/kricketune/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 88 16 +168 112 56 +80 40 24 +224 168 72 +0 0 0 +104 104 104 +232 232 248 +56 56 56 +80 80 80 +144 72 24 +96 64 32 +184 88 32 +224 160 80 +240 208 144 +176 128 72 diff --git a/graphics/pokemon/krokorok/overworld.png b/graphics/pokemon/krokorok/overworld.png new file mode 100644 index 000000000000..8f1b68615c31 Binary files /dev/null and b/graphics/pokemon/krokorok/overworld.png differ diff --git a/graphics/pokemon/krokorok/overworld_normal.pal b/graphics/pokemon/krokorok/overworld_normal.pal new file mode 100644 index 000000000000..d54e50f579b0 --- /dev/null +++ b/graphics/pokemon/krokorok/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +75 67 43 +75 67 43 +177 138 76 +181 152 110 +142 102 19 +0 0 0 +110 110 110 +110 110 110 +238 238 247 +47 46 47 +192 180 195 +173 76 75 +236 117 117 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/krokorok/overworld_shiny.pal b/graphics/pokemon/krokorok/overworld_shiny.pal new file mode 100644 index 000000000000..97fdcc9c83a6 --- /dev/null +++ b/graphics/pokemon/krokorok/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 40 16 +75 67 43 +112 88 56 +128 104 80 +88 64 48 +0 0 0 +224 208 88 +88 88 104 +238 238 247 +160 144 88 +192 180 195 +104 120 160 +136 152 224 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/krookodile/overworld.png b/graphics/pokemon/krookodile/overworld.png new file mode 100644 index 000000000000..9bac01354437 Binary files /dev/null and b/graphics/pokemon/krookodile/overworld.png differ diff --git a/graphics/pokemon/krookodile/overworld_normal.pal b/graphics/pokemon/krookodile/overworld_normal.pal new file mode 100644 index 000000000000..04d2244669f5 --- /dev/null +++ b/graphics/pokemon/krookodile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +129 40 55 +191 71 71 +71 33 25 +227 112 104 +0 0 0 +25 25 33 +99 99 99 +236 236 246 +99 99 99 +185 172 189 +38 37 38 +129 138 129 +182 191 199 +182 191 199 +0 0 0 diff --git a/graphics/pokemon/krookodile/overworld_shiny.pal b/graphics/pokemon/krookodile/overworld_shiny.pal new file mode 100644 index 000000000000..070a0a4e5dd5 --- /dev/null +++ b/graphics/pokemon/krookodile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 48 +144 120 80 +71 33 25 +168 136 88 +0 0 0 +224 200 88 +99 99 99 +236 236 246 +168 144 64 +185 172 189 +38 37 38 +129 138 129 +182 191 199 +184 192 200 +0 0 0 diff --git a/graphics/pokemon/kubfu/overworld.png b/graphics/pokemon/kubfu/overworld.png new file mode 100644 index 000000000000..bc9e45a373f5 Binary files /dev/null and b/graphics/pokemon/kubfu/overworld.png differ diff --git a/graphics/pokemon/kubfu/overworld_normal.pal b/graphics/pokemon/kubfu/overworld_normal.pal new file mode 100644 index 000000000000..cd5fca32e36f --- /dev/null +++ b/graphics/pokemon/kubfu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 220 0 +48 44 44 +188 180 176 +0 0 0 +140 128 124 +28 28 28 +204 204 204 +252 252 252 +220 216 148 +12 12 12 +96 88 96 +96 88 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kubfu/overworld_shiny.pal b/graphics/pokemon/kubfu/overworld_shiny.pal new file mode 100644 index 000000000000..669a93cba4e9 --- /dev/null +++ b/graphics/pokemon/kubfu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 41 41 +180 172 148 +0 0 0 +213 205 189 +24 24 24 +205 205 205 +255 255 255 +255 148 82 +8 8 8 +24 24 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kyogre/overworld.png b/graphics/pokemon/kyogre/overworld.png new file mode 100644 index 000000000000..f69db09df803 Binary files /dev/null and b/graphics/pokemon/kyogre/overworld.png differ diff --git a/graphics/pokemon/kyogre/overworld_normal.pal b/graphics/pokemon/kyogre/overworld_normal.pal new file mode 100644 index 000000000000..24e7fc2623a6 --- /dev/null +++ b/graphics/pokemon/kyogre/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 96 152 +24 56 88 +64 128 192 +16 16 16 +96 160 192 +128 184 216 +112 120 128 +152 24 24 +56 56 56 +200 40 40 +88 16 8 +200 216 240 +152 168 176 +224 192 32 +128 112 24 diff --git a/graphics/pokemon/kyogre/overworld_shiny.pal b/graphics/pokemon/kyogre/overworld_shiny.pal new file mode 100644 index 000000000000..660c8e41e559 --- /dev/null +++ b/graphics/pokemon/kyogre/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 80 136 +96 56 104 +152 96 168 +16 16 16 +176 112 200 +208 128 232 +112 120 128 +152 24 24 +56 56 56 +200 40 40 +88 16 8 +200 216 240 +152 168 176 +224 192 32 +128 112 24 diff --git a/graphics/pokemon/kyurem/overworld.png b/graphics/pokemon/kyurem/overworld.png new file mode 100644 index 000000000000..adf00b5e87cf Binary files /dev/null and b/graphics/pokemon/kyurem/overworld.png differ diff --git a/graphics/pokemon/kyurem/overworld_normal.pal b/graphics/pokemon/kyurem/overworld_normal.pal new file mode 100644 index 000000000000..5f63791fb897 --- /dev/null +++ b/graphics/pokemon/kyurem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 32 11 +198 224 204 +74 91 80 +129 120 123 +152 200 162 +62 62 66 +228 197 26 +139 130 133 +55 83 64 +27 32 25 +209 226 216 +99 99 99 +142 142 252 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kyurem/overworld_shiny.pal b/graphics/pokemon/kyurem/overworld_shiny.pal new file mode 100644 index 000000000000..e36f817b045d --- /dev/null +++ b/graphics/pokemon/kyurem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +20 32 30 +232 239 247 +40 72 79 +88 104 192 +200 208 248 +62 62 66 +205 64 158 +88 104 192 +40 72 79 +20 32 30 +232 239 247 +72 104 120 +152 208 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lairon/overworld.png b/graphics/pokemon/lairon/overworld.png new file mode 100644 index 000000000000..059d0edd64c6 Binary files /dev/null and b/graphics/pokemon/lairon/overworld.png differ diff --git a/graphics/pokemon/lairon/overworld_normal.pal b/graphics/pokemon/lairon/overworld_normal.pal new file mode 100644 index 000000000000..ce484a1eada5 --- /dev/null +++ b/graphics/pokemon/lairon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 80 +104 96 112 +184 184 200 +128 128 144 +48 40 56 +160 160 176 +208 208 224 +232 232 248 +0 0 0 +104 144 200 +64 96 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lairon/overworld_shiny.pal b/graphics/pokemon/lairon/overworld_shiny.pal new file mode 100644 index 000000000000..aff583b754a4 --- /dev/null +++ b/graphics/pokemon/lairon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 96 96 +48 128 120 +184 184 200 +128 128 144 +16 40 48 +160 160 176 +208 208 224 +232 232 248 +0 0 0 +248 72 80 +136 24 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lampent/overworld.png b/graphics/pokemon/lampent/overworld.png new file mode 100644 index 000000000000..63f63e202250 Binary files /dev/null and b/graphics/pokemon/lampent/overworld.png differ diff --git a/graphics/pokemon/lampent/overworld_normal.pal b/graphics/pokemon/lampent/overworld_normal.pal new file mode 100644 index 000000000000..8ec32fa8e13b --- /dev/null +++ b/graphics/pokemon/lampent/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +74 74 74 +26 26 26 +49 49 49 +131 131 131 +197 205 213 +222 230 238 +178 150 25 +131 106 230 +26 26 26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lampent/overworld_shiny.pal b/graphics/pokemon/lampent/overworld_shiny.pal new file mode 100644 index 000000000000..0e0e0d5d0633 --- /dev/null +++ b/graphics/pokemon/lampent/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 72 56 +33 28 18 +56 48 32 +131 131 131 +197 205 213 +222 230 238 +32 192 232 +176 104 224 +26 26 26 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/landorus/overworld.png b/graphics/pokemon/landorus/overworld.png new file mode 100644 index 000000000000..c5e237f0b775 Binary files /dev/null and b/graphics/pokemon/landorus/overworld.png differ diff --git a/graphics/pokemon/landorus/overworld_normal.pal b/graphics/pokemon/landorus/overworld_normal.pal new file mode 100644 index 000000000000..68ee7e89de25 --- /dev/null +++ b/graphics/pokemon/landorus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +84 86 84 +109 127 139 +237 237 246 +198 198 211 +22 37 14 +142 85 23 +219 152 23 +246 131 142 +87 78 43 +212 99 49 +225 80 74 +38 37 38 +214 195 61 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/landorus/overworld_shiny.pal b/graphics/pokemon/landorus/overworld_shiny.pal new file mode 100644 index 000000000000..36e4944980c5 --- /dev/null +++ b/graphics/pokemon/landorus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +103 64 40 +103 128 140 +237 237 246 +160 184 160 +22 37 14 +158 97 23 +248 160 40 +229 89 32 +38 37 38 +158 97 23 +229 89 32 +38 37 38 +214 195 61 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lanturn/overworld.png b/graphics/pokemon/lanturn/overworld.png new file mode 100644 index 000000000000..2965c11fe061 Binary files /dev/null and b/graphics/pokemon/lanturn/overworld.png differ diff --git a/graphics/pokemon/lanturn/overworld_normal.pal b/graphics/pokemon/lanturn/overworld_normal.pal new file mode 100644 index 000000000000..de863f074cd2 --- /dev/null +++ b/graphics/pokemon/lanturn/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 32 88 +80 64 8 +112 176 240 +0 0 0 +248 208 96 +224 160 16 +232 232 248 +96 136 224 +128 104 24 +160 208 240 +64 96 168 +184 200 216 +224 232 240 +184 48 40 +0 0 0 diff --git a/graphics/pokemon/lanturn/overworld_shiny.pal b/graphics/pokemon/lanturn/overworld_shiny.pal new file mode 100644 index 000000000000..0f8b4ef76c21 --- /dev/null +++ b/graphics/pokemon/lanturn/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 8 72 +80 64 8 +144 136 240 +0 0 0 +216 224 144 +208 184 16 +232 232 248 +128 104 224 +128 104 24 +176 176 248 +104 88 160 +168 184 208 +224 232 240 +184 48 40 +0 0 0 diff --git a/graphics/pokemon/lapras/overworld.png b/graphics/pokemon/lapras/overworld.png new file mode 100644 index 000000000000..f8bb74e36243 Binary files /dev/null and b/graphics/pokemon/lapras/overworld.png differ diff --git a/graphics/pokemon/lapras/overworld_normal.pal b/graphics/pokemon/lapras/overworld_normal.pal new file mode 100644 index 000000000000..712bf6a44cbf --- /dev/null +++ b/graphics/pokemon/lapras/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 176 232 +48 72 104 +88 128 176 +232 232 248 +104 80 16 +192 200 208 +48 56 56 +112 112 128 +200 152 72 +144 152 160 +248 208 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lapras/overworld_shiny.pal b/graphics/pokemon/lapras/overworld_shiny.pal new file mode 100644 index 000000000000..05c23238aaa6 --- /dev/null +++ b/graphics/pokemon/lapras/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 168 232 +88 72 104 +144 120 168 +232 232 248 +104 80 16 +192 200 208 +48 56 56 +112 112 128 +200 152 72 +144 152 160 +248 208 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/larvesta/overworld.png b/graphics/pokemon/larvesta/overworld.png new file mode 100644 index 000000000000..189a51f30b4a Binary files /dev/null and b/graphics/pokemon/larvesta/overworld.png differ diff --git a/graphics/pokemon/larvesta/overworld_normal.pal b/graphics/pokemon/larvesta/overworld_normal.pal new file mode 100644 index 000000000000..5b2d1cdad9f0 --- /dev/null +++ b/graphics/pokemon/larvesta/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 32 0 +224 64 0 +128 128 128 +192 220 192 +236 236 246 +0 128 192 +69 69 69 +128 96 64 +0 255 255 +96 64 0 +192 128 64 +64 64 64 +109 85 18 +0 0 0 diff --git a/graphics/pokemon/larvesta/overworld_shiny.pal b/graphics/pokemon/larvesta/overworld_shiny.pal new file mode 100644 index 000000000000..1a680a1d050e --- /dev/null +++ b/graphics/pokemon/larvesta/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 80 24 +248 200 48 +128 128 128 +236 236 239 +236 236 239 +0 200 88 +97 81 64 +97 81 64 +0 200 88 +76 59 19 +192 128 64 +97 81 64 +76 59 19 +0 0 0 diff --git a/graphics/pokemon/larvitar/overworld.png b/graphics/pokemon/larvitar/overworld.png new file mode 100644 index 000000000000..04d3285142f4 Binary files /dev/null and b/graphics/pokemon/larvitar/overworld.png differ diff --git a/graphics/pokemon/larvitar/overworld_normal.pal b/graphics/pokemon/larvitar/overworld_normal.pal new file mode 100644 index 000000000000..956a461b8bda --- /dev/null +++ b/graphics/pokemon/larvitar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +72 88 40 +176 216 120 +136 176 104 +32 40 40 +160 184 200 +232 232 248 +184 48 48 +56 64 72 +120 32 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/larvitar/overworld_shiny.pal b/graphics/pokemon/larvitar/overworld_shiny.pal new file mode 100644 index 000000000000..69bc93e53d87 --- /dev/null +++ b/graphics/pokemon/larvitar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +80 88 0 +192 200 88 +128 152 40 +32 40 40 +160 184 200 +232 232 248 +184 48 48 +56 64 72 +120 32 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/latias/overworld.png b/graphics/pokemon/latias/overworld.png new file mode 100644 index 000000000000..4f7f9e59aedc Binary files /dev/null and b/graphics/pokemon/latias/overworld.png differ diff --git a/graphics/pokemon/latias/overworld_normal.pal b/graphics/pokemon/latias/overworld_normal.pal new file mode 100644 index 000000000000..d9c5301da0a3 --- /dev/null +++ b/graphics/pokemon/latias/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 24 16 +32 40 40 +56 64 64 +144 40 40 +0 0 0 +232 232 248 +232 88 88 +184 200 208 +192 64 64 +152 168 176 +104 120 120 +128 144 152 +232 168 0 +64 128 168 +0 0 0 diff --git a/graphics/pokemon/latias/overworld_shiny.pal b/graphics/pokemon/latias/overworld_shiny.pal new file mode 100644 index 000000000000..4f2cc140c739 --- /dev/null +++ b/graphics/pokemon/latias/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +112 64 16 +32 40 40 +56 64 64 +184 112 0 +0 0 0 +232 232 248 +224 192 40 +184 200 208 +224 168 16 +152 168 176 +104 120 120 +128 144 152 +120 176 80 +64 128 168 +0 0 0 diff --git a/graphics/pokemon/latios/overworld.png b/graphics/pokemon/latios/overworld.png new file mode 100644 index 000000000000..f35d70a8d8bc Binary files /dev/null and b/graphics/pokemon/latios/overworld.png differ diff --git a/graphics/pokemon/latios/overworld_normal.pal b/graphics/pokemon/latios/overworld_normal.pal new file mode 100644 index 000000000000..58ffd72b6330 --- /dev/null +++ b/graphics/pokemon/latios/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 56 88 +32 40 40 +0 0 0 +56 64 64 +32 112 168 +232 232 248 +64 152 216 +184 200 208 +88 192 248 +128 144 152 +48 128 192 +104 120 120 +152 168 176 +192 32 32 +128 32 32 diff --git a/graphics/pokemon/latios/overworld_shiny.pal b/graphics/pokemon/latios/overworld_shiny.pal new file mode 100644 index 000000000000..7409627ece93 --- /dev/null +++ b/graphics/pokemon/latios/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +24 104 72 +32 40 40 +0 0 0 +56 64 64 +56 136 96 +232 232 248 +120 200 152 +184 200 208 +152 224 176 +128 144 152 +88 168 120 +104 120 120 +152 168 176 +192 136 32 +168 72 0 diff --git a/graphics/pokemon/leafeon/overworld.png b/graphics/pokemon/leafeon/overworld.png new file mode 100644 index 000000000000..bed79105c4ab Binary files /dev/null and b/graphics/pokemon/leafeon/overworld.png differ diff --git a/graphics/pokemon/leafeon/overworld_normal.pal b/graphics/pokemon/leafeon/overworld_normal.pal new file mode 100644 index 000000000000..52330f7aa755 --- /dev/null +++ b/graphics/pokemon/leafeon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 48 24 +96 160 96 +72 144 80 +152 104 48 +128 192 96 +0 0 0 +168 136 80 +216 184 88 +240 216 160 +112 80 32 +208 224 232 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/leafeon/overworld_shiny.pal b/graphics/pokemon/leafeon/overworld_shiny.pal new file mode 100644 index 000000000000..602f72bba68b --- /dev/null +++ b/graphics/pokemon/leafeon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 48 16 +96 200 136 +72 192 120 +160 104 40 +128 216 136 +0 0 0 +168 136 80 +224 184 80 +240 216 160 +112 80 32 +208 224 232 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/leavanny/overworld.png b/graphics/pokemon/leavanny/overworld.png new file mode 100644 index 000000000000..6e5e2b474d35 Binary files /dev/null and b/graphics/pokemon/leavanny/overworld.png differ diff --git a/graphics/pokemon/leavanny/overworld_normal.pal b/graphics/pokemon/leavanny/overworld_normal.pal new file mode 100644 index 000000000000..6cc575184dbb --- /dev/null +++ b/graphics/pokemon/leavanny/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 120 16 +0 0 0 +248 232 56 +248 232 56 +176 160 40 +176 160 40 +16 64 56 +16 64 56 +144 200 8 +88 152 48 +218 52 48 +40 152 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/leavanny/overworld_shiny.pal b/graphics/pokemon/leavanny/overworld_shiny.pal new file mode 100644 index 000000000000..659cef2b6312 --- /dev/null +++ b/graphics/pokemon/leavanny/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +176 96 16 +0 0 0 +248 208 104 +248 232 56 +224 176 64 +176 160 40 +40 72 40 +16 64 56 +216 248 8 +176 184 16 +248 32 208 +72 136 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ledian/overworld.png b/graphics/pokemon/ledian/overworld.png new file mode 100644 index 000000000000..8ca49bef3b62 Binary files /dev/null and b/graphics/pokemon/ledian/overworld.png differ diff --git a/graphics/pokemon/ledian/overworld_normal.pal b/graphics/pokemon/ledian/overworld_normal.pal new file mode 100644 index 000000000000..854890e8b979 --- /dev/null +++ b/graphics/pokemon/ledian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 96 +176 40 48 +248 96 120 +136 0 56 +224 32 56 +16 128 192 +0 56 152 +208 176 80 +232 232 248 +184 200 224 +112 96 72 +168 152 88 +240 208 80 +0 0 0 diff --git a/graphics/pokemon/ledian/overworld_shiny.pal b/graphics/pokemon/ledian/overworld_shiny.pal new file mode 100644 index 000000000000..a9ea8b82b276 --- /dev/null +++ b/graphics/pokemon/ledian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 96 +168 96 8 +248 160 48 +104 56 16 +224 112 32 +16 104 152 +0 56 128 +208 176 80 +232 232 248 +168 184 208 +112 96 72 +168 152 88 +240 208 80 +0 0 0 diff --git a/graphics/pokemon/ledyba/overworld.png b/graphics/pokemon/ledyba/overworld.png new file mode 100644 index 000000000000..706008b91999 Binary files /dev/null and b/graphics/pokemon/ledyba/overworld.png differ diff --git a/graphics/pokemon/ledyba/overworld_normal.pal b/graphics/pokemon/ledyba/overworld_normal.pal new file mode 100644 index 000000000000..cab54700e9c6 --- /dev/null +++ b/graphics/pokemon/ledyba/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 32 40 +168 32 8 +56 56 56 +248 112 48 +224 56 32 +0 0 0 +80 88 200 +232 232 240 +192 200 224 +232 232 248 +240 224 128 +200 176 48 +224 200 40 +128 112 48 +0 0 0 diff --git a/graphics/pokemon/ledyba/overworld_shiny.pal b/graphics/pokemon/ledyba/overworld_shiny.pal new file mode 100644 index 000000000000..f9f1c3482023 --- /dev/null +++ b/graphics/pokemon/ledyba/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 32 40 +168 96 8 +56 56 56 +248 176 48 +224 136 32 +0 0 0 +80 88 200 +232 232 240 +192 200 224 +232 232 248 +240 224 128 +200 176 48 +224 200 40 +128 112 48 +0 0 0 diff --git a/graphics/pokemon/lickilicky/overworld.png b/graphics/pokemon/lickilicky/overworld.png new file mode 100644 index 000000000000..03e8902b498f Binary files /dev/null and b/graphics/pokemon/lickilicky/overworld.png differ diff --git a/graphics/pokemon/lickilicky/overworld_normal.pal b/graphics/pokemon/lickilicky/overworld_normal.pal new file mode 100644 index 000000000000..5315690de277 --- /dev/null +++ b/graphics/pokemon/lickilicky/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 48 +192 80 112 +216 120 144 +152 64 88 +0 0 0 +232 232 248 +168 88 136 +160 160 160 +80 80 80 +208 136 168 +200 200 208 +232 184 200 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lickilicky/overworld_shiny.pal b/graphics/pokemon/lickilicky/overworld_shiny.pal new file mode 100644 index 000000000000..0968c3fa199e --- /dev/null +++ b/graphics/pokemon/lickilicky/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 80 40 +224 176 40 +248 216 80 +184 128 16 +0 0 0 +232 232 248 +168 88 136 +160 160 160 +80 80 80 +208 136 168 +200 200 208 +232 184 200 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lickitung/overworld.png b/graphics/pokemon/lickitung/overworld.png new file mode 100644 index 000000000000..95e4d09088d4 Binary files /dev/null and b/graphics/pokemon/lickitung/overworld.png differ diff --git a/graphics/pokemon/lickitung/overworld_normal.pal b/graphics/pokemon/lickitung/overworld_normal.pal new file mode 100644 index 000000000000..47cb91d329f5 --- /dev/null +++ b/graphics/pokemon/lickitung/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 72 +0 0 0 +240 168 168 +200 128 128 +176 96 120 +232 232 248 +168 88 136 +216 152 176 +232 184 200 +216 200 48 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lickitung/overworld_shiny.pal b/graphics/pokemon/lickitung/overworld_shiny.pal new file mode 100644 index 000000000000..e55cb9067bcb --- /dev/null +++ b/graphics/pokemon/lickitung/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 48 +0 0 0 +200 184 64 +176 160 48 +136 120 48 +232 232 248 +176 80 88 +208 112 104 +240 144 128 +248 224 120 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/liepard/overworld.png b/graphics/pokemon/liepard/overworld.png new file mode 100644 index 000000000000..eb6611bf8456 Binary files /dev/null and b/graphics/pokemon/liepard/overworld.png differ diff --git a/graphics/pokemon/liepard/overworld_normal.pal b/graphics/pokemon/liepard/overworld_normal.pal new file mode 100644 index 000000000000..2cfc7b2fd9a2 --- /dev/null +++ b/graphics/pokemon/liepard/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 32 57 +131 98 148 +0 0 0 +90 65 115 +64 56 48 +205 164 24 +246 213 65 +90 82 16 +189 57 131 +230 123 156 +232 232 248 +8 123 65 +49 32 57 +131 98 148 +112 96 32 diff --git a/graphics/pokemon/liepard/overworld_shiny.pal b/graphics/pokemon/liepard/overworld_shiny.pal new file mode 100644 index 000000000000..370ee1777b3c --- /dev/null +++ b/graphics/pokemon/liepard/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +112 32 48 +0 0 0 +80 8 32 +64 56 48 +144 128 72 +224 200 136 +90 82 16 +136 64 168 +192 96 192 +232 232 248 +24 96 88 +49 32 57 +131 98 148 +112 96 32 diff --git a/graphics/pokemon/lileep/overworld.png b/graphics/pokemon/lileep/overworld.png new file mode 100644 index 000000000000..59494df354ef Binary files /dev/null and b/graphics/pokemon/lileep/overworld.png differ diff --git a/graphics/pokemon/lileep/overworld_normal.pal b/graphics/pokemon/lileep/overworld_normal.pal new file mode 100644 index 000000000000..546781fdaa28 --- /dev/null +++ b/graphics/pokemon/lileep/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 16 40 +0 0 0 +160 48 88 +208 104 136 +192 64 96 +40 24 40 +40 32 88 +160 144 216 +136 96 176 +208 184 72 +184 120 56 +80 56 80 +96 56 144 +112 88 48 +0 0 0 diff --git a/graphics/pokemon/lileep/overworld_shiny.pal b/graphics/pokemon/lileep/overworld_shiny.pal new file mode 100644 index 000000000000..cec4a23a0180 --- /dev/null +++ b/graphics/pokemon/lileep/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 16 40 +0 0 0 +160 48 88 +208 104 136 +192 64 96 +40 24 40 +32 64 72 +96 168 176 +56 120 128 +184 168 72 +136 120 56 +80 56 80 +32 88 96 +88 80 48 +0 0 0 diff --git a/graphics/pokemon/lilligant/hisuian/overworld.png b/graphics/pokemon/lilligant/hisuian/overworld.png new file mode 100644 index 000000000000..9b5ed7b30ff0 Binary files /dev/null and b/graphics/pokemon/lilligant/hisuian/overworld.png differ diff --git a/graphics/pokemon/lilligant/hisuian/overworld_normal.pal b/graphics/pokemon/lilligant/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..693acf6da44e --- /dev/null +++ b/graphics/pokemon/lilligant/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 90 49 +57 172 57 +8 8 8 +82 98 41 +123 172 49 +139 238 41 +74 131 74 +98 65 65 +230 230 255 +205 197 189 +189 164 82 +255 139 180 +189 90 156 +74 139 49 +255 222 65 diff --git a/graphics/pokemon/lilligant/hisuian/overworld_shiny.pal b/graphics/pokemon/lilligant/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..7a94456d0e36 --- /dev/null +++ b/graphics/pokemon/lilligant/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 65 90 +106 197 205 +8 8 8 +82 98 41 +123 172 49 +139 238 41 +41 123 148 +106 49 24 +230 230 255 +205 197 189 +189 164 82 +255 172 148 +255 90 41 +74 139 49 +255 222 65 diff --git a/graphics/pokemon/lilligant/overworld.png b/graphics/pokemon/lilligant/overworld.png new file mode 100644 index 000000000000..ef1b2df28438 Binary files /dev/null and b/graphics/pokemon/lilligant/overworld.png differ diff --git a/graphics/pokemon/lilligant/overworld_normal.pal b/graphics/pokemon/lilligant/overworld_normal.pal new file mode 100644 index 000000000000..88fdd632e535 --- /dev/null +++ b/graphics/pokemon/lilligant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +103 77 35 +189 164 82 +48 89 48 +10 10 10 +212 233 107 +63 159 62 +230 103 57 +231 205 207 +189 164 82 +63 159 62 +156 180 98 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lilligant/overworld_shiny.pal b/graphics/pokemon/lilligant/overworld_shiny.pal new file mode 100644 index 000000000000..336f56cde1ea --- /dev/null +++ b/graphics/pokemon/lilligant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +99 82 36 +96 64 64 +47 72 73 +10 10 10 +219 228 105 +104 192 200 +249 140 177 +225 222 221 +187 164 82 +122 104 135 +168 176 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lillipup/overworld.png b/graphics/pokemon/lillipup/overworld.png new file mode 100644 index 000000000000..ef8841471354 Binary files /dev/null and b/graphics/pokemon/lillipup/overworld.png differ diff --git a/graphics/pokemon/lillipup/overworld_normal.pal b/graphics/pokemon/lillipup/overworld_normal.pal new file mode 100644 index 000000000000..199de3f20af0 --- /dev/null +++ b/graphics/pokemon/lillipup/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 24 +144 88 64 +216 144 88 +0 0 0 +176 136 72 +232 200 144 +88 88 88 +232 232 248 +80 88 112 +216 88 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lillipup/overworld_shiny.pal b/graphics/pokemon/lillipup/overworld_shiny.pal new file mode 100644 index 000000000000..63bbc81935bb --- /dev/null +++ b/graphics/pokemon/lillipup/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 16 +96 72 24 +184 128 72 +232 176 88 +0 0 0 +240 216 152 +88 88 88 +232 232 248 +80 128 112 +216 88 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/linoone/galarian/overworld.png b/graphics/pokemon/linoone/galarian/overworld.png new file mode 100644 index 000000000000..3b56ead0b839 Binary files /dev/null and b/graphics/pokemon/linoone/galarian/overworld.png differ diff --git a/graphics/pokemon/linoone/galarian/overworld_normal.pal b/graphics/pokemon/linoone/galarian/overworld_normal.pal new file mode 100644 index 000000000000..435a0977a0a4 --- /dev/null +++ b/graphics/pokemon/linoone/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +96 96 96 +208 208 208 +16 16 16 +0 0 0 +40 40 40 +184 184 184 +136 12 40 +180 16 52 +232 232 248 +8 8 8 +56 56 56 +24 24 24 +168 184 208 +72 72 72 +64 72 80 diff --git a/graphics/pokemon/linoone/galarian/overworld_shiny.pal b/graphics/pokemon/linoone/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..4c86da9c26b7 --- /dev/null +++ b/graphics/pokemon/linoone/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +98 98 98 +213 213 213 +115 8 49 +0 0 0 +189 8 74 +189 189 189 +139 8 41 +131 197 197 +238 238 255 +8 8 8 +164 246 238 +139 16 57 +172 189 213 +131 197 197 +65 74 82 diff --git a/graphics/pokemon/linoone/overworld.png b/graphics/pokemon/linoone/overworld.png new file mode 100644 index 000000000000..31c84d5637b0 Binary files /dev/null and b/graphics/pokemon/linoone/overworld.png differ diff --git a/graphics/pokemon/linoone/overworld_normal.pal b/graphics/pokemon/linoone/overworld_normal.pal new file mode 100644 index 000000000000..77dac1ae8ed4 --- /dev/null +++ b/graphics/pokemon/linoone/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 64 +216 208 184 +64 40 16 +0 0 0 +152 112 88 +184 176 168 +120 88 64 +112 104 88 +64 72 80 +40 80 120 +232 232 248 +64 128 184 +168 184 208 +104 104 120 +0 0 0 diff --git a/graphics/pokemon/linoone/overworld_shiny.pal b/graphics/pokemon/linoone/overworld_shiny.pal new file mode 100644 index 000000000000..482c4ad1460d --- /dev/null +++ b/graphics/pokemon/linoone/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 64 +216 208 184 +72 32 0 +0 0 0 +200 96 40 +184 176 168 +152 80 32 +112 104 88 +64 72 80 +200 96 48 +232 232 248 +248 152 48 +168 184 208 +104 104 120 +0 0 0 diff --git a/graphics/pokemon/litleo/overworld.png b/graphics/pokemon/litleo/overworld.png new file mode 100644 index 000000000000..2c128f3184b2 Binary files /dev/null and b/graphics/pokemon/litleo/overworld.png differ diff --git a/graphics/pokemon/litleo/overworld_normal.pal b/graphics/pokemon/litleo/overworld_normal.pal new file mode 100644 index 000000000000..6a5b5fd29340 --- /dev/null +++ b/graphics/pokemon/litleo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +73 54 51 +16 16 16 +229 177 115 +231 67 39 +149 123 96 +157 70 54 +67 57 53 +113 96 89 +95 77 72 +230 238 248 +167 164 162 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/litleo/overworld_shiny.pal b/graphics/pokemon/litleo/overworld_shiny.pal new file mode 100644 index 000000000000..04908654fdaa --- /dev/null +++ b/graphics/pokemon/litleo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +132 106 83 +16 16 16 +201 197 187 +231 67 39 +149 123 96 +157 70 54 +67 57 53 +223 187 154 +175 145 119 +230 238 248 +167 164 162 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/litten/overworld.png b/graphics/pokemon/litten/overworld.png new file mode 100644 index 000000000000..50b464347f7b Binary files /dev/null and b/graphics/pokemon/litten/overworld.png differ diff --git a/graphics/pokemon/litten/overworld_normal.pal b/graphics/pokemon/litten/overworld_normal.pal new file mode 100644 index 000000000000..72f3eb826cbf --- /dev/null +++ b/graphics/pokemon/litten/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +234 230 230 +227 221 49 +152 144 144 +142 122 30 +109 107 111 +252 92 95 +85 86 91 +180 54 59 +68 64 64 +73 29 31 +46 44 44 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/litten/overworld_shiny.pal b/graphics/pokemon/litten/overworld_shiny.pal new file mode 100644 index 000000000000..35fa8d754477 --- /dev/null +++ b/graphics/pokemon/litten/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +234 230 230 +248 216 0 +152 144 144 +142 122 30 +248 248 248 +232 88 72 +200 184 184 +232 88 72 +68 64 64 +73 29 31 +46 44 44 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/litwick/overworld.png b/graphics/pokemon/litwick/overworld.png new file mode 100644 index 000000000000..072dd6f70d9b Binary files /dev/null and b/graphics/pokemon/litwick/overworld.png differ diff --git a/graphics/pokemon/litwick/overworld_normal.pal b/graphics/pokemon/litwick/overworld_normal.pal new file mode 100644 index 000000000000..f229ef5a10bb --- /dev/null +++ b/graphics/pokemon/litwick/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 221 1 +47 33 104 +104 71 227 +54 25 117 +147 129 227 +191 182 245 +0 0 0 +117 117 117 +227 227 255 +229 229 247 +199 191 199 +104 104 104 +185 185 185 +178 150 25 +98 98 98 +0 0 0 diff --git a/graphics/pokemon/litwick/overworld_shiny.pal b/graphics/pokemon/litwick/overworld_shiny.pal new file mode 100644 index 000000000000..d5017fd15a33 --- /dev/null +++ b/graphics/pokemon/litwick/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 221 1 +41 90 115 +82 197 238 +41 90 115 +115 205 246 +172 238 255 +0 0 0 +115 115 115 +255 255 255 +255 255 255 +205 197 180 +115 115 115 +205 197 180 +90 148 0 +115 115 115 +0 0 0 diff --git a/graphics/pokemon/lombre/overworld.png b/graphics/pokemon/lombre/overworld.png new file mode 100644 index 000000000000..df2df60d70e1 Binary files /dev/null and b/graphics/pokemon/lombre/overworld.png differ diff --git a/graphics/pokemon/lombre/overworld_normal.pal b/graphics/pokemon/lombre/overworld_normal.pal new file mode 100644 index 000000000000..7a9244152caf --- /dev/null +++ b/graphics/pokemon/lombre/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 192 8 +0 0 0 +40 80 32 +72 112 64 +104 152 64 +144 208 16 +112 168 16 +120 152 136 +152 192 160 +8 48 40 +232 232 248 +168 48 24 +232 88 64 +128 40 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lombre/overworld_shiny.pal b/graphics/pokemon/lombre/overworld_shiny.pal new file mode 100644 index 000000000000..ba0f834c8044 --- /dev/null +++ b/graphics/pokemon/lombre/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +0 0 0 +32 56 72 +48 72 96 +64 120 128 +144 208 192 +104 176 168 +136 152 64 +184 208 16 +64 80 32 +232 232 248 +168 48 24 +232 88 64 +128 40 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lopunny/overworld.png b/graphics/pokemon/lopunny/overworld.png new file mode 100644 index 000000000000..945680372150 Binary files /dev/null and b/graphics/pokemon/lopunny/overworld.png differ diff --git a/graphics/pokemon/lopunny/overworld_normal.pal b/graphics/pokemon/lopunny/overworld_normal.pal new file mode 100644 index 000000000000..ac88003ac284 --- /dev/null +++ b/graphics/pokemon/lopunny/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 48 32 +168 128 88 +128 96 56 +144 80 88 +232 216 168 +200 168 104 +96 80 64 +144 120 64 +248 168 168 +208 120 120 +80 80 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lopunny/overworld_shiny.pal b/graphics/pokemon/lopunny/overworld_shiny.pal new file mode 100644 index 000000000000..e193bf5ec5f7 --- /dev/null +++ b/graphics/pokemon/lopunny/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 48 32 +192 136 144 +152 104 120 +144 80 88 +232 184 192 +232 144 160 +120 80 88 +176 96 120 +248 168 168 +208 120 120 +80 80 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lotad/overworld.png b/graphics/pokemon/lotad/overworld.png new file mode 100644 index 000000000000..ea192848aa61 Binary files /dev/null and b/graphics/pokemon/lotad/overworld.png differ diff --git a/graphics/pokemon/lotad/overworld_normal.pal b/graphics/pokemon/lotad/overworld_normal.pal new file mode 100644 index 000000000000..d067b797bc4e --- /dev/null +++ b/graphics/pokemon/lotad/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 216 216 +0 0 0 +32 56 16 +80 128 24 +40 96 64 +144 208 16 +24 48 88 +112 168 16 +80 144 192 +40 96 136 +232 184 64 +232 232 248 +168 120 24 +96 64 8 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lotad/overworld_shiny.pal b/graphics/pokemon/lotad/overworld_shiny.pal new file mode 100644 index 000000000000..3262a070bb49 --- /dev/null +++ b/graphics/pokemon/lotad/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 216 216 +0 0 0 +32 56 72 +64 104 112 +40 96 88 +144 208 192 +80 48 88 +104 160 152 +176 112 192 +128 80 144 +232 184 64 +232 232 248 +168 120 24 +96 64 8 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/loudred/overworld.png b/graphics/pokemon/loudred/overworld.png new file mode 100644 index 000000000000..ebeb67efff92 Binary files /dev/null and b/graphics/pokemon/loudred/overworld.png differ diff --git a/graphics/pokemon/loudred/overworld_normal.pal b/graphics/pokemon/loudred/overworld_normal.pal new file mode 100644 index 000000000000..845967ebec1c --- /dev/null +++ b/graphics/pokemon/loudred/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 104 +104 96 152 +176 168 224 +184 64 104 +0 0 0 +136 128 184 +40 48 64 +136 40 64 +232 208 104 +168 176 192 +232 232 248 +184 144 48 +104 72 32 +104 112 136 +0 0 0 diff --git a/graphics/pokemon/loudred/overworld_shiny.pal b/graphics/pokemon/loudred/overworld_shiny.pal new file mode 100644 index 000000000000..c46b40509ff0 --- /dev/null +++ b/graphics/pokemon/loudred/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 64 96 +136 96 152 +208 168 224 +184 64 104 +0 0 0 +168 128 184 +40 48 64 +136 40 64 +232 208 104 +168 176 192 +232 232 248 +184 144 48 +104 72 32 +104 112 136 +0 0 0 diff --git a/graphics/pokemon/lucario/overworld.png b/graphics/pokemon/lucario/overworld.png new file mode 100644 index 000000000000..1421a014e56f Binary files /dev/null and b/graphics/pokemon/lucario/overworld.png differ diff --git a/graphics/pokemon/lucario/overworld_normal.pal b/graphics/pokemon/lucario/overworld_normal.pal new file mode 100644 index 000000000000..4ecdf26ad217 --- /dev/null +++ b/graphics/pokemon/lucario/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 88 +72 136 192 +112 184 240 +56 104 144 +0 0 0 +72 72 72 +40 40 40 +96 96 96 +232 232 248 +152 24 48 +168 184 200 +120 96 40 +176 136 56 +232 184 80 +0 0 0 diff --git a/graphics/pokemon/lucario/overworld_shiny.pal b/graphics/pokemon/lucario/overworld_shiny.pal new file mode 100644 index 000000000000..58e6064222a7 --- /dev/null +++ b/graphics/pokemon/lucario/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 96 40 +232 184 80 +248 216 120 +176 136 56 +0 0 0 +56 96 104 +40 40 40 +88 112 128 +232 232 248 +152 24 48 +176 184 192 +56 88 112 +88 136 176 +128 184 224 +0 0 0 diff --git a/graphics/pokemon/ludicolo/overworld.png b/graphics/pokemon/ludicolo/overworld.png new file mode 100644 index 000000000000..28a1e23d8ba5 Binary files /dev/null and b/graphics/pokemon/ludicolo/overworld.png differ diff --git a/graphics/pokemon/ludicolo/overworld_normal.pal b/graphics/pokemon/ludicolo/overworld_normal.pal new file mode 100644 index 000000000000..068c085ca035 --- /dev/null +++ b/graphics/pokemon/ludicolo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +192 192 240 +0 0 0 +48 40 8 +232 200 120 +208 176 64 +32 56 16 +104 136 56 +96 72 48 +144 208 16 +120 176 32 +136 104 80 +64 64 72 +160 160 160 +232 232 248 +136 64 0 +208 128 8 diff --git a/graphics/pokemon/ludicolo/overworld_shiny.pal b/graphics/pokemon/ludicolo/overworld_shiny.pal new file mode 100644 index 000000000000..52922edc64ca --- /dev/null +++ b/graphics/pokemon/ludicolo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +192 192 240 +0 0 0 +48 40 8 +232 200 120 +208 176 64 +32 56 72 +64 104 112 +96 72 48 +144 208 192 +104 160 152 +136 104 80 +64 64 72 +160 160 160 +232 232 248 +136 64 0 +208 128 8 diff --git a/graphics/pokemon/lugia/overworld.png b/graphics/pokemon/lugia/overworld.png new file mode 100644 index 000000000000..a50717cb9347 Binary files /dev/null and b/graphics/pokemon/lugia/overworld.png differ diff --git a/graphics/pokemon/lugia/overworld_normal.pal b/graphics/pokemon/lugia/overworld_normal.pal new file mode 100644 index 000000000000..c2dd89d8b95c --- /dev/null +++ b/graphics/pokemon/lugia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 72 88 +232 232 248 +200 208 216 +152 160 168 +40 48 112 +48 96 192 +136 168 224 +40 120 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lugia/overworld_shiny.pal b/graphics/pokemon/lugia/overworld_shiny.pal new file mode 100644 index 000000000000..dffa1d880871 --- /dev/null +++ b/graphics/pokemon/lugia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 72 88 +232 232 248 +200 208 216 +152 160 168 +88 40 64 +184 64 120 +216 144 184 +216 88 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lumineon/overworld.png b/graphics/pokemon/lumineon/overworld.png new file mode 100644 index 000000000000..670655a2a158 Binary files /dev/null and b/graphics/pokemon/lumineon/overworld.png differ diff --git a/graphics/pokemon/lumineon/overworld_normal.pal b/graphics/pokemon/lumineon/overworld_normal.pal new file mode 100644 index 000000000000..5a81d1c0e055 --- /dev/null +++ b/graphics/pokemon/lumineon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +0 0 0 +72 96 96 +88 104 120 +160 208 216 +96 144 184 +168 64 112 +48 72 64 +104 0 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lumineon/overworld_shiny.pal b/graphics/pokemon/lumineon/overworld_shiny.pal new file mode 100644 index 000000000000..59d9221705b8 --- /dev/null +++ b/graphics/pokemon/lumineon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +0 0 0 +136 120 64 +128 120 88 +240 208 136 +216 176 80 +168 64 112 +96 64 16 +104 0 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lunala/overworld.png b/graphics/pokemon/lunala/overworld.png new file mode 100644 index 000000000000..226deb05b680 Binary files /dev/null and b/graphics/pokemon/lunala/overworld.png differ diff --git a/graphics/pokemon/lunala/overworld_normal.pal b/graphics/pokemon/lunala/overworld_normal.pal new file mode 100644 index 000000000000..0c001dbf3f0e --- /dev/null +++ b/graphics/pokemon/lunala/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +1 1 1 +246 238 131 +111 84 49 +94 94 94 +49 49 49 +106 90 197 +196 194 217 +78 59 159 +185 169 97 +163 111 234 +255 255 255 +107 65 165 +255 82 123 +163 160 192 +115 230 205 diff --git a/graphics/pokemon/lunala/overworld_shiny.pal b/graphics/pokemon/lunala/overworld_shiny.pal new file mode 100644 index 000000000000..7b0cda7e3135 --- /dev/null +++ b/graphics/pokemon/lunala/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +1 1 1 +246 238 131 +144 80 8 +94 94 94 +62 0 16 +192 40 64 +131 57 101 +128 24 40 +185 169 97 +72 24 32 +95 34 81 +56 32 96 +255 82 123 +182 54 74 +255 95 143 diff --git a/graphics/pokemon/lunatone/overworld.png b/graphics/pokemon/lunatone/overworld.png new file mode 100644 index 000000000000..66663a66c78a Binary files /dev/null and b/graphics/pokemon/lunatone/overworld.png differ diff --git a/graphics/pokemon/lunatone/overworld_normal.pal b/graphics/pokemon/lunatone/overworld_normal.pal new file mode 100644 index 000000000000..00f360f0a1ec --- /dev/null +++ b/graphics/pokemon/lunatone/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +176 160 72 +208 192 96 +144 120 56 +0 0 0 +32 40 48 +64 72 88 +160 48 112 +208 72 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lunatone/overworld_shiny.pal b/graphics/pokemon/lunatone/overworld_shiny.pal new file mode 100644 index 000000000000..b939b6be1cc2 --- /dev/null +++ b/graphics/pokemon/lunatone/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +176 160 72 +208 192 96 +144 120 56 +0 0 0 +32 40 48 +64 72 88 +64 112 176 +120 168 224 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lurantis/overworld.png b/graphics/pokemon/lurantis/overworld.png new file mode 100644 index 000000000000..988d3c3ca3ac Binary files /dev/null and b/graphics/pokemon/lurantis/overworld.png differ diff --git a/graphics/pokemon/lurantis/overworld_normal.pal b/graphics/pokemon/lurantis/overworld_normal.pal new file mode 100644 index 000000000000..96b4637a7a83 --- /dev/null +++ b/graphics/pokemon/lurantis/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 251 251 +253 207 208 +243 195 213 +228 147 179 +92 222 143 +74 174 117 +39 152 79 +228 87 111 +57 110 89 +116 71 90 +149 39 67 +69 14 28 +39 75 61 +27 53 43 +0 0 0 diff --git a/graphics/pokemon/lurantis/overworld_shiny.pal b/graphics/pokemon/lurantis/overworld_shiny.pal new file mode 100644 index 000000000000..d8d46d9f2ae3 --- /dev/null +++ b/graphics/pokemon/lurantis/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 251 251 +248 216 128 +238 243 195 +224 160 72 +92 222 143 +74 174 117 +39 152 79 +128 192 96 +57 110 89 +116 71 90 +24 80 16 +69 14 28 +39 75 61 +27 53 43 +0 0 0 diff --git a/graphics/pokemon/luvdisc/overworld.png b/graphics/pokemon/luvdisc/overworld.png new file mode 100644 index 000000000000..6d224dcbebca Binary files /dev/null and b/graphics/pokemon/luvdisc/overworld.png differ diff --git a/graphics/pokemon/luvdisc/overworld_normal.pal b/graphics/pokemon/luvdisc/overworld_normal.pal new file mode 100644 index 000000000000..68f906e2049b --- /dev/null +++ b/graphics/pokemon/luvdisc/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 32 72 +232 152 160 +224 128 152 +208 96 136 +160 48 96 +0 0 0 +216 104 152 +48 48 64 +248 192 184 +248 176 144 +232 232 248 +232 144 144 +96 104 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/luvdisc/overworld_shiny.pal b/graphics/pokemon/luvdisc/overworld_shiny.pal new file mode 100644 index 000000000000..e0b1b2d97f7b --- /dev/null +++ b/graphics/pokemon/luvdisc/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 104 32 +248 240 0 +232 184 32 +216 160 32 +160 128 40 +0 0 0 +232 160 32 +48 48 64 +248 192 184 +248 176 144 +232 232 248 +232 144 144 +96 104 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/luxio/overworld.png b/graphics/pokemon/luxio/overworld.png new file mode 100644 index 000000000000..939966d7fbfe Binary files /dev/null and b/graphics/pokemon/luxio/overworld.png differ diff --git a/graphics/pokemon/luxio/overworld_normal.pal b/graphics/pokemon/luxio/overworld_normal.pal new file mode 100644 index 000000000000..69a3076b377b --- /dev/null +++ b/graphics/pokemon/luxio/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 24 +248 208 24 +168 88 16 +208 144 32 +0 0 0 +64 64 64 +88 88 88 +40 40 40 +80 144 184 +112 176 216 +48 80 112 +232 232 248 +208 80 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/luxio/overworld_shiny.pal b/graphics/pokemon/luxio/overworld_shiny.pal new file mode 100644 index 000000000000..0b31d8e16d33 --- /dev/null +++ b/graphics/pokemon/luxio/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 64 16 +248 128 24 +192 80 16 +208 104 16 +0 0 0 +64 64 64 +88 88 88 +40 40 40 +200 128 32 +248 184 24 +104 88 40 +232 232 248 +208 80 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/luxray/overworld.png b/graphics/pokemon/luxray/overworld.png new file mode 100644 index 000000000000..9f1e835c563c Binary files /dev/null and b/graphics/pokemon/luxray/overworld.png differ diff --git a/graphics/pokemon/luxray/overworld_normal.pal b/graphics/pokemon/luxray/overworld_normal.pal new file mode 100644 index 000000000000..ee661847bf8c --- /dev/null +++ b/graphics/pokemon/luxray/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 24 +248 208 24 +144 112 16 +208 144 32 +40 40 40 +64 64 64 +0 0 0 +88 88 88 +128 192 232 +80 168 216 +64 128 168 +32 80 104 +184 32 16 +208 80 64 +0 0 0 diff --git a/graphics/pokemon/luxray/overworld_shiny.pal b/graphics/pokemon/luxray/overworld_shiny.pal new file mode 100644 index 000000000000..b72dd0cecb2d --- /dev/null +++ b/graphics/pokemon/luxray/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 64 16 +248 128 24 +192 80 16 +208 104 16 +40 40 40 +64 64 64 +0 0 0 +88 88 88 +248 216 24 +224 176 32 +184 136 0 +104 72 0 +96 24 16 +208 80 64 +0 0 0 diff --git a/graphics/pokemon/lycanroc/dusk/overworld.png b/graphics/pokemon/lycanroc/dusk/overworld.png new file mode 100644 index 000000000000..4aecdc918676 Binary files /dev/null and b/graphics/pokemon/lycanroc/dusk/overworld.png differ diff --git a/graphics/pokemon/lycanroc/dusk/overworld_normal.pal b/graphics/pokemon/lycanroc/dusk/overworld_normal.pal new file mode 100644 index 000000000000..3cfb9d0e13ca --- /dev/null +++ b/graphics/pokemon/lycanroc/dusk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +16 16 16 +255 255 255 +80 79 78 +42 39 37 +75 69 63 +184 181 175 +96 50 40 +199 134 77 +178 98 156 +152 100 54 +156 90 50 +64 136 60 +104 191 73 +128 128 128 +0 0 0 diff --git a/graphics/pokemon/lycanroc/dusk/overworld_shiny.pal b/graphics/pokemon/lycanroc/dusk/overworld_shiny.pal new file mode 100644 index 000000000000..66d38cf4023a --- /dev/null +++ b/graphics/pokemon/lycanroc/dusk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +16 16 16 +255 255 255 +80 79 78 +42 39 37 +75 69 63 +184 181 175 +26 38 56 +96 120 176 +248 152 136 +56 72 96 +156 90 50 +91 188 86 +168 208 32 +128 128 128 +0 0 0 diff --git a/graphics/pokemon/lycanroc/midnight/overworld.png b/graphics/pokemon/lycanroc/midnight/overworld.png new file mode 100644 index 000000000000..044306dde5cc Binary files /dev/null and b/graphics/pokemon/lycanroc/midnight/overworld.png differ diff --git a/graphics/pokemon/lycanroc/midnight/overworld_normal.pal b/graphics/pokemon/lycanroc/midnight/overworld_normal.pal new file mode 100644 index 000000000000..1b2faaa6d1f5 --- /dev/null +++ b/graphics/pokemon/lycanroc/midnight/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +53 52 53 +240 235 230 +16 16 16 +174 157 148 +216 74 87 +111 95 79 +84 38 43 +139 51 59 +128 128 128 +252 83 100 +47 45 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lycanroc/midnight/overworld_shiny.pal b/graphics/pokemon/lycanroc/midnight/overworld_shiny.pal new file mode 100644 index 000000000000..ec6a7d3b0e12 --- /dev/null +++ b/graphics/pokemon/lycanroc/midnight/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +53 52 53 +240 235 230 +16 16 16 +174 157 148 +37 100 137 +111 95 79 +84 38 43 +29 66 88 +128 128 128 +252 83 100 +47 45 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lycanroc/overworld.png b/graphics/pokemon/lycanroc/overworld.png new file mode 100644 index 000000000000..e625ff82502f Binary files /dev/null and b/graphics/pokemon/lycanroc/overworld.png differ diff --git a/graphics/pokemon/lycanroc/overworld_normal.pal b/graphics/pokemon/lycanroc/overworld_normal.pal new file mode 100644 index 000000000000..87f56c95fa63 --- /dev/null +++ b/graphics/pokemon/lycanroc/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +199 162 141 +184 181 175 +92 170 238 +128 128 128 +88 146 214 +85 129 197 +141 116 102 +178 98 156 +101 84 74 +80 79 78 +75 69 63 +65 56 51 +42 39 37 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/lycanroc/overworld_shiny.pal b/graphics/pokemon/lycanroc/overworld_shiny.pal new file mode 100644 index 000000000000..03f98160dbb7 --- /dev/null +++ b/graphics/pokemon/lycanroc/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +136 168 200 +184 181 175 +92 170 238 +128 128 128 +88 146 214 +85 129 197 +96 120 176 +248 152 136 +96 120 176 +80 79 78 +75 69 63 +65 56 51 +42 39 37 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/machamp/overworld.png b/graphics/pokemon/machamp/overworld.png new file mode 100644 index 000000000000..846ecd72ce35 Binary files /dev/null and b/graphics/pokemon/machamp/overworld.png differ diff --git a/graphics/pokemon/machamp/overworld_normal.pal b/graphics/pokemon/machamp/overworld_normal.pal new file mode 100644 index 000000000000..f93181182fe1 --- /dev/null +++ b/graphics/pokemon/machamp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +232 200 152 +64 64 64 +160 160 200 +128 128 144 +176 152 112 +80 88 104 +232 232 248 +192 40 64 +200 200 200 +240 232 112 +208 184 72 +144 128 24 +248 208 8 +0 0 0 diff --git a/graphics/pokemon/machamp/overworld_shiny.pal b/graphics/pokemon/machamp/overworld_shiny.pal new file mode 100644 index 000000000000..110331435e19 --- /dev/null +++ b/graphics/pokemon/machamp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +232 200 152 +56 72 56 +168 192 120 +128 144 80 +176 152 112 +64 104 64 +232 232 248 +192 40 64 +200 200 200 +240 232 112 +208 184 72 +144 128 24 +248 208 8 +0 0 0 diff --git a/graphics/pokemon/machoke/overworld.png b/graphics/pokemon/machoke/overworld.png new file mode 100644 index 000000000000..76579aa26226 Binary files /dev/null and b/graphics/pokemon/machoke/overworld.png differ diff --git a/graphics/pokemon/machoke/overworld_normal.pal b/graphics/pokemon/machoke/overworld_normal.pal new file mode 100644 index 000000000000..ca64380358af --- /dev/null +++ b/graphics/pokemon/machoke/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +176 152 112 +0 0 0 +232 200 152 +128 128 144 +160 160 200 +232 232 248 +192 40 64 +96 104 128 +208 160 16 +88 88 88 +248 208 8 +144 128 24 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/machoke/overworld_shiny.pal b/graphics/pokemon/machoke/overworld_shiny.pal new file mode 100644 index 000000000000..e45567a3572c --- /dev/null +++ b/graphics/pokemon/machoke/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +56 56 56 +176 152 112 +0 0 0 +232 200 152 +128 136 96 +168 176 136 +232 232 248 +40 96 128 +80 88 64 +208 160 16 +88 88 88 +248 208 8 +144 128 24 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/machop/overworld.png b/graphics/pokemon/machop/overworld.png new file mode 100644 index 000000000000..d4692e70c134 Binary files /dev/null and b/graphics/pokemon/machop/overworld.png differ diff --git a/graphics/pokemon/machop/overworld_normal.pal b/graphics/pokemon/machop/overworld_normal.pal new file mode 100644 index 000000000000..26eb0ad6144e --- /dev/null +++ b/graphics/pokemon/machop/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +176 152 112 +232 200 152 +0 0 0 +136 168 184 +112 128 136 +72 96 104 +232 232 248 +192 40 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/machop/overworld_shiny.pal b/graphics/pokemon/machop/overworld_shiny.pal new file mode 100644 index 000000000000..01e6fea80d86 --- /dev/null +++ b/graphics/pokemon/machop/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +176 152 112 +232 200 152 +0 0 0 +168 176 136 +128 136 96 +80 88 64 +232 232 248 +192 40 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magby/overworld.png b/graphics/pokemon/magby/overworld.png new file mode 100644 index 000000000000..6b3efd8585e4 Binary files /dev/null and b/graphics/pokemon/magby/overworld.png differ diff --git a/graphics/pokemon/magby/overworld_normal.pal b/graphics/pokemon/magby/overworld_normal.pal new file mode 100644 index 000000000000..e1a3accf8843 --- /dev/null +++ b/graphics/pokemon/magby/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 0 24 +0 0 0 +208 40 56 +248 80 120 +104 72 0 +240 192 56 +176 184 192 +200 152 32 +80 88 104 +232 232 248 +64 64 72 +152 40 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magby/overworld_shiny.pal b/graphics/pokemon/magby/overworld_shiny.pal new file mode 100644 index 000000000000..3ce78722f8bb --- /dev/null +++ b/graphics/pokemon/magby/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 0 +0 0 0 +248 184 16 +248 224 56 +136 88 0 +240 192 56 +176 184 192 +200 152 32 +80 88 104 +232 232 248 +64 64 72 +168 120 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magcargo/overworld.png b/graphics/pokemon/magcargo/overworld.png new file mode 100644 index 000000000000..10f1b74ea349 Binary files /dev/null and b/graphics/pokemon/magcargo/overworld.png differ diff --git a/graphics/pokemon/magcargo/overworld_normal.pal b/graphics/pokemon/magcargo/overworld_normal.pal new file mode 100644 index 000000000000..ae59bf42fa25 --- /dev/null +++ b/graphics/pokemon/magcargo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 0 0 +224 80 72 +0 0 0 +40 48 56 +104 112 136 +248 208 88 +72 80 96 +248 152 0 +176 56 48 +120 24 16 +224 120 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magcargo/overworld_shiny.pal b/graphics/pokemon/magcargo/overworld_shiny.pal new file mode 100644 index 000000000000..b2c613353e20 --- /dev/null +++ b/graphics/pokemon/magcargo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 0 80 +176 120 216 +0 0 0 +72 0 0 +176 56 48 +248 208 88 +120 24 16 +248 152 0 +112 72 152 +80 40 128 +224 120 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magearna/overworld.png b/graphics/pokemon/magearna/overworld.png new file mode 100644 index 000000000000..adcbe391cc6a Binary files /dev/null and b/graphics/pokemon/magearna/overworld.png differ diff --git a/graphics/pokemon/magearna/overworld_normal.pal b/graphics/pokemon/magearna/overworld_normal.pal new file mode 100644 index 000000000000..09e877f3f6b8 --- /dev/null +++ b/graphics/pokemon/magearna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 220 110 +218 192 200 +168 161 155 +183 132 149 +167 157 71 +70 153 169 +113 102 99 +203 98 96 +179 74 68 +105 93 91 +77 70 67 +65 58 23 +49 44 43 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magearna/overworld_shiny.pal b/graphics/pokemon/magearna/overworld_shiny.pal new file mode 100644 index 000000000000..b7da7967dfd5 --- /dev/null +++ b/graphics/pokemon/magearna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 220 110 +206 200 197 +168 161 155 +153 146 143 +167 157 71 +70 153 169 +113 102 99 +203 98 96 +179 74 68 +105 93 91 +77 70 67 +65 58 23 +49 44 43 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magikarp/overworld.png b/graphics/pokemon/magikarp/overworld.png new file mode 100644 index 000000000000..debcdb492539 Binary files /dev/null and b/graphics/pokemon/magikarp/overworld.png differ diff --git a/graphics/pokemon/magikarp/overworld_normal.pal b/graphics/pokemon/magikarp/overworld_normal.pal new file mode 100644 index 000000000000..7475ba359d08 --- /dev/null +++ b/graphics/pokemon/magikarp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +144 144 144 +80 32 16 +0 0 0 +120 32 64 +248 192 16 +184 64 104 +216 112 152 +136 40 24 +232 96 64 +200 56 16 +184 136 24 +232 168 72 +232 232 248 +192 192 208 diff --git a/graphics/pokemon/magikarp/overworld_shiny.pal b/graphics/pokemon/magikarp/overworld_shiny.pal new file mode 100644 index 000000000000..43cbfeca8847 --- /dev/null +++ b/graphics/pokemon/magikarp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +144 144 144 +72 56 8 +0 0 0 +120 64 0 +248 192 16 +208 144 48 +216 192 80 +192 72 0 +248 192 16 +248 160 16 +184 136 24 +232 168 72 +232 232 248 +192 192 208 diff --git a/graphics/pokemon/magmar/overworld.png b/graphics/pokemon/magmar/overworld.png new file mode 100644 index 000000000000..dd186f16abfa Binary files /dev/null and b/graphics/pokemon/magmar/overworld.png differ diff --git a/graphics/pokemon/magmar/overworld_normal.pal b/graphics/pokemon/magmar/overworld_normal.pal new file mode 100644 index 000000000000..3b0b823e98d5 --- /dev/null +++ b/graphics/pokemon/magmar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 32 16 +240 208 0 +224 152 16 +0 0 0 +176 120 8 +184 56 24 +128 0 0 +240 72 32 +232 232 248 +240 184 200 +200 88 128 +192 192 208 +48 48 48 +112 80 16 +144 144 144 diff --git a/graphics/pokemon/magmar/overworld_shiny.pal b/graphics/pokemon/magmar/overworld_shiny.pal new file mode 100644 index 000000000000..6b847ea300ef --- /dev/null +++ b/graphics/pokemon/magmar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 32 16 +240 184 200 +248 160 176 +0 0 0 +200 112 128 +184 72 120 +128 0 0 +240 88 104 +232 232 248 +240 184 200 +200 88 128 +192 192 208 +48 48 48 +112 40 64 +144 144 144 diff --git a/graphics/pokemon/magmortar/overworld.png b/graphics/pokemon/magmortar/overworld.png new file mode 100644 index 000000000000..f98ac07c47b5 Binary files /dev/null and b/graphics/pokemon/magmortar/overworld.png differ diff --git a/graphics/pokemon/magmortar/overworld_normal.pal b/graphics/pokemon/magmortar/overworld_normal.pal new file mode 100644 index 000000000000..f2395d067b42 --- /dev/null +++ b/graphics/pokemon/magmortar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 0 0 +240 208 0 +0 0 0 +240 72 32 +224 152 16 +184 56 24 +192 96 104 +48 48 48 +232 232 248 +224 136 152 +136 72 88 +192 192 208 +168 104 0 +144 144 144 +72 80 80 diff --git a/graphics/pokemon/magmortar/overworld_shiny.pal b/graphics/pokemon/magmortar/overworld_shiny.pal new file mode 100644 index 000000000000..21324c959b58 --- /dev/null +++ b/graphics/pokemon/magmortar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 0 0 +248 176 192 +0 0 0 +240 72 32 +232 136 144 +184 56 24 +192 96 104 +48 48 48 +232 232 248 +224 136 152 +136 72 88 +192 192 208 +192 112 144 +144 144 144 +72 80 80 diff --git a/graphics/pokemon/magnemite/overworld.png b/graphics/pokemon/magnemite/overworld.png new file mode 100644 index 000000000000..3956750a8974 Binary files /dev/null and b/graphics/pokemon/magnemite/overworld.png differ diff --git a/graphics/pokemon/magnemite/overworld_normal.pal b/graphics/pokemon/magnemite/overworld_normal.pal new file mode 100644 index 000000000000..eed58a5b5308 --- /dev/null +++ b/graphics/pokemon/magnemite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 184 +112 112 120 +56 56 56 +104 128 144 +72 136 232 +152 168 184 +232 64 64 +192 208 216 +232 232 248 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magnemite/overworld_shiny.pal b/graphics/pokemon/magnemite/overworld_shiny.pal new file mode 100644 index 000000000000..9186eeb9c660 --- /dev/null +++ b/graphics/pokemon/magnemite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 184 +112 112 120 +56 56 56 +128 120 104 +176 176 184 +168 160 136 +112 112 120 +208 200 168 +232 232 248 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magneton/overworld.png b/graphics/pokemon/magneton/overworld.png new file mode 100644 index 000000000000..692f46111a65 Binary files /dev/null and b/graphics/pokemon/magneton/overworld.png differ diff --git a/graphics/pokemon/magneton/overworld_normal.pal b/graphics/pokemon/magneton/overworld_normal.pal new file mode 100644 index 000000000000..ade63a0f30c6 --- /dev/null +++ b/graphics/pokemon/magneton/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 184 +112 112 120 +56 56 56 +104 128 144 +232 64 64 +152 168 184 +192 208 216 +80 80 80 +232 232 248 +72 136 232 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magneton/overworld_shiny.pal b/graphics/pokemon/magneton/overworld_shiny.pal new file mode 100644 index 000000000000..63034b4473cd --- /dev/null +++ b/graphics/pokemon/magneton/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 176 184 +112 112 120 +56 56 56 +128 120 104 +112 112 120 +168 160 136 +208 200 168 +80 80 80 +232 232 248 +176 176 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/magnezone/overworld.png b/graphics/pokemon/magnezone/overworld.png new file mode 100644 index 000000000000..0c239b0f83a6 Binary files /dev/null and b/graphics/pokemon/magnezone/overworld.png differ diff --git a/graphics/pokemon/magnezone/overworld_normal.pal b/graphics/pokemon/magnezone/overworld_normal.pal new file mode 100644 index 000000000000..ee54c68ce5d0 --- /dev/null +++ b/graphics/pokemon/magnezone/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +184 160 56 +248 224 8 +0 0 0 +80 80 80 +184 184 192 +48 64 72 +112 112 120 +104 128 144 +152 152 152 +152 168 184 +232 232 248 +184 72 72 +216 0 0 +0 0 0 diff --git a/graphics/pokemon/magnezone/overworld_shiny.pal b/graphics/pokemon/magnezone/overworld_shiny.pal new file mode 100644 index 000000000000..22f78641d89d --- /dev/null +++ b/graphics/pokemon/magnezone/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +200 184 136 +248 248 120 +0 0 0 +80 80 80 +184 184 192 +48 64 72 +112 112 120 +176 184 192 +152 152 152 +200 208 216 +232 232 248 +8 160 216 +120 208 248 +0 0 0 diff --git a/graphics/pokemon/makuhita/overworld.png b/graphics/pokemon/makuhita/overworld.png new file mode 100644 index 000000000000..84c202a001d3 Binary files /dev/null and b/graphics/pokemon/makuhita/overworld.png differ diff --git a/graphics/pokemon/makuhita/overworld_normal.pal b/graphics/pokemon/makuhita/overworld_normal.pal new file mode 100644 index 000000000000..fee5cdee8dfa --- /dev/null +++ b/graphics/pokemon/makuhita/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 8 +184 152 56 +0 0 0 +224 200 104 +112 96 16 +136 40 64 +184 64 104 +56 64 80 +80 88 112 +24 32 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/makuhita/overworld_shiny.pal b/graphics/pokemon/makuhita/overworld_shiny.pal new file mode 100644 index 000000000000..b07ce5d1ba64 --- /dev/null +++ b/graphics/pokemon/makuhita/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 8 +200 168 80 +0 0 0 +240 208 136 +120 104 24 +136 40 64 +184 64 104 +112 0 0 +192 32 16 +24 32 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/malamar/overworld.png b/graphics/pokemon/malamar/overworld.png new file mode 100644 index 000000000000..d1ecbc02584b Binary files /dev/null and b/graphics/pokemon/malamar/overworld.png differ diff --git a/graphics/pokemon/malamar/overworld_normal.pal b/graphics/pokemon/malamar/overworld_normal.pal new file mode 100644 index 000000000000..4e6271bf791d --- /dev/null +++ b/graphics/pokemon/malamar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 37 59 +16 16 16 +124 110 176 +113 179 215 +72 137 184 +83 59 103 +203 203 212 +49 37 59 +210 82 130 +235 196 41 +166 139 118 +127 127 143 +83 59 103 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/malamar/overworld_shiny.pal b/graphics/pokemon/malamar/overworld_shiny.pal new file mode 100644 index 000000000000..78b30c0d5711 --- /dev/null +++ b/graphics/pokemon/malamar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +120 101 66 +16 16 16 +214 186 139 +232 206 60 +178 157 43 +157 134 90 +194 230 172 +72 90 61 +169 57 71 +235 196 41 +166 163 118 +131 162 112 +43 53 37 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mamoswine/overworld.png b/graphics/pokemon/mamoswine/overworld.png new file mode 100644 index 000000000000..201c3a7a845d Binary files /dev/null and b/graphics/pokemon/mamoswine/overworld.png differ diff --git a/graphics/pokemon/mamoswine/overworld_normal.pal b/graphics/pokemon/mamoswine/overworld_normal.pal new file mode 100644 index 000000000000..75e8601828e0 --- /dev/null +++ b/graphics/pokemon/mamoswine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 40 16 +136 88 56 +168 120 80 +104 64 40 +184 192 208 +128 136 144 +64 64 64 +40 112 144 +232 232 248 +200 168 104 +72 168 216 +152 120 32 +200 96 112 +136 56 72 diff --git a/graphics/pokemon/mamoswine/overworld_shiny.pal b/graphics/pokemon/mamoswine/overworld_shiny.pal new file mode 100644 index 000000000000..5fa05c41ed3e --- /dev/null +++ b/graphics/pokemon/mamoswine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 56 16 +128 128 56 +168 168 80 +88 80 32 +160 200 240 +120 152 168 +64 64 64 +32 128 112 +232 232 248 +200 184 104 +56 168 176 +152 152 32 +200 96 112 +136 56 72 diff --git a/graphics/pokemon/manaphy/overworld.png b/graphics/pokemon/manaphy/overworld.png new file mode 100644 index 000000000000..77478a059338 Binary files /dev/null and b/graphics/pokemon/manaphy/overworld.png differ diff --git a/graphics/pokemon/manaphy/overworld_normal.pal b/graphics/pokemon/manaphy/overworld_normal.pal new file mode 100644 index 000000000000..6e3c729cecf0 --- /dev/null +++ b/graphics/pokemon/manaphy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +128 160 240 +24 72 160 +80 128 232 +64 96 200 +0 0 0 +248 208 96 +232 232 248 +192 144 8 +192 64 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/manaphy/overworld_shiny.pal b/graphics/pokemon/manaphy/overworld_shiny.pal new file mode 100644 index 000000000000..300ed3a43041 --- /dev/null +++ b/graphics/pokemon/manaphy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +96 200 240 +8 96 112 +56 176 232 +48 168 200 +0 0 0 +248 224 96 +232 232 248 +168 168 24 +192 80 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mandibuzz/overworld.png b/graphics/pokemon/mandibuzz/overworld.png new file mode 100644 index 000000000000..4bad2765fb22 Binary files /dev/null and b/graphics/pokemon/mandibuzz/overworld.png differ diff --git a/graphics/pokemon/mandibuzz/overworld_normal.pal b/graphics/pokemon/mandibuzz/overworld_normal.pal new file mode 100644 index 000000000000..39599a33d638 --- /dev/null +++ b/graphics/pokemon/mandibuzz/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +51 38 38 +93 93 88 +6 6 6 +92 57 54 +78 70 46 +153 91 86 +185 161 121 +222 118 135 +198 198 186 +203 46 25 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mandibuzz/overworld_shiny.pal b/graphics/pokemon/mandibuzz/overworld_shiny.pal new file mode 100644 index 000000000000..5f7e59532818 --- /dev/null +++ b/graphics/pokemon/mandibuzz/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +51 38 38 +164 99 78 +6 6 6 +92 57 54 +119 65 64 +188 103 163 +189 170 196 +78 70 46 +203 46 25 +191 164 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/manectric/overworld.png b/graphics/pokemon/manectric/overworld.png new file mode 100644 index 000000000000..2daf99e0c785 Binary files /dev/null and b/graphics/pokemon/manectric/overworld.png differ diff --git a/graphics/pokemon/manectric/overworld_normal.pal b/graphics/pokemon/manectric/overworld_normal.pal new file mode 100644 index 000000000000..9fcad2a9942e --- /dev/null +++ b/graphics/pokemon/manectric/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +248 248 144 +96 72 48 +224 192 72 +192 144 32 +24 48 88 +160 216 248 +128 184 216 +64 64 72 +80 152 184 +232 232 248 +192 56 56 +32 120 152 +160 160 160 +0 0 0 diff --git a/graphics/pokemon/manectric/overworld_shiny.pal b/graphics/pokemon/manectric/overworld_shiny.pal new file mode 100644 index 000000000000..4a9add357132 --- /dev/null +++ b/graphics/pokemon/manectric/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +248 248 144 +96 72 48 +224 192 72 +192 144 32 +40 48 64 +160 192 208 +104 136 152 +64 64 72 +80 104 120 +232 232 248 +0 72 160 +48 72 88 +160 160 160 +0 0 0 diff --git a/graphics/pokemon/mankey/overworld.png b/graphics/pokemon/mankey/overworld.png new file mode 100644 index 000000000000..cc6f9ba54ee5 Binary files /dev/null and b/graphics/pokemon/mankey/overworld.png differ diff --git a/graphics/pokemon/mankey/overworld_normal.pal b/graphics/pokemon/mankey/overworld_normal.pal new file mode 100644 index 000000000000..3a603bc91058 --- /dev/null +++ b/graphics/pokemon/mankey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 56 +232 216 136 +152 120 96 +0 0 0 +208 176 128 +136 104 56 +176 128 48 +120 40 64 +176 104 128 +232 232 248 +176 176 208 +240 128 160 +144 16 48 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mankey/overworld_shiny.pal b/graphics/pokemon/mankey/overworld_shiny.pal new file mode 100644 index 000000000000..57a55b3e92fb --- /dev/null +++ b/graphics/pokemon/mankey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 56 +208 224 136 +128 128 72 +0 0 0 +168 176 104 +104 104 56 +144 128 48 +120 40 64 +176 104 128 +232 232 248 +176 176 208 +240 128 160 +144 16 48 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mantine/overworld.png b/graphics/pokemon/mantine/overworld.png new file mode 100644 index 000000000000..aad777672028 Binary files /dev/null and b/graphics/pokemon/mantine/overworld.png differ diff --git a/graphics/pokemon/mantine/overworld_normal.pal b/graphics/pokemon/mantine/overworld_normal.pal new file mode 100644 index 000000000000..8ec8bdbe45ba --- /dev/null +++ b/graphics/pokemon/mantine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 80 120 +0 0 0 +208 232 248 +136 176 216 +80 120 184 +120 160 216 +16 64 104 +40 64 72 +48 88 144 +176 168 184 +48 48 72 +144 136 152 +216 208 224 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/mantine/overworld_shiny.pal b/graphics/pokemon/mantine/overworld_shiny.pal new file mode 100644 index 000000000000..4e4d81c210da --- /dev/null +++ b/graphics/pokemon/mantine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 80 120 +0 0 0 +208 232 248 +136 176 216 +80 160 200 +120 200 232 +16 48 96 +40 64 72 +48 96 144 +176 192 184 +48 48 72 +144 152 152 +216 208 224 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/mantyke/overworld.png b/graphics/pokemon/mantyke/overworld.png new file mode 100644 index 000000000000..9e935676bf18 Binary files /dev/null and b/graphics/pokemon/mantyke/overworld.png differ diff --git a/graphics/pokemon/mantyke/overworld_normal.pal b/graphics/pokemon/mantyke/overworld_normal.pal new file mode 100644 index 000000000000..f72b703fcdc6 --- /dev/null +++ b/graphics/pokemon/mantyke/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 48 96 +0 0 0 +32 120 248 +8 88 200 +8 64 152 +112 192 240 +184 224 248 +144 64 56 +152 192 224 +232 232 248 +96 96 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mantyke/overworld_shiny.pal b/graphics/pokemon/mantyke/overworld_shiny.pal new file mode 100644 index 000000000000..dcc2969614d2 --- /dev/null +++ b/graphics/pokemon/mantyke/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 80 72 +0 0 0 +56 168 216 +40 136 168 +24 112 120 +136 200 240 +184 224 248 +144 64 56 +160 200 232 +232 232 248 +96 96 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/maractus/overworld.png b/graphics/pokemon/maractus/overworld.png new file mode 100644 index 000000000000..e74498531b5a Binary files /dev/null and b/graphics/pokemon/maractus/overworld.png differ diff --git a/graphics/pokemon/maractus/overworld_normal.pal b/graphics/pokemon/maractus/overworld_normal.pal new file mode 100644 index 000000000000..46b279cf80a3 --- /dev/null +++ b/graphics/pokemon/maractus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 224 248 +127 37 80 +220 85 185 +117 117 0 +185 54 117 +220 220 0 +54 151 54 +85 220 117 +0 54 54 +0 25 25 +25 117 117 +25 85 54 +0 0 0 +25 54 54 +254 254 254 +0 0 0 diff --git a/graphics/pokemon/maractus/overworld_shiny.pal b/graphics/pokemon/maractus/overworld_shiny.pal new file mode 100644 index 000000000000..9a3a5aa40956 --- /dev/null +++ b/graphics/pokemon/maractus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 224 248 +200 96 0 +239 184 39 +117 117 0 +239 184 39 +239 184 39 +104 144 72 +152 200 64 +35 54 44 +0 17 17 +184 32 120 +120 16 72 +0 17 17 +35 54 44 +120 224 248 +0 0 0 diff --git a/graphics/pokemon/mareanie/overworld.png b/graphics/pokemon/mareanie/overworld.png new file mode 100644 index 000000000000..d608833c703b Binary files /dev/null and b/graphics/pokemon/mareanie/overworld.png differ diff --git a/graphics/pokemon/mareanie/overworld_normal.pal b/graphics/pokemon/mareanie/overworld_normal.pal new file mode 100644 index 000000000000..4cba6f123639 --- /dev/null +++ b/graphics/pokemon/mareanie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +228 193 86 +120 197 206 +179 144 188 +185 155 70 +166 161 169 +85 169 83 +69 114 171 +169 107 215 +147 69 175 +87 76 40 +77 58 85 +43 76 101 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mareanie/overworld_shiny.pal b/graphics/pokemon/mareanie/overworld_shiny.pal new file mode 100644 index 000000000000..6b6569dd3365 --- /dev/null +++ b/graphics/pokemon/mareanie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +228 193 86 +232 104 160 +179 144 188 +185 155 70 +166 161 169 +85 169 83 +192 56 112 +240 104 80 +208 56 80 +87 76 40 +128 40 48 +43 76 101 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mareep/overworld.png b/graphics/pokemon/mareep/overworld.png new file mode 100644 index 000000000000..7a3e4ad1d0f1 Binary files /dev/null and b/graphics/pokemon/mareep/overworld.png differ diff --git a/graphics/pokemon/mareep/overworld_normal.pal b/graphics/pokemon/mareep/overworld_normal.pal new file mode 100644 index 000000000000..1de585f7aa8b --- /dev/null +++ b/graphics/pokemon/mareep/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 88 8 +248 168 0 +232 232 248 +224 112 0 +0 0 0 +248 248 176 +88 104 120 +232 208 104 +240 200 80 +48 56 64 +200 160 0 +168 144 72 +80 128 184 +8 72 96 +120 168 232 diff --git a/graphics/pokemon/mareep/overworld_shiny.pal b/graphics/pokemon/mareep/overworld_shiny.pal new file mode 100644 index 000000000000..eb79f7951b39 --- /dev/null +++ b/graphics/pokemon/mareep/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 96 112 +248 168 0 +232 232 248 +224 112 0 +0 0 0 +248 216 248 +88 104 120 +224 168 200 +240 200 80 +48 56 64 +200 160 0 +176 128 152 +72 136 176 +8 88 120 +136 184 232 diff --git a/graphics/pokemon/marill/overworld.png b/graphics/pokemon/marill/overworld.png new file mode 100644 index 000000000000..fd1dab2db1db Binary files /dev/null and b/graphics/pokemon/marill/overworld.png differ diff --git a/graphics/pokemon/marill/overworld_normal.pal b/graphics/pokemon/marill/overworld_normal.pal new file mode 100644 index 000000000000..5b777ad6a0d5 --- /dev/null +++ b/graphics/pokemon/marill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 56 104 +0 0 0 +112 176 240 +56 112 160 +184 48 40 +72 144 200 +232 232 248 +48 56 64 +136 160 184 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marill/overworld_shiny.pal b/graphics/pokemon/marill/overworld_shiny.pal new file mode 100644 index 000000000000..c81c595de3e2 --- /dev/null +++ b/graphics/pokemon/marill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 48 +0 0 0 +120 216 152 +24 152 104 +184 48 40 +88 184 128 +232 232 248 +48 56 64 +136 160 184 +168 184 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marowak/alolan/overworld.png b/graphics/pokemon/marowak/alolan/overworld.png new file mode 100644 index 000000000000..07dc3ff981a1 Binary files /dev/null and b/graphics/pokemon/marowak/alolan/overworld.png differ diff --git a/graphics/pokemon/marowak/alolan/overworld_normal.pal b/graphics/pokemon/marowak/alolan/overworld_normal.pal new file mode 100644 index 000000000000..e8ff3de95a9e --- /dev/null +++ b/graphics/pokemon/marowak/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 128 +192 192 192 +72 72 72 +0 0 0 +216 224 224 +81 51 79 +50 142 66 +211 248 121 +52 35 51 +112 71 82 +4 107 56 +48 189 120 +137 86 133 +170 130 145 +172 229 196 diff --git a/graphics/pokemon/marowak/alolan/overworld_shiny.pal b/graphics/pokemon/marowak/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..d42162967550 --- /dev/null +++ b/graphics/pokemon/marowak/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 128 +192 192 192 +72 72 72 +0 0 0 +216 224 224 +67 58 109 +50 142 66 +211 248 121 +54 49 81 +67 67 67 +4 107 56 +48 189 120 +101 87 164 +112 112 112 +172 229 196 diff --git a/graphics/pokemon/marowak/overworld.png b/graphics/pokemon/marowak/overworld.png new file mode 100644 index 000000000000..d37ef5730937 Binary files /dev/null and b/graphics/pokemon/marowak/overworld.png differ diff --git a/graphics/pokemon/marowak/overworld_normal.pal b/graphics/pokemon/marowak/overworld_normal.pal new file mode 100644 index 000000000000..44ae1c4ae99b --- /dev/null +++ b/graphics/pokemon/marowak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 128 +192 192 192 +72 72 72 +0 0 0 +216 224 224 +232 232 248 +72 48 48 +168 128 72 +200 152 80 +224 192 144 +192 160 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marowak/overworld_shiny.pal b/graphics/pokemon/marowak/overworld_shiny.pal new file mode 100644 index 000000000000..312939d9bc49 --- /dev/null +++ b/graphics/pokemon/marowak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 128 +200 200 176 +72 72 72 +0 0 0 +224 232 216 +232 232 248 +40 64 24 +96 120 56 +144 160 72 +224 192 144 +192 160 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marshadow/overworld.png b/graphics/pokemon/marshadow/overworld.png new file mode 100644 index 000000000000..1cec592be9d8 Binary files /dev/null and b/graphics/pokemon/marshadow/overworld.png differ diff --git a/graphics/pokemon/marshadow/overworld_normal.pal b/graphics/pokemon/marshadow/overworld_normal.pal new file mode 100644 index 000000000000..e0de7bae9910 --- /dev/null +++ b/graphics/pokemon/marshadow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 253 0 +255 247 0 +100 133 103 +106 106 106 +255 101 40 +255 85 33 +78 100 81 +62 66 62 +48 61 50 +40 43 40 +19 19 19 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marshadow/overworld_shiny.pal b/graphics/pokemon/marshadow/overworld_shiny.pal new file mode 100644 index 000000000000..b425429f44ce --- /dev/null +++ b/graphics/pokemon/marshadow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 253 0 +255 247 0 +132 99 140 +106 106 106 +255 101 40 +255 85 33 +90 66 107 +62 66 62 +48 61 50 +40 43 40 +19 19 19 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marshtomp/overworld.png b/graphics/pokemon/marshtomp/overworld.png new file mode 100644 index 000000000000..a2d25bbab8b6 Binary files /dev/null and b/graphics/pokemon/marshtomp/overworld.png differ diff --git a/graphics/pokemon/marshtomp/overworld_normal.pal b/graphics/pokemon/marshtomp/overworld_normal.pal new file mode 100644 index 000000000000..19a6000b98a7 --- /dev/null +++ b/graphics/pokemon/marshtomp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 224 24 +48 80 96 +0 0 0 +128 160 176 +96 120 128 +32 80 88 +88 184 176 +64 128 128 +72 56 16 +240 128 16 +232 232 248 +160 72 16 +176 192 208 +192 88 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/marshtomp/overworld_shiny.pal b/graphics/pokemon/marshtomp/overworld_shiny.pal new file mode 100644 index 000000000000..4a6f1cdcabdd --- /dev/null +++ b/graphics/pokemon/marshtomp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 230 29 +56 56 64 +0 0 0 +136 120 168 +104 88 112 +104 88 144 +200 168 240 +152 128 192 +104 64 0 +248 200 48 +232 232 248 +128 80 0 +176 176 208 +216 144 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/masquerain/overworld.png b/graphics/pokemon/masquerain/overworld.png new file mode 100644 index 000000000000..b1e41fb33c51 Binary files /dev/null and b/graphics/pokemon/masquerain/overworld.png differ diff --git a/graphics/pokemon/masquerain/overworld_normal.pal b/graphics/pokemon/masquerain/overworld_normal.pal new file mode 100644 index 000000000000..8fd35c441bc0 --- /dev/null +++ b/graphics/pokemon/masquerain/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 24 32 +200 88 72 +160 64 48 +88 112 152 +160 208 224 +176 216 232 +232 232 248 +64 80 112 +136 32 88 +216 104 120 +224 160 184 +136 176 200 +232 232 248 +80 80 88 diff --git a/graphics/pokemon/masquerain/overworld_shiny.pal b/graphics/pokemon/masquerain/overworld_shiny.pal new file mode 100644 index 000000000000..25aef3f7f442 --- /dev/null +++ b/graphics/pokemon/masquerain/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +24 72 56 +96 160 48 +72 128 24 +80 120 80 +208 176 64 +176 208 168 +248 200 104 +64 88 56 +136 32 88 +216 120 128 +224 160 184 +136 184 136 +232 232 248 +80 80 88 diff --git a/graphics/pokemon/mawile/overworld.png b/graphics/pokemon/mawile/overworld.png new file mode 100644 index 000000000000..470363d2857a Binary files /dev/null and b/graphics/pokemon/mawile/overworld.png differ diff --git a/graphics/pokemon/mawile/overworld_normal.pal b/graphics/pokemon/mawile/overworld_normal.pal new file mode 100644 index 000000000000..df0e2b920374 --- /dev/null +++ b/graphics/pokemon/mawile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +112 112 112 +40 40 40 +72 72 72 +144 144 144 +200 168 88 +248 216 128 +176 184 200 +128 104 72 +80 72 56 +232 232 248 +192 56 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mawile/overworld_shiny.pal b/graphics/pokemon/mawile/overworld_shiny.pal new file mode 100644 index 000000000000..dccc179b1df1 --- /dev/null +++ b/graphics/pokemon/mawile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 80 120 +48 24 48 +88 48 80 +184 112 152 +200 168 88 +248 216 128 +176 184 200 +128 104 72 +80 72 56 +232 232 248 +192 56 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/medicham/overworld.png b/graphics/pokemon/medicham/overworld.png new file mode 100644 index 000000000000..01bb389c079c Binary files /dev/null and b/graphics/pokemon/medicham/overworld.png differ diff --git a/graphics/pokemon/medicham/overworld_normal.pal b/graphics/pokemon/medicham/overworld_normal.pal new file mode 100644 index 000000000000..08d2ee0e18ed --- /dev/null +++ b/graphics/pokemon/medicham/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 24 32 +0 0 0 +200 96 128 +232 136 160 +184 80 104 +144 56 88 +152 152 144 +248 216 88 +192 192 184 +112 112 96 +232 232 248 +56 56 64 +192 160 16 +152 128 24 +112 80 16 diff --git a/graphics/pokemon/medicham/overworld_shiny.pal b/graphics/pokemon/medicham/overworld_shiny.pal new file mode 100644 index 000000000000..483d63dd6a59 --- /dev/null +++ b/graphics/pokemon/medicham/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 24 48 +0 0 0 +112 160 200 +136 192 232 +88 128 168 +64 96 136 +200 168 104 +248 216 88 +232 208 136 +120 88 64 +232 232 248 +80 56 24 +192 160 16 +152 128 24 +112 80 16 diff --git a/graphics/pokemon/meditite/overworld.png b/graphics/pokemon/meditite/overworld.png new file mode 100644 index 000000000000..53adfb2b00d5 Binary files /dev/null and b/graphics/pokemon/meditite/overworld.png differ diff --git a/graphics/pokemon/meditite/overworld_normal.pal b/graphics/pokemon/meditite/overworld_normal.pal new file mode 100644 index 000000000000..c588d2426547 --- /dev/null +++ b/graphics/pokemon/meditite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 64 +176 184 200 +216 224 232 +0 0 0 +136 136 152 +160 160 176 +80 80 88 +232 232 248 +40 64 96 +184 48 40 +64 104 152 +88 144 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meditite/overworld_shiny.pal b/graphics/pokemon/meditite/overworld_shiny.pal new file mode 100644 index 000000000000..7c76a3780f46 --- /dev/null +++ b/graphics/pokemon/meditite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 64 +176 184 200 +216 224 232 +0 0 0 +136 136 152 +160 160 176 +80 80 88 +232 232 248 +104 32 8 +184 48 40 +176 80 16 +216 120 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meganium/overworld.png b/graphics/pokemon/meganium/overworld.png new file mode 100644 index 000000000000..4f1cb708293b Binary files /dev/null and b/graphics/pokemon/meganium/overworld.png differ diff --git a/graphics/pokemon/meganium/overworld_normal.pal b/graphics/pokemon/meganium/overworld_normal.pal new file mode 100644 index 000000000000..c64f70a10219 --- /dev/null +++ b/graphics/pokemon/meganium/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +104 104 64 +240 208 48 +192 152 40 +72 88 40 +0 0 0 +192 208 80 +128 160 88 +160 184 80 +232 232 248 +136 96 0 +104 40 80 +200 176 184 +176 80 120 +208 96 144 +184 176 200 diff --git a/graphics/pokemon/meganium/overworld_shiny.pal b/graphics/pokemon/meganium/overworld_shiny.pal new file mode 100644 index 000000000000..d735254d20c8 --- /dev/null +++ b/graphics/pokemon/meganium/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 104 64 +240 208 48 +192 152 40 +96 80 32 +0 0 0 +232 216 88 +168 152 56 +200 184 72 +232 232 248 +136 96 0 +144 88 32 +200 176 184 +224 112 16 +248 144 96 +184 176 200 diff --git a/graphics/pokemon/melmetal/overworld.png b/graphics/pokemon/melmetal/overworld.png new file mode 100644 index 000000000000..4be020a5c6a8 Binary files /dev/null and b/graphics/pokemon/melmetal/overworld.png differ diff --git a/graphics/pokemon/melmetal/overworld_normal.pal b/graphics/pokemon/melmetal/overworld_normal.pal new file mode 100644 index 000000000000..28e459319267 --- /dev/null +++ b/graphics/pokemon/melmetal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 235 185 +220 220 218 +235 192 100 +175 175 178 +164 136 61 +136 136 128 +123 102 40 +96 96 96 +94 77 30 +228 74 49 +78 26 17 +64 64 64 +45 43 43 +8 8 8 +0 0 0 diff --git a/graphics/pokemon/melmetal/overworld_shiny.pal b/graphics/pokemon/melmetal/overworld_shiny.pal new file mode 100644 index 000000000000..6d1c75c9bbf3 --- /dev/null +++ b/graphics/pokemon/melmetal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 235 185 +220 220 218 +248 160 80 +175 175 178 +216 104 40 +136 136 128 +176 72 40 +96 96 96 +128 48 32 +0 88 216 +17 23 78 +64 64 64 +45 43 43 +8 8 8 +0 0 0 diff --git a/graphics/pokemon/meloetta/overworld.png b/graphics/pokemon/meloetta/overworld.png new file mode 100644 index 000000000000..02de1cbccfc5 Binary files /dev/null and b/graphics/pokemon/meloetta/overworld.png differ diff --git a/graphics/pokemon/meloetta/overworld_normal.pal b/graphics/pokemon/meloetta/overworld_normal.pal new file mode 100644 index 000000000000..883c1689303e --- /dev/null +++ b/graphics/pokemon/meloetta/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +42 47 74 +89 76 91 +109 101 43 +197 210 120 +111 143 71 +145 193 81 +220 220 230 +171 186 202 +66 148 170 +46 102 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meloetta/overworld_shiny.pal b/graphics/pokemon/meloetta/overworld_shiny.pal new file mode 100644 index 000000000000..e9290e1f4cb9 --- /dev/null +++ b/graphics/pokemon/meloetta/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +224 168 120 +43 48 72 +87 99 110 +87 99 110 +160 240 192 +48 160 32 +112 168 152 +243 243 230 +177 173 181 +104 211 71 +48 160 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meloetta/pirouette/overworld.png b/graphics/pokemon/meloetta/pirouette/overworld.png new file mode 100644 index 000000000000..44e802879427 Binary files /dev/null and b/graphics/pokemon/meloetta/pirouette/overworld.png differ diff --git a/graphics/pokemon/meloetta/pirouette/overworld_normal.pal b/graphics/pokemon/meloetta/pirouette/overworld_normal.pal new file mode 100644 index 000000000000..5b8f9a6f3778 --- /dev/null +++ b/graphics/pokemon/meloetta/pirouette/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 35 53 +83 59 83 +42 47 74 +88 76 90 +104 55 47 +236 100 75 +164 71 47 +222 222 233 +176 178 190 +191 40 79 +208 128 162 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meloetta/pirouette/overworld_shiny.pal b/graphics/pokemon/meloetta/pirouette/overworld_shiny.pal new file mode 100644 index 000000000000..d1c14a244417 --- /dev/null +++ b/graphics/pokemon/meloetta/pirouette/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +26 30 53 +42 47 74 +42 47 74 +103 103 111 +65 32 49 +238 82 197 +180 41 139 +222 222 233 +176 178 190 +189 95 69 +189 95 69 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meltan/overworld.png b/graphics/pokemon/meltan/overworld.png new file mode 100644 index 000000000000..a72f9839b1b7 Binary files /dev/null and b/graphics/pokemon/meltan/overworld.png differ diff --git a/graphics/pokemon/meltan/overworld_normal.pal b/graphics/pokemon/meltan/overworld_normal.pal new file mode 100644 index 000000000000..3f15fd8644e3 --- /dev/null +++ b/graphics/pokemon/meltan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +220 220 218 +235 197 123 +231 187 93 +176 176 175 +232 128 115 +179 152 81 +123 123 122 +121 102 52 +222 73 55 +125 91 85 +79 67 34 +79 27 20 +68 68 67 +62 58 52 +8 8 8 diff --git a/graphics/pokemon/meltan/overworld_shiny.pal b/graphics/pokemon/meltan/overworld_shiny.pal new file mode 100644 index 000000000000..f14a3f2e5880 --- /dev/null +++ b/graphics/pokemon/meltan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +220 220 218 +248 160 80 +216 104 40 +176 176 175 +115 160 232 +128 48 32 +123 123 122 +176 72 40 +0 88 216 +125 91 85 +79 67 34 +0 48 120 +68 68 67 +62 58 52 +8 8 8 diff --git a/graphics/pokemon/meowstic/female/overworld.png b/graphics/pokemon/meowstic/female/overworld.png new file mode 100644 index 000000000000..abafe4c21a2b Binary files /dev/null and b/graphics/pokemon/meowstic/female/overworld.png differ diff --git a/graphics/pokemon/meowstic/female/overworld_normal.pal b/graphics/pokemon/meowstic/female/overworld_normal.pal new file mode 100644 index 000000000000..3456a6d7ddbe --- /dev/null +++ b/graphics/pokemon/meowstic/female/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +76 90 90 +251 254 255 +45 54 73 +142 169 170 +80 102 144 +45 54 73 +60 74 102 +253 236 58 +226 143 56 +199 51 54 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meowstic/female/overworld_shiny.pal b/graphics/pokemon/meowstic/female/overworld_shiny.pal new file mode 100644 index 000000000000..ba3cd3ff475c --- /dev/null +++ b/graphics/pokemon/meowstic/female/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +76 90 90 +251 254 255 +148 123 34 +142 169 170 +226 222 75 +45 54 73 +203 184 45 +253 236 58 +226 143 56 +199 51 54 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meowstic/overworld.png b/graphics/pokemon/meowstic/overworld.png new file mode 100644 index 000000000000..d34d7455d847 Binary files /dev/null and b/graphics/pokemon/meowstic/overworld.png differ diff --git a/graphics/pokemon/meowstic/overworld_normal.pal b/graphics/pokemon/meowstic/overworld_normal.pal new file mode 100644 index 000000000000..cbfe930dfc28 --- /dev/null +++ b/graphics/pokemon/meowstic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +45 54 73 +251 254 255 +16 16 16 +45 54 73 +80 102 144 +165 178 200 +66 83 116 +157 233 224 +34 122 48 +110 150 170 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meowstic/overworld_shiny.pal b/graphics/pokemon/meowstic/overworld_shiny.pal new file mode 100644 index 000000000000..ae9237b1c5e0 --- /dev/null +++ b/graphics/pokemon/meowstic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +45 54 73 +251 254 255 +16 16 16 +148 123 34 +226 222 75 +165 178 200 +203 184 45 +157 233 224 +34 122 48 +110 150 170 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meowth/alolan/overworld.png b/graphics/pokemon/meowth/alolan/overworld.png new file mode 100644 index 000000000000..8b2ee85857fa Binary files /dev/null and b/graphics/pokemon/meowth/alolan/overworld.png differ diff --git a/graphics/pokemon/meowth/alolan/overworld_normal.pal b/graphics/pokemon/meowth/alolan/overworld_normal.pal new file mode 100644 index 000000000000..cf3a77b36193 --- /dev/null +++ b/graphics/pokemon/meowth/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +225 227 242 +53 48 80 +158 164 205 +112 104 162 +248 200 32 +216 144 24 +69 63 103 +52 49 68 +79 74 103 +244 251 255 +151 142 174 +64 56 48 +225 227 242 +0 0 0 diff --git a/graphics/pokemon/meowth/alolan/overworld_shiny.pal b/graphics/pokemon/meowth/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..47bb6a945b5e --- /dev/null +++ b/graphics/pokemon/meowth/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +117 74 144 +31 27 99 +126 150 233 +86 106 172 +248 200 32 +216 144 24 +69 63 103 +52 49 68 +79 74 103 +187 113 225 +151 142 174 +64 56 48 +225 227 242 +0 0 0 diff --git a/graphics/pokemon/meowth/galarian/overworld.png b/graphics/pokemon/meowth/galarian/overworld.png new file mode 100644 index 000000000000..2a95a729ec15 Binary files /dev/null and b/graphics/pokemon/meowth/galarian/overworld.png differ diff --git a/graphics/pokemon/meowth/galarian/overworld_normal.pal b/graphics/pokemon/meowth/galarian/overworld_normal.pal new file mode 100644 index 000000000000..e115d77e4f4b --- /dev/null +++ b/graphics/pokemon/meowth/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +14 14 14 +32 32 32 +68 68 68 +0 0 0 +40 34 27 +244 244 244 +130 114 98 +193 177 161 +194 194 194 +251 216 60 +255 255 255 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/meowth/galarian/overworld_shiny.pal b/graphics/pokemon/meowth/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..e115d77e4f4b --- /dev/null +++ b/graphics/pokemon/meowth/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +14 14 14 +32 32 32 +68 68 68 +0 0 0 +40 34 27 +244 244 244 +130 114 98 +193 177 161 +194 194 194 +251 216 60 +255 255 255 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/meowth/overworld.png b/graphics/pokemon/meowth/overworld.png new file mode 100644 index 000000000000..4961e2ce85f4 Binary files /dev/null and b/graphics/pokemon/meowth/overworld.png differ diff --git a/graphics/pokemon/meowth/overworld_normal.pal b/graphics/pokemon/meowth/overworld_normal.pal new file mode 100644 index 000000000000..cc95ce267c33 --- /dev/null +++ b/graphics/pokemon/meowth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +152 80 24 +80 56 24 +240 216 128 +216 176 64 +248 200 32 +216 144 24 +120 104 80 +64 56 48 +176 88 80 +200 128 48 +168 32 80 +168 120 80 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/meowth/overworld_shiny.pal b/graphics/pokemon/meowth/overworld_shiny.pal new file mode 100644 index 000000000000..b73f08732fd8 --- /dev/null +++ b/graphics/pokemon/meowth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +160 72 104 +96 40 64 +240 192 128 +200 152 136 +248 200 32 +216 144 24 +120 104 80 +64 56 48 +176 88 80 +184 88 128 +168 32 80 +144 112 104 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mesprit/overworld.png b/graphics/pokemon/mesprit/overworld.png new file mode 100644 index 000000000000..ea0c72eeced0 Binary files /dev/null and b/graphics/pokemon/mesprit/overworld.png differ diff --git a/graphics/pokemon/mesprit/overworld_normal.pal b/graphics/pokemon/mesprit/overworld_normal.pal new file mode 100644 index 000000000000..7d87729400fd --- /dev/null +++ b/graphics/pokemon/mesprit/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 56 +0 0 0 +184 80 128 +224 112 144 +144 72 112 +168 40 0 +248 168 152 +72 72 88 +176 208 248 +232 64 32 +112 128 176 +136 120 32 +144 184 208 +232 232 248 +248 176 16 diff --git a/graphics/pokemon/mesprit/overworld_shiny.pal b/graphics/pokemon/mesprit/overworld_shiny.pal new file mode 100644 index 000000000000..fc3e53fa80ba --- /dev/null +++ b/graphics/pokemon/mesprit/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 56 +0 0 0 +224 112 112 +248 144 128 +200 88 72 +168 40 0 +248 168 152 +104 80 56 +248 216 88 +232 64 32 +176 128 48 +136 120 32 +216 176 88 +232 232 248 +248 176 16 diff --git a/graphics/pokemon/metagross/overworld.png b/graphics/pokemon/metagross/overworld.png new file mode 100644 index 000000000000..5665e8ffa770 Binary files /dev/null and b/graphics/pokemon/metagross/overworld.png differ diff --git a/graphics/pokemon/metagross/overworld_normal.pal b/graphics/pokemon/metagross/overworld_normal.pal new file mode 100644 index 000000000000..7755c99417ec --- /dev/null +++ b/graphics/pokemon/metagross/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 80 +88 128 168 +64 96 120 +0 0 0 +152 216 240 +144 192 232 +64 64 64 +192 192 192 +40 40 48 +104 144 208 +144 144 160 +232 232 248 +152 40 40 +152 152 160 +0 0 0 diff --git a/graphics/pokemon/metagross/overworld_shiny.pal b/graphics/pokemon/metagross/overworld_shiny.pal new file mode 100644 index 000000000000..33c35936aaea --- /dev/null +++ b/graphics/pokemon/metagross/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +168 168 168 +112 112 112 +0 0 0 +216 216 216 +216 216 216 +64 64 64 +232 200 0 +40 40 48 +192 192 192 +192 136 0 +232 232 248 +152 40 40 +128 88 0 +0 0 0 diff --git a/graphics/pokemon/metang/overworld.png b/graphics/pokemon/metang/overworld.png new file mode 100644 index 000000000000..66f8270d4420 Binary files /dev/null and b/graphics/pokemon/metang/overworld.png differ diff --git a/graphics/pokemon/metang/overworld_normal.pal b/graphics/pokemon/metang/overworld_normal.pal new file mode 100644 index 000000000000..4a68b5849747 --- /dev/null +++ b/graphics/pokemon/metang/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +144 192 232 +152 216 240 +232 232 248 +144 144 160 +104 144 208 +32 64 80 +192 192 192 +64 96 120 +88 128 168 +40 40 48 +152 152 160 +152 40 40 +120 32 32 diff --git a/graphics/pokemon/metang/overworld_shiny.pal b/graphics/pokemon/metang/overworld_shiny.pal new file mode 100644 index 000000000000..f1fbda46e7c8 --- /dev/null +++ b/graphics/pokemon/metang/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 72 48 +216 216 216 +216 216 216 +232 200 0 +192 96 0 +192 192 192 +56 56 56 +232 144 0 +112 112 112 +168 168 168 +40 40 48 +128 64 0 +152 40 40 +120 32 32 diff --git a/graphics/pokemon/metapod/overworld.png b/graphics/pokemon/metapod/overworld.png new file mode 100644 index 000000000000..1e1d363f8a9f Binary files /dev/null and b/graphics/pokemon/metapod/overworld.png differ diff --git a/graphics/pokemon/metapod/overworld_normal.pal b/graphics/pokemon/metapod/overworld_normal.pal new file mode 100644 index 000000000000..c0903a0f6b4a --- /dev/null +++ b/graphics/pokemon/metapod/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 72 24 +160 216 72 +104 136 48 +0 0 0 +224 224 224 +232 232 248 +0 0 0 +0 0 0 +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/metapod/overworld_shiny.pal b/graphics/pokemon/metapod/overworld_shiny.pal new file mode 100644 index 000000000000..a2eb3c155458 --- /dev/null +++ b/graphics/pokemon/metapod/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 56 24 +248 168 72 +208 120 24 +0 0 0 +224 224 224 +232 232 248 +0 0 0 +0 0 0 +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/mew/overworld.png b/graphics/pokemon/mew/overworld.png new file mode 100644 index 000000000000..067d6c83d67b Binary files /dev/null and b/graphics/pokemon/mew/overworld.png differ diff --git a/graphics/pokemon/mew/overworld_normal.pal b/graphics/pokemon/mew/overworld_normal.pal new file mode 100644 index 000000000000..59b29db91da0 --- /dev/null +++ b/graphics/pokemon/mew/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 80 +96 96 96 +248 208 232 +176 104 168 +216 160 184 +0 0 0 +232 232 248 +64 128 128 +200 200 248 +112 88 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mew/overworld_shiny.pal b/graphics/pokemon/mew/overworld_shiny.pal new file mode 100644 index 000000000000..daf7559247f5 --- /dev/null +++ b/graphics/pokemon/mew/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 72 120 +96 96 96 +176 224 248 +104 144 200 +144 192 216 +0 0 0 +232 232 248 +64 128 128 +200 200 248 +72 96 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mewtwo/overworld.png b/graphics/pokemon/mewtwo/overworld.png new file mode 100644 index 000000000000..dbd7d5b76fcb Binary files /dev/null and b/graphics/pokemon/mewtwo/overworld.png differ diff --git a/graphics/pokemon/mewtwo/overworld_normal.pal b/graphics/pokemon/mewtwo/overworld_normal.pal new file mode 100644 index 000000000000..1f11ddbb6522 --- /dev/null +++ b/graphics/pokemon/mewtwo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 96 +0 0 0 +232 232 248 +64 64 64 +216 200 216 +176 152 192 +136 72 136 +128 120 152 +64 48 80 +184 88 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mewtwo/overworld_shiny.pal b/graphics/pokemon/mewtwo/overworld_shiny.pal new file mode 100644 index 000000000000..965e699ed35c --- /dev/null +++ b/graphics/pokemon/mewtwo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 96 +0 0 0 +232 232 248 +64 64 64 +216 200 216 +176 152 192 +104 152 40 +128 120 152 +80 112 48 +128 200 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mienfoo/overworld.png b/graphics/pokemon/mienfoo/overworld.png new file mode 100644 index 000000000000..dc8920b193ba Binary files /dev/null and b/graphics/pokemon/mienfoo/overworld.png differ diff --git a/graphics/pokemon/mienfoo/overworld_normal.pal b/graphics/pokemon/mienfoo/overworld_normal.pal new file mode 100644 index 000000000000..c381a390d1a2 --- /dev/null +++ b/graphics/pokemon/mienfoo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 0 +104 80 0 +187 168 89 +248 216 96 +0 0 0 +120 120 120 +120 32 56 +216 96 120 +232 232 248 +144 120 80 +160 64 80 +248 216 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mienfoo/overworld_shiny.pal b/graphics/pokemon/mienfoo/overworld_shiny.pal new file mode 100644 index 000000000000..2ef31fe5dab3 --- /dev/null +++ b/graphics/pokemon/mienfoo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 112 96 +104 80 0 +168 160 136 +232 232 200 +0 0 0 +120 120 120 +56 56 168 +104 96 240 +232 232 248 +144 120 80 +72 72 200 +248 216 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mienshao/overworld.png b/graphics/pokemon/mienshao/overworld.png new file mode 100644 index 000000000000..921b97665e65 Binary files /dev/null and b/graphics/pokemon/mienshao/overworld.png differ diff --git a/graphics/pokemon/mienshao/overworld_normal.pal b/graphics/pokemon/mienshao/overworld_normal.pal new file mode 100644 index 000000000000..79731d0935b1 --- /dev/null +++ b/graphics/pokemon/mienshao/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +70 49 61 +180 158 156 +228 214 212 +0 0 0 +132 98 172 +172 138 196 +222 204 211 +229 214 213 +228 213 211 +84 66 100 +252 174 100 +232 232 248 +164 34 36 +104 74 140 +0 0 0 diff --git a/graphics/pokemon/mienshao/overworld_shiny.pal b/graphics/pokemon/mienshao/overworld_shiny.pal new file mode 100644 index 000000000000..c619aed9c225 --- /dev/null +++ b/graphics/pokemon/mienshao/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +70 49 61 +152 144 168 +224 216 224 +0 0 0 +152 56 128 +216 88 160 +224 216 224 +224 216 224 +224 216 224 +64 24 48 +168 112 224 +232 232 248 +164 34 36 +104 74 140 +0 0 0 diff --git a/graphics/pokemon/mightyena/overworld.png b/graphics/pokemon/mightyena/overworld.png new file mode 100644 index 000000000000..a7d232508614 Binary files /dev/null and b/graphics/pokemon/mightyena/overworld.png differ diff --git a/graphics/pokemon/mightyena/overworld_normal.pal b/graphics/pokemon/mightyena/overworld_normal.pal new file mode 100644 index 000000000000..937b068866b3 --- /dev/null +++ b/graphics/pokemon/mightyena/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 56 56 +80 80 88 +64 56 80 +168 160 184 +128 120 136 +104 112 112 +128 32 32 +224 64 64 +248 216 88 +144 152 160 +176 184 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mightyena/overworld_shiny.pal b/graphics/pokemon/mightyena/overworld_shiny.pal new file mode 100644 index 000000000000..50b9dd9418ee --- /dev/null +++ b/graphics/pokemon/mightyena/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 56 40 +120 80 32 +80 64 0 +200 184 144 +160 120 72 +128 88 40 +0 120 200 +88 176 192 +168 216 248 +144 152 160 +176 184 192 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/milcery/overworld.png b/graphics/pokemon/milcery/overworld.png new file mode 100644 index 000000000000..f159e3f08b1d Binary files /dev/null and b/graphics/pokemon/milcery/overworld.png differ diff --git a/graphics/pokemon/milcery/overworld_normal.pal b/graphics/pokemon/milcery/overworld_normal.pal new file mode 100644 index 000000000000..d5408d86c0dd --- /dev/null +++ b/graphics/pokemon/milcery/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 25 +167 154 101 +239 227 179 +0 0 0 +214 201 147 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +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/milcery/overworld_shiny.pal b/graphics/pokemon/milcery/overworld_shiny.pal new file mode 100644 index 000000000000..596ba17239d4 --- /dev/null +++ b/graphics/pokemon/milcery/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 25 +139 139 139 +255 255 255 +0 0 0 +222 222 222 +65 65 65 +0 0 0 +0 0 0 +0 0 0 +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/milotic/overworld.png b/graphics/pokemon/milotic/overworld.png new file mode 100644 index 000000000000..55a0fa432cdb Binary files /dev/null and b/graphics/pokemon/milotic/overworld.png differ diff --git a/graphics/pokemon/milotic/overworld_normal.pal b/graphics/pokemon/milotic/overworld_normal.pal new file mode 100644 index 000000000000..c704285eb7ac --- /dev/null +++ b/graphics/pokemon/milotic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +240 104 112 +96 88 64 +184 48 80 +248 240 216 +0 0 0 +208 168 64 +32 56 88 +232 216 168 +112 160 208 +184 48 112 +128 8 72 +240 104 152 +56 88 128 +80 128 168 +80 72 152 diff --git a/graphics/pokemon/milotic/overworld_shiny.pal b/graphics/pokemon/milotic/overworld_shiny.pal new file mode 100644 index 000000000000..bee7d440aef0 --- /dev/null +++ b/graphics/pokemon/milotic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +240 104 112 +96 88 64 +184 48 80 +248 240 216 +0 0 0 +208 168 64 +96 56 0 +232 216 168 +248 200 48 +72 128 152 +40 56 88 +112 200 208 +144 96 0 +200 136 24 +136 96 8 diff --git a/graphics/pokemon/miltank/overworld.png b/graphics/pokemon/miltank/overworld.png new file mode 100644 index 000000000000..351fc02f878f Binary files /dev/null and b/graphics/pokemon/miltank/overworld.png differ diff --git a/graphics/pokemon/miltank/overworld_normal.pal b/graphics/pokemon/miltank/overworld_normal.pal new file mode 100644 index 000000000000..84739e680fb9 --- /dev/null +++ b/graphics/pokemon/miltank/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 48 64 +56 64 72 +232 232 248 +168 184 208 +72 96 120 +40 64 80 +240 168 192 +208 136 160 +88 40 56 +120 72 80 +176 96 120 +160 144 88 +208 184 120 +80 64 32 diff --git a/graphics/pokemon/miltank/overworld_shiny.pal b/graphics/pokemon/miltank/overworld_shiny.pal new file mode 100644 index 000000000000..83eb27dce68b --- /dev/null +++ b/graphics/pokemon/miltank/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 56 +56 64 72 +232 232 248 +168 184 208 +136 72 40 +88 56 40 +184 192 232 +144 160 192 +32 48 64 +72 80 104 +104 120 152 +184 184 184 +216 216 216 +56 56 56 diff --git a/graphics/pokemon/mime_jr/overworld.png b/graphics/pokemon/mime_jr/overworld.png new file mode 100644 index 000000000000..4021617ffff0 Binary files /dev/null and b/graphics/pokemon/mime_jr/overworld.png differ diff --git a/graphics/pokemon/mime_jr/overworld_normal.pal b/graphics/pokemon/mime_jr/overworld_normal.pal new file mode 100644 index 000000000000..63c1342a0a7c --- /dev/null +++ b/graphics/pokemon/mime_jr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +232 232 248 +168 168 168 +0 0 0 +40 40 72 +64 64 128 +88 96 176 +120 128 232 +96 32 56 +240 176 200 +208 64 88 +216 112 144 +120 72 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mime_jr/overworld_shiny.pal b/graphics/pokemon/mime_jr/overworld_shiny.pal new file mode 100644 index 000000000000..0a455bdaa3ad --- /dev/null +++ b/graphics/pokemon/mime_jr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +232 232 248 +152 208 160 +0 0 0 +40 72 88 +24 112 88 +8 152 88 +24 184 104 +96 32 56 +248 200 216 +208 64 88 +224 160 184 +120 72 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mimikyu/overworld.png b/graphics/pokemon/mimikyu/overworld.png new file mode 100644 index 000000000000..8c83b114cb13 Binary files /dev/null and b/graphics/pokemon/mimikyu/overworld.png differ diff --git a/graphics/pokemon/mimikyu/overworld_normal.pal b/graphics/pokemon/mimikyu/overworld_normal.pal new file mode 100644 index 000000000000..145148606c08 --- /dev/null +++ b/graphics/pokemon/mimikyu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +216 208 168 +181 166 129 +152 136 98 +151 91 39 +101 90 65 +122 73 31 +95 76 61 +64 64 64 +48 48 48 +54 44 34 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mimikyu/overworld_shiny.pal b/graphics/pokemon/mimikyu/overworld_shiny.pal new file mode 100644 index 000000000000..cfa4e45a8e86 --- /dev/null +++ b/graphics/pokemon/mimikyu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +216 216 192 +168 160 144 +152 136 98 +112 128 128 +101 90 65 +91 87 84 +96 88 72 +64 64 64 +48 48 48 +54 44 34 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/minccino/overworld.png b/graphics/pokemon/minccino/overworld.png new file mode 100644 index 000000000000..0e57f7f94b45 Binary files /dev/null and b/graphics/pokemon/minccino/overworld.png differ diff --git a/graphics/pokemon/minccino/overworld_normal.pal b/graphics/pokemon/minccino/overworld_normal.pal new file mode 100644 index 000000000000..dddd79dfb960 --- /dev/null +++ b/graphics/pokemon/minccino/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +73 73 77 +238 238 247 +200 200 212 +194 184 173 +194 184 173 +0 0 0 +137 117 107 +173 76 75 +47 46 47 +194 184 173 +149 140 143 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/minccino/overworld_shiny.pal b/graphics/pokemon/minccino/overworld_shiny.pal new file mode 100644 index 000000000000..1b86f0f762c8 --- /dev/null +++ b/graphics/pokemon/minccino/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +80 48 56 +238 238 247 +240 192 184 +168 112 128 +216 160 168 +0 0 0 +137 117 107 +216 232 128 +47 46 47 +194 184 173 +149 140 143 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/minior/overworld.png b/graphics/pokemon/minior/overworld.png new file mode 100644 index 000000000000..b614804654d6 Binary files /dev/null and b/graphics/pokemon/minior/overworld.png differ diff --git a/graphics/pokemon/minior/overworld_normal.pal b/graphics/pokemon/minior/overworld_normal.pal new file mode 100644 index 000000000000..1ea08a76b96d --- /dev/null +++ b/graphics/pokemon/minior/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +245 245 245 +213 213 213 +237 165 165 +208 121 121 +161 87 87 +134 87 87 +117 75 75 +87 63 61 +72 72 72 +96 58 59 +70 42 43 +51 39 39 +31 31 31 +10 10 10 +0 0 0 diff --git a/graphics/pokemon/minior/overworld_shiny.pal b/graphics/pokemon/minior/overworld_shiny.pal new file mode 100644 index 000000000000..1ea08a76b96d --- /dev/null +++ b/graphics/pokemon/minior/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +245 245 245 +213 213 213 +237 165 165 +208 121 121 +161 87 87 +134 87 87 +117 75 75 +87 63 61 +72 72 72 +96 58 59 +70 42 43 +51 39 39 +31 31 31 +10 10 10 +0 0 0 diff --git a/graphics/pokemon/minun/overworld.png b/graphics/pokemon/minun/overworld.png new file mode 100644 index 000000000000..77fe911ef578 Binary files /dev/null and b/graphics/pokemon/minun/overworld.png differ diff --git a/graphics/pokemon/minun/overworld_normal.pal b/graphics/pokemon/minun/overworld_normal.pal new file mode 100644 index 000000000000..5f8fc3edacd9 --- /dev/null +++ b/graphics/pokemon/minun/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 80 120 +112 176 208 +80 128 160 +112 88 48 +248 224 136 +200 168 96 +168 136 104 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/minun/overworld_shiny.pal b/graphics/pokemon/minun/overworld_shiny.pal new file mode 100644 index 000000000000..041fd83659f7 --- /dev/null +++ b/graphics/pokemon/minun/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +0 0 0 +24 104 64 +112 200 160 +64 152 112 +112 88 48 +248 216 104 +192 168 64 +160 136 72 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/misdreavus/overworld.png b/graphics/pokemon/misdreavus/overworld.png new file mode 100644 index 000000000000..fbb6a2341b1a Binary files /dev/null and b/graphics/pokemon/misdreavus/overworld.png differ diff --git a/graphics/pokemon/misdreavus/overworld_normal.pal b/graphics/pokemon/misdreavus/overworld_normal.pal new file mode 100644 index 000000000000..de9938bb7f83 --- /dev/null +++ b/graphics/pokemon/misdreavus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 8 48 +192 64 128 +0 0 0 +32 48 88 +64 104 136 +32 80 96 +80 112 152 +104 128 160 +216 96 160 +224 176 40 +96 0 32 +176 120 0 +200 72 104 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/misdreavus/overworld_shiny.pal b/graphics/pokemon/misdreavus/overworld_shiny.pal new file mode 100644 index 000000000000..1b9716b3ab38 --- /dev/null +++ b/graphics/pokemon/misdreavus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 0 +192 128 0 +0 0 0 +32 48 8 +104 136 32 +64 88 24 +144 168 64 +168 184 104 +232 160 0 +224 176 40 +96 0 32 +176 120 0 +200 72 104 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/mismagius/overworld.png b/graphics/pokemon/mismagius/overworld.png new file mode 100644 index 000000000000..2660abd9336f Binary files /dev/null and b/graphics/pokemon/mismagius/overworld.png differ diff --git a/graphics/pokemon/mismagius/overworld_normal.pal b/graphics/pokemon/mismagius/overworld_normal.pal new file mode 100644 index 000000000000..dd818c3e8e18 --- /dev/null +++ b/graphics/pokemon/mismagius/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 32 56 +192 64 128 +104 32 80 +152 40 88 +0 0 0 +48 40 96 +96 80 144 +144 120 192 +224 176 40 +176 96 0 +72 32 48 +176 16 40 +216 80 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mismagius/overworld_shiny.pal b/graphics/pokemon/mismagius/overworld_shiny.pal new file mode 100644 index 000000000000..09edd6930eb1 --- /dev/null +++ b/graphics/pokemon/mismagius/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 48 +192 152 72 +80 64 0 +136 112 40 +0 0 0 +64 72 0 +144 152 40 +192 192 72 +224 176 40 +176 96 0 +72 32 48 +176 16 40 +216 80 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/moltres/galarian/overworld.png b/graphics/pokemon/moltres/galarian/overworld.png new file mode 100644 index 000000000000..87e93311a870 Binary files /dev/null and b/graphics/pokemon/moltres/galarian/overworld.png differ diff --git a/graphics/pokemon/moltres/galarian/overworld_normal.pal b/graphics/pokemon/moltres/galarian/overworld_normal.pal new file mode 100644 index 000000000000..ef0bee86ea90 --- /dev/null +++ b/graphics/pokemon/moltres/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +185 195 106 +0 0 0 +0 0 0 +61 0 25 +24 24 24 +56 56 56 +173 28 86 +235 88 147 +249 181 225 +120 200 248 +160 224 248 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/moltres/galarian/overworld_shiny.pal b/graphics/pokemon/moltres/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..ef0bee86ea90 --- /dev/null +++ b/graphics/pokemon/moltres/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +185 195 106 +0 0 0 +0 0 0 +61 0 25 +24 24 24 +56 56 56 +173 28 86 +235 88 147 +249 181 225 +120 200 248 +160 224 248 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/moltres/overworld.png b/graphics/pokemon/moltres/overworld.png new file mode 100644 index 000000000000..df9a412f110e Binary files /dev/null and b/graphics/pokemon/moltres/overworld.png differ diff --git a/graphics/pokemon/moltres/overworld_normal.pal b/graphics/pokemon/moltres/overworld_normal.pal new file mode 100644 index 000000000000..c289d6fa5b98 --- /dev/null +++ b/graphics/pokemon/moltres/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 24 40 +64 48 48 +232 72 48 +200 128 56 +248 136 32 +232 176 80 +0 0 0 +248 200 120 +248 184 32 +112 72 56 +176 176 208 +248 136 120 +232 232 248 +64 64 64 +184 112 96 diff --git a/graphics/pokemon/moltres/overworld_shiny.pal b/graphics/pokemon/moltres/overworld_shiny.pal new file mode 100644 index 000000000000..657e060567a0 --- /dev/null +++ b/graphics/pokemon/moltres/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 24 40 +64 48 48 +232 72 48 +200 128 176 +248 136 32 +232 176 192 +0 0 0 +248 216 216 +248 184 32 +112 72 56 +176 176 208 +248 136 120 +232 232 248 +64 64 64 +184 112 184 diff --git a/graphics/pokemon/monferno/overworld.png b/graphics/pokemon/monferno/overworld.png new file mode 100644 index 000000000000..2fa70c299bc8 Binary files /dev/null and b/graphics/pokemon/monferno/overworld.png differ diff --git a/graphics/pokemon/monferno/overworld_normal.pal b/graphics/pokemon/monferno/overworld_normal.pal new file mode 100644 index 000000000000..181360f006ee --- /dev/null +++ b/graphics/pokemon/monferno/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 40 +240 128 16 +0 0 0 +184 96 32 +128 88 56 +56 144 208 +248 232 168 +216 184 112 +144 24 24 +184 120 64 +240 56 40 +208 80 64 +232 232 248 +248 192 0 +152 152 152 diff --git a/graphics/pokemon/monferno/overworld_shiny.pal b/graphics/pokemon/monferno/overworld_shiny.pal new file mode 100644 index 000000000000..db2ab2e29e7a --- /dev/null +++ b/graphics/pokemon/monferno/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 56 40 +240 96 112 +0 0 0 +184 72 96 +120 56 80 +192 152 240 +248 248 184 +216 200 136 +144 24 24 +192 144 64 +240 56 40 +208 80 64 +232 232 248 +248 192 0 +152 152 152 diff --git a/graphics/pokemon/morelull/overworld.png b/graphics/pokemon/morelull/overworld.png new file mode 100644 index 000000000000..6d164768a690 Binary files /dev/null and b/graphics/pokemon/morelull/overworld.png differ diff --git a/graphics/pokemon/morelull/overworld_normal.pal b/graphics/pokemon/morelull/overworld_normal.pal new file mode 100644 index 000000000000..52cbf93f9338 --- /dev/null +++ b/graphics/pokemon/morelull/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 227 233 +245 210 217 +220 210 232 +242 196 206 +196 196 196 +191 196 122 +158 158 158 +171 152 193 +184 131 178 +146 150 89 +224 124 140 +120 120 120 +32 32 32 +0 0 0 +200 184 168 diff --git a/graphics/pokemon/morelull/overworld_shiny.pal b/graphics/pokemon/morelull/overworld_shiny.pal new file mode 100644 index 000000000000..87d1e9509a6d --- /dev/null +++ b/graphics/pokemon/morelull/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +176 112 64 +240 144 120 +220 210 232 +208 120 24 +196 196 196 +191 196 122 +158 158 158 +112 40 24 +176 112 64 +146 150 89 +112 56 24 +120 120 120 +32 32 32 +0 0 0 +200 184 168 diff --git a/graphics/pokemon/morgrem/overworld.png b/graphics/pokemon/morgrem/overworld.png new file mode 100644 index 000000000000..00e5eab9e347 Binary files /dev/null and b/graphics/pokemon/morgrem/overworld.png differ diff --git a/graphics/pokemon/morgrem/overworld_normal.pal b/graphics/pokemon/morgrem/overworld_normal.pal new file mode 100644 index 000000000000..6793ccae7f9f --- /dev/null +++ b/graphics/pokemon/morgrem/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 24 +8 8 16 +72 12 32 +60 60 96 +232 64 120 +0 0 0 +28 28 48 +200 36 92 +236 52 68 +252 252 252 +220 220 220 +0 204 128 +0 148 92 +0 40 24 +252 68 88 +0 0 0 diff --git a/graphics/pokemon/morgrem/overworld_shiny.pal b/graphics/pokemon/morgrem/overworld_shiny.pal new file mode 100644 index 000000000000..d91500fb4deb --- /dev/null +++ b/graphics/pokemon/morgrem/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 24 +24 24 24 +0 16 16 +213 213 213 +0 148 189 +0 0 0 +148 148 148 +0 115 148 +238 49 65 +255 255 255 +222 222 222 +156 90 148 +115 57 98 +41 24 41 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/morpeko/overworld.png b/graphics/pokemon/morpeko/overworld.png new file mode 100644 index 000000000000..84bf28d13c35 Binary files /dev/null and b/graphics/pokemon/morpeko/overworld.png differ diff --git a/graphics/pokemon/morpeko/overworld_normal.pal b/graphics/pokemon/morpeko/overworld_normal.pal new file mode 100644 index 000000000000..daf321c74827 --- /dev/null +++ b/graphics/pokemon/morpeko/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 24 +56 40 24 +40 40 40 +76 56 36 +72 68 28 +120 92 56 +72 72 72 +8 8 8 +144 120 56 +156 120 76 +244 200 44 +156 152 92 +248 216 104 +208 100 148 +248 228 148 +252 248 240 diff --git a/graphics/pokemon/morpeko/overworld_shiny.pal b/graphics/pokemon/morpeko/overworld_shiny.pal new file mode 100644 index 000000000000..96f94b6ee9ce --- /dev/null +++ b/graphics/pokemon/morpeko/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 41 24 +41 41 41 +74 57 32 +74 65 24 +123 90 57 +74 74 74 +8 8 8 +148 123 57 +156 123 74 +222 213 189 +156 156 90 +255 238 205 +213 98 156 +255 255 255 +255 255 255 diff --git a/graphics/pokemon/mothim/overworld.png b/graphics/pokemon/mothim/overworld.png new file mode 100644 index 000000000000..9bcf1b69500a Binary files /dev/null and b/graphics/pokemon/mothim/overworld.png differ diff --git a/graphics/pokemon/mothim/overworld_normal.pal b/graphics/pokemon/mothim/overworld_normal.pal new file mode 100644 index 000000000000..e76548ff3281 --- /dev/null +++ b/graphics/pokemon/mothim/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 56 8 +48 48 48 +248 128 40 +144 96 16 +96 96 96 +192 144 40 +136 136 136 +160 88 32 +64 48 40 +0 0 0 +200 200 200 +224 176 64 +72 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mothim/overworld_shiny.pal b/graphics/pokemon/mothim/overworld_shiny.pal new file mode 100644 index 000000000000..300a9fcc5aae --- /dev/null +++ b/graphics/pokemon/mothim/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 104 +48 48 48 +72 168 200 +88 96 104 +96 96 96 +192 144 40 +136 136 136 +24 120 152 +64 48 40 +0 0 0 +200 200 200 +224 176 64 +72 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mr_mime/galarian/overworld.png b/graphics/pokemon/mr_mime/galarian/overworld.png new file mode 100644 index 000000000000..122bda4a1306 Binary files /dev/null and b/graphics/pokemon/mr_mime/galarian/overworld.png differ diff --git a/graphics/pokemon/mr_mime/galarian/overworld_normal.pal b/graphics/pokemon/mr_mime/galarian/overworld_normal.pal new file mode 100644 index 000000000000..0166ba80d517 --- /dev/null +++ b/graphics/pokemon/mr_mime/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 44 44 +0 0 0 +15 20 29 +89 106 134 +59 49 48 +53 69 94 +175 154 153 +0 0 0 +246 226 225 +255 255 255 +57 57 57 +164 222 242 +190 190 190 +113 170 190 +104 104 104 +15 15 15 diff --git a/graphics/pokemon/mr_mime/galarian/overworld_shiny.pal b/graphics/pokemon/mr_mime/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..0166ba80d517 --- /dev/null +++ b/graphics/pokemon/mr_mime/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 44 44 +0 0 0 +15 20 29 +89 106 134 +59 49 48 +53 69 94 +175 154 153 +0 0 0 +246 226 225 +255 255 255 +57 57 57 +164 222 242 +190 190 190 +113 170 190 +104 104 104 +15 15 15 diff --git a/graphics/pokemon/mr_mime/overworld.png b/graphics/pokemon/mr_mime/overworld.png new file mode 100644 index 000000000000..b7b4f63e0412 Binary files /dev/null and b/graphics/pokemon/mr_mime/overworld.png differ diff --git a/graphics/pokemon/mr_mime/overworld_normal.pal b/graphics/pokemon/mr_mime/overworld_normal.pal new file mode 100644 index 000000000000..a57700229844 --- /dev/null +++ b/graphics/pokemon/mr_mime/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +72 48 56 +0 0 0 +48 96 112 +192 144 144 +240 192 200 +32 64 88 +200 200 232 +104 104 104 +232 232 248 +144 144 160 +168 104 120 +208 64 88 +144 64 80 +0 0 0 diff --git a/graphics/pokemon/mr_mime/overworld_shiny.pal b/graphics/pokemon/mr_mime/overworld_shiny.pal new file mode 100644 index 000000000000..bb272636b3fa --- /dev/null +++ b/graphics/pokemon/mr_mime/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +48 64 48 +0 0 0 +48 96 112 +192 144 144 +240 192 200 +32 64 88 +200 200 232 +104 104 104 +232 232 248 +144 144 160 +168 104 120 +128 176 80 +64 96 24 +0 0 0 diff --git a/graphics/pokemon/mr_rime/overworld.png b/graphics/pokemon/mr_rime/overworld.png new file mode 100644 index 000000000000..efbd7209844d Binary files /dev/null and b/graphics/pokemon/mr_rime/overworld.png differ diff --git a/graphics/pokemon/mr_rime/overworld_normal.pal b/graphics/pokemon/mr_rime/overworld_normal.pal new file mode 100644 index 000000000000..fe885aae93f2 --- /dev/null +++ b/graphics/pokemon/mr_rime/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 24 +40 36 56 +16 32 64 +76 76 104 +4 4 4 +148 72 96 +252 212 124 +196 112 144 +112 168 188 +72 136 236 +172 152 152 +188 188 188 +252 228 172 +164 220 240 +192 192 192 +252 244 244 diff --git a/graphics/pokemon/mr_rime/overworld_shiny.pal b/graphics/pokemon/mr_rime/overworld_shiny.pal new file mode 100644 index 000000000000..16fa3dd31dbd --- /dev/null +++ b/graphics/pokemon/mr_rime/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 32 49 +32 24 41 +90 74 98 +0 0 0 +148 106 106 +255 213 123 +197 164 164 +123 131 156 +139 123 164 +172 156 156 +189 189 189 +255 230 172 +222 222 238 +197 197 197 +255 246 246 diff --git a/graphics/pokemon/mudbray/overworld.png b/graphics/pokemon/mudbray/overworld.png new file mode 100644 index 000000000000..e6ba966949c4 Binary files /dev/null and b/graphics/pokemon/mudbray/overworld.png differ diff --git a/graphics/pokemon/mudbray/overworld_normal.pal b/graphics/pokemon/mudbray/overworld_normal.pal new file mode 100644 index 000000000000..b5a81889e807 --- /dev/null +++ b/graphics/pokemon/mudbray/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +226 222 222 +237 202 187 +237 162 140 +210 146 124 +180 127 106 +125 81 63 +107 67 55 +77 77 79 +52 52 52 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mudbray/overworld_shiny.pal b/graphics/pokemon/mudbray/overworld_shiny.pal new file mode 100644 index 000000000000..27d596c7af4b --- /dev/null +++ b/graphics/pokemon/mudbray/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +226 222 222 +237 202 187 +237 162 140 +210 146 124 +224 152 32 +144 56 16 +107 67 55 +24 72 128 +8 40 80 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mudkip/overworld.png b/graphics/pokemon/mudkip/overworld.png new file mode 100644 index 000000000000..cd56f362089e Binary files /dev/null and b/graphics/pokemon/mudkip/overworld.png differ diff --git a/graphics/pokemon/mudkip/overworld_normal.pal b/graphics/pokemon/mudkip/overworld_normal.pal new file mode 100644 index 000000000000..553601ec5b21 --- /dev/null +++ b/graphics/pokemon/mudkip/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 120 +0 0 0 +88 176 216 +72 136 176 +64 64 80 +72 56 16 +240 128 16 +232 232 248 +160 72 16 +112 104 144 +176 176 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mudkip/overworld_shiny.pal b/graphics/pokemon/mudkip/overworld_shiny.pal new file mode 100644 index 000000000000..351f36231c76 --- /dev/null +++ b/graphics/pokemon/mudkip/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 144 +0 0 0 +184 168 240 +136 128 192 +64 64 80 +72 56 16 +240 128 16 +232 232 248 +160 72 16 +224 152 0 +248 248 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mudsdale/overworld.png b/graphics/pokemon/mudsdale/overworld.png new file mode 100644 index 000000000000..6b531cb0381f Binary files /dev/null and b/graphics/pokemon/mudsdale/overworld.png differ diff --git a/graphics/pokemon/mudsdale/overworld_normal.pal b/graphics/pokemon/mudsdale/overworld_normal.pal new file mode 100644 index 000000000000..6d810916d7ce --- /dev/null +++ b/graphics/pokemon/mudsdale/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +166 177 182 +159 119 101 +225 111 90 +79 88 99 +181 87 69 +128 85 72 +64 65 82 +68 49 43 +48 49 59 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/mudsdale/overworld_shiny.pal b/graphics/pokemon/mudsdale/overworld_shiny.pal new file mode 100644 index 000000000000..46725de67500 --- /dev/null +++ b/graphics/pokemon/mudsdale/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +166 177 182 +248 168 32 +225 111 90 +24 72 128 +181 87 69 +184 112 16 +32 96 160 +68 49 43 +8 40 80 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/muk/alolan/overworld.png b/graphics/pokemon/muk/alolan/overworld.png new file mode 100644 index 000000000000..c5437e5ebdfc Binary files /dev/null and b/graphics/pokemon/muk/alolan/overworld.png differ diff --git a/graphics/pokemon/muk/alolan/overworld_normal.pal b/graphics/pokemon/muk/alolan/overworld_normal.pal new file mode 100644 index 000000000000..9ebda0dcdd3b --- /dev/null +++ b/graphics/pokemon/muk/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 74 45 +116 180 117 +102 142 91 +42 88 146 +0 0 0 +30 170 210 +26 148 183 +232 202 0 +113 194 255 +232 232 248 +217 88 210 +160 74 125 +255 255 0 +85 40 67 +74 114 69 diff --git a/graphics/pokemon/muk/alolan/overworld_shiny.pal b/graphics/pokemon/muk/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..c1e3f398843e --- /dev/null +++ b/graphics/pokemon/muk/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 56 64 +176 144 184 +120 96 152 +42 88 146 +0 0 0 +30 170 210 +26 148 183 +232 202 0 +113 194 255 +232 232 248 +217 88 210 +160 74 125 +255 255 0 +85 40 67 +104 80 120 diff --git a/graphics/pokemon/muk/overworld.png b/graphics/pokemon/muk/overworld.png new file mode 100644 index 000000000000..892e670a68e4 Binary files /dev/null and b/graphics/pokemon/muk/overworld.png differ diff --git a/graphics/pokemon/muk/overworld_normal.pal b/graphics/pokemon/muk/overworld_normal.pal new file mode 100644 index 000000000000..758e33481564 --- /dev/null +++ b/graphics/pokemon/muk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 64 +176 144 184 +120 96 152 +0 0 0 +128 104 136 +104 80 120 +200 176 216 +232 232 248 +96 72 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/muk/overworld_shiny.pal b/graphics/pokemon/muk/overworld_shiny.pal new file mode 100644 index 000000000000..9c379a865a3b --- /dev/null +++ b/graphics/pokemon/muk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 80 64 +168 184 136 +128 160 56 +0 0 0 +128 136 112 +96 112 32 +184 200 160 +232 232 248 +96 104 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/munchlax/overworld.png b/graphics/pokemon/munchlax/overworld.png new file mode 100644 index 000000000000..10ef0356fd73 Binary files /dev/null and b/graphics/pokemon/munchlax/overworld.png differ diff --git a/graphics/pokemon/munchlax/overworld_normal.pal b/graphics/pokemon/munchlax/overworld_normal.pal new file mode 100644 index 000000000000..e8cd7bd56bf1 --- /dev/null +++ b/graphics/pokemon/munchlax/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 48 +64 104 120 +0 0 0 +64 80 80 +80 128 144 +144 152 144 +232 232 248 +40 72 72 +248 200 120 +152 128 72 +192 168 104 +192 192 200 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/munchlax/overworld_shiny.pal b/graphics/pokemon/munchlax/overworld_shiny.pal new file mode 100644 index 000000000000..9f3925a28e94 --- /dev/null +++ b/graphics/pokemon/munchlax/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 48 +64 104 152 +0 0 0 +56 72 104 +80 128 232 +144 152 144 +232 232 248 +40 72 96 +248 200 120 +152 128 72 +192 168 104 +192 192 200 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/munna/overworld.png b/graphics/pokemon/munna/overworld.png new file mode 100644 index 000000000000..9dc20321457f Binary files /dev/null and b/graphics/pokemon/munna/overworld.png differ diff --git a/graphics/pokemon/munna/overworld_normal.pal b/graphics/pokemon/munna/overworld_normal.pal new file mode 100644 index 000000000000..0e68501d393a --- /dev/null +++ b/graphics/pokemon/munna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 224 224 +145 83 106 +232 182 200 +195 150 174 +195 150 174 +140 137 175 +240 214 237 +24 40 16 +238 238 247 +208 24 80 +225 112 161 +208 24 80 +145 83 106 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/munna/overworld_shiny.pal b/graphics/pokemon/munna/overworld_shiny.pal new file mode 100644 index 000000000000..04fb73d163e2 --- /dev/null +++ b/graphics/pokemon/munna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 224 224 +128 112 64 +232 224 128 +195 150 174 +192 176 104 +128 200 120 +248 248 248 +24 40 16 +238 238 247 +208 24 80 +240 136 208 +144 40 112 +145 83 106 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/murkrow/overworld.png b/graphics/pokemon/murkrow/overworld.png new file mode 100644 index 000000000000..c70c19ba2cbf Binary files /dev/null and b/graphics/pokemon/murkrow/overworld.png differ diff --git a/graphics/pokemon/murkrow/overworld_normal.pal b/graphics/pokemon/murkrow/overworld_normal.pal new file mode 100644 index 000000000000..6a4790eae2d7 --- /dev/null +++ b/graphics/pokemon/murkrow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +16 32 72 +72 88 136 +48 64 112 +32 48 96 +120 152 192 +112 88 8 +176 192 216 +200 56 48 +144 32 24 +184 136 24 +224 176 40 +232 232 248 +48 48 48 +0 0 0 diff --git a/graphics/pokemon/murkrow/overworld_shiny.pal b/graphics/pokemon/murkrow/overworld_shiny.pal new file mode 100644 index 000000000000..54e704e6ba07 --- /dev/null +++ b/graphics/pokemon/murkrow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 48 96 +168 112 184 +136 88 152 +112 64 128 +120 152 192 +112 88 8 +176 192 216 +200 56 48 +144 32 24 +184 136 24 +224 176 40 +232 232 248 +48 48 48 +0 0 0 diff --git a/graphics/pokemon/musharna/overworld.png b/graphics/pokemon/musharna/overworld.png new file mode 100644 index 000000000000..aef3207b7e1a Binary files /dev/null and b/graphics/pokemon/musharna/overworld.png differ diff --git a/graphics/pokemon/musharna/overworld_normal.pal b/graphics/pokemon/musharna/overworld_normal.pal new file mode 100644 index 000000000000..f1b11dd773e3 --- /dev/null +++ b/graphics/pokemon/musharna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +109 75 80 +145 83 106 +225 112 161 +175 112 140 +97 66 145 +42 47 74 +140 137 175 +134 96 184 +252 188 219 +247 207 182 +207 150 111 +0 0 0 +160 175 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/musharna/overworld_shiny.pal b/graphics/pokemon/musharna/overworld_shiny.pal new file mode 100644 index 000000000000..6b5ab82193c0 --- /dev/null +++ b/graphics/pokemon/musharna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +109 75 80 +112 56 128 +152 112 200 +175 112 140 +48 72 96 +42 47 74 +80 152 192 +64 120 192 +152 208 160 +248 176 192 +208 128 152 +0 0 0 +152 208 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/naganadel/overworld.png b/graphics/pokemon/naganadel/overworld.png new file mode 100644 index 000000000000..051a25cf6bdb Binary files /dev/null and b/graphics/pokemon/naganadel/overworld.png differ diff --git a/graphics/pokemon/naganadel/overworld_normal.pal b/graphics/pokemon/naganadel/overworld_normal.pal new file mode 100644 index 000000000000..cda63bdfd79e --- /dev/null +++ b/graphics/pokemon/naganadel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +221 215 223 +134 219 226 +148 142 150 +131 110 177 +222 74 155 +97 80 148 +156 52 141 +87 44 164 +56 48 75 +124 41 196 +96 38 83 +65 19 104 +51 26 104 +35 17 67 +0 0 0 diff --git a/graphics/pokemon/naganadel/overworld_shiny.pal b/graphics/pokemon/naganadel/overworld_shiny.pal new file mode 100644 index 000000000000..752a25bd1b26 --- /dev/null +++ b/graphics/pokemon/naganadel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +221 215 223 +134 219 226 +148 142 150 +248 208 24 +136 152 144 +152 80 16 +56 80 80 +80 96 88 +56 48 75 +136 152 144 +96 96 104 +48 64 64 +48 64 64 +35 17 67 +0 0 0 diff --git a/graphics/pokemon/natu/overworld.png b/graphics/pokemon/natu/overworld.png new file mode 100644 index 000000000000..8941c2402ac0 Binary files /dev/null and b/graphics/pokemon/natu/overworld.png differ diff --git a/graphics/pokemon/natu/overworld_normal.pal b/graphics/pokemon/natu/overworld_normal.pal new file mode 100644 index 000000000000..a2e624a97ced --- /dev/null +++ b/graphics/pokemon/natu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +120 16 32 +0 0 0 +216 72 88 +56 80 32 +104 160 72 +176 40 56 +128 192 112 +96 80 0 +48 48 48 +184 152 48 +232 232 248 +112 128 152 +240 208 96 +184 200 224 +64 80 104 diff --git a/graphics/pokemon/natu/overworld_shiny.pal b/graphics/pokemon/natu/overworld_shiny.pal new file mode 100644 index 000000000000..a8638a811f9c --- /dev/null +++ b/graphics/pokemon/natu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +120 64 16 +0 0 0 +216 120 88 +56 80 32 +136 160 48 +176 88 56 +160 200 112 +96 80 0 +48 48 48 +184 152 48 +232 232 248 +112 128 152 +240 208 96 +184 200 224 +64 80 104 diff --git a/graphics/pokemon/necrozma/dawn_wings/overworld.png b/graphics/pokemon/necrozma/dawn_wings/overworld.png new file mode 100644 index 000000000000..3bae5a72f9ae Binary files /dev/null and b/graphics/pokemon/necrozma/dawn_wings/overworld.png differ diff --git a/graphics/pokemon/necrozma/dawn_wings/overworld_normal.pal b/graphics/pokemon/necrozma/dawn_wings/overworld_normal.pal new file mode 100644 index 000000000000..098095747ee1 --- /dev/null +++ b/graphics/pokemon/necrozma/dawn_wings/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +1 1 1 +32 32 32 +130 197 247 +48 95 182 +66 74 80 +118 129 136 +48 48 48 +88 88 96 +189 240 244 +186 209 214 +97 151 233 +91 51 185 +254 254 254 +182 24 67 +254 170 211 diff --git a/graphics/pokemon/necrozma/dawn_wings/overworld_shiny.pal b/graphics/pokemon/necrozma/dawn_wings/overworld_shiny.pal new file mode 100644 index 000000000000..bfae4fe6f160 --- /dev/null +++ b/graphics/pokemon/necrozma/dawn_wings/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +1 1 1 +32 32 32 +237 118 151 +167 50 73 +66 74 80 +65 72 190 +48 48 48 +38 42 111 +233 182 196 +186 209 214 +224 73 115 +91 51 185 +254 254 254 +182 24 67 +254 170 211 diff --git a/graphics/pokemon/necrozma/dusk_mane/overworld.png b/graphics/pokemon/necrozma/dusk_mane/overworld.png new file mode 100644 index 000000000000..043918a9e5b2 Binary files /dev/null and b/graphics/pokemon/necrozma/dusk_mane/overworld.png differ diff --git a/graphics/pokemon/necrozma/dusk_mane/overworld_normal.pal b/graphics/pokemon/necrozma/dusk_mane/overworld_normal.pal new file mode 100644 index 000000000000..4dc13c3500ea --- /dev/null +++ b/graphics/pokemon/necrozma/dusk_mane/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +27 32 33 +43 50 51 +16 16 16 +43 50 51 +66 74 80 +243 207 85 +118 129 136 +137 112 75 +253 248 225 +174 98 0 +219 204 143 +24 240 19 +253 43 43 +43 50 51 +83 242 242 diff --git a/graphics/pokemon/necrozma/dusk_mane/overworld_shiny.pal b/graphics/pokemon/necrozma/dusk_mane/overworld_shiny.pal new file mode 100644 index 000000000000..be497e13a507 --- /dev/null +++ b/graphics/pokemon/necrozma/dusk_mane/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +10 11 36 +25 28 76 +16 16 16 +25 28 76 +38 42 111 +237 118 151 +65 72 190 +184 100 114 +250 218 223 +167 50 73 +233 182 196 +24 240 19 +253 43 43 +25 28 76 +83 242 242 diff --git a/graphics/pokemon/necrozma/overworld.png b/graphics/pokemon/necrozma/overworld.png new file mode 100644 index 000000000000..fe65b173a448 Binary files /dev/null and b/graphics/pokemon/necrozma/overworld.png differ diff --git a/graphics/pokemon/necrozma/overworld_normal.pal b/graphics/pokemon/necrozma/overworld_normal.pal new file mode 100644 index 000000000000..90bf8b29e132 --- /dev/null +++ b/graphics/pokemon/necrozma/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 247 247 +249 225 95 +210 210 210 +155 235 183 +186 186 186 +237 134 241 +155 169 235 +122 122 122 +245 108 108 +78 78 78 +60 59 59 +38 38 38 +28 28 28 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/necrozma/overworld_shiny.pal b/graphics/pokemon/necrozma/overworld_shiny.pal new file mode 100644 index 000000000000..65c5d3f05e79 --- /dev/null +++ b/graphics/pokemon/necrozma/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 247 247 +249 225 95 +210 210 210 +155 235 183 +32 40 104 +237 134 241 +155 169 235 +24 24 72 +245 108 108 +32 40 104 +24 24 72 +64 72 184 +28 28 28 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nickit/overworld.png b/graphics/pokemon/nickit/overworld.png new file mode 100644 index 000000000000..2b868637e5b4 Binary files /dev/null and b/graphics/pokemon/nickit/overworld.png differ diff --git a/graphics/pokemon/nickit/overworld_normal.pal b/graphics/pokemon/nickit/overworld_normal.pal new file mode 100644 index 000000000000..faa146c087fb --- /dev/null +++ b/graphics/pokemon/nickit/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 25 +8 8 7 +0 0 0 +52 51 48 +21 20 18 +121 53 31 +185 90 59 +36 14 7 +255 255 255 +210 184 61 +92 92 92 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nickit/overworld_shiny.pal b/graphics/pokemon/nickit/overworld_shiny.pal new file mode 100644 index 000000000000..50a8845599f9 --- /dev/null +++ b/graphics/pokemon/nickit/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 24 +0 0 0 +8 41 115 +0 16 74 +115 106 98 +164 148 139 +24 24 24 +255 255 255 +213 189 57 +90 90 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoking/overworld.png b/graphics/pokemon/nidoking/overworld.png new file mode 100644 index 000000000000..9755872d5012 Binary files /dev/null and b/graphics/pokemon/nidoking/overworld.png differ diff --git a/graphics/pokemon/nidoking/overworld_normal.pal b/graphics/pokemon/nidoking/overworld_normal.pal new file mode 100644 index 000000000000..7ece70c16abc --- /dev/null +++ b/graphics/pokemon/nidoking/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 48 80 +216 152 240 +152 104 160 +48 112 104 +24 168 152 +184 128 184 +160 160 160 +232 232 248 +88 24 24 +168 168 152 +240 232 224 +200 200 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoking/overworld_shiny.pal b/graphics/pokemon/nidoking/overworld_shiny.pal new file mode 100644 index 000000000000..05bc10e756f5 --- /dev/null +++ b/graphics/pokemon/nidoking/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +40 64 88 +104 200 248 +48 160 200 +104 48 8 +168 88 56 +96 176 240 +160 160 160 +232 232 248 +88 24 24 +168 152 152 +240 232 224 +200 200 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoqueen/overworld.png b/graphics/pokemon/nidoqueen/overworld.png new file mode 100644 index 000000000000..e6792eb29522 Binary files /dev/null and b/graphics/pokemon/nidoqueen/overworld.png differ diff --git a/graphics/pokemon/nidoqueen/overworld_normal.pal b/graphics/pokemon/nidoqueen/overworld_normal.pal new file mode 100644 index 000000000000..126361ae602a --- /dev/null +++ b/graphics/pokemon/nidoqueen/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 64 120 +168 200 240 +96 136 176 +168 96 48 +128 176 216 +88 64 48 +200 200 200 +232 232 248 +192 160 80 +96 40 24 +240 192 120 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoqueen/overworld_shiny.pal b/graphics/pokemon/nidoqueen/overworld_shiny.pal new file mode 100644 index 000000000000..09a3d2ba8d24 --- /dev/null +++ b/graphics/pokemon/nidoqueen/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 80 40 +192 208 96 +96 152 40 +168 96 48 +144 184 64 +88 64 48 +200 200 200 +232 232 248 +224 136 152 +96 40 24 +240 176 184 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoran_f/overworld.png b/graphics/pokemon/nidoran_f/overworld.png new file mode 100644 index 000000000000..a9657b4c5754 Binary files /dev/null and b/graphics/pokemon/nidoran_f/overworld.png differ diff --git a/graphics/pokemon/nidoran_f/overworld_normal.pal b/graphics/pokemon/nidoran_f/overworld_normal.pal new file mode 100644 index 000000000000..a16477056b97 --- /dev/null +++ b/graphics/pokemon/nidoran_f/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 88 72 +152 240 224 +88 168 136 +64 80 136 +0 0 0 +16 152 240 +232 232 248 +240 120 112 +160 32 16 +216 104 136 +160 80 104 +160 160 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoran_f/overworld_shiny.pal b/graphics/pokemon/nidoran_f/overworld_shiny.pal new file mode 100644 index 000000000000..56a71febd0c0 --- /dev/null +++ b/graphics/pokemon/nidoran_f/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 112 +184 176 248 +128 128 192 +40 96 88 +0 0 0 +88 136 64 +232 232 248 +240 120 112 +160 32 16 +216 104 136 +160 80 104 +160 160 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoran_m/overworld.png b/graphics/pokemon/nidoran_m/overworld.png new file mode 100644 index 000000000000..f03fdfe7ded9 Binary files /dev/null and b/graphics/pokemon/nidoran_m/overworld.png differ diff --git a/graphics/pokemon/nidoran_m/overworld_normal.pal b/graphics/pokemon/nidoran_m/overworld_normal.pal new file mode 100644 index 000000000000..9b5d39aa5a87 --- /dev/null +++ b/graphics/pokemon/nidoran_m/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 48 80 +216 152 240 +136 96 152 +0 0 0 +48 112 104 +24 168 152 +232 232 248 +184 24 8 +176 112 208 +192 64 104 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidoran_m/overworld_shiny.pal b/graphics/pokemon/nidoran_m/overworld_shiny.pal new file mode 100644 index 000000000000..7f0f15d9ee4f --- /dev/null +++ b/graphics/pokemon/nidoran_m/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 88 +160 200 240 +80 136 168 +0 0 0 +72 48 8 +136 104 0 +232 232 248 +160 32 16 +120 168 200 +192 64 104 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidorina/overworld.png b/graphics/pokemon/nidorina/overworld.png new file mode 100644 index 000000000000..9fc5626cafe3 Binary files /dev/null and b/graphics/pokemon/nidorina/overworld.png differ diff --git a/graphics/pokemon/nidorina/overworld_normal.pal b/graphics/pokemon/nidorina/overworld_normal.pal new file mode 100644 index 000000000000..96baf3c7e74d --- /dev/null +++ b/graphics/pokemon/nidorina/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +48 88 104 +0 0 0 +152 224 248 +112 192 224 +80 160 176 +48 96 136 +40 136 208 +232 232 248 +160 40 32 +240 160 152 +168 168 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidorina/overworld_shiny.pal b/graphics/pokemon/nidorina/overworld_shiny.pal new file mode 100644 index 000000000000..6a5df389b326 --- /dev/null +++ b/graphics/pokemon/nidorina/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +64 64 112 +0 0 0 +216 192 248 +184 168 232 +152 128 192 +40 96 88 +88 136 64 +232 232 248 +160 32 16 +240 120 112 +168 168 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidorino/overworld.png b/graphics/pokemon/nidorino/overworld.png new file mode 100644 index 000000000000..a79e2a3aaf99 Binary files /dev/null and b/graphics/pokemon/nidorino/overworld.png differ diff --git a/graphics/pokemon/nidorino/overworld_normal.pal b/graphics/pokemon/nidorino/overworld_normal.pal new file mode 100644 index 000000000000..18f4ee815f01 --- /dev/null +++ b/graphics/pokemon/nidorino/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 80 +0 0 0 +176 120 200 +216 152 240 +136 96 152 +48 112 104 +24 168 152 +176 176 192 +232 232 248 +184 24 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nidorino/overworld_shiny.pal b/graphics/pokemon/nidorino/overworld_shiny.pal new file mode 100644 index 000000000000..d7555a29908c --- /dev/null +++ b/graphics/pokemon/nidorino/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 88 +0 0 0 +120 160 208 +160 200 240 +80 120 168 +104 48 8 +168 88 56 +160 160 160 +232 232 248 +184 24 8 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nihilego/overworld.png b/graphics/pokemon/nihilego/overworld.png new file mode 100644 index 000000000000..b5b8597d2c3b Binary files /dev/null and b/graphics/pokemon/nihilego/overworld.png differ diff --git a/graphics/pokemon/nihilego/overworld_normal.pal b/graphics/pokemon/nihilego/overworld_normal.pal new file mode 100644 index 000000000000..2a5f126e79bb --- /dev/null +++ b/graphics/pokemon/nihilego/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +238 255 255 +222 246 255 +180 222 255 +131 213 255 +199 199 233 +172 172 222 +139 189 230 +148 148 189 +115 148 197 +124 124 175 +115 123 197 +70 114 137 +49 65 89 +56 61 68 +15 15 15 diff --git a/graphics/pokemon/nihilego/overworld_shiny.pal b/graphics/pokemon/nihilego/overworld_shiny.pal new file mode 100644 index 000000000000..18f3e689bb6a --- /dev/null +++ b/graphics/pokemon/nihilego/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 208 176 +240 232 216 +208 192 152 +248 216 56 +224 208 176 +208 192 152 +139 189 230 +200 176 128 +115 148 197 +124 124 175 +115 123 197 +168 96 16 +49 65 89 +56 61 68 +15 15 15 diff --git a/graphics/pokemon/nincada/overworld.png b/graphics/pokemon/nincada/overworld.png new file mode 100644 index 000000000000..f016e0dd1f4f Binary files /dev/null and b/graphics/pokemon/nincada/overworld.png differ diff --git a/graphics/pokemon/nincada/overworld_normal.pal b/graphics/pokemon/nincada/overworld_normal.pal new file mode 100644 index 000000000000..7ecacac90948 --- /dev/null +++ b/graphics/pokemon/nincada/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +96 88 112 +56 112 40 +232 232 248 +120 176 88 +184 176 192 +48 40 64 +152 144 160 +120 112 136 +88 144 64 +96 88 64 +0 0 0 +32 72 24 +144 128 88 +64 56 40 +0 0 0 diff --git a/graphics/pokemon/nincada/overworld_shiny.pal b/graphics/pokemon/nincada/overworld_shiny.pal new file mode 100644 index 000000000000..6b8c520f1c5a --- /dev/null +++ b/graphics/pokemon/nincada/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +128 96 48 +56 112 40 +248 248 192 +120 176 88 +248 200 80 +80 64 40 +224 168 64 +176 136 56 +88 144 64 +96 88 64 +0 0 0 +32 72 24 +144 128 88 +64 56 40 +0 0 0 diff --git a/graphics/pokemon/ninetales/alolan/overworld.png b/graphics/pokemon/ninetales/alolan/overworld.png new file mode 100644 index 000000000000..0abf5d6433ba Binary files /dev/null and b/graphics/pokemon/ninetales/alolan/overworld.png differ diff --git a/graphics/pokemon/ninetales/alolan/overworld_normal.pal b/graphics/pokemon/ninetales/alolan/overworld_normal.pal new file mode 100644 index 000000000000..9df83da2ecb1 --- /dev/null +++ b/graphics/pokemon/ninetales/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 97 163 +0 0 0 +162 212 235 +217 234 255 +232 240 255 +253 253 253 +86 153 192 +54 142 209 +116 195 227 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ninetales/alolan/overworld_shiny.pal b/graphics/pokemon/ninetales/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..dfb053a96177 --- /dev/null +++ b/graphics/pokemon/ninetales/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +91 74 138 +0 0 0 +178 178 219 +230 225 246 +241 237 250 +253 253 253 +112 109 169 +193 69 121 +140 142 202 +241 235 244 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ninetales/overworld.png b/graphics/pokemon/ninetales/overworld.png new file mode 100644 index 000000000000..4c9deb6873b3 Binary files /dev/null and b/graphics/pokemon/ninetales/overworld.png differ diff --git a/graphics/pokemon/ninetales/overworld_normal.pal b/graphics/pokemon/ninetales/overworld_normal.pal new file mode 100644 index 000000000000..577135efc5eb --- /dev/null +++ b/graphics/pokemon/ninetales/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 56 48 +232 216 152 +184 160 104 +144 112 72 +136 56 56 +248 168 0 +192 64 104 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ninetales/overworld_shiny.pal b/graphics/pokemon/ninetales/overworld_shiny.pal new file mode 100644 index 000000000000..ef406e511607 --- /dev/null +++ b/graphics/pokemon/ninetales/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +216 224 224 +168 168 208 +104 104 104 +136 56 56 +112 176 232 +192 64 104 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ninjask/overworld.png b/graphics/pokemon/ninjask/overworld.png new file mode 100644 index 000000000000..3a0d9bbcc573 Binary files /dev/null and b/graphics/pokemon/ninjask/overworld.png differ diff --git a/graphics/pokemon/ninjask/overworld_normal.pal b/graphics/pokemon/ninjask/overworld_normal.pal new file mode 100644 index 000000000000..7ff6154c1e00 --- /dev/null +++ b/graphics/pokemon/ninjask/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 72 +96 88 112 +0 0 0 +232 232 248 +200 200 200 +112 32 32 +144 96 16 +192 56 56 +232 192 48 +240 224 72 +192 144 64 +216 216 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ninjask/overworld_shiny.pal b/graphics/pokemon/ninjask/overworld_shiny.pal new file mode 100644 index 000000000000..0fedb11beef0 --- /dev/null +++ b/graphics/pokemon/ninjask/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 64 0 +144 120 32 +0 0 0 +232 232 248 +248 192 96 +112 32 32 +144 96 16 +192 56 56 +232 192 48 +240 224 72 +192 144 64 +248 240 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/noctowl/overworld.png b/graphics/pokemon/noctowl/overworld.png new file mode 100644 index 000000000000..c8942ec37950 Binary files /dev/null and b/graphics/pokemon/noctowl/overworld.png differ diff --git a/graphics/pokemon/noctowl/overworld_normal.pal b/graphics/pokemon/noctowl/overworld_normal.pal new file mode 100644 index 000000000000..8a1f15100fdb --- /dev/null +++ b/graphics/pokemon/noctowl/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 16 +128 96 80 +0 0 0 +224 216 160 +200 184 120 +96 72 56 +208 160 112 +184 136 96 +104 40 40 +224 168 168 +200 112 112 +168 184 208 +64 80 88 +168 48 48 +232 232 248 diff --git a/graphics/pokemon/noctowl/overworld_shiny.pal b/graphics/pokemon/noctowl/overworld_shiny.pal new file mode 100644 index 000000000000..e50163e37a3b --- /dev/null +++ b/graphics/pokemon/noctowl/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 56 +160 80 32 +0 0 0 +224 232 160 +200 200 120 +104 48 40 +208 192 112 +184 168 96 +104 40 40 +224 168 168 +200 112 112 +168 184 208 +64 80 88 +168 48 48 +232 232 248 diff --git a/graphics/pokemon/noibat/overworld.png b/graphics/pokemon/noibat/overworld.png new file mode 100644 index 000000000000..06ff494eb3d4 Binary files /dev/null and b/graphics/pokemon/noibat/overworld.png differ diff --git a/graphics/pokemon/noibat/overworld_normal.pal b/graphics/pokemon/noibat/overworld_normal.pal new file mode 100644 index 000000000000..4d386c5fb39a --- /dev/null +++ b/graphics/pokemon/noibat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +112 192 160 +16 16 16 +57 42 62 +118 82 132 +154 105 181 +207 165 235 +255 219 93 +206 153 90 +183 145 95 +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/noibat/overworld_shiny.pal b/graphics/pokemon/noibat/overworld_shiny.pal new file mode 100644 index 000000000000..fa84541d7690 --- /dev/null +++ b/graphics/pokemon/noibat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +112 192 160 +16 16 16 +38 71 61 +83 134 120 +118 180 163 +158 229 210 +255 219 93 +206 153 90 +183 145 95 +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/noivern/overworld.png b/graphics/pokemon/noivern/overworld.png new file mode 100644 index 000000000000..e37cbfaa44ea Binary files /dev/null and b/graphics/pokemon/noivern/overworld.png differ diff --git a/graphics/pokemon/noivern/overworld_normal.pal b/graphics/pokemon/noivern/overworld_normal.pal new file mode 100644 index 000000000000..b76a9dc38ce8 --- /dev/null +++ b/graphics/pokemon/noivern/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +112 192 160 +16 16 16 +44 40 40 +97 85 85 +161 124 188 +117 221 172 +98 158 116 +126 167 147 +151 31 25 +239 94 79 +255 241 103 +141 141 141 +218 220 220 +53 40 70 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/noivern/overworld_shiny.pal b/graphics/pokemon/noivern/overworld_shiny.pal new file mode 100644 index 000000000000..d544561af076 --- /dev/null +++ b/graphics/pokemon/noivern/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +57 92 64 +109 173 123 +91 49 68 +166 47 71 +91 49 68 +166 47 71 +91 49 68 +140 123 140 +179 180 180 +140 123 140 +179 180 180 +49 40 39 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nosepass/overworld.png b/graphics/pokemon/nosepass/overworld.png new file mode 100644 index 000000000000..d6b1e747b0d4 Binary files /dev/null and b/graphics/pokemon/nosepass/overworld.png differ diff --git a/graphics/pokemon/nosepass/overworld_normal.pal b/graphics/pokemon/nosepass/overworld_normal.pal new file mode 100644 index 000000000000..5193e6a24de6 --- /dev/null +++ b/graphics/pokemon/nosepass/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 96 +0 0 0 +112 176 232 +80 128 184 +64 88 136 +64 72 80 +40 48 56 +160 32 56 +208 48 72 +112 24 40 +16 32 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nosepass/overworld_shiny.pal b/graphics/pokemon/nosepass/overworld_shiny.pal new file mode 100644 index 000000000000..121eb6d451b2 --- /dev/null +++ b/graphics/pokemon/nosepass/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 80 24 +0 0 0 +208 184 112 +192 152 80 +160 120 56 +64 72 80 +40 48 56 +160 32 56 +208 48 72 +112 24 40 +56 32 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/numel/overworld.png b/graphics/pokemon/numel/overworld.png new file mode 100644 index 000000000000..38b5a2421d3b Binary files /dev/null and b/graphics/pokemon/numel/overworld.png differ diff --git a/graphics/pokemon/numel/overworld_normal.pal b/graphics/pokemon/numel/overworld_normal.pal new file mode 100644 index 000000000000..4838cb78e910 --- /dev/null +++ b/graphics/pokemon/numel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +240 216 88 +48 80 24 +216 184 72 +88 72 56 +136 200 64 +120 96 72 +184 144 56 +72 120 32 +104 160 48 +64 72 80 +216 224 184 +248 248 248 +176 184 136 +0 0 0 diff --git a/graphics/pokemon/numel/overworld_shiny.pal b/graphics/pokemon/numel/overworld_shiny.pal new file mode 100644 index 000000000000..e85a11f2c8e0 --- /dev/null +++ b/graphics/pokemon/numel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +224 224 176 +48 80 112 +192 192 144 +88 72 56 +136 200 224 +120 96 72 +168 160 128 +72 120 152 +104 160 192 +64 72 80 +216 224 184 +248 248 248 +176 184 136 +0 0 0 diff --git a/graphics/pokemon/nuzleaf/overworld.png b/graphics/pokemon/nuzleaf/overworld.png new file mode 100644 index 000000000000..220e6320736c Binary files /dev/null and b/graphics/pokemon/nuzleaf/overworld.png differ diff --git a/graphics/pokemon/nuzleaf/overworld_normal.pal b/graphics/pokemon/nuzleaf/overworld_normal.pal new file mode 100644 index 000000000000..e029d06670d5 --- /dev/null +++ b/graphics/pokemon/nuzleaf/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 56 8 +144 208 16 +64 104 8 +104 160 8 +0 0 0 +72 48 24 +160 112 48 +96 64 32 +120 80 40 +232 200 120 +88 72 8 +232 232 248 +160 136 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/nuzleaf/overworld_shiny.pal b/graphics/pokemon/nuzleaf/overworld_shiny.pal new file mode 100644 index 000000000000..76b413c7ccea --- /dev/null +++ b/graphics/pokemon/nuzleaf/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 56 8 +144 208 16 +64 104 8 +104 160 8 +0 0 0 +72 48 24 +128 88 72 +96 64 32 +104 64 56 +232 120 64 +88 48 8 +232 232 248 +160 88 48 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/obstagoon/overworld.png b/graphics/pokemon/obstagoon/overworld.png new file mode 100644 index 000000000000..8c2bca2f5853 Binary files /dev/null and b/graphics/pokemon/obstagoon/overworld.png differ diff --git a/graphics/pokemon/obstagoon/overworld_normal.pal b/graphics/pokemon/obstagoon/overworld_normal.pal new file mode 100644 index 000000000000..2a5419b3cd58 --- /dev/null +++ b/graphics/pokemon/obstagoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 25 +0 0 0 +35 35 35 +11 11 11 +19 19 19 +59 59 59 +208 208 208 +81 81 81 +168 168 168 +68 68 68 +99 99 99 +181 16 54 +148 148 148 +43 43 43 +124 124 124 +27 27 27 diff --git a/graphics/pokemon/obstagoon/overworld_shiny.pal b/graphics/pokemon/obstagoon/overworld_shiny.pal new file mode 100644 index 000000000000..d850097696ea --- /dev/null +++ b/graphics/pokemon/obstagoon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +156 16 57 +98 8 32 +197 24 74 +197 90 98 +213 213 213 +8 49 57 +172 172 172 +8 49 57 +32 115 139 +49 172 205 +74 172 197 +8 49 57 +49 139 164 +0 0 0 diff --git a/graphics/pokemon/octillery/overworld.png b/graphics/pokemon/octillery/overworld.png new file mode 100644 index 000000000000..6f21f35a6c81 Binary files /dev/null and b/graphics/pokemon/octillery/overworld.png differ diff --git a/graphics/pokemon/octillery/overworld_normal.pal b/graphics/pokemon/octillery/overworld_normal.pal new file mode 100644 index 000000000000..69eaefcada8c --- /dev/null +++ b/graphics/pokemon/octillery/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 104 16 +248 216 88 +88 8 8 +0 0 0 +200 88 72 +176 40 0 +136 24 0 +232 232 248 +152 160 176 +200 160 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/octillery/overworld_shiny.pal b/graphics/pokemon/octillery/overworld_shiny.pal new file mode 100644 index 000000000000..2942eb93c81a --- /dev/null +++ b/graphics/pokemon/octillery/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 104 16 +248 216 88 +64 48 8 +0 0 0 +208 168 64 +168 144 40 +128 104 16 +232 232 248 +152 160 176 +200 160 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/oddish/overworld.png b/graphics/pokemon/oddish/overworld.png new file mode 100644 index 000000000000..30d68bfe9f30 Binary files /dev/null and b/graphics/pokemon/oddish/overworld.png differ diff --git a/graphics/pokemon/oddish/overworld_normal.pal b/graphics/pokemon/oddish/overworld_normal.pal new file mode 100644 index 000000000000..929feadb480e --- /dev/null +++ b/graphics/pokemon/oddish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +40 72 72 +0 0 0 +56 112 64 +136 192 128 +16 160 48 +32 72 40 +64 112 152 +112 0 16 +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/oddish/overworld_shiny.pal b/graphics/pokemon/oddish/overworld_shiny.pal new file mode 100644 index 000000000000..14a0ae3eadf1 --- /dev/null +++ b/graphics/pokemon/oddish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +32 72 40 +0 0 0 +88 128 64 +184 208 128 +160 184 48 +32 72 40 +16 160 48 +112 0 16 +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/omanyte/overworld.png b/graphics/pokemon/omanyte/overworld.png new file mode 100644 index 000000000000..3fc090727e26 Binary files /dev/null and b/graphics/pokemon/omanyte/overworld.png differ diff --git a/graphics/pokemon/omanyte/overworld_normal.pal b/graphics/pokemon/omanyte/overworld_normal.pal new file mode 100644 index 000000000000..618b1acffcf7 --- /dev/null +++ b/graphics/pokemon/omanyte/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 56 +144 112 72 +176 152 104 +232 200 152 +0 0 0 +48 72 80 +232 232 248 +120 200 240 +72 168 216 +104 104 104 +56 128 160 +168 168 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/omanyte/overworld_shiny.pal b/graphics/pokemon/omanyte/overworld_shiny.pal new file mode 100644 index 000000000000..19bd4cc79f29 --- /dev/null +++ b/graphics/pokemon/omanyte/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 56 +144 112 72 +184 152 104 +248 192 152 +0 0 0 +80 56 112 +232 232 248 +216 192 248 +168 128 240 +104 104 104 +136 80 200 +168 168 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/omastar/overworld.png b/graphics/pokemon/omastar/overworld.png new file mode 100644 index 000000000000..dbc1bf40d454 Binary files /dev/null and b/graphics/pokemon/omastar/overworld.png differ diff --git a/graphics/pokemon/omastar/overworld_normal.pal b/graphics/pokemon/omastar/overworld_normal.pal new file mode 100644 index 000000000000..1cf029320da6 --- /dev/null +++ b/graphics/pokemon/omastar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 64 56 +232 224 184 +176 152 104 +232 200 152 +128 104 80 +48 64 72 +72 168 216 +56 128 160 +248 224 104 +120 200 240 +104 104 104 +200 144 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/omastar/overworld_shiny.pal b/graphics/pokemon/omastar/overworld_shiny.pal new file mode 100644 index 000000000000..dd8055f9ba81 --- /dev/null +++ b/graphics/pokemon/omastar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +80 64 48 +232 224 184 +176 152 96 +232 200 144 +128 104 72 +80 56 112 +168 128 240 +136 80 200 +248 224 104 +216 192 248 +104 104 104 +200 144 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/onix/overworld.png b/graphics/pokemon/onix/overworld.png new file mode 100644 index 000000000000..521bf80e1d5f Binary files /dev/null and b/graphics/pokemon/onix/overworld.png differ diff --git a/graphics/pokemon/onix/overworld_normal.pal b/graphics/pokemon/onix/overworld_normal.pal new file mode 100644 index 000000000000..a476b6606b59 --- /dev/null +++ b/graphics/pokemon/onix/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +144 144 144 +48 48 48 +192 192 192 +104 96 96 +128 128 128 +80 72 72 +232 232 248 +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/onix/overworld_shiny.pal b/graphics/pokemon/onix/overworld_shiny.pal new file mode 100644 index 000000000000..31db7daf66e6 --- /dev/null +++ b/graphics/pokemon/onix/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +176 160 80 +32 32 16 +208 192 96 +104 96 48 +136 128 64 +64 64 32 +232 232 248 +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/overworld.png b/graphics/pokemon/oranguru/overworld.png new file mode 100644 index 000000000000..dfa30ea19cb4 Binary files /dev/null and b/graphics/pokemon/oranguru/overworld.png differ diff --git a/graphics/pokemon/oranguru/overworld_normal.pal b/graphics/pokemon/oranguru/overworld_normal.pal new file mode 100644 index 000000000000..2355e1de4381 --- /dev/null +++ b/graphics/pokemon/oranguru/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +228 228 237 +206 206 215 +243 186 96 +170 170 174 +147 178 221 +234 157 30 +145 85 165 +78 78 78 +131 76 149 +107 62 122 +87 52 93 +56 55 55 +55 29 60 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/oranguru/overworld_shiny.pal b/graphics/pokemon/oranguru/overworld_shiny.pal new file mode 100644 index 000000000000..461244e2bea2 --- /dev/null +++ b/graphics/pokemon/oranguru/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +224 184 208 +206 206 215 +48 128 216 +176 136 160 +147 178 221 +120 192 208 +145 85 165 +78 78 78 +131 76 149 +107 62 122 +87 52 93 +56 55 55 +55 29 60 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/orbeetle/overworld.png b/graphics/pokemon/orbeetle/overworld.png new file mode 100644 index 000000000000..c5b3209d310b Binary files /dev/null and b/graphics/pokemon/orbeetle/overworld.png differ diff --git a/graphics/pokemon/orbeetle/overworld_normal.pal b/graphics/pokemon/orbeetle/overworld_normal.pal new file mode 100644 index 000000000000..b237f0d85d04 --- /dev/null +++ b/graphics/pokemon/orbeetle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +44 44 44 +80 16 16 +52 40 96 +172 20 24 +224 32 32 +148 104 8 +232 96 88 +252 176 12 +252 204 88 +72 64 128 +108 100 164 +80 212 188 +216 216 216 +208 240 236 +4 4 4 diff --git a/graphics/pokemon/orbeetle/overworld_shiny.pal b/graphics/pokemon/orbeetle/overworld_shiny.pal new file mode 100644 index 000000000000..fd4e30210f37 --- /dev/null +++ b/graphics/pokemon/orbeetle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +41 41 41 +24 16 41 +49 41 98 +106 90 148 +131 131 205 +65 57 57 +172 172 230 +148 115 123 +205 148 156 +74 65 131 +106 98 164 +82 213 189 +90 115 213 +213 246 238 +0 0 0 diff --git a/graphics/pokemon/oricorio/overworld.png b/graphics/pokemon/oricorio/overworld.png new file mode 100644 index 000000000000..900c5e9b95c6 Binary files /dev/null and b/graphics/pokemon/oricorio/overworld.png differ diff --git a/graphics/pokemon/oricorio/overworld_normal.pal b/graphics/pokemon/oricorio/overworld_normal.pal new file mode 100644 index 000000000000..ffb47e3bbc77 --- /dev/null +++ b/graphics/pokemon/oricorio/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +240 243 236 +246 190 194 +255 180 180 +208 87 119 +92 69 61 +159 64 88 +66 66 143 +238 55 60 +202 51 85 +60 50 46 +180 45 74 +178 40 45 +134 32 34 +96 21 35 +0 0 0 diff --git a/graphics/pokemon/oricorio/overworld_shiny.pal b/graphics/pokemon/oricorio/overworld_shiny.pal new file mode 100644 index 000000000000..f43e007a505e --- /dev/null +++ b/graphics/pokemon/oricorio/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +240 243 236 +246 190 194 +248 248 248 +208 87 119 +92 69 61 +159 64 88 +66 66 143 +112 96 96 +202 51 85 +60 50 46 +180 45 74 +80 72 72 +134 32 34 +48 40 40 +0 0 0 diff --git a/graphics/pokemon/oshawott/overworld.png b/graphics/pokemon/oshawott/overworld.png new file mode 100644 index 000000000000..55e4a2710684 Binary files /dev/null and b/graphics/pokemon/oshawott/overworld.png differ diff --git a/graphics/pokemon/oshawott/overworld_normal.pal b/graphics/pokemon/oshawott/overworld_normal.pal new file mode 100644 index 000000000000..20114cf4c334 --- /dev/null +++ b/graphics/pokemon/oshawott/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 72 +252 252 252 +41 76 102 +197 197 205 +0 0 0 +41 76 102 +136 114 87 +100 100 100 +197 197 205 +167 157 148 +34 159 167 +197 197 205 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/oshawott/overworld_shiny.pal b/graphics/pokemon/oshawott/overworld_shiny.pal new file mode 100644 index 000000000000..dbb08f80a3c8 --- /dev/null +++ b/graphics/pokemon/oshawott/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 72 +248 248 232 +37 69 81 +200 208 160 +0 0 0 +50 82 182 +183 109 96 +100 100 100 +197 197 205 +144 161 200 +93 135 210 +238 205 131 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/overqwil/overworld.png b/graphics/pokemon/overqwil/overworld.png new file mode 100644 index 000000000000..4472b4535af7 Binary files /dev/null and b/graphics/pokemon/overqwil/overworld.png differ diff --git a/graphics/pokemon/overqwil/overworld_normal.pal b/graphics/pokemon/overqwil/overworld_normal.pal new file mode 100644 index 000000000000..520959e080d8 --- /dev/null +++ b/graphics/pokemon/overqwil/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 32 98 +246 65 213 +156 74 205 +57 49 24 +0 0 0 +139 123 82 +189 180 148 +82 82 98 +65 65 74 +24 24 24 +238 238 255 +189 49 156 +156 139 82 +41 41 49 +90 82 41 diff --git a/graphics/pokemon/overqwil/overworld_shiny.pal b/graphics/pokemon/overqwil/overworld_shiny.pal new file mode 100644 index 000000000000..7e53de01d247 --- /dev/null +++ b/graphics/pokemon/overqwil/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 57 131 +98 90 164 +115 106 156 +131 123 98 +0 0 0 +230 222 205 +246 246 238 +189 189 189 +148 139 139 +24 24 24 +238 238 255 +189 49 156 +164 156 115 +41 41 49 +131 123 98 diff --git a/graphics/pokemon/pachirisu/overworld.png b/graphics/pokemon/pachirisu/overworld.png new file mode 100644 index 000000000000..7b285c7ec297 Binary files /dev/null and b/graphics/pokemon/pachirisu/overworld.png differ diff --git a/graphics/pokemon/pachirisu/overworld_normal.pal b/graphics/pokemon/pachirisu/overworld_normal.pal new file mode 100644 index 000000000000..9f90a41b3bc8 --- /dev/null +++ b/graphics/pokemon/pachirisu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 80 112 +120 160 216 +88 88 120 +176 176 208 +96 128 200 +0 0 0 +136 120 144 +232 232 248 +224 184 88 +184 144 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pachirisu/overworld_shiny.pal b/graphics/pokemon/pachirisu/overworld_shiny.pal new file mode 100644 index 000000000000..57159e928bef --- /dev/null +++ b/graphics/pokemon/pachirisu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 80 112 +232 160 216 +88 88 120 +176 176 208 +200 128 200 +0 0 0 +136 120 144 +232 232 248 +224 184 88 +184 144 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/palkia/origin/overworld.png b/graphics/pokemon/palkia/origin/overworld.png new file mode 100644 index 000000000000..e40c8c6a3f00 Binary files /dev/null and b/graphics/pokemon/palkia/origin/overworld.png differ diff --git a/graphics/pokemon/palkia/origin/overworld_normal.pal b/graphics/pokemon/palkia/origin/overworld_normal.pal new file mode 100644 index 000000000000..8a6f0c4ab8e6 --- /dev/null +++ b/graphics/pokemon/palkia/origin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +32 97 0 +0 0 0 +246 80 65 +172 161 180 +255 238 238 +246 161 156 +131 121 148 +16 16 16 +197 190 213 +246 194 189 +164 80 164 +205 137 197 +106 97 24 +222 218 246 +65 72 74 +82 80 90 diff --git a/graphics/pokemon/palkia/overworld.png b/graphics/pokemon/palkia/overworld.png new file mode 100644 index 000000000000..20739d71ff7a Binary files /dev/null and b/graphics/pokemon/palkia/overworld.png differ diff --git a/graphics/pokemon/palkia/overworld_normal.pal b/graphics/pokemon/palkia/overworld_normal.pal new file mode 100644 index 000000000000..aaa72bb70760 --- /dev/null +++ b/graphics/pokemon/palkia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 120 144 +80 80 88 +232 216 248 +208 192 216 +248 248 248 +168 160 176 +176 184 192 +200 216 232 +120 136 144 +16 16 16 +200 136 192 +240 80 64 +240 160 152 +160 80 160 +0 0 0 diff --git a/graphics/pokemon/palkia/overworld_shiny.pal b/graphics/pokemon/palkia/overworld_shiny.pal new file mode 100644 index 000000000000..e9b746a9352a --- /dev/null +++ b/graphics/pokemon/palkia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 152 160 +104 80 80 +248 216 240 +248 192 192 +248 248 248 +224 168 176 +176 184 192 +200 216 232 +120 136 144 +16 16 16 +200 112 144 +240 80 64 +240 160 152 +184 104 120 +0 0 0 diff --git a/graphics/pokemon/palossand/overworld.png b/graphics/pokemon/palossand/overworld.png new file mode 100644 index 000000000000..df83e1d7a5de Binary files /dev/null and b/graphics/pokemon/palossand/overworld.png differ diff --git a/graphics/pokemon/palossand/overworld_normal.pal b/graphics/pokemon/palossand/overworld_normal.pal new file mode 100644 index 000000000000..0bf0e0ba8815 --- /dev/null +++ b/graphics/pokemon/palossand/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +253 226 190 +247 174 105 +236 187 169 +149 182 186 +211 149 90 +198 138 83 +251 117 147 +247 95 91 +229 84 81 +179 123 74 +101 72 44 +165 61 59 +83 59 37 +63 45 28 +0 0 0 diff --git a/graphics/pokemon/palossand/overworld_shiny.pal b/graphics/pokemon/palossand/overworld_shiny.pal new file mode 100644 index 000000000000..fced791566b7 --- /dev/null +++ b/graphics/pokemon/palossand/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +253 226 190 +112 112 112 +48 168 224 +112 176 224 +72 72 72 +32 32 32 +232 168 192 +248 240 80 +208 176 0 +179 123 74 +16 16 16 +136 104 0 +32 32 32 +72 72 72 +0 0 0 diff --git a/graphics/pokemon/palpitoad/overworld.png b/graphics/pokemon/palpitoad/overworld.png new file mode 100644 index 000000000000..3be06ec27571 Binary files /dev/null and b/graphics/pokemon/palpitoad/overworld.png differ diff --git a/graphics/pokemon/palpitoad/overworld_normal.pal b/graphics/pokemon/palpitoad/overworld_normal.pal new file mode 100644 index 000000000000..4d5d03566cbd --- /dev/null +++ b/graphics/pokemon/palpitoad/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +89 89 87 +52 52 52 +100 198 193 +11 55 112 +25 32 46 +33 95 164 +5 138 208 +18 87 104 +191 147 121 +239 215 196 +138 79 63 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/palpitoad/overworld_shiny.pal b/graphics/pokemon/palpitoad/overworld_shiny.pal new file mode 100644 index 000000000000..46d834cac643 --- /dev/null +++ b/graphics/pokemon/palpitoad/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +96 96 94 +65 65 65 +188 99 24 +15 87 72 +38 39 41 +40 168 168 +8 192 208 +120 80 8 +222 196 194 +222 196 194 +96 96 94 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pancham/overworld.png b/graphics/pokemon/pancham/overworld.png new file mode 100644 index 000000000000..90d10d9bfa62 Binary files /dev/null and b/graphics/pokemon/pancham/overworld.png differ diff --git a/graphics/pokemon/pancham/overworld_normal.pal b/graphics/pokemon/pancham/overworld_normal.pal new file mode 100644 index 000000000000..6e404b00b4fd --- /dev/null +++ b/graphics/pokemon/pancham/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +249 243 213 +122 130 154 +40 41 45 +83 86 95 +170 171 164 +70 72 80 +251 254 255 +28 134 64 +3 199 19 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pancham/overworld_shiny.pal b/graphics/pokemon/pancham/overworld_shiny.pal new file mode 100644 index 000000000000..f58cc92953a2 --- /dev/null +++ b/graphics/pokemon/pancham/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +249 237 194 +129 85 71 +39 17 11 +98 55 42 +186 179 135 +170 171 164 +251 254 255 +28 134 64 +3 199 19 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pangoro/overworld.png b/graphics/pokemon/pangoro/overworld.png new file mode 100644 index 000000000000..a5ba7ae0e556 Binary files /dev/null and b/graphics/pokemon/pangoro/overworld.png differ diff --git a/graphics/pokemon/pangoro/overworld_normal.pal b/graphics/pokemon/pangoro/overworld_normal.pal new file mode 100644 index 000000000000..35ff7f5f1a28 --- /dev/null +++ b/graphics/pokemon/pangoro/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +46 47 48 +244 239 220 +182 181 168 +87 91 95 +132 136 140 +52 104 75 +75 169 118 +83 62 11 +183 181 168 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pangoro/overworld_shiny.pal b/graphics/pokemon/pangoro/overworld_shiny.pal new file mode 100644 index 000000000000..b8492d4ea265 --- /dev/null +++ b/graphics/pokemon/pangoro/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +60 37 31 +239 234 225 +189 179 161 +75 50 43 +119 84 71 +52 104 75 +75 169 118 +83 62 11 +189 179 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/panpour/overworld.png b/graphics/pokemon/panpour/overworld.png new file mode 100644 index 000000000000..e02358cf2dd6 Binary files /dev/null and b/graphics/pokemon/panpour/overworld.png differ diff --git a/graphics/pokemon/panpour/overworld_normal.pal b/graphics/pokemon/panpour/overworld_normal.pal new file mode 100644 index 000000000000..99ad9dc501d7 --- /dev/null +++ b/graphics/pokemon/panpour/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 57 115 +24 139 172 +41 180 222 +0 0 0 +156 230 238 +232 232 248 +205 164 90 +32 115 156 +82 82 82 +255 205 123 +115 82 32 +96 80 64 +24 139 172 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/panpour/overworld_shiny.pal b/graphics/pokemon/panpour/overworld_shiny.pal new file mode 100644 index 000000000000..b11114f76410 --- /dev/null +++ b/graphics/pokemon/panpour/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 104 116 +24 176 168 +24 216 184 +0 0 0 +200 232 248 +232 232 248 +205 164 90 +32 136 152 +82 82 82 +255 205 123 +115 82 32 +96 80 64 +24 139 172 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pansage/overworld.png b/graphics/pokemon/pansage/overworld.png new file mode 100644 index 000000000000..6addd12e2069 Binary files /dev/null and b/graphics/pokemon/pansage/overworld.png differ diff --git a/graphics/pokemon/pansage/overworld_normal.pal b/graphics/pokemon/pansage/overworld_normal.pal new file mode 100644 index 000000000000..26276f8fc549 --- /dev/null +++ b/graphics/pokemon/pansage/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 74 41 +8 115 49 +24 164 82 +8 115 49 +255 205 123 +0 0 0 +131 205 156 +232 232 248 +131 131 131 +205 164 90 +136 152 184 +96 80 64 +115 82 32 +205 164 90 +0 0 0 diff --git a/graphics/pokemon/pansage/overworld_shiny.pal b/graphics/pokemon/pansage/overworld_shiny.pal new file mode 100644 index 000000000000..3b498eaa0305 --- /dev/null +++ b/graphics/pokemon/pansage/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 74 41 +8 115 49 +80 176 48 +32 112 16 +248 224 120 +0 0 0 +128 208 64 +232 232 248 +131 131 131 +200 176 88 +136 152 184 +96 80 64 +115 82 32 +205 164 90 +0 0 0 diff --git a/graphics/pokemon/pansear/overworld.png b/graphics/pokemon/pansear/overworld.png new file mode 100644 index 000000000000..0962330b53fd Binary files /dev/null and b/graphics/pokemon/pansear/overworld.png differ diff --git a/graphics/pokemon/pansear/overworld_normal.pal b/graphics/pokemon/pansear/overworld_normal.pal new file mode 100644 index 000000000000..6b94eaeef367 --- /dev/null +++ b/graphics/pokemon/pansear/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 49 49 +0 0 0 +230 82 65 +189 65 57 +123 49 49 +246 148 65 +131 131 131 +205 164 90 +136 152 184 +232 232 248 +255 205 123 +96 80 64 +115 82 32 +205 164 90 +0 0 0 diff --git a/graphics/pokemon/pansear/overworld_shiny.pal b/graphics/pokemon/pansear/overworld_shiny.pal new file mode 100644 index 000000000000..6cfad8da8ae7 --- /dev/null +++ b/graphics/pokemon/pansear/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 64 16 +0 0 0 +248 128 32 +184 96 24 +123 49 49 +248 184 32 +131 131 131 +216 184 128 +136 152 184 +232 232 248 +248 216 160 +96 80 64 +115 82 32 +205 164 90 +0 0 0 diff --git a/graphics/pokemon/paras/overworld.png b/graphics/pokemon/paras/overworld.png new file mode 100644 index 000000000000..d3e8f893e751 Binary files /dev/null and b/graphics/pokemon/paras/overworld.png differ diff --git a/graphics/pokemon/paras/overworld_normal.pal b/graphics/pokemon/paras/overworld_normal.pal new file mode 100644 index 000000000000..89076990a5b0 --- /dev/null +++ b/graphics/pokemon/paras/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 24 +216 96 112 +224 160 40 +168 48 72 +0 0 0 +168 80 16 +248 112 24 +232 232 248 +168 168 168 +112 112 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/paras/overworld_shiny.pal b/graphics/pokemon/paras/overworld_shiny.pal new file mode 100644 index 000000000000..d2aeb4b21c45 --- /dev/null +++ b/graphics/pokemon/paras/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 24 +216 96 112 +224 160 40 +168 48 72 +0 0 0 +168 48 16 +248 72 24 +232 232 248 +168 168 168 +112 112 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/parasect/overworld.png b/graphics/pokemon/parasect/overworld.png new file mode 100644 index 000000000000..78cd7da4ec4d Binary files /dev/null and b/graphics/pokemon/parasect/overworld.png differ diff --git a/graphics/pokemon/parasect/overworld_normal.pal b/graphics/pokemon/parasect/overworld_normal.pal new file mode 100644 index 000000000000..b93ab4303f1e --- /dev/null +++ b/graphics/pokemon/parasect/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 24 +168 48 72 +216 96 112 +232 200 88 +224 160 32 +0 0 0 +248 112 24 +168 80 16 +168 168 168 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/parasect/overworld_shiny.pal b/graphics/pokemon/parasect/overworld_shiny.pal new file mode 100644 index 000000000000..8d6d542b4053 --- /dev/null +++ b/graphics/pokemon/parasect/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 24 +184 112 40 +208 152 72 +232 200 88 +224 160 32 +0 0 0 +248 152 24 +168 120 16 +168 168 168 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/passimian/overworld.png b/graphics/pokemon/passimian/overworld.png new file mode 100644 index 000000000000..268cf737b3ee Binary files /dev/null and b/graphics/pokemon/passimian/overworld.png differ diff --git a/graphics/pokemon/passimian/overworld_normal.pal b/graphics/pokemon/passimian/overworld_normal.pal new file mode 100644 index 000000000000..46b303a39861 --- /dev/null +++ b/graphics/pokemon/passimian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 250 243 +197 238 123 +192 193 175 +255 159 0 +156 180 98 +123 124 115 +89 83 76 +103 102 92 +21 187 111 +23 148 91 +10 111 65 +70 69 63 +62 75 30 +40 42 39 +0 0 0 diff --git a/graphics/pokemon/passimian/overworld_shiny.pal b/graphics/pokemon/passimian/overworld_shiny.pal new file mode 100644 index 000000000000..e5f70dbaf916 --- /dev/null +++ b/graphics/pokemon/passimian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 250 243 +240 173 29 +192 193 175 +156 110 12 +156 180 98 +123 124 115 +23 68 181 +115 115 64 +21 187 111 +23 148 91 +10 111 65 +70 69 63 +62 75 30 +40 42 39 +0 0 0 diff --git a/graphics/pokemon/patrat/overworld.png b/graphics/pokemon/patrat/overworld.png new file mode 100644 index 000000000000..ea2df04dc1ae Binary files /dev/null and b/graphics/pokemon/patrat/overworld.png differ diff --git a/graphics/pokemon/patrat/overworld_normal.pal b/graphics/pokemon/patrat/overworld_normal.pal new file mode 100644 index 000000000000..7ebea6fe937d --- /dev/null +++ b/graphics/pokemon/patrat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +73 48 40 +73 48 40 +0 0 0 +163 111 49 +47 46 47 +230 77 40 +246 207 78 +202 194 161 +202 194 161 +181 152 110 +238 238 247 +181 152 110 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/patrat/overworld_shiny.pal b/graphics/pokemon/patrat/overworld_shiny.pal new file mode 100644 index 000000000000..98d4b16f0e1b --- /dev/null +++ b/graphics/pokemon/patrat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 72 +16 16 16 +0 0 0 +136 120 96 +47 46 47 +48 152 240 +176 224 40 +202 194 161 +216 200 144 +181 152 110 +238 238 247 +192 168 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pawniard/overworld.png b/graphics/pokemon/pawniard/overworld.png new file mode 100644 index 000000000000..27aa6174b548 Binary files /dev/null and b/graphics/pokemon/pawniard/overworld.png differ diff --git a/graphics/pokemon/pawniard/overworld_normal.pal b/graphics/pokemon/pawniard/overworld_normal.pal new file mode 100644 index 000000000000..b8aff96f0dd5 --- /dev/null +++ b/graphics/pokemon/pawniard/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +229 229 247 +147 138 147 +87 0 0 +182 55 55 +129 25 18 +87 87 87 +55 55 71 +33 33 40 +227 129 55 +71 71 79 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pawniard/overworld_shiny.pal b/graphics/pokemon/pawniard/overworld_shiny.pal new file mode 100644 index 000000000000..a7e49ced50ee --- /dev/null +++ b/graphics/pokemon/pawniard/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +229 229 247 +147 138 147 +0 16 96 +64 80 184 +16 32 136 +96 96 96 +55 55 71 +40 40 48 +227 129 55 +71 71 79 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pelipper/overworld.png b/graphics/pokemon/pelipper/overworld.png new file mode 100644 index 000000000000..ddc45510ce5d Binary files /dev/null and b/graphics/pokemon/pelipper/overworld.png differ diff --git a/graphics/pokemon/pelipper/overworld_normal.pal b/graphics/pokemon/pelipper/overworld_normal.pal new file mode 100644 index 000000000000..a2644cf356bc --- /dev/null +++ b/graphics/pokemon/pelipper/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 72 112 +104 160 216 +0 0 0 +144 192 224 +80 80 88 +184 192 208 +232 232 248 +64 104 144 +80 136 168 +104 80 16 +136 136 152 +160 136 40 +200 176 56 +224 208 72 +136 104 24 diff --git a/graphics/pokemon/pelipper/overworld_shiny.pal b/graphics/pokemon/pelipper/overworld_shiny.pal new file mode 100644 index 000000000000..0490459872f2 --- /dev/null +++ b/graphics/pokemon/pelipper/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 64 8 +144 200 72 +0 0 0 +200 224 120 +80 80 88 +184 192 208 +232 232 248 +64 104 16 +112 168 32 +104 80 16 +136 136 152 +160 136 40 +200 176 56 +224 208 72 +136 104 24 diff --git a/graphics/pokemon/perrserker/overworld.png b/graphics/pokemon/perrserker/overworld.png new file mode 100644 index 000000000000..887026db09ef Binary files /dev/null and b/graphics/pokemon/perrserker/overworld.png differ diff --git a/graphics/pokemon/perrserker/overworld_normal.pal b/graphics/pokemon/perrserker/overworld_normal.pal new file mode 100644 index 000000000000..28de916843df --- /dev/null +++ b/graphics/pokemon/perrserker/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +10 10 10 +57 57 57 +32 32 32 +0 0 0 +116 117 116 +182 184 181 +68 68 68 +14 14 14 +225 130 65 +40 34 27 +193 177 161 +130 114 98 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/perrserker/overworld_shiny.pal b/graphics/pokemon/perrserker/overworld_shiny.pal new file mode 100644 index 000000000000..2ded41b99cfe --- /dev/null +++ b/graphics/pokemon/perrserker/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +8 8 8 +49 32 16 +32 32 32 +0 0 0 +139 90 49 +222 156 82 +65 65 65 +8 8 8 +255 255 255 +49 41 8 +255 238 106 +180 164 57 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/persian/alolan/overworld.png b/graphics/pokemon/persian/alolan/overworld.png new file mode 100644 index 000000000000..94b2269630c1 Binary files /dev/null and b/graphics/pokemon/persian/alolan/overworld.png differ diff --git a/graphics/pokemon/persian/alolan/overworld_normal.pal b/graphics/pokemon/persian/alolan/overworld_normal.pal new file mode 100644 index 000000000000..87d03a1ce5a9 --- /dev/null +++ b/graphics/pokemon/persian/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +85 80 97 +210 211 239 +160 146 168 +0 0 0 +142 129 149 +69 86 114 +44 180 228 +232 232 248 +253 253 253 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/persian/alolan/overworld_shiny.pal b/graphics/pokemon/persian/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..92c9678cf48d --- /dev/null +++ b/graphics/pokemon/persian/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +58 52 83 +146 153 224 +103 108 152 +0 0 0 +142 129 149 +69 86 114 +44 180 228 +232 232 248 +253 253 253 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/persian/overworld.png b/graphics/pokemon/persian/overworld.png new file mode 100644 index 000000000000..5d4af3cc5e17 Binary files /dev/null and b/graphics/pokemon/persian/overworld.png differ diff --git a/graphics/pokemon/persian/overworld_normal.pal b/graphics/pokemon/persian/overworld_normal.pal new file mode 100644 index 000000000000..cb528441bf38 --- /dev/null +++ b/graphics/pokemon/persian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 24 +240 216 128 +144 128 72 +0 0 0 +64 56 48 +192 168 120 +144 104 80 +184 64 112 +232 232 248 +104 8 40 +160 128 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/persian/overworld_shiny.pal b/graphics/pokemon/persian/overworld_shiny.pal new file mode 100644 index 000000000000..579e732fea27 --- /dev/null +++ b/graphics/pokemon/persian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 56 +240 224 168 +144 136 104 +0 0 0 +64 56 48 +192 184 144 +152 88 128 +184 64 112 +232 232 248 +104 8 40 +160 120 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/petilil/overworld.png b/graphics/pokemon/petilil/overworld.png new file mode 100644 index 000000000000..1ece1481dad5 Binary files /dev/null and b/graphics/pokemon/petilil/overworld.png differ diff --git a/graphics/pokemon/petilil/overworld_normal.pal b/graphics/pokemon/petilil/overworld_normal.pal new file mode 100644 index 000000000000..0e977288db24 --- /dev/null +++ b/graphics/pokemon/petilil/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 128 16 +92 224 48 +47 46 47 +74 176 49 +109 101 43 +184 200 64 +184 200 64 +214 234 140 +198 196 235 +143 168 0 +238 238 247 +141 49 50 +64 128 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/petilil/overworld_shiny.pal b/graphics/pokemon/petilil/overworld_shiny.pal new file mode 100644 index 000000000000..783841bf40da --- /dev/null +++ b/graphics/pokemon/petilil/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 104 16 +104 192 56 +47 46 47 +88 144 32 +109 101 43 +168 160 48 +184 200 64 +232 224 120 +198 196 235 +154 146 44 +238 238 247 +141 49 50 +64 128 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/phanpy/overworld.png b/graphics/pokemon/phanpy/overworld.png new file mode 100644 index 000000000000..49f93d5b45dc Binary files /dev/null and b/graphics/pokemon/phanpy/overworld.png differ diff --git a/graphics/pokemon/phanpy/overworld_normal.pal b/graphics/pokemon/phanpy/overworld_normal.pal new file mode 100644 index 000000000000..9bd5ef772383 --- /dev/null +++ b/graphics/pokemon/phanpy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +32 56 104 +16 16 16 +136 176 208 +80 128 176 +208 48 48 +152 32 32 +248 248 248 +88 8 8 +184 200 216 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/phanpy/overworld_shiny.pal b/graphics/pokemon/phanpy/overworld_shiny.pal new file mode 100644 index 000000000000..5d8160680a48 --- /dev/null +++ b/graphics/pokemon/phanpy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +56 72 112 +16 16 16 +184 200 216 +128 168 208 +208 48 48 +152 32 32 +248 248 248 +88 8 8 +184 200 216 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/phantump/overworld.png b/graphics/pokemon/phantump/overworld.png new file mode 100644 index 000000000000..faea977e9219 Binary files /dev/null and b/graphics/pokemon/phantump/overworld.png differ diff --git a/graphics/pokemon/phantump/overworld_normal.pal b/graphics/pokemon/phantump/overworld_normal.pal new file mode 100644 index 000000000000..77898c1846d7 --- /dev/null +++ b/graphics/pokemon/phantump/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +25 59 31 +50 29 18 +16 16 16 +67 41 27 +58 130 58 +88 79 74 +198 164 110 +155 123 85 +47 42 41 +122 85 60 +229 125 157 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/phantump/overworld_shiny.pal b/graphics/pokemon/phantump/overworld_shiny.pal new file mode 100644 index 000000000000..e13722f4a591 --- /dev/null +++ b/graphics/pokemon/phantump/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +81 30 25 +51 54 50 +16 16 16 +51 54 50 +203 76 63 +88 79 74 +191 196 187 +124 129 123 +47 42 41 +81 85 79 +142 177 223 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pheromosa/overworld.png b/graphics/pokemon/pheromosa/overworld.png new file mode 100644 index 000000000000..3c17ba622e6c Binary files /dev/null and b/graphics/pokemon/pheromosa/overworld.png differ diff --git a/graphics/pokemon/pheromosa/overworld_normal.pal b/graphics/pokemon/pheromosa/overworld_normal.pal new file mode 100644 index 000000000000..1cc4c5577a0e --- /dev/null +++ b/graphics/pokemon/pheromosa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +46 186 64 +0 0 0 +82 82 82 +255 255 255 +148 148 131 +187 187 187 +119 119 119 +233 233 233 +230 213 139 +211 189 147 +172 156 98 +49 49 49 +243 241 235 +55 44 90 +168 40 192 +40 152 224 diff --git a/graphics/pokemon/pheromosa/overworld_shiny.pal b/graphics/pokemon/pheromosa/overworld_shiny.pal new file mode 100644 index 000000000000..166e2ca0b35e --- /dev/null +++ b/graphics/pokemon/pheromosa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +46 186 64 +0 0 0 +48 56 56 +255 255 255 +148 148 131 +187 187 187 +72 88 88 +233 233 233 +208 208 208 +72 88 88 +96 104 112 +49 49 49 +243 241 235 +55 44 90 +168 40 192 +40 152 224 diff --git a/graphics/pokemon/phione/overworld.png b/graphics/pokemon/phione/overworld.png new file mode 100644 index 000000000000..2a66fefecbff Binary files /dev/null and b/graphics/pokemon/phione/overworld.png differ diff --git a/graphics/pokemon/phione/overworld_normal.pal b/graphics/pokemon/phione/overworld_normal.pal new file mode 100644 index 000000000000..f9aa03406be5 --- /dev/null +++ b/graphics/pokemon/phione/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 72 160 +80 128 232 +0 0 0 +128 160 240 +176 200 248 +64 64 64 +16 112 176 +232 232 248 +64 96 200 +192 64 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/phione/overworld_shiny.pal b/graphics/pokemon/phione/overworld_shiny.pal new file mode 100644 index 000000000000..7283e7fc105f --- /dev/null +++ b/graphics/pokemon/phione/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 112 128 +56 176 232 +0 0 0 +96 200 240 +176 200 248 +64 64 64 +8 136 176 +232 232 248 +48 168 200 +192 144 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pichu/overworld.png b/graphics/pokemon/pichu/overworld.png new file mode 100644 index 000000000000..6384dc22517a Binary files /dev/null and b/graphics/pokemon/pichu/overworld.png differ diff --git a/graphics/pokemon/pichu/overworld_normal.pal b/graphics/pokemon/pichu/overworld_normal.pal new file mode 100644 index 000000000000..6c8a5df97879 --- /dev/null +++ b/graphics/pokemon/pichu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +48 48 48 +248 216 104 +96 88 40 +192 168 64 +232 232 248 +224 120 160 +192 80 136 +144 120 56 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pichu/overworld_shiny.pal b/graphics/pokemon/pichu/overworld_shiny.pal new file mode 100644 index 000000000000..7738ce634c18 --- /dev/null +++ b/graphics/pokemon/pichu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +48 48 48 +248 200 0 +96 64 40 +240 136 0 +232 232 248 +216 88 64 +224 40 0 +184 88 0 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pichu/spiky_eared/overworld.png b/graphics/pokemon/pichu/spiky_eared/overworld.png new file mode 100644 index 000000000000..7208db510850 Binary files /dev/null and b/graphics/pokemon/pichu/spiky_eared/overworld.png differ diff --git a/graphics/pokemon/pichu/spiky_eared/overworld_normal.pal b/graphics/pokemon/pichu/spiky_eared/overworld_normal.pal new file mode 100644 index 000000000000..13b7044ab4c1 --- /dev/null +++ b/graphics/pokemon/pichu/spiky_eared/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +48 48 48 +248 216 104 +96 88 40 +192 168 64 +144 120 56 +232 232 248 +224 120 160 +192 80 136 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pichu/spiky_eared/overworld_shiny.pal b/graphics/pokemon/pichu/spiky_eared/overworld_shiny.pal new file mode 100644 index 000000000000..2e1acabeb8b5 --- /dev/null +++ b/graphics/pokemon/pichu/spiky_eared/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 64 64 +48 48 48 +248 200 0 +96 64 40 +240 136 0 +184 88 0 +232 232 248 +216 88 64 +224 40 0 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidgeot/overworld.png b/graphics/pokemon/pidgeot/overworld.png new file mode 100644 index 000000000000..a918b8ce1ae9 Binary files /dev/null and b/graphics/pokemon/pidgeot/overworld.png differ diff --git a/graphics/pokemon/pidgeot/overworld_normal.pal b/graphics/pokemon/pidgeot/overworld_normal.pal new file mode 100644 index 000000000000..000c8125049d --- /dev/null +++ b/graphics/pokemon/pidgeot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 24 +232 136 0 +144 88 48 +248 192 48 +208 112 40 +240 208 112 +192 152 64 +0 0 0 +200 72 32 +224 112 112 +128 24 112 +240 104 224 +232 232 248 +160 160 160 +176 64 96 diff --git a/graphics/pokemon/pidgeot/overworld_shiny.pal b/graphics/pokemon/pidgeot/overworld_shiny.pal new file mode 100644 index 000000000000..fcbef2a8ad90 --- /dev/null +++ b/graphics/pokemon/pidgeot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 24 +232 136 0 +144 128 48 +248 192 48 +208 160 40 +248 216 136 +208 176 112 +0 0 0 +232 136 0 +248 192 48 +128 80 80 +240 176 96 +232 232 248 +160 160 160 +176 64 96 diff --git a/graphics/pokemon/pidgeotto/overworld.png b/graphics/pokemon/pidgeotto/overworld.png new file mode 100644 index 000000000000..af229ff1b34d Binary files /dev/null and b/graphics/pokemon/pidgeotto/overworld.png differ diff --git a/graphics/pokemon/pidgeotto/overworld_normal.pal b/graphics/pokemon/pidgeotto/overworld_normal.pal new file mode 100644 index 000000000000..efbf3d6d17d9 --- /dev/null +++ b/graphics/pokemon/pidgeotto/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +200 72 32 +0 0 0 +224 112 112 +176 80 32 +240 208 112 +192 152 64 +208 128 32 +160 32 160 +232 232 248 +152 152 152 +240 136 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidgeotto/overworld_shiny.pal b/graphics/pokemon/pidgeotto/overworld_shiny.pal new file mode 100644 index 000000000000..70e760e9da25 --- /dev/null +++ b/graphics/pokemon/pidgeotto/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 72 +248 144 0 +0 0 0 +248 200 72 +144 144 72 +224 208 168 +184 168 128 +168 176 128 +200 72 32 +232 232 248 +152 152 152 +248 144 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidgey/overworld.png b/graphics/pokemon/pidgey/overworld.png new file mode 100644 index 000000000000..3cb825fe501a Binary files /dev/null and b/graphics/pokemon/pidgey/overworld.png differ diff --git a/graphics/pokemon/pidgey/overworld_normal.pal b/graphics/pokemon/pidgey/overworld_normal.pal new file mode 100644 index 000000000000..8b05a034ff3d --- /dev/null +++ b/graphics/pokemon/pidgey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +240 208 112 +200 112 32 +184 88 32 +192 152 64 +0 0 0 +232 232 248 +152 56 96 +216 144 176 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidgey/overworld_shiny.pal b/graphics/pokemon/pidgey/overworld_shiny.pal new file mode 100644 index 000000000000..ef1db93a7a65 --- /dev/null +++ b/graphics/pokemon/pidgey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 88 32 +240 208 112 +200 184 32 +152 152 40 +192 152 64 +0 0 0 +232 232 248 +112 96 0 +248 200 72 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidove/overworld.png b/graphics/pokemon/pidove/overworld.png new file mode 100644 index 000000000000..b55a13e39010 Binary files /dev/null and b/graphics/pokemon/pidove/overworld.png differ diff --git a/graphics/pokemon/pidove/overworld_normal.pal b/graphics/pokemon/pidove/overworld_normal.pal new file mode 100644 index 000000000000..704bb5f94638 --- /dev/null +++ b/graphics/pokemon/pidove/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +55 55 55 +55 55 55 +88 88 88 +172 172 172 +128 128 128 +48 48 48 +248 152 152 +248 248 248 +248 184 40 +184 96 96 +128 128 128 +172 172 172 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pidove/overworld_shiny.pal b/graphics/pokemon/pidove/overworld_shiny.pal new file mode 100644 index 000000000000..3e184b75a563 --- /dev/null +++ b/graphics/pokemon/pidove/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +55 55 55 +32 48 96 +64 80 120 +200 200 208 +176 184 184 +48 48 48 +248 152 152 +248 248 248 +248 136 32 +184 96 96 +128 128 128 +172 172 172 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pignite/overworld.png b/graphics/pokemon/pignite/overworld.png new file mode 100644 index 000000000000..9ea0862b2d49 Binary files /dev/null and b/graphics/pokemon/pignite/overworld.png differ diff --git a/graphics/pokemon/pignite/overworld_normal.pal b/graphics/pokemon/pignite/overworld_normal.pal new file mode 100644 index 000000000000..5cf1ee3ef0e5 --- /dev/null +++ b/graphics/pokemon/pignite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +0 0 0 +82 49 41 +57 37 37 +189 90 49 +123 57 41 +232 106 43 +210 182 96 +24 32 40 +83 79 60 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pignite/overworld_shiny.pal b/graphics/pokemon/pignite/overworld_shiny.pal new file mode 100644 index 000000000000..21a321291465 --- /dev/null +++ b/graphics/pokemon/pignite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +0 0 0 +48 56 72 +42 48 55 +120 104 240 +101 69 51 +232 160 32 +204 156 214 +42 48 55 +48 56 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pikachu/overworld.png b/graphics/pokemon/pikachu/overworld.png new file mode 100644 index 000000000000..c1389cdce324 Binary files /dev/null and b/graphics/pokemon/pikachu/overworld.png differ diff --git a/graphics/pokemon/pikachu/overworld_normal.pal b/graphics/pokemon/pikachu/overworld_normal.pal new file mode 100644 index 000000000000..36deaad99d35 --- /dev/null +++ b/graphics/pokemon/pikachu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 48 48 +248 208 80 +112 80 56 +152 112 56 +200 160 64 +232 232 248 +200 88 56 +144 56 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pikachu/overworld_shiny.pal b/graphics/pokemon/pikachu/overworld_shiny.pal new file mode 100644 index 000000000000..f62dd068ce68 --- /dev/null +++ b/graphics/pokemon/pikachu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 48 48 +248 168 40 +136 80 56 +192 80 48 +224 120 64 +232 232 248 +200 88 56 +144 56 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pikipek/overworld.png b/graphics/pokemon/pikipek/overworld.png new file mode 100644 index 000000000000..9739fabeed70 Binary files /dev/null and b/graphics/pokemon/pikipek/overworld.png differ diff --git a/graphics/pokemon/pikipek/overworld_normal.pal b/graphics/pokemon/pikipek/overworld_normal.pal new file mode 100644 index 000000000000..299efed97648 --- /dev/null +++ b/graphics/pokemon/pikipek/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +141 141 141 +49 178 247 +43 118 191 +109 109 109 +99 99 99 +242 86 89 +53 51 51 +140 42 48 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pikipek/overworld_shiny.pal b/graphics/pokemon/pikipek/overworld_shiny.pal new file mode 100644 index 000000000000..55fdc0eccb81 --- /dev/null +++ b/graphics/pokemon/pikipek/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +141 141 141 +56 192 72 +47 161 60 +109 109 109 +72 88 80 +248 64 120 +40 48 40 +140 42 48 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/piloswine/overworld.png b/graphics/pokemon/piloswine/overworld.png new file mode 100644 index 000000000000..d063c3da8b1f Binary files /dev/null and b/graphics/pokemon/piloswine/overworld.png differ diff --git a/graphics/pokemon/piloswine/overworld_normal.pal b/graphics/pokemon/piloswine/overworld_normal.pal new file mode 100644 index 000000000000..c8f0d9fb48ca --- /dev/null +++ b/graphics/pokemon/piloswine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 40 8 +176 128 88 +152 104 64 +0 0 0 +120 72 48 +232 136 160 +200 96 112 +144 40 64 +48 48 64 +168 184 208 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/piloswine/overworld_shiny.pal b/graphics/pokemon/piloswine/overworld_shiny.pal new file mode 100644 index 000000000000..6709eb7cc8c9 --- /dev/null +++ b/graphics/pokemon/piloswine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 8 +208 192 144 +192 144 80 +0 0 0 +144 112 64 +232 136 160 +200 96 112 +144 40 64 +48 48 64 +168 184 208 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pincurchin/overworld.png b/graphics/pokemon/pincurchin/overworld.png new file mode 100644 index 000000000000..ebbd4b26de11 Binary files /dev/null and b/graphics/pokemon/pincurchin/overworld.png differ diff --git a/graphics/pokemon/pincurchin/overworld_normal.pal b/graphics/pokemon/pincurchin/overworld_normal.pal new file mode 100644 index 000000000000..abc7bfd925ad --- /dev/null +++ b/graphics/pokemon/pincurchin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +17 11 17 +147 129 116 +46 33 47 +0 0 0 +78 59 81 +89 67 7 +252 202 61 +255 219 116 +252 198 46 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pincurchin/overworld_shiny.pal b/graphics/pokemon/pincurchin/overworld_shiny.pal new file mode 100644 index 000000000000..4f93c6b7800f --- /dev/null +++ b/graphics/pokemon/pincurchin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +8 8 8 +148 131 115 +24 24 24 +0 0 0 +65 57 65 +90 49 8 +255 197 41 +255 139 41 +213 106 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pineco/overworld.png b/graphics/pokemon/pineco/overworld.png new file mode 100644 index 000000000000..2107344189a5 Binary files /dev/null and b/graphics/pokemon/pineco/overworld.png differ diff --git a/graphics/pokemon/pineco/overworld_normal.pal b/graphics/pokemon/pineco/overworld_normal.pal new file mode 100644 index 000000000000..4659770069c0 --- /dev/null +++ b/graphics/pokemon/pineco/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +0 0 0 +80 176 192 +8 56 96 +16 88 128 +48 128 168 +232 232 248 +96 112 152 +200 64 72 +160 176 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pineco/overworld_shiny.pal b/graphics/pokemon/pineco/overworld_shiny.pal new file mode 100644 index 000000000000..7cc52c908513 --- /dev/null +++ b/graphics/pokemon/pineco/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +0 0 0 +248 192 104 +112 56 0 +152 104 32 +216 128 64 +232 232 248 +160 136 96 +200 64 72 +160 176 200 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pinsir/overworld.png b/graphics/pokemon/pinsir/overworld.png new file mode 100644 index 000000000000..3ac6218fe732 Binary files /dev/null and b/graphics/pokemon/pinsir/overworld.png differ diff --git a/graphics/pokemon/pinsir/overworld_normal.pal b/graphics/pokemon/pinsir/overworld_normal.pal new file mode 100644 index 000000000000..d88051943db4 --- /dev/null +++ b/graphics/pokemon/pinsir/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +192 192 208 +48 48 48 +104 104 104 +144 144 144 +120 104 80 +152 128 96 +96 80 56 +232 232 248 +80 64 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pinsir/overworld_shiny.pal b/graphics/pokemon/pinsir/overworld_shiny.pal new file mode 100644 index 000000000000..0488359dbb75 --- /dev/null +++ b/graphics/pokemon/pinsir/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 200 120 +48 48 48 +128 120 64 +176 152 80 +104 120 176 +152 152 176 +72 88 160 +232 232 248 +48 80 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/piplup/overworld.png b/graphics/pokemon/piplup/overworld.png new file mode 100644 index 000000000000..818bb837ed07 Binary files /dev/null and b/graphics/pokemon/piplup/overworld.png differ diff --git a/graphics/pokemon/piplup/overworld_normal.pal b/graphics/pokemon/piplup/overworld_normal.pal new file mode 100644 index 000000000000..48c0c3e3decb --- /dev/null +++ b/graphics/pokemon/piplup/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 72 +64 104 224 +0 0 0 +40 88 168 +56 64 104 +120 176 240 +232 232 248 +176 184 216 +120 104 64 +120 120 120 +248 184 24 +80 144 184 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/piplup/overworld_shiny.pal b/graphics/pokemon/piplup/overworld_shiny.pal new file mode 100644 index 000000000000..940a6481423d --- /dev/null +++ b/graphics/pokemon/piplup/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 72 +64 152 248 +0 0 0 +40 136 192 +56 88 112 +120 200 248 +232 232 248 +176 184 216 +120 104 64 +120 120 120 +248 184 24 +104 184 200 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/plusle/overworld.png b/graphics/pokemon/plusle/overworld.png new file mode 100644 index 000000000000..296826646907 Binary files /dev/null and b/graphics/pokemon/plusle/overworld.png differ diff --git a/graphics/pokemon/plusle/overworld_normal.pal b/graphics/pokemon/plusle/overworld_normal.pal new file mode 100644 index 000000000000..d4b90952e2db --- /dev/null +++ b/graphics/pokemon/plusle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 40 64 +224 112 120 +184 72 88 +112 88 48 +248 224 136 +200 168 96 +168 136 104 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/plusle/overworld_shiny.pal b/graphics/pokemon/plusle/overworld_shiny.pal new file mode 100644 index 000000000000..d88a9547b96b --- /dev/null +++ b/graphics/pokemon/plusle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 0 0 +216 96 56 +176 48 24 +112 88 48 +248 216 104 +192 168 64 +160 136 72 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poipole/overworld.png b/graphics/pokemon/poipole/overworld.png new file mode 100644 index 000000000000..848e751066d2 Binary files /dev/null and b/graphics/pokemon/poipole/overworld.png differ diff --git a/graphics/pokemon/poipole/overworld_normal.pal b/graphics/pokemon/poipole/overworld_normal.pal new file mode 100644 index 000000000000..1c5e37b7b51c --- /dev/null +++ b/graphics/pokemon/poipole/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +174 237 254 +201 201 201 +146 178 199 +142 93 208 +223 85 157 +81 81 81 +125 75 191 +188 64 133 +101 35 73 +62 39 86 +44 27 61 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poipole/overworld_shiny.pal b/graphics/pokemon/poipole/overworld_shiny.pal new file mode 100644 index 000000000000..7d476518cb99 --- /dev/null +++ b/graphics/pokemon/poipole/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +174 237 254 +200 200 192 +128 160 24 +152 80 16 +248 208 24 +81 81 81 +248 248 248 +200 136 8 +101 35 73 +112 112 104 +44 27 61 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/politoed/overworld.png b/graphics/pokemon/politoed/overworld.png new file mode 100644 index 000000000000..aadde5b61471 Binary files /dev/null and b/graphics/pokemon/politoed/overworld.png differ diff --git a/graphics/pokemon/politoed/overworld_normal.pal b/graphics/pokemon/politoed/overworld_normal.pal new file mode 100644 index 000000000000..e7b45a11d748 --- /dev/null +++ b/graphics/pokemon/politoed/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 80 +64 112 120 +0 0 0 +48 80 16 +152 216 112 +88 152 56 +104 184 64 +232 232 248 +184 200 224 +248 128 176 +136 56 72 +200 88 136 +208 184 64 +240 200 72 +136 120 8 diff --git a/graphics/pokemon/politoed/overworld_shiny.pal b/graphics/pokemon/politoed/overworld_shiny.pal new file mode 100644 index 000000000000..08604be146eb --- /dev/null +++ b/graphics/pokemon/politoed/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 80 +64 112 120 +0 0 0 +32 64 80 +168 216 200 +64 128 152 +120 168 192 +232 232 248 +184 200 224 +232 120 160 +136 56 72 +200 88 136 +208 136 200 +216 112 192 +136 120 8 diff --git a/graphics/pokemon/poliwag/overworld.png b/graphics/pokemon/poliwag/overworld.png new file mode 100644 index 000000000000..217c3aa99815 Binary files /dev/null and b/graphics/pokemon/poliwag/overworld.png differ diff --git a/graphics/pokemon/poliwag/overworld_normal.pal b/graphics/pokemon/poliwag/overworld_normal.pal new file mode 100644 index 000000000000..34df16304cea --- /dev/null +++ b/graphics/pokemon/poliwag/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +120 128 232 +96 48 64 +48 48 48 +232 232 232 +176 64 104 +240 120 160 +232 232 248 +176 176 208 +0 0 0 +64 88 152 +88 88 88 +120 120 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poliwag/overworld_shiny.pal b/graphics/pokemon/poliwag/overworld_shiny.pal new file mode 100644 index 000000000000..4606909696cc --- /dev/null +++ b/graphics/pokemon/poliwag/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +120 192 232 +96 48 64 +48 48 48 +232 232 232 +176 64 104 +240 120 160 +232 232 248 +176 176 208 +0 0 0 +88 144 176 +88 88 88 +120 120 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poliwhirl/overworld.png b/graphics/pokemon/poliwhirl/overworld.png new file mode 100644 index 000000000000..6600795f055d Binary files /dev/null and b/graphics/pokemon/poliwhirl/overworld.png differ diff --git a/graphics/pokemon/poliwhirl/overworld_normal.pal b/graphics/pokemon/poliwhirl/overworld_normal.pal new file mode 100644 index 000000000000..b58c05f41697 --- /dev/null +++ b/graphics/pokemon/poliwhirl/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 56 +72 96 184 +0 0 0 +120 128 232 +56 72 112 +160 160 160 +232 232 248 +88 88 88 +48 48 48 +176 176 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poliwhirl/overworld_shiny.pal b/graphics/pokemon/poliwhirl/overworld_shiny.pal new file mode 100644 index 000000000000..0078e3a56a7d --- /dev/null +++ b/graphics/pokemon/poliwhirl/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +88 144 176 +0 0 0 +120 192 232 +56 96 112 +160 160 160 +232 232 248 +88 88 88 +48 48 48 +176 176 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poliwrath/overworld.png b/graphics/pokemon/poliwrath/overworld.png new file mode 100644 index 000000000000..144d1194686d Binary files /dev/null and b/graphics/pokemon/poliwrath/overworld.png differ diff --git a/graphics/pokemon/poliwrath/overworld_normal.pal b/graphics/pokemon/poliwrath/overworld_normal.pal new file mode 100644 index 000000000000..fe70d0036ed0 --- /dev/null +++ b/graphics/pokemon/poliwrath/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 56 +120 128 232 +72 96 184 +232 232 248 +88 88 88 +48 48 48 +200 200 200 +0 0 0 +160 160 160 +176 176 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poliwrath/overworld_shiny.pal b/graphics/pokemon/poliwrath/overworld_shiny.pal new file mode 100644 index 000000000000..be550c311026 --- /dev/null +++ b/graphics/pokemon/poliwrath/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +40 48 24 +168 184 120 +112 120 72 +232 232 248 +88 88 88 +48 48 48 +200 200 200 +0 0 0 +160 160 160 +176 176 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/polteageist/overworld.png b/graphics/pokemon/polteageist/overworld.png new file mode 100644 index 000000000000..878262b66004 Binary files /dev/null and b/graphics/pokemon/polteageist/overworld.png differ diff --git a/graphics/pokemon/polteageist/overworld_normal.pal b/graphics/pokemon/polteageist/overworld_normal.pal new file mode 100644 index 000000000000..99a675acedab --- /dev/null +++ b/graphics/pokemon/polteageist/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 24 +88 52 104 +40 96 100 +104 104 120 +188 124 124 +0 0 0 +152 112 8 +220 156 96 +192 184 224 +248 212 120 +120 80 140 +148 88 164 +60 144 156 +72 172 184 +240 248 248 +148 208 212 diff --git a/graphics/pokemon/polteageist/overworld_shiny.pal b/graphics/pokemon/polteageist/overworld_shiny.pal new file mode 100644 index 000000000000..3b3251af213e --- /dev/null +++ b/graphics/pokemon/polteageist/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 41 90 +90 41 90 +106 106 123 +189 123 123 +0 0 0 +156 115 8 +230 156 98 +213 213 213 +255 213 123 +123 82 148 +164 90 148 +164 90 148 +197 106 164 +213 213 213 +213 213 213 diff --git a/graphics/pokemon/ponyta/galarian/overworld.png b/graphics/pokemon/ponyta/galarian/overworld.png new file mode 100644 index 000000000000..ac613865766b Binary files /dev/null and b/graphics/pokemon/ponyta/galarian/overworld.png differ diff --git a/graphics/pokemon/ponyta/galarian/overworld_normal.pal b/graphics/pokemon/ponyta/galarian/overworld_normal.pal new file mode 100644 index 000000000000..81bbedb6be21 --- /dev/null +++ b/graphics/pokemon/ponyta/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +123 72 123 +131 121 90 +32 32 32 +230 222 164 +197 109 197 +65 113 106 +213 153 213 +189 186 189 +246 226 172 +238 234 255 +0 0 0 +106 222 222 +115 113 65 +230 186 230 +246 242 222 diff --git a/graphics/pokemon/ponyta/galarian/overworld_shiny.pal b/graphics/pokemon/ponyta/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..81bbedb6be21 --- /dev/null +++ b/graphics/pokemon/ponyta/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +123 72 123 +131 121 90 +32 32 32 +230 222 164 +197 109 197 +65 113 106 +213 153 213 +189 186 189 +246 226 172 +238 234 255 +0 0 0 +106 222 222 +115 113 65 +230 186 230 +246 242 222 diff --git a/graphics/pokemon/ponyta/overworld.png b/graphics/pokemon/ponyta/overworld.png new file mode 100644 index 000000000000..79a20ab366da Binary files /dev/null and b/graphics/pokemon/ponyta/overworld.png differ diff --git a/graphics/pokemon/ponyta/overworld_normal.pal b/graphics/pokemon/ponyta/overworld_normal.pal new file mode 100644 index 000000000000..525ebd64e283 --- /dev/null +++ b/graphics/pokemon/ponyta/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 48 8 +248 160 24 +224 72 32 +72 56 40 +240 224 168 +184 168 112 +152 56 80 +0 0 0 +128 120 88 +80 56 32 +232 232 248 +80 96 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ponyta/overworld_shiny.pal b/graphics/pokemon/ponyta/overworld_shiny.pal new file mode 100644 index 000000000000..9ae14f9cbf1b --- /dev/null +++ b/graphics/pokemon/ponyta/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 112 176 +136 192 248 +88 168 248 +72 72 72 +248 232 176 +192 176 128 +80 80 152 +0 0 0 +128 120 88 +80 56 32 +232 232 248 +80 96 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poochyena/overworld.png b/graphics/pokemon/poochyena/overworld.png new file mode 100644 index 000000000000..8253e9527357 Binary files /dev/null and b/graphics/pokemon/poochyena/overworld.png differ diff --git a/graphics/pokemon/poochyena/overworld_normal.pal b/graphics/pokemon/poochyena/overworld_normal.pal new file mode 100644 index 000000000000..6833ea880874 --- /dev/null +++ b/graphics/pokemon/poochyena/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 80 +0 0 0 +80 80 88 +184 184 184 +144 144 144 +104 112 112 +248 216 88 +192 56 56 +136 40 40 +184 184 184 +48 56 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/poochyena/overworld_shiny.pal b/graphics/pokemon/poochyena/overworld_shiny.pal new file mode 100644 index 000000000000..66a0fcf0c0a4 --- /dev/null +++ b/graphics/pokemon/poochyena/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 8 +0 0 0 +96 64 40 +200 200 144 +160 152 72 +128 88 40 +168 216 248 +192 56 56 +136 40 40 +184 184 184 +64 56 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/popplio/overworld.png b/graphics/pokemon/popplio/overworld.png new file mode 100644 index 000000000000..2c58d75e6424 Binary files /dev/null and b/graphics/pokemon/popplio/overworld.png differ diff --git a/graphics/pokemon/popplio/overworld_normal.pal b/graphics/pokemon/popplio/overworld_normal.pal new file mode 100644 index 000000000000..f815c353cdf1 --- /dev/null +++ b/graphics/pokemon/popplio/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +115 234 239 +254 136 197 +136 164 238 +72 135 157 +65 121 227 +140 88 68 +49 87 159 +112 80 96 +37 55 90 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/popplio/overworld_shiny.pal b/graphics/pokemon/popplio/overworld_shiny.pal new file mode 100644 index 000000000000..c1191ba1065f --- /dev/null +++ b/graphics/pokemon/popplio/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +248 200 232 +254 136 197 +64 64 128 +208 160 168 +104 88 192 +140 88 68 +64 64 128 +112 80 96 +37 55 90 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/porygon/overworld.png b/graphics/pokemon/porygon/overworld.png new file mode 100644 index 000000000000..37e9a6349297 Binary files /dev/null and b/graphics/pokemon/porygon/overworld.png differ diff --git a/graphics/pokemon/porygon/overworld_normal.pal b/graphics/pokemon/porygon/overworld_normal.pal new file mode 100644 index 000000000000..c14e3e9b530c --- /dev/null +++ b/graphics/pokemon/porygon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 24 48 +208 64 136 +248 152 208 +160 184 200 +232 104 160 +232 232 248 +40 64 72 +0 0 0 +176 48 104 +40 184 192 +80 216 216 +48 136 152 +40 96 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/porygon/overworld_shiny.pal b/graphics/pokemon/porygon/overworld_shiny.pal new file mode 100644 index 000000000000..eab5a782e858 --- /dev/null +++ b/graphics/pokemon/porygon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 24 120 +72 128 184 +136 192 240 +160 184 200 +96 176 216 +232 232 248 +104 104 104 +0 0 0 +40 120 176 +248 200 208 +232 232 248 +200 184 192 +152 120 136 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/porygon2/overworld.png b/graphics/pokemon/porygon2/overworld.png new file mode 100644 index 000000000000..4a89c2234a5b Binary files /dev/null and b/graphics/pokemon/porygon2/overworld.png differ diff --git a/graphics/pokemon/porygon2/overworld_normal.pal b/graphics/pokemon/porygon2/overworld_normal.pal new file mode 100644 index 000000000000..95d5df7259c3 --- /dev/null +++ b/graphics/pokemon/porygon2/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 16 48 +224 80 136 +248 152 208 +16 16 16 +168 40 80 +192 56 96 +184 200 216 +248 248 248 +16 72 120 +40 120 168 +144 232 248 +88 184 216 +64 152 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/porygon2/overworld_shiny.pal b/graphics/pokemon/porygon2/overworld_shiny.pal new file mode 100644 index 000000000000..0067839935e8 --- /dev/null +++ b/graphics/pokemon/porygon2/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 72 144 +64 192 248 +144 232 248 +16 16 16 +40 120 208 +64 152 248 +184 200 216 +248 248 248 +80 80 80 +120 120 128 +208 208 208 +176 176 176 +160 160 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/porygon_z/overworld.png b/graphics/pokemon/porygon_z/overworld.png new file mode 100644 index 000000000000..88c46e03b284 Binary files /dev/null and b/graphics/pokemon/porygon_z/overworld.png differ diff --git a/graphics/pokemon/porygon_z/overworld_normal.pal b/graphics/pokemon/porygon_z/overworld_normal.pal new file mode 100644 index 000000000000..23c2c4b29ed1 --- /dev/null +++ b/graphics/pokemon/porygon_z/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 24 48 +240 160 168 +0 0 0 +224 96 112 +168 64 104 +248 208 56 +16 64 96 +168 112 48 +64 152 192 +216 144 48 +144 232 248 +88 184 216 +40 120 168 +112 48 80 +0 0 0 diff --git a/graphics/pokemon/porygon_z/overworld_shiny.pal b/graphics/pokemon/porygon_z/overworld_shiny.pal new file mode 100644 index 000000000000..0648e44ed0a3 --- /dev/null +++ b/graphics/pokemon/porygon_z/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 64 96 +184 232 248 +0 0 0 +72 168 208 +40 120 168 +248 208 56 +144 80 80 +168 112 48 +208 184 184 +216 144 48 +248 248 248 +224 216 216 +192 160 160 +112 48 80 +0 0 0 diff --git a/graphics/pokemon/primarina/overworld.png b/graphics/pokemon/primarina/overworld.png new file mode 100644 index 000000000000..8e2ae969b9c4 Binary files /dev/null and b/graphics/pokemon/primarina/overworld.png differ diff --git a/graphics/pokemon/primarina/overworld_normal.pal b/graphics/pokemon/primarina/overworld_normal.pal new file mode 100644 index 000000000000..e664e8f732d7 --- /dev/null +++ b/graphics/pokemon/primarina/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +218 227 230 +138 165 208 +77 171 158 +154 162 167 +207 101 118 +79 93 117 +61 130 121 +31 132 193 +28 91 152 +49 69 83 +64 67 68 +41 67 63 +23 49 65 +83 46 52 +16 16 16 diff --git a/graphics/pokemon/primarina/overworld_shiny.pal b/graphics/pokemon/primarina/overworld_shiny.pal new file mode 100644 index 000000000000..7615f1ba64e0 --- /dev/null +++ b/graphics/pokemon/primarina/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +218 227 230 +248 224 240 +248 248 152 +154 162 167 +207 101 118 +79 93 117 +232 200 96 +31 132 193 +28 91 152 +49 69 83 +64 67 68 +41 67 63 +23 49 65 +83 46 52 +16 16 16 diff --git a/graphics/pokemon/primeape/overworld.png b/graphics/pokemon/primeape/overworld.png new file mode 100644 index 000000000000..16fec225f61f Binary files /dev/null and b/graphics/pokemon/primeape/overworld.png differ diff --git a/graphics/pokemon/primeape/overworld_normal.pal b/graphics/pokemon/primeape/overworld_normal.pal new file mode 100644 index 000000000000..05a7d68a5b16 --- /dev/null +++ b/graphics/pokemon/primeape/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 48 +232 216 136 +208 168 112 +0 0 0 +152 120 96 +176 104 128 +136 104 56 +104 104 104 +176 128 48 +120 40 64 +176 176 208 +240 128 160 +232 232 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/primeape/overworld_shiny.pal b/graphics/pokemon/primeape/overworld_shiny.pal new file mode 100644 index 000000000000..6d10d495dcc0 --- /dev/null +++ b/graphics/pokemon/primeape/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 48 +232 192 136 +208 144 96 +0 0 0 +152 112 80 +176 104 128 +104 104 56 +104 104 104 +136 128 48 +120 40 64 +176 176 208 +240 128 160 +232 232 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/prinplup/overworld.png b/graphics/pokemon/prinplup/overworld.png new file mode 100644 index 000000000000..2ff43dd8cd44 Binary files /dev/null and b/graphics/pokemon/prinplup/overworld.png differ diff --git a/graphics/pokemon/prinplup/overworld_normal.pal b/graphics/pokemon/prinplup/overworld_normal.pal new file mode 100644 index 000000000000..283e4354b8d1 --- /dev/null +++ b/graphics/pokemon/prinplup/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +248 192 24 +200 152 0 +48 56 96 +0 0 0 +64 112 200 +120 200 240 +232 232 248 +120 120 120 +40 88 168 +56 112 176 +112 152 184 +168 176 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/prinplup/overworld_shiny.pal b/graphics/pokemon/prinplup/overworld_shiny.pal new file mode 100644 index 000000000000..942301ee8985 --- /dev/null +++ b/graphics/pokemon/prinplup/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +248 200 24 +200 160 0 +40 56 64 +0 0 0 +64 152 208 +136 216 248 +232 232 248 +120 120 120 +32 120 144 +56 152 184 +128 176 192 +168 176 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/probopass/overworld.png b/graphics/pokemon/probopass/overworld.png new file mode 100644 index 000000000000..6f743089640f Binary files /dev/null and b/graphics/pokemon/probopass/overworld.png differ diff --git a/graphics/pokemon/probopass/overworld_normal.pal b/graphics/pokemon/probopass/overworld_normal.pal new file mode 100644 index 000000000000..74c39b3403ab --- /dev/null +++ b/graphics/pokemon/probopass/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 32 56 +112 24 40 +208 80 72 +0 0 0 +192 56 88 +40 56 96 +64 88 136 +40 48 56 +152 152 152 +80 128 184 +112 176 232 +192 200 216 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/probopass/overworld_shiny.pal b/graphics/pokemon/probopass/overworld_shiny.pal new file mode 100644 index 000000000000..6c9913690a71 --- /dev/null +++ b/graphics/pokemon/probopass/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 32 56 +112 24 40 +208 80 72 +0 0 0 +192 56 88 +96 80 40 +136 120 64 +40 48 56 +152 152 152 +184 144 80 +232 184 112 +192 200 216 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/psyduck/overworld.png b/graphics/pokemon/psyduck/overworld.png new file mode 100644 index 000000000000..5544c1942c5b Binary files /dev/null and b/graphics/pokemon/psyduck/overworld.png differ diff --git a/graphics/pokemon/psyduck/overworld_normal.pal b/graphics/pokemon/psyduck/overworld_normal.pal new file mode 100644 index 000000000000..95885505d7d1 --- /dev/null +++ b/graphics/pokemon/psyduck/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 96 64 +168 144 64 +232 184 64 +232 232 248 +248 216 104 +240 232 184 +200 184 136 +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/psyduck/overworld_shiny.pal b/graphics/pokemon/psyduck/overworld_shiny.pal new file mode 100644 index 000000000000..e4543a27ae83 --- /dev/null +++ b/graphics/pokemon/psyduck/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 88 128 +96 136 168 +152 200 208 +232 232 248 +184 232 240 +208 224 248 +168 176 192 +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/pumpkaboo/overworld.png b/graphics/pokemon/pumpkaboo/overworld.png new file mode 100644 index 000000000000..67542d25d920 Binary files /dev/null and b/graphics/pokemon/pumpkaboo/overworld.png differ diff --git a/graphics/pokemon/pumpkaboo/overworld_normal.pal b/graphics/pokemon/pumpkaboo/overworld_normal.pal new file mode 100644 index 000000000000..f3798e228cf8 --- /dev/null +++ b/graphics/pokemon/pumpkaboo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +49 33 19 +16 16 16 +88 70 52 +103 90 69 +229 160 73 +240 202 68 +170 150 132 +193 78 51 +219 117 77 +229 159 73 +117 43 29 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pumpkaboo/overworld_shiny.pal b/graphics/pokemon/pumpkaboo/overworld_shiny.pal new file mode 100644 index 000000000000..482a93422d14 --- /dev/null +++ b/graphics/pokemon/pumpkaboo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +34 34 34 +16 16 16 +55 53 53 +78 76 76 +207 219 46 +252 254 116 +170 150 132 +95 58 100 +131 89 136 +207 219 46 +55 33 59 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pupitar/overworld.png b/graphics/pokemon/pupitar/overworld.png new file mode 100644 index 000000000000..e9906838a444 Binary files /dev/null and b/graphics/pokemon/pupitar/overworld.png differ diff --git a/graphics/pokemon/pupitar/overworld_normal.pal b/graphics/pokemon/pupitar/overworld_normal.pal new file mode 100644 index 000000000000..72e3521e5895 --- /dev/null +++ b/graphics/pokemon/pupitar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +32 56 72 +136 192 200 +0 0 0 +120 160 176 +56 64 72 +32 40 40 +160 184 200 +184 48 48 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pupitar/overworld_shiny.pal b/graphics/pokemon/pupitar/overworld_shiny.pal new file mode 100644 index 000000000000..062065a7bede --- /dev/null +++ b/graphics/pokemon/pupitar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +112 56 128 +184 176 224 +0 0 0 +144 112 176 +56 64 72 +32 40 40 +160 184 200 +184 48 48 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/purrloin/overworld.png b/graphics/pokemon/purrloin/overworld.png new file mode 100644 index 000000000000..dd0d58266ef6 Binary files /dev/null and b/graphics/pokemon/purrloin/overworld.png differ diff --git a/graphics/pokemon/purrloin/overworld_normal.pal b/graphics/pokemon/purrloin/overworld_normal.pal new file mode 100644 index 000000000000..9a452572bc62 --- /dev/null +++ b/graphics/pokemon/purrloin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 34 91 +155 106 155 +0 0 0 +120 80 120 +216 112 152 +8 184 96 +176 160 120 +232 232 248 +216 200 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/purrloin/overworld_shiny.pal b/graphics/pokemon/purrloin/overworld_shiny.pal new file mode 100644 index 000000000000..f1c5b242d017 --- /dev/null +++ b/graphics/pokemon/purrloin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 80 +80 96 128 +0 0 0 +56 72 104 +168 112 224 +216 216 56 +240 232 192 +232 232 248 +216 200 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/purugly/overworld.png b/graphics/pokemon/purugly/overworld.png new file mode 100644 index 000000000000..5260c2e0fa2d Binary files /dev/null and b/graphics/pokemon/purugly/overworld.png differ diff --git a/graphics/pokemon/purugly/overworld_normal.pal b/graphics/pokemon/purugly/overworld_normal.pal new file mode 100644 index 000000000000..06feb916733c --- /dev/null +++ b/graphics/pokemon/purugly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +136 72 184 +80 80 80 +88 56 136 +120 120 120 +64 64 64 +184 72 112 +192 192 192 +176 120 232 +232 232 248 +152 152 152 +248 184 32 +200 104 8 +0 0 0 diff --git a/graphics/pokemon/purugly/overworld_shiny.pal b/graphics/pokemon/purugly/overworld_shiny.pal new file mode 100644 index 000000000000..9bbc5cd087a9 --- /dev/null +++ b/graphics/pokemon/purugly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +0 0 0 +88 88 88 +112 72 88 +56 56 56 +168 120 144 +80 48 56 +184 72 112 +192 192 192 +128 128 128 +232 232 248 +152 152 152 +248 184 32 +200 104 8 +0 0 0 diff --git a/graphics/pokemon/pyroar/followerf.png b/graphics/pokemon/pyroar/followerf.png new file mode 100644 index 000000000000..d6163f0f1c5a Binary files /dev/null and b/graphics/pokemon/pyroar/followerf.png differ diff --git a/graphics/pokemon/pyroar/overworld.png b/graphics/pokemon/pyroar/overworld.png new file mode 100644 index 000000000000..490a2803da1a Binary files /dev/null and b/graphics/pokemon/pyroar/overworld.png differ diff --git a/graphics/pokemon/pyroar/overworld_normal.pal b/graphics/pokemon/pyroar/overworld_normal.pal new file mode 100644 index 000000000000..1cd8a06bba85 --- /dev/null +++ b/graphics/pokemon/pyroar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 56 52 +229 177 115 +16 16 16 +253 59 63 +88 32 33 +179 47 50 +113 96 89 +236 186 50 +127 76 39 +194 195 194 +60 142 158 +230 238 248 +174 127 79 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pyroar/overworld_shiny.pal b/graphics/pokemon/pyroar/overworld_shiny.pal new file mode 100644 index 000000000000..fd4676b43294 --- /dev/null +++ b/graphics/pokemon/pyroar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +140 123 82 +253 241 167 +16 16 16 +253 59 63 +88 32 33 +179 47 50 +191 172 118 +236 186 50 +127 76 39 +194 195 194 +230 84 51 +230 238 248 +237 216 149 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/pyukumuku/overworld.png b/graphics/pokemon/pyukumuku/overworld.png new file mode 100644 index 000000000000..47450a32e58c Binary files /dev/null and b/graphics/pokemon/pyukumuku/overworld.png differ diff --git a/graphics/pokemon/pyukumuku/overworld_normal.pal b/graphics/pokemon/pyukumuku/overworld_normal.pal new file mode 100644 index 000000000000..e1be008f253a --- /dev/null +++ b/graphics/pokemon/pyukumuku/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +214 214 214 +198 198 198 +190 190 190 +250 84 147 +89 81 81 +223 69 120 +69 68 68 +73 67 67 +181 62 178 +152 45 81 +41 39 39 +106 32 57 +71 21 38 +5 5 5 +0 0 0 diff --git a/graphics/pokemon/pyukumuku/overworld_shiny.pal b/graphics/pokemon/pyukumuku/overworld_shiny.pal new file mode 100644 index 000000000000..a0e5beeb1953 --- /dev/null +++ b/graphics/pokemon/pyukumuku/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +214 214 214 +198 198 198 +190 190 190 +248 192 88 +64 184 80 +224 144 24 +69 68 68 +64 128 72 +248 192 88 +152 45 81 +32 88 40 +183 122 29 +152 88 24 +5 5 5 +0 0 0 diff --git a/graphics/pokemon/quagsire/overworld.png b/graphics/pokemon/quagsire/overworld.png new file mode 100644 index 000000000000..21a7622cda57 Binary files /dev/null and b/graphics/pokemon/quagsire/overworld.png differ diff --git a/graphics/pokemon/quagsire/overworld_normal.pal b/graphics/pokemon/quagsire/overworld_normal.pal new file mode 100644 index 000000000000..1f5b8b6492c4 --- /dev/null +++ b/graphics/pokemon/quagsire/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +112 176 240 +32 64 120 +176 112 208 +56 88 80 +32 48 56 +72 144 200 +144 88 184 +56 112 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/quagsire/overworld_shiny.pal b/graphics/pokemon/quagsire/overworld_shiny.pal new file mode 100644 index 000000000000..b192cffcb17e --- /dev/null +++ b/graphics/pokemon/quagsire/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +192 152 240 +96 48 80 +128 80 144 +96 48 80 +32 48 56 +160 120 192 +96 72 120 +128 80 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/question_mark/overworld.png b/graphics/pokemon/question_mark/overworld.png new file mode 100644 index 000000000000..6be1e2ddcb7c Binary files /dev/null and b/graphics/pokemon/question_mark/overworld.png differ diff --git a/graphics/pokemon/quilava/overworld.png b/graphics/pokemon/quilava/overworld.png new file mode 100644 index 000000000000..a7ee14f2f9a8 Binary files /dev/null and b/graphics/pokemon/quilava/overworld.png differ diff --git a/graphics/pokemon/quilava/overworld_normal.pal b/graphics/pokemon/quilava/overworld_normal.pal new file mode 100644 index 000000000000..4a9b29949c62 --- /dev/null +++ b/graphics/pokemon/quilava/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 48 48 +160 16 24 +216 80 80 +240 200 40 +24 56 72 +0 0 0 +40 112 120 +48 136 152 +32 80 88 +72 64 16 +160 144 80 +232 232 248 +248 208 96 +208 176 88 +0 0 0 diff --git a/graphics/pokemon/quilava/overworld_shiny.pal b/graphics/pokemon/quilava/overworld_shiny.pal new file mode 100644 index 000000000000..496b34a9fc8b --- /dev/null +++ b/graphics/pokemon/quilava/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 48 48 +160 16 24 +216 80 80 +240 200 40 +56 32 8 +0 0 0 +168 112 8 +208 144 40 +112 72 8 +72 64 16 +160 144 80 +232 232 248 +248 208 96 +208 176 88 +0 0 0 diff --git a/graphics/pokemon/quilladin/overworld.png b/graphics/pokemon/quilladin/overworld.png new file mode 100644 index 000000000000..98e4f9e4003d Binary files /dev/null and b/graphics/pokemon/quilladin/overworld.png differ diff --git a/graphics/pokemon/quilladin/overworld_normal.pal b/graphics/pokemon/quilladin/overworld_normal.pal new file mode 100644 index 000000000000..a5ae3da2ae88 --- /dev/null +++ b/graphics/pokemon/quilladin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +62 42 36 +16 16 16 +138 97 70 +203 94 73 +104 196 96 +33 65 35 +76 152 82 +184 132 98 +216 168 120 +213 208 203 +112 77 60 +171 164 157 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/quilladin/overworld_shiny.pal b/graphics/pokemon/quilladin/overworld_shiny.pal new file mode 100644 index 000000000000..16039a627e7d --- /dev/null +++ b/graphics/pokemon/quilladin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +38 24 19 +16 16 16 +51 33 27 +255 238 95 +115 44 39 +73 20 17 +100 35 32 +184 132 98 +216 168 120 +213 208 203 +38 24 19 +171 164 157 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/qwilfish/hisuian/overworld.png b/graphics/pokemon/qwilfish/hisuian/overworld.png new file mode 100644 index 000000000000..1d318f26ca88 Binary files /dev/null and b/graphics/pokemon/qwilfish/hisuian/overworld.png differ diff --git a/graphics/pokemon/qwilfish/hisuian/overworld_normal.pal b/graphics/pokemon/qwilfish/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..bde8015b1ade --- /dev/null +++ b/graphics/pokemon/qwilfish/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 49 24 +90 82 41 +123 32 98 +0 0 0 +189 49 156 +82 82 98 +65 65 74 +238 238 255 +189 180 148 +41 41 49 +156 139 82 +24 24 24 +246 65 213 +131 131 131 +0 0 0 diff --git a/graphics/pokemon/qwilfish/hisuian/overworld_shiny.pal b/graphics/pokemon/qwilfish/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..63bab6514aae --- /dev/null +++ b/graphics/pokemon/qwilfish/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +131 123 98 +131 123 106 +74 57 131 +0 0 0 +189 49 156 +189 189 189 +148 139 139 +238 238 255 +246 246 238 +41 41 49 +164 156 115 +24 24 24 +98 90 164 +131 131 131 +0 0 0 diff --git a/graphics/pokemon/qwilfish/overworld.png b/graphics/pokemon/qwilfish/overworld.png new file mode 100644 index 000000000000..a76a8419654b Binary files /dev/null and b/graphics/pokemon/qwilfish/overworld.png differ diff --git a/graphics/pokemon/qwilfish/overworld_normal.pal b/graphics/pokemon/qwilfish/overworld_normal.pal new file mode 100644 index 000000000000..a7fe28c91360 --- /dev/null +++ b/graphics/pokemon/qwilfish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 48 104 +32 72 128 +48 104 152 +168 152 64 +0 0 0 +72 144 192 +56 56 24 +192 176 96 +232 232 248 +152 32 56 +248 128 160 +224 208 136 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/qwilfish/overworld_shiny.pal b/graphics/pokemon/qwilfish/overworld_shiny.pal new file mode 100644 index 000000000000..bbed5bc3e22d --- /dev/null +++ b/graphics/pokemon/qwilfish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 40 64 +104 56 96 +144 72 136 +152 136 200 +0 0 0 +184 96 168 +56 48 80 +184 160 224 +232 232 248 +152 32 56 +248 128 160 +208 192 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raboot/overworld.png b/graphics/pokemon/raboot/overworld.png new file mode 100644 index 000000000000..8c04c2ed5e0b Binary files /dev/null and b/graphics/pokemon/raboot/overworld.png differ diff --git a/graphics/pokemon/raboot/overworld_normal.pal b/graphics/pokemon/raboot/overworld_normal.pal new file mode 100644 index 000000000000..57709b7029a8 --- /dev/null +++ b/graphics/pokemon/raboot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +40 40 44 +212 212 212 +236 236 236 +180 180 180 +0 0 0 +216 204 56 +248 236 88 +252 244 144 +224 72 8 +184 48 0 +104 28 0 +16 16 16 +52 56 60 +88 92 100 +0 0 0 diff --git a/graphics/pokemon/raboot/overworld_shiny.pal b/graphics/pokemon/raboot/overworld_shiny.pal new file mode 100644 index 000000000000..0331264f7935 --- /dev/null +++ b/graphics/pokemon/raboot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 41 41 +172 189 172 +238 238 238 +131 139 131 +0 0 0 +222 205 57 +255 238 90 +255 246 148 +189 74 24 +148 57 16 +74 24 0 +65 65 65 +164 164 164 +222 222 222 +0 0 0 diff --git a/graphics/pokemon/raichu/alolan/overworld.png b/graphics/pokemon/raichu/alolan/overworld.png new file mode 100644 index 000000000000..c3c5482832f6 Binary files /dev/null and b/graphics/pokemon/raichu/alolan/overworld.png differ diff --git a/graphics/pokemon/raichu/alolan/overworld_normal.pal b/graphics/pokemon/raichu/alolan/overworld_normal.pal new file mode 100644 index 000000000000..43905847e390 --- /dev/null +++ b/graphics/pokemon/raichu/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 105 18 +240 225 38 +0 0 0 +248 192 64 +136 88 24 +150 141 24 +184 127 0 +212 154 23 +112 72 40 +255 239 225 +72 40 24 +78 201 201 +204 188 174 +73 52 4 +187 175 22 diff --git a/graphics/pokemon/raichu/alolan/overworld_shiny.pal b/graphics/pokemon/raichu/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..1d2eb4fe6178 --- /dev/null +++ b/graphics/pokemon/raichu/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 105 18 +240 225 38 +0 0 0 +81 54 41 +150 141 24 +151 117 86 +102 68 37 +123 87 56 +112 72 40 +255 239 225 +44 29 27 +78 201 201 +204 188 174 +73 52 4 +187 175 22 diff --git a/graphics/pokemon/raichu/overworld.png b/graphics/pokemon/raichu/overworld.png new file mode 100644 index 000000000000..19f6f277939f Binary files /dev/null and b/graphics/pokemon/raichu/overworld.png differ diff --git a/graphics/pokemon/raichu/overworld_normal.pal b/graphics/pokemon/raichu/overworld_normal.pal new file mode 100644 index 000000000000..28ccb30b24d7 --- /dev/null +++ b/graphics/pokemon/raichu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 40 24 +112 72 40 +0 0 0 +136 88 24 +208 176 24 +248 224 8 +208 120 32 +248 192 64 +248 144 0 +232 232 248 +248 232 208 +120 104 72 +192 176 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raichu/overworld_shiny.pal b/graphics/pokemon/raichu/overworld_shiny.pal new file mode 100644 index 000000000000..38bc7a623eea --- /dev/null +++ b/graphics/pokemon/raichu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 40 24 +112 72 40 +0 0 0 +112 80 24 +184 176 96 +224 216 176 +200 104 32 +248 168 80 +240 120 40 +232 232 248 +248 232 208 +120 104 72 +192 176 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raikou/overworld.png b/graphics/pokemon/raikou/overworld.png new file mode 100644 index 000000000000..8936847f4055 Binary files /dev/null and b/graphics/pokemon/raikou/overworld.png differ diff --git a/graphics/pokemon/raikou/overworld_normal.pal b/graphics/pokemon/raikou/overworld_normal.pal new file mode 100644 index 000000000000..3db57948b895 --- /dev/null +++ b/graphics/pokemon/raikou/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 32 96 +160 88 184 +72 88 88 +112 56 144 +0 0 0 +160 184 200 +232 232 248 +88 64 40 +152 200 200 +56 96 96 +48 80 104 +32 56 64 +232 184 64 +184 48 48 +184 120 16 diff --git a/graphics/pokemon/raikou/overworld_shiny.pal b/graphics/pokemon/raikou/overworld_shiny.pal new file mode 100644 index 000000000000..e460feaf0cf3 --- /dev/null +++ b/graphics/pokemon/raikou/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 112 48 +240 248 128 +72 88 88 +160 192 32 +0 0 0 +160 184 200 +232 232 248 +88 64 40 +152 200 200 +56 96 96 +48 80 104 +32 56 64 +248 152 64 +184 48 48 +192 112 64 diff --git a/graphics/pokemon/ralts/overworld.png b/graphics/pokemon/ralts/overworld.png new file mode 100644 index 000000000000..a698d6a274a8 Binary files /dev/null and b/graphics/pokemon/ralts/overworld.png differ diff --git a/graphics/pokemon/ralts/overworld_normal.pal b/graphics/pokemon/ralts/overworld_normal.pal new file mode 100644 index 000000000000..21ab5072b0a5 --- /dev/null +++ b/graphics/pokemon/ralts/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +128 32 56 +240 104 104 +0 0 0 +16 64 32 +184 48 72 +104 200 128 +72 176 88 +40 128 56 +72 72 80 +168 168 176 +200 200 216 +232 232 248 +128 128 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ralts/overworld_shiny.pal b/graphics/pokemon/ralts/overworld_shiny.pal new file mode 100644 index 000000000000..339ddeebedc6 --- /dev/null +++ b/graphics/pokemon/ralts/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 80 56 +240 160 72 +0 0 0 +16 96 120 +208 104 64 +160 224 200 +88 200 176 +32 144 120 +88 88 64 +168 168 144 +208 208 184 +232 232 248 +128 128 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rampardos/overworld.png b/graphics/pokemon/rampardos/overworld.png new file mode 100644 index 000000000000..7687dcc26416 Binary files /dev/null and b/graphics/pokemon/rampardos/overworld.png differ diff --git a/graphics/pokemon/rampardos/overworld_normal.pal b/graphics/pokemon/rampardos/overworld_normal.pal new file mode 100644 index 000000000000..f7f87300abfc --- /dev/null +++ b/graphics/pokemon/rampardos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 80 +64 88 152 +88 128 232 +0 0 0 +56 56 56 +112 112 112 +120 160 248 +224 224 224 +184 184 184 +152 152 152 +232 104 120 +128 64 80 +96 96 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rampardos/overworld_shiny.pal b/graphics/pokemon/rampardos/overworld_shiny.pal new file mode 100644 index 000000000000..cd4c65b37df2 --- /dev/null +++ b/graphics/pokemon/rampardos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 8 32 +168 32 64 +208 72 104 +0 0 0 +56 56 56 +112 112 112 +248 144 176 +224 224 224 +184 184 184 +152 152 152 +232 104 120 +128 64 80 +96 96 96 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rapidash/galarian/overworld.png b/graphics/pokemon/rapidash/galarian/overworld.png new file mode 100644 index 000000000000..f2a28d0427fb Binary files /dev/null and b/graphics/pokemon/rapidash/galarian/overworld.png differ diff --git a/graphics/pokemon/rapidash/galarian/overworld_normal.pal b/graphics/pokemon/rapidash/galarian/overworld_normal.pal new file mode 100644 index 000000000000..f317ac33009e --- /dev/null +++ b/graphics/pokemon/rapidash/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +18 2 31 +61 9 100 +71 113 111 +107 220 217 +167 235 232 +62 62 62 +121 74 121 +245 243 220 +198 110 198 +255 255 255 +0 0 0 +214 154 214 +226 187 226 +232 232 248 +230 223 160 diff --git a/graphics/pokemon/rapidash/galarian/overworld_shiny.pal b/graphics/pokemon/rapidash/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..f317ac33009e --- /dev/null +++ b/graphics/pokemon/rapidash/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +18 2 31 +61 9 100 +71 113 111 +107 220 217 +167 235 232 +62 62 62 +121 74 121 +245 243 220 +198 110 198 +255 255 255 +0 0 0 +214 154 214 +226 187 226 +232 232 248 +230 223 160 diff --git a/graphics/pokemon/rapidash/overworld.png b/graphics/pokemon/rapidash/overworld.png new file mode 100644 index 000000000000..f63e4811b2ee Binary files /dev/null and b/graphics/pokemon/rapidash/overworld.png differ diff --git a/graphics/pokemon/rapidash/overworld_normal.pal b/graphics/pokemon/rapidash/overworld_normal.pal new file mode 100644 index 000000000000..1282bee0c37f --- /dev/null +++ b/graphics/pokemon/rapidash/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 48 8 +248 160 24 +248 80 32 +72 56 40 +240 224 168 +0 0 0 +184 168 112 +152 56 80 +112 96 64 +232 232 248 +80 96 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rapidash/overworld_shiny.pal b/graphics/pokemon/rapidash/overworld_shiny.pal new file mode 100644 index 000000000000..bb41fdb95be6 --- /dev/null +++ b/graphics/pokemon/rapidash/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +200 200 200 +160 160 160 +88 72 72 +224 216 192 +0 0 0 +176 168 144 +104 104 104 +120 112 96 +232 232 248 +80 96 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raticate/alolan/overworld.png b/graphics/pokemon/raticate/alolan/overworld.png new file mode 100644 index 000000000000..36ff136eea6d Binary files /dev/null and b/graphics/pokemon/raticate/alolan/overworld.png differ diff --git a/graphics/pokemon/raticate/alolan/overworld_normal.pal b/graphics/pokemon/raticate/alolan/overworld_normal.pal new file mode 100644 index 000000000000..bec9e9e129a4 --- /dev/null +++ b/graphics/pokemon/raticate/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +101 93 91 +185 165 153 +50 56 50 +100 108 96 +74 79 72 +0 0 0 +118 73 73 +152 97 90 +237 221 205 +200 200 200 +232 232 248 +210 45 49 +222 207 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raticate/alolan/overworld_shiny.pal b/graphics/pokemon/raticate/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..5aba4b921dbe --- /dev/null +++ b/graphics/pokemon/raticate/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +101 93 91 +185 161 153 +62 32 36 +156 79 90 +119 58 65 +0 0 0 +118 73 73 +152 97 90 +237 217 205 +200 200 200 +232 232 248 +210 45 49 +222 207 199 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raticate/overworld.png b/graphics/pokemon/raticate/overworld.png new file mode 100644 index 000000000000..4ad2fd4be5e5 Binary files /dev/null and b/graphics/pokemon/raticate/overworld.png differ diff --git a/graphics/pokemon/raticate/overworld_normal.pal b/graphics/pokemon/raticate/overworld_normal.pal new file mode 100644 index 000000000000..bc5f7de1ee0c --- /dev/null +++ b/graphics/pokemon/raticate/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 64 24 +224 200 168 +224 144 56 +176 96 56 +0 0 0 +184 168 112 +200 200 200 +232 232 248 +136 48 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/raticate/overworld_shiny.pal b/graphics/pokemon/raticate/overworld_shiny.pal new file mode 100644 index 000000000000..abeb7d1f5837 --- /dev/null +++ b/graphics/pokemon/raticate/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 32 32 +224 200 168 +224 128 80 +192 88 56 +0 0 0 +184 168 112 +200 200 200 +232 232 248 +136 48 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rattata/alolan/overworld.png b/graphics/pokemon/rattata/alolan/overworld.png new file mode 100644 index 000000000000..8e870e819de6 Binary files /dev/null and b/graphics/pokemon/rattata/alolan/overworld.png differ diff --git a/graphics/pokemon/rattata/alolan/overworld_normal.pal b/graphics/pokemon/rattata/alolan/overworld_normal.pal new file mode 100644 index 000000000000..a858ce043308 --- /dev/null +++ b/graphics/pokemon/rattata/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +50 56 50 +100 108 96 +74 79 72 +0 0 0 +116 135 146 +184 168 128 +101 119 130 +216 216 216 +232 232 248 +210 45 49 +160 136 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rattata/alolan/overworld_shiny.pal b/graphics/pokemon/rattata/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..c740854db299 --- /dev/null +++ b/graphics/pokemon/rattata/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +62 32 36 +156 79 90 +119 58 65 +0 0 0 +116 135 146 +184 168 128 +101 119 130 +216 216 216 +232 232 248 +210 45 49 +160 136 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rattata/overworld.png b/graphics/pokemon/rattata/overworld.png new file mode 100644 index 000000000000..b708b3862c9d Binary files /dev/null and b/graphics/pokemon/rattata/overworld.png differ diff --git a/graphics/pokemon/rattata/overworld_normal.pal b/graphics/pokemon/rattata/overworld_normal.pal new file mode 100644 index 000000000000..2c8f5294d428 --- /dev/null +++ b/graphics/pokemon/rattata/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 88 +168 128 216 +104 88 152 +0 0 0 +232 216 176 +184 168 128 +216 216 216 +232 232 248 +224 56 32 +160 136 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rattata/overworld_shiny.pal b/graphics/pokemon/rattata/overworld_shiny.pal new file mode 100644 index 000000000000..8812ad877a0a --- /dev/null +++ b/graphics/pokemon/rattata/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 48 +184 168 128 +136 128 88 +0 0 0 +232 216 176 +184 168 128 +216 216 216 +232 232 248 +56 120 128 +160 136 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rayquaza/overworld.png b/graphics/pokemon/rayquaza/overworld.png new file mode 100644 index 000000000000..7e67f45c4dc3 Binary files /dev/null and b/graphics/pokemon/rayquaza/overworld.png differ diff --git a/graphics/pokemon/rayquaza/overworld_normal.pal b/graphics/pokemon/rayquaza/overworld_normal.pal new file mode 100644 index 000000000000..eacddd29f191 --- /dev/null +++ b/graphics/pokemon/rayquaza/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 16 8 +152 24 24 +16 16 16 +48 104 48 +16 64 24 +80 144 80 +120 184 112 +152 224 144 +48 48 48 +144 120 24 +192 160 40 +240 200 48 +200 40 40 +152 168 176 +200 216 240 diff --git a/graphics/pokemon/rayquaza/overworld_shiny.pal b/graphics/pokemon/rayquaza/overworld_shiny.pal new file mode 100644 index 000000000000..8685b6a397ea --- /dev/null +++ b/graphics/pokemon/rayquaza/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 16 8 +152 24 24 +16 16 16 +72 72 72 +40 40 40 +112 112 112 +144 144 144 +184 184 184 +48 48 48 +144 120 24 +192 160 40 +240 200 48 +200 40 40 +152 168 176 +200 216 240 diff --git a/graphics/pokemon/regice/overworld.png b/graphics/pokemon/regice/overworld.png new file mode 100644 index 000000000000..4b3338ce4448 Binary files /dev/null and b/graphics/pokemon/regice/overworld.png differ diff --git a/graphics/pokemon/regice/overworld_normal.pal b/graphics/pokemon/regice/overworld_normal.pal new file mode 100644 index 000000000000..5f160680e914 --- /dev/null +++ b/graphics/pokemon/regice/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 96 +0 0 0 +120 168 208 +200 240 248 +96 144 184 +176 224 248 +144 184 224 +64 104 144 +232 232 136 +184 168 88 +216 200 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/regice/overworld_shiny.pal b/graphics/pokemon/regice/overworld_shiny.pal new file mode 100644 index 000000000000..67ea8105891c --- /dev/null +++ b/graphics/pokemon/regice/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 56 128 +0 0 0 +112 200 232 +208 248 248 +72 168 232 +160 216 248 +136 200 240 +0 96 168 +232 232 136 +184 168 88 +216 200 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/regidrago/overworld.png b/graphics/pokemon/regidrago/overworld.png new file mode 100644 index 000000000000..5999a2cd6e5a Binary files /dev/null and b/graphics/pokemon/regidrago/overworld.png differ diff --git a/graphics/pokemon/regidrago/overworld_normal.pal b/graphics/pokemon/regidrago/overworld_normal.pal new file mode 100644 index 000000000000..514ea98459f5 --- /dev/null +++ b/graphics/pokemon/regidrago/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +56 80 88 +40 56 64 +224 80 112 +96 24 40 +128 40 56 +16 152 224 +96 136 152 +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/regidrago/overworld_shiny.pal b/graphics/pokemon/regidrago/overworld_shiny.pal new file mode 100644 index 000000000000..ddf14d710054 --- /dev/null +++ b/graphics/pokemon/regidrago/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +90 139 180 +65 115 148 +213 49 123 +106 0 49 +156 16 82 +24 197 230 +16 139 164 +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/regieleki/overworld.png b/graphics/pokemon/regieleki/overworld.png new file mode 100644 index 000000000000..83a177ae2e50 Binary files /dev/null and b/graphics/pokemon/regieleki/overworld.png differ diff --git a/graphics/pokemon/regieleki/overworld_normal.pal b/graphics/pokemon/regieleki/overworld_normal.pal new file mode 100644 index 000000000000..1c69e174c2c9 --- /dev/null +++ b/graphics/pokemon/regieleki/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +184 136 40 +224 232 24 +72 120 200 +48 80 144 +208 168 8 +248 248 192 +248 152 192 +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/regieleki/overworld_shiny.pal b/graphics/pokemon/regieleki/overworld_shiny.pal new file mode 100644 index 000000000000..52fc33ef18e8 --- /dev/null +++ b/graphics/pokemon/regieleki/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +156 164 16 +230 238 49 +222 222 222 +172 164 205 +172 172 106 +238 246 172 +230 238 49 +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/regigigas/overworld.png b/graphics/pokemon/regigigas/overworld.png new file mode 100644 index 000000000000..d647c41fe977 Binary files /dev/null and b/graphics/pokemon/regigigas/overworld.png differ diff --git a/graphics/pokemon/regigigas/overworld_normal.pal b/graphics/pokemon/regigigas/overworld_normal.pal new file mode 100644 index 000000000000..ebdf327b3666 --- /dev/null +++ b/graphics/pokemon/regigigas/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 40 +0 0 0 +168 136 40 +248 208 40 +232 232 248 +40 64 48 +40 104 72 +64 152 72 +80 80 104 +168 168 192 +120 120 136 +208 72 48 +64 160 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/regigigas/overworld_shiny.pal b/graphics/pokemon/regigigas/overworld_shiny.pal new file mode 100644 index 000000000000..7b06ca032c82 --- /dev/null +++ b/graphics/pokemon/regigigas/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 72 +0 0 0 +80 104 120 +136 136 168 +232 232 248 +40 64 48 +40 104 72 +64 152 72 +80 80 104 +168 168 192 +120 120 136 +208 72 48 +64 160 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/regirock/overworld.png b/graphics/pokemon/regirock/overworld.png new file mode 100644 index 000000000000..1a5f11a9e7d1 Binary files /dev/null and b/graphics/pokemon/regirock/overworld.png differ diff --git a/graphics/pokemon/regirock/overworld_normal.pal b/graphics/pokemon/regirock/overworld_normal.pal new file mode 100644 index 000000000000..d5d1bcf22ef4 --- /dev/null +++ b/graphics/pokemon/regirock/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 64 40 +96 40 32 +216 112 72 +176 88 56 +176 160 144 +232 216 200 +200 184 168 +136 112 88 +160 144 128 +112 88 80 +56 40 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/regirock/overworld_shiny.pal b/graphics/pokemon/regirock/overworld_shiny.pal new file mode 100644 index 000000000000..f3f27ce168f1 --- /dev/null +++ b/graphics/pokemon/regirock/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 64 40 +96 40 32 +216 112 72 +176 88 56 +160 112 80 +208 144 112 +184 128 96 +96 64 48 +128 88 72 +72 48 32 +56 40 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/registeel/overworld.png b/graphics/pokemon/registeel/overworld.png new file mode 100644 index 000000000000..621acb8d3822 Binary files /dev/null and b/graphics/pokemon/registeel/overworld.png differ diff --git a/graphics/pokemon/registeel/overworld_normal.pal b/graphics/pokemon/registeel/overworld_normal.pal new file mode 100644 index 000000000000..02eae9472a63 --- /dev/null +++ b/graphics/pokemon/registeel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 40 +0 0 0 +152 168 176 +184 200 208 +56 64 64 +104 120 120 +80 88 96 +128 144 152 +232 232 248 +96 40 32 +208 104 104 +192 56 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/registeel/overworld_shiny.pal b/graphics/pokemon/registeel/overworld_shiny.pal new file mode 100644 index 000000000000..f4c6cf2f329b --- /dev/null +++ b/graphics/pokemon/registeel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 40 40 +0 0 0 +128 176 128 +152 200 144 +56 64 64 +96 112 104 +80 88 96 +112 144 120 +232 232 248 +96 40 32 +208 104 104 +192 56 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/relicanth/overworld.png b/graphics/pokemon/relicanth/overworld.png new file mode 100644 index 000000000000..623b9cfc538c Binary files /dev/null and b/graphics/pokemon/relicanth/overworld.png differ diff --git a/graphics/pokemon/relicanth/overworld_normal.pal b/graphics/pokemon/relicanth/overworld_normal.pal new file mode 100644 index 000000000000..c957ceb36f2b --- /dev/null +++ b/graphics/pokemon/relicanth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 48 40 +0 0 0 +96 64 56 +144 112 96 +56 40 32 +136 120 104 +120 88 72 +168 152 128 +192 176 152 +216 200 168 +176 40 80 +104 96 80 +48 48 64 +72 72 96 +0 0 0 diff --git a/graphics/pokemon/relicanth/overworld_shiny.pal b/graphics/pokemon/relicanth/overworld_shiny.pal new file mode 100644 index 000000000000..2a233ac7ecf6 --- /dev/null +++ b/graphics/pokemon/relicanth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 80 88 +0 0 0 +72 120 128 +136 216 192 +56 40 32 +136 120 104 +104 168 168 +168 152 128 +192 176 152 +216 200 168 +176 40 80 +104 96 80 +48 48 64 +72 72 96 +0 0 0 diff --git a/graphics/pokemon/remoraid/overworld.png b/graphics/pokemon/remoraid/overworld.png new file mode 100644 index 000000000000..794da41c9da1 Binary files /dev/null and b/graphics/pokemon/remoraid/overworld.png differ diff --git a/graphics/pokemon/remoraid/overworld_normal.pal b/graphics/pokemon/remoraid/overworld_normal.pal new file mode 100644 index 000000000000..0d3ce9c54896 --- /dev/null +++ b/graphics/pokemon/remoraid/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +24 56 104 +72 120 160 +0 0 0 +40 80 128 +144 192 232 +112 152 200 +232 232 248 +72 72 72 +192 208 232 +168 184 208 +104 24 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/remoraid/overworld_shiny.pal b/graphics/pokemon/remoraid/overworld_shiny.pal new file mode 100644 index 000000000000..3b31fa91ee75 --- /dev/null +++ b/graphics/pokemon/remoraid/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 40 104 +120 104 168 +0 0 0 +96 72 136 +184 168 232 +152 136 200 +232 232 248 +72 72 72 +216 200 248 +184 168 232 +104 24 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/reshiram/overworld.png b/graphics/pokemon/reshiram/overworld.png new file mode 100644 index 000000000000..1f3f3ec241f4 Binary files /dev/null and b/graphics/pokemon/reshiram/overworld.png differ diff --git a/graphics/pokemon/reshiram/overworld_normal.pal b/graphics/pokemon/reshiram/overworld_normal.pal new file mode 100644 index 000000000000..b2377d6e4146 --- /dev/null +++ b/graphics/pokemon/reshiram/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +95 95 132 +194 194 207 +235 235 245 +62 62 66 +29 38 26 +122 150 164 +187 187 202 +246 202 174 +219 72 46 +78 84 120 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/reshiram/overworld_shiny.pal b/graphics/pokemon/reshiram/overworld_shiny.pal new file mode 100644 index 000000000000..b5f55ccb80f7 --- /dev/null +++ b/graphics/pokemon/reshiram/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +95 95 132 +194 194 207 +235 235 245 +62 62 66 +29 38 26 +124 151 165 +187 187 202 +246 202 174 +212 133 69 +84 84 122 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/reuniclus/overworld.png b/graphics/pokemon/reuniclus/overworld.png new file mode 100644 index 000000000000..d62c0ce78533 Binary files /dev/null and b/graphics/pokemon/reuniclus/overworld.png differ diff --git a/graphics/pokemon/reuniclus/overworld_normal.pal b/graphics/pokemon/reuniclus/overworld_normal.pal new file mode 100644 index 000000000000..c6e8b289577a --- /dev/null +++ b/graphics/pokemon/reuniclus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +26 89 56 +55 129 79 +79 172 112 +63 129 87 +208 236 191 +147 182 129 +40 87 55 +248 248 248 +218 87 87 +128 24 72 +155 71 71 +168 64 80 +218 182 112 +191 155 87 +0 0 0 diff --git a/graphics/pokemon/reuniclus/overworld_shiny.pal b/graphics/pokemon/reuniclus/overworld_shiny.pal new file mode 100644 index 000000000000..800b6b432c3e --- /dev/null +++ b/graphics/pokemon/reuniclus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 64 120 +48 104 136 +136 152 208 +96 112 80 +216 224 168 +168 168 120 +48 64 120 +248 248 248 +120 248 240 +128 24 72 +72 168 136 +168 64 80 +160 208 120 +96 176 24 +0 0 0 diff --git a/graphics/pokemon/rhydon/overworld.png b/graphics/pokemon/rhydon/overworld.png new file mode 100644 index 000000000000..c2dbf7628641 Binary files /dev/null and b/graphics/pokemon/rhydon/overworld.png differ diff --git a/graphics/pokemon/rhydon/overworld_normal.pal b/graphics/pokemon/rhydon/overworld_normal.pal new file mode 100644 index 000000000000..cab1a73a81ef --- /dev/null +++ b/graphics/pokemon/rhydon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +0 0 0 +184 184 184 +136 136 136 +216 216 216 +64 56 24 +232 232 248 +216 176 88 +136 32 56 +144 120 48 +120 104 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rhydon/overworld_shiny.pal b/graphics/pokemon/rhydon/overworld_shiny.pal new file mode 100644 index 000000000000..858452f8d4e5 --- /dev/null +++ b/graphics/pokemon/rhydon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 64 +0 0 0 +200 192 160 +160 160 128 +208 208 208 +64 56 24 +232 232 248 +216 176 88 +136 32 56 +144 120 48 +120 104 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rhyhorn/overworld.png b/graphics/pokemon/rhyhorn/overworld.png new file mode 100644 index 000000000000..d4d50881c82c Binary files /dev/null and b/graphics/pokemon/rhyhorn/overworld.png differ diff --git a/graphics/pokemon/rhyhorn/overworld_normal.pal b/graphics/pokemon/rhyhorn/overworld_normal.pal new file mode 100644 index 000000000000..192337d89f79 --- /dev/null +++ b/graphics/pokemon/rhyhorn/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +176 176 176 +0 0 0 +144 144 144 +200 200 200 +112 112 112 +232 232 248 +136 32 56 +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/rhyhorn/overworld_shiny.pal b/graphics/pokemon/rhyhorn/overworld_shiny.pal new file mode 100644 index 000000000000..915c27a76d0b --- /dev/null +++ b/graphics/pokemon/rhyhorn/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 40 16 +192 152 128 +0 0 0 +160 112 80 +224 200 184 +120 64 48 +232 232 248 +136 32 56 +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/rhyperior/overworld.png b/graphics/pokemon/rhyperior/overworld.png new file mode 100644 index 000000000000..a5560186a279 Binary files /dev/null and b/graphics/pokemon/rhyperior/overworld.png differ diff --git a/graphics/pokemon/rhyperior/overworld_normal.pal b/graphics/pokemon/rhyperior/overworld_normal.pal new file mode 100644 index 000000000000..cddee3b8faf4 --- /dev/null +++ b/graphics/pokemon/rhyperior/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 48 48 +208 72 32 +144 72 16 +192 192 200 +136 112 104 +64 40 24 +144 144 152 +88 80 72 +112 112 112 +232 232 248 +136 32 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rhyperior/overworld_shiny.pal b/graphics/pokemon/rhyperior/overworld_shiny.pal new file mode 100644 index 000000000000..89db31d8fadd --- /dev/null +++ b/graphics/pokemon/rhyperior/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 48 48 +224 184 32 +144 128 64 +192 192 200 +160 160 160 +64 56 24 +144 144 152 +112 112 112 +112 112 112 +232 232 248 +136 32 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ribombee/overworld.png b/graphics/pokemon/ribombee/overworld.png new file mode 100644 index 000000000000..494759c7481e Binary files /dev/null and b/graphics/pokemon/ribombee/overworld.png differ diff --git a/graphics/pokemon/ribombee/overworld_normal.pal b/graphics/pokemon/ribombee/overworld_normal.pal new file mode 100644 index 000000000000..bb24a1dc50d3 --- /dev/null +++ b/graphics/pokemon/ribombee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 254 241 +255 231 111 +233 192 151 +201 195 165 +255 186 98 +235 170 65 +135 132 119 +182 125 64 +146 100 34 +112 112 112 +95 95 95 +109 78 55 +59 59 59 +70 52 44 +0 0 0 diff --git a/graphics/pokemon/ribombee/overworld_shiny.pal b/graphics/pokemon/ribombee/overworld_shiny.pal new file mode 100644 index 000000000000..9ce05aa5c4de --- /dev/null +++ b/graphics/pokemon/ribombee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 254 241 +248 168 192 +233 192 151 +201 195 165 +255 186 98 +224 112 136 +135 132 119 +208 56 16 +152 48 32 +112 112 112 +95 95 95 +152 48 32 +59 59 59 +70 52 44 +0 0 0 diff --git a/graphics/pokemon/rillaboom/overworld.png b/graphics/pokemon/rillaboom/overworld.png new file mode 100644 index 000000000000..3fafecb6fdee Binary files /dev/null and b/graphics/pokemon/rillaboom/overworld.png differ diff --git a/graphics/pokemon/rillaboom/overworld_normal.pal b/graphics/pokemon/rillaboom/overworld_normal.pal new file mode 100644 index 000000000000..fa7f89011f68 --- /dev/null +++ b/graphics/pokemon/rillaboom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 156 252 +0 36 16 +76 52 48 +0 92 40 +112 92 76 +160 48 4 +144 88 56 +220 92 48 +128 96 92 +4 128 64 +180 128 76 +192 180 112 +4 4 4 +164 148 132 +228 220 156 +252 248 228 diff --git a/graphics/pokemon/rillaboom/overworld_shiny.pal b/graphics/pokemon/rillaboom/overworld_shiny.pal new file mode 100644 index 000000000000..01473c16c218 --- /dev/null +++ b/graphics/pokemon/rillaboom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 74 8 +74 32 32 +139 156 32 +74 32 32 +164 49 0 +148 90 57 +222 90 41 +131 98 90 +172 197 41 +180 131 74 +197 180 115 +16 8 8 +164 148 131 +230 222 156 +255 255 230 diff --git a/graphics/pokemon/riolu/overworld.png b/graphics/pokemon/riolu/overworld.png new file mode 100644 index 000000000000..f8f36a2e8181 Binary files /dev/null and b/graphics/pokemon/riolu/overworld.png differ diff --git a/graphics/pokemon/riolu/overworld_normal.pal b/graphics/pokemon/riolu/overworld_normal.pal new file mode 100644 index 000000000000..88539cd0432c --- /dev/null +++ b/graphics/pokemon/riolu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 88 112 +0 0 0 +72 136 192 +112 184 240 +56 104 144 +96 96 96 +72 72 72 +48 56 88 +232 232 248 +152 24 48 +168 184 200 +120 96 40 +40 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/riolu/overworld_shiny.pal b/graphics/pokemon/riolu/overworld_shiny.pal new file mode 100644 index 000000000000..5f57dfa96cb3 --- /dev/null +++ b/graphics/pokemon/riolu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 96 40 +0 0 0 +232 184 80 +248 216 120 +176 136 56 +88 112 120 +64 96 104 +64 64 48 +232 232 248 +152 24 48 +176 184 192 +8 152 248 +40 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rockruff/overworld.png b/graphics/pokemon/rockruff/overworld.png new file mode 100644 index 000000000000..ee6c33ee007c Binary files /dev/null and b/graphics/pokemon/rockruff/overworld.png differ diff --git a/graphics/pokemon/rockruff/overworld_normal.pal b/graphics/pokemon/rockruff/overworld_normal.pal new file mode 100644 index 000000000000..23b5d4df131a --- /dev/null +++ b/graphics/pokemon/rockruff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +237 236 231 +222 218 210 +180 170 168 +198 158 135 +242 132 210 +160 120 100 +136 116 114 +51 153 235 +104 81 72 +122 79 70 +72 57 51 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rockruff/overworld_shiny.pal b/graphics/pokemon/rockruff/overworld_shiny.pal new file mode 100644 index 000000000000..2d0c2b6a9750 --- /dev/null +++ b/graphics/pokemon/rockruff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +237 236 231 +222 218 210 +180 170 168 +144 200 224 +242 132 210 +96 144 200 +136 116 114 +168 184 40 +104 81 72 +122 79 70 +40 80 104 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/roggenrola/overworld.png b/graphics/pokemon/roggenrola/overworld.png new file mode 100644 index 000000000000..1c29045f2fa6 Binary files /dev/null and b/graphics/pokemon/roggenrola/overworld.png differ diff --git a/graphics/pokemon/roggenrola/overworld_normal.pal b/graphics/pokemon/roggenrola/overworld_normal.pal new file mode 100644 index 000000000000..271c608de630 --- /dev/null +++ b/graphics/pokemon/roggenrola/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 32 24 +0 0 0 +123 90 74 +90 65 49 +24 32 57 +41 57 106 +65 82 139 +90 65 32 +156 115 16 +255 189 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/roggenrola/overworld_shiny.pal b/graphics/pokemon/roggenrola/overworld_shiny.pal new file mode 100644 index 000000000000..ddc8f8d9eb9c --- /dev/null +++ b/graphics/pokemon/roggenrola/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 32 32 +0 0 0 +104 88 88 +72 64 56 +40 16 48 +72 40 104 +104 64 136 +88 64 32 +168 96 32 +248 120 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rolycoly/overworld.png b/graphics/pokemon/rolycoly/overworld.png new file mode 100644 index 000000000000..04aff9995b94 Binary files /dev/null and b/graphics/pokemon/rolycoly/overworld.png differ diff --git a/graphics/pokemon/rolycoly/overworld_normal.pal b/graphics/pokemon/rolycoly/overworld_normal.pal new file mode 100644 index 000000000000..972f337c51e2 --- /dev/null +++ b/graphics/pokemon/rolycoly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +10 10 10 +50 50 50 +26 25 25 +26 26 26 +114 113 104 +66 65 62 +90 89 83 +34 33 33 +0 0 0 +242 121 37 +224 224 224 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rolycoly/overworld_shiny.pal b/graphics/pokemon/rolycoly/overworld_shiny.pal new file mode 100644 index 000000000000..783489d67e64 --- /dev/null +++ b/graphics/pokemon/rolycoly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +49 49 49 +16 32 32 +24 24 24 +123 164 172 +82 123 131 +98 139 156 +49 82 98 +0 0 0 +246 123 32 +230 230 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rookidee/overworld.png b/graphics/pokemon/rookidee/overworld.png new file mode 100644 index 000000000000..5448710bd845 Binary files /dev/null and b/graphics/pokemon/rookidee/overworld.png differ diff --git a/graphics/pokemon/rookidee/overworld_normal.pal b/graphics/pokemon/rookidee/overworld_normal.pal new file mode 100644 index 000000000000..a053bf41d92f --- /dev/null +++ b/graphics/pokemon/rookidee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +46 255 0 +15 30 51 +14 14 14 +36 74 124 +31 31 31 +59 107 169 +0 0 0 +220 46 53 +255 255 255 +153 154 158 +113 114 119 +230 205 74 +244 223 113 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rookidee/overworld_shiny.pal b/graphics/pokemon/rookidee/overworld_shiny.pal new file mode 100644 index 000000000000..9187e984b15a --- /dev/null +++ b/graphics/pokemon/rookidee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +46 255 0 +82 74 41 +8 8 8 +172 156 106 +24 24 24 +238 222 156 +0 0 0 +222 41 49 +255 255 255 +156 156 156 +115 115 115 +189 189 180 +238 238 238 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/roselia/overworld.png b/graphics/pokemon/roselia/overworld.png new file mode 100644 index 000000000000..e648e28ceb08 Binary files /dev/null and b/graphics/pokemon/roselia/overworld.png differ diff --git a/graphics/pokemon/roselia/overworld_normal.pal b/graphics/pokemon/roselia/overworld_normal.pal new file mode 100644 index 000000000000..bd11b0e9fb75 --- /dev/null +++ b/graphics/pokemon/roselia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +216 216 216 +56 96 16 +32 56 16 +88 144 16 +0 0 0 +160 200 144 +88 16 48 +24 48 88 +144 40 80 +200 64 112 +80 144 208 +40 96 136 +88 144 16 +168 128 56 +232 184 64 +0 0 0 diff --git a/graphics/pokemon/roselia/overworld_shiny.pal b/graphics/pokemon/roselia/overworld_shiny.pal new file mode 100644 index 000000000000..4049805a68d4 --- /dev/null +++ b/graphics/pokemon/roselia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +104 112 16 +64 56 16 +152 152 16 +0 0 0 +216 200 144 +72 16 96 +40 40 40 +136 64 184 +176 112 232 +120 120 128 +64 64 64 +168 152 112 +168 128 56 +232 184 64 +0 0 0 diff --git a/graphics/pokemon/roserade/overworld.png b/graphics/pokemon/roserade/overworld.png new file mode 100644 index 000000000000..68745987cd89 Binary files /dev/null and b/graphics/pokemon/roserade/overworld.png differ diff --git a/graphics/pokemon/roserade/overworld_normal.pal b/graphics/pokemon/roserade/overworld_normal.pal new file mode 100644 index 000000000000..3a723e6f04c3 --- /dev/null +++ b/graphics/pokemon/roserade/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 208 240 +72 72 72 +200 216 216 +232 232 248 +160 176 176 +0 0 0 +16 64 24 +48 120 40 +144 192 104 +96 168 72 +232 184 64 +200 64 112 +168 128 56 +136 16 72 +80 168 232 +40 104 152 diff --git a/graphics/pokemon/roserade/overworld_shiny.pal b/graphics/pokemon/roserade/overworld_shiny.pal new file mode 100644 index 000000000000..1d59ab1fedcd --- /dev/null +++ b/graphics/pokemon/roserade/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 208 240 +72 72 72 +200 216 216 +232 232 248 +160 176 176 +0 0 0 +56 96 8 +112 144 32 +184 208 88 +144 184 64 +232 184 64 +176 120 176 +168 128 56 +128 80 128 +144 144 144 +40 104 152 diff --git a/graphics/pokemon/rotom/fan/overworld.png b/graphics/pokemon/rotom/fan/overworld.png new file mode 100644 index 000000000000..a89318dd2c8c Binary files /dev/null and b/graphics/pokemon/rotom/fan/overworld.png differ diff --git a/graphics/pokemon/rotom/fan/overworld_normal.pal b/graphics/pokemon/rotom/fan/overworld_normal.pal new file mode 100644 index 000000000000..b0e952c33ab4 --- /dev/null +++ b/graphics/pokemon/rotom/fan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +232 144 64 +248 200 80 +112 56 8 +216 112 48 +240 152 72 +0 0 0 +64 64 64 +184 88 32 +248 248 152 +208 160 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/fan/overworld_shiny.pal b/graphics/pokemon/rotom/fan/overworld_shiny.pal new file mode 100644 index 000000000000..78bb6043a9d2 --- /dev/null +++ b/graphics/pokemon/rotom/fan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +224 72 64 +248 136 136 +0 0 0 +64 64 64 +192 48 48 +248 248 184 +208 160 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/frost/overworld.png b/graphics/pokemon/rotom/frost/overworld.png new file mode 100644 index 000000000000..7711749deeab Binary files /dev/null and b/graphics/pokemon/rotom/frost/overworld.png differ diff --git a/graphics/pokemon/rotom/frost/overworld_normal.pal b/graphics/pokemon/rotom/frost/overworld_normal.pal new file mode 100644 index 000000000000..fa2c6ac9ec8a --- /dev/null +++ b/graphics/pokemon/rotom/frost/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 96 160 +192 160 216 +144 72 16 +240 152 72 +216 112 48 +216 216 240 +184 88 32 +72 16 112 +0 0 0 +48 48 48 +88 88 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/frost/overworld_shiny.pal b/graphics/pokemon/rotom/frost/overworld_shiny.pal new file mode 100644 index 000000000000..8434e1e2fe9b --- /dev/null +++ b/graphics/pokemon/rotom/frost/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +240 120 104 +208 72 48 +248 248 184 +192 48 48 +72 16 112 +0 0 0 +48 48 48 +88 88 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/heat/overworld.png b/graphics/pokemon/rotom/heat/overworld.png new file mode 100644 index 000000000000..0aee2d126a7c Binary files /dev/null and b/graphics/pokemon/rotom/heat/overworld.png differ diff --git a/graphics/pokemon/rotom/heat/overworld_normal.pal b/graphics/pokemon/rotom/heat/overworld_normal.pal new file mode 100644 index 000000000000..51c9ac20c114 --- /dev/null +++ b/graphics/pokemon/rotom/heat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 40 16 +216 88 48 +144 72 16 +240 152 72 +216 112 48 +248 216 128 +0 0 0 +184 88 32 +128 32 24 +40 40 40 +72 72 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/heat/overworld_shiny.pal b/graphics/pokemon/rotom/heat/overworld_shiny.pal new file mode 100644 index 000000000000..9cc5f39c9d8f --- /dev/null +++ b/graphics/pokemon/rotom/heat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +240 120 104 +208 72 48 +248 248 184 +0 0 0 +192 48 48 +128 32 24 +40 40 40 +72 72 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/mow/overworld.png b/graphics/pokemon/rotom/mow/overworld.png new file mode 100644 index 000000000000..37214063158a Binary files /dev/null and b/graphics/pokemon/rotom/mow/overworld.png differ diff --git a/graphics/pokemon/rotom/mow/overworld_normal.pal b/graphics/pokemon/rotom/mow/overworld_normal.pal new file mode 100644 index 000000000000..bbab999de97f --- /dev/null +++ b/graphics/pokemon/rotom/mow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 128 72 +152 216 40 +144 72 16 +216 112 48 +240 152 72 +216 248 136 +0 0 0 +184 88 32 +64 64 64 +112 112 112 +24 88 16 +192 192 224 +232 232 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/mow/overworld_shiny.pal b/graphics/pokemon/rotom/mow/overworld_shiny.pal new file mode 100644 index 000000000000..58e19f94b155 --- /dev/null +++ b/graphics/pokemon/rotom/mow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +224 72 64 +248 136 136 +248 248 184 +0 0 0 +192 48 48 +64 64 64 +112 112 112 +24 88 16 +192 192 224 +232 232 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/overworld.png b/graphics/pokemon/rotom/overworld.png new file mode 100644 index 000000000000..e7f268974cab Binary files /dev/null and b/graphics/pokemon/rotom/overworld.png differ diff --git a/graphics/pokemon/rotom/overworld_normal.pal b/graphics/pokemon/rotom/overworld_normal.pal new file mode 100644 index 000000000000..178ad55402b9 --- /dev/null +++ b/graphics/pokemon/rotom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 128 160 +104 184 216 +144 72 16 +216 112 48 +184 88 32 +240 152 72 +176 232 240 +64 64 64 +16 72 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/overworld_shiny.pal b/graphics/pokemon/rotom/overworld_shiny.pal new file mode 100644 index 000000000000..34b417b5e271 --- /dev/null +++ b/graphics/pokemon/rotom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +224 72 64 +192 48 48 +248 136 136 +248 248 184 +64 64 64 +16 136 216 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/wash/overworld.png b/graphics/pokemon/rotom/wash/overworld.png new file mode 100644 index 000000000000..e2cd230ce4e8 Binary files /dev/null and b/graphics/pokemon/rotom/wash/overworld.png differ diff --git a/graphics/pokemon/rotom/wash/overworld_normal.pal b/graphics/pokemon/rotom/wash/overworld_normal.pal new file mode 100644 index 000000000000..fadf8c9901d0 --- /dev/null +++ b/graphics/pokemon/rotom/wash/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 96 160 +104 160 232 +112 56 8 +240 152 72 +216 112 48 +184 88 32 +176 232 240 +16 72 112 +64 64 64 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rotom/wash/overworld_shiny.pal b/graphics/pokemon/rotom/wash/overworld_shiny.pal new file mode 100644 index 000000000000..1c55175837d0 --- /dev/null +++ b/graphics/pokemon/rotom/wash/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +200 128 0 +224 200 88 +128 48 40 +240 120 104 +208 72 48 +192 48 48 +248 248 184 +16 72 112 +64 64 64 +80 80 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rowlet/overworld.png b/graphics/pokemon/rowlet/overworld.png new file mode 100644 index 000000000000..62f168d60e1a Binary files /dev/null and b/graphics/pokemon/rowlet/overworld.png differ diff --git a/graphics/pokemon/rowlet/overworld_normal.pal b/graphics/pokemon/rowlet/overworld_normal.pal new file mode 100644 index 000000000000..68cb9b4e0a9c --- /dev/null +++ b/graphics/pokemon/rowlet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +85 66 53 +213 160 121 +16 16 16 +232 232 248 +179 183 184 +189 115 87 +250 171 78 +38 76 38 +112 86 67 +64 164 70 +184 106 14 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rowlet/overworld_shiny.pal b/graphics/pokemon/rowlet/overworld_shiny.pal new file mode 100644 index 000000000000..b03438e93820 --- /dev/null +++ b/graphics/pokemon/rowlet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +40 70 58 +138 204 171 +16 16 16 +232 232 248 +179 183 184 +92 168 138 +228 83 64 +38 76 38 +112 86 67 +54 149 170 +211 54 39 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/rufflet/overworld.png b/graphics/pokemon/rufflet/overworld.png new file mode 100644 index 000000000000..8f1ea609be4b Binary files /dev/null and b/graphics/pokemon/rufflet/overworld.png differ diff --git a/graphics/pokemon/rufflet/overworld_normal.pal b/graphics/pokemon/rufflet/overworld_normal.pal new file mode 100644 index 000000000000..3bc9910d92da --- /dev/null +++ b/graphics/pokemon/rufflet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +33 55 71 +0 0 0 +164 172 191 +71 63 47 +245 236 208 +182 172 147 +215 129 55 +215 129 55 +95 121 138 +215 129 55 +229 229 247 +215 129 55 +245 236 208 +77 91 99 +152 88 40 diff --git a/graphics/pokemon/rufflet/overworld_shiny.pal b/graphics/pokemon/rufflet/overworld_shiny.pal new file mode 100644 index 000000000000..247ce5eee7b8 --- /dev/null +++ b/graphics/pokemon/rufflet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 56 32 +0 0 0 +164 172 191 +71 63 47 +240 232 208 +184 176 152 +240 120 48 +164 63 63 +168 136 88 +247 203 85 +229 229 247 +229 159 11 +245 236 208 +121 104 87 +152 88 40 diff --git a/graphics/pokemon/runerigus/overworld.png b/graphics/pokemon/runerigus/overworld.png new file mode 100644 index 000000000000..fcaef221b5ef Binary files /dev/null and b/graphics/pokemon/runerigus/overworld.png differ diff --git a/graphics/pokemon/runerigus/overworld_normal.pal b/graphics/pokemon/runerigus/overworld_normal.pal new file mode 100644 index 000000000000..05bb899f0b83 --- /dev/null +++ b/graphics/pokemon/runerigus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +40 36 36 +229 224 225 +136 126 127 +194 184 185 +235 93 91 +179 56 54 +0 0 0 +24 24 24 +56 56 56 +87 43 104 +159 83 188 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/runerigus/overworld_shiny.pal b/graphics/pokemon/runerigus/overworld_shiny.pal new file mode 100644 index 000000000000..7e74fbf2df6a --- /dev/null +++ b/graphics/pokemon/runerigus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 49 57 +246 222 246 +164 148 164 +197 180 189 +189 90 164 +106 41 90 +0 0 0 +41 41 49 +65 57 74 +74 156 115 +115 230 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sableye/overworld.png b/graphics/pokemon/sableye/overworld.png new file mode 100644 index 000000000000..c78ae22e23a9 Binary files /dev/null and b/graphics/pokemon/sableye/overworld.png differ diff --git a/graphics/pokemon/sableye/overworld_normal.pal b/graphics/pokemon/sableye/overworld_normal.pal new file mode 100644 index 000000000000..270f480bc9b6 --- /dev/null +++ b/graphics/pokemon/sableye/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 48 104 +88 64 144 +144 128 216 +120 96 176 +48 80 136 +120 160 224 +80 120 184 +232 232 248 +232 88 112 +192 56 56 +24 152 120 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sableye/overworld_shiny.pal b/graphics/pokemon/sableye/overworld_shiny.pal new file mode 100644 index 000000000000..a84194b5cd91 --- /dev/null +++ b/graphics/pokemon/sableye/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 56 0 +160 96 32 +248 208 112 +208 152 72 +160 96 32 +248 200 88 +248 168 72 +232 232 248 +24 224 120 +0 160 88 +192 56 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/salamence/overworld.png b/graphics/pokemon/salamence/overworld.png new file mode 100644 index 000000000000..e6a01c24755a Binary files /dev/null and b/graphics/pokemon/salamence/overworld.png differ diff --git a/graphics/pokemon/salamence/overworld_normal.pal b/graphics/pokemon/salamence/overworld_normal.pal new file mode 100644 index 000000000000..da129e141985 --- /dev/null +++ b/graphics/pokemon/salamence/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 32 +216 88 120 +0 0 0 +160 64 64 +48 72 112 +152 200 208 +40 144 168 +192 80 96 +80 184 200 +160 160 176 +232 232 248 +56 56 64 +128 128 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/salamence/overworld_shiny.pal b/graphics/pokemon/salamence/overworld_shiny.pal new file mode 100644 index 000000000000..0a98e224a909 --- /dev/null +++ b/graphics/pokemon/salamence/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 32 +216 88 120 +0 0 0 +160 64 64 +40 88 40 +136 224 152 +48 168 64 +192 80 96 +104 192 112 +160 160 176 +232 232 248 +56 56 64 +128 128 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/salandit/overworld.png b/graphics/pokemon/salandit/overworld.png new file mode 100644 index 000000000000..ecccf533ccba Binary files /dev/null and b/graphics/pokemon/salandit/overworld.png differ diff --git a/graphics/pokemon/salandit/overworld_normal.pal b/graphics/pokemon/salandit/overworld_normal.pal new file mode 100644 index 000000000000..1f5568b9b208 --- /dev/null +++ b/graphics/pokemon/salandit/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +190 130 230 +243 118 85 +209 78 57 +126 130 130 +100 100 108 +85 90 91 +80 80 88 +62 62 67 +42 42 45 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/salandit/overworld_shiny.pal b/graphics/pokemon/salandit/overworld_shiny.pal new file mode 100644 index 000000000000..eaa4f0a9afac --- /dev/null +++ b/graphics/pokemon/salandit/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +190 130 230 +243 118 85 +209 78 57 +200 192 200 +100 100 108 +144 136 144 +80 80 88 +62 62 67 +42 42 45 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/salazzle/overworld.png b/graphics/pokemon/salazzle/overworld.png new file mode 100644 index 000000000000..8b19f171baf9 Binary files /dev/null and b/graphics/pokemon/salazzle/overworld.png differ diff --git a/graphics/pokemon/salazzle/overworld_normal.pal b/graphics/pokemon/salazzle/overworld_normal.pal new file mode 100644 index 000000000000..0b296bdf942d --- /dev/null +++ b/graphics/pokemon/salazzle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +184 157 206 +145 106 170 +109 104 102 +100 100 108 +214 75 124 +190 69 111 +80 80 88 +72 67 66 +86 55 115 +62 62 67 +42 42 45 +44 40 39 +34 34 37 +54 21 33 +0 0 0 diff --git a/graphics/pokemon/salazzle/overworld_shiny.pal b/graphics/pokemon/salazzle/overworld_shiny.pal new file mode 100644 index 000000000000..0e4f0c07174e --- /dev/null +++ b/graphics/pokemon/salazzle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +184 157 206 +145 106 170 +109 104 102 +200 192 200 +214 75 124 +190 69 111 +144 136 144 +72 67 66 +86 55 115 +112 96 96 +42 42 45 +44 40 39 +34 34 37 +54 21 33 +0 0 0 diff --git a/graphics/pokemon/samurott/hisuian/overworld.png b/graphics/pokemon/samurott/hisuian/overworld.png new file mode 100644 index 000000000000..6dd47d57773c Binary files /dev/null and b/graphics/pokemon/samurott/hisuian/overworld.png differ diff --git a/graphics/pokemon/samurott/hisuian/overworld_normal.pal b/graphics/pokemon/samurott/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..e6be3b5f562f --- /dev/null +++ b/graphics/pokemon/samurott/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 65 +0 0 0 +238 238 255 +189 189 197 +16 24 49 +189 49 49 +32 24 32 +41 49 74 +106 32 32 +82 65 98 +213 65 82 +123 156 156 +74 106 106 +32 65 156 +164 164 180 diff --git a/graphics/pokemon/samurott/hisuian/overworld_shiny.pal b/graphics/pokemon/samurott/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..827453552a4a --- /dev/null +++ b/graphics/pokemon/samurott/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 65 +0 0 0 +238 238 246 +189 189 197 +16 24 49 +180 164 156 +197 189 197 +222 213 222 +139 115 106 +238 238 246 +213 65 82 +123 156 156 +74 106 106 +32 65 156 +164 164 180 diff --git a/graphics/pokemon/samurott/overworld.png b/graphics/pokemon/samurott/overworld.png new file mode 100644 index 000000000000..2cb7655415e0 Binary files /dev/null and b/graphics/pokemon/samurott/overworld.png differ diff --git a/graphics/pokemon/samurott/overworld_normal.pal b/graphics/pokemon/samurott/overworld_normal.pal new file mode 100644 index 000000000000..e957723e2c0a --- /dev/null +++ b/graphics/pokemon/samurott/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +63 63 63 +112 87 55 +230 219 179 +208 191 112 +164 138 79 +0 0 0 +229 229 247 +191 191 199 +121 155 155 +25 47 87 +16 16 40 +25 79 147 +208 71 87 +117 0 0 +79 104 104 diff --git a/graphics/pokemon/samurott/overworld_shiny.pal b/graphics/pokemon/samurott/overworld_shiny.pal new file mode 100644 index 000000000000..9ea4641182d9 --- /dev/null +++ b/graphics/pokemon/samurott/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 80 64 +184 112 88 +240 224 224 +216 168 144 +216 152 128 +0 0 0 +248 248 248 +192 192 200 +192 184 128 +32 32 56 +16 16 40 +24 56 96 +208 80 96 +96 96 96 +136 136 88 diff --git a/graphics/pokemon/sandaconda/overworld.png b/graphics/pokemon/sandaconda/overworld.png new file mode 100644 index 000000000000..812ca3317606 Binary files /dev/null and b/graphics/pokemon/sandaconda/overworld.png differ diff --git a/graphics/pokemon/sandaconda/overworld_normal.pal b/graphics/pokemon/sandaconda/overworld_normal.pal new file mode 100644 index 000000000000..aaf6a3d6066a --- /dev/null +++ b/graphics/pokemon/sandaconda/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 200 +0 0 0 +16 16 4 +24 24 16 +52 48 20 +84 60 36 +92 84 36 +120 92 60 +116 108 56 +76 72 72 +168 76 56 +136 212 0 +148 148 140 +160 156 148 +204 200 192 +8 8 4 diff --git a/graphics/pokemon/sandaconda/overworld_shiny.pal b/graphics/pokemon/sandaconda/overworld_shiny.pal new file mode 100644 index 000000000000..5393b93af8a5 --- /dev/null +++ b/graphics/pokemon/sandaconda/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 32 24 +32 32 32 +82 82 74 +106 98 98 +115 123 106 +139 131 123 +156 156 131 +74 74 65 +90 82 49 +180 180 24 +156 156 131 +164 156 148 +238 230 205 +8 8 8 diff --git a/graphics/pokemon/sandile/overworld.png b/graphics/pokemon/sandile/overworld.png new file mode 100644 index 000000000000..4f19f9cb1292 Binary files /dev/null and b/graphics/pokemon/sandile/overworld.png differ diff --git a/graphics/pokemon/sandile/overworld_normal.pal b/graphics/pokemon/sandile/overworld_normal.pal new file mode 100644 index 000000000000..5656ae68c411 --- /dev/null +++ b/graphics/pokemon/sandile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +85 54 0 +117 117 54 +54 54 54 +25 25 54 +185 151 54 +117 117 54 +220 185 117 +85 85 117 +54 54 61 +185 117 117 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandile/overworld_shiny.pal b/graphics/pokemon/sandile/overworld_shiny.pal new file mode 100644 index 000000000000..2eb5b97a0ecb --- /dev/null +++ b/graphics/pokemon/sandile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 80 32 +128 144 56 +54 54 54 +25 25 54 +200 200 72 +117 117 54 +224 216 120 +85 85 117 +54 54 61 +64 144 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandshrew/alolan/overworld.png b/graphics/pokemon/sandshrew/alolan/overworld.png new file mode 100644 index 000000000000..8b6c58a6699a Binary files /dev/null and b/graphics/pokemon/sandshrew/alolan/overworld.png differ diff --git a/graphics/pokemon/sandshrew/alolan/overworld_normal.pal b/graphics/pokemon/sandshrew/alolan/overworld_normal.pal new file mode 100644 index 000000000000..e348ab85bd3a --- /dev/null +++ b/graphics/pokemon/sandshrew/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +53 78 115 +132 179 206 +182 219 231 +0 0 0 +93 132 155 +16 57 123 +232 232 248 +205 190 133 +254 254 169 +160 160 160 +98 90 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandshrew/alolan/overworld_shiny.pal b/graphics/pokemon/sandshrew/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..b9c27badc702 --- /dev/null +++ b/graphics/pokemon/sandshrew/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +53 78 115 +132 179 206 +182 219 231 +0 0 0 +93 132 155 +16 57 123 +232 232 248 +58 106 183 +100 151 234 +117 146 193 +30 78 154 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandshrew/overworld.png b/graphics/pokemon/sandshrew/overworld.png new file mode 100644 index 000000000000..cc4652b276b5 Binary files /dev/null and b/graphics/pokemon/sandshrew/overworld.png differ diff --git a/graphics/pokemon/sandshrew/overworld_normal.pal b/graphics/pokemon/sandshrew/overworld_normal.pal new file mode 100644 index 000000000000..f6548e630173 --- /dev/null +++ b/graphics/pokemon/sandshrew/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 32 +184 136 40 +216 168 56 +0 0 0 +120 104 88 +32 96 120 +232 232 248 +184 168 136 +224 216 168 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandshrew/overworld_shiny.pal b/graphics/pokemon/sandshrew/overworld_shiny.pal new file mode 100644 index 000000000000..25eadc3f708b --- /dev/null +++ b/graphics/pokemon/sandshrew/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 96 32 +136 152 40 +168 192 56 +0 0 0 +96 112 80 +32 96 120 +232 232 248 +184 168 136 +224 216 168 +160 160 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sandslash/alolan/overworld.png b/graphics/pokemon/sandslash/alolan/overworld.png new file mode 100644 index 000000000000..aaae1473d5e7 Binary files /dev/null and b/graphics/pokemon/sandslash/alolan/overworld.png differ diff --git a/graphics/pokemon/sandslash/alolan/overworld_normal.pal b/graphics/pokemon/sandslash/alolan/overworld_normal.pal new file mode 100644 index 000000000000..ec88d1783795 --- /dev/null +++ b/graphics/pokemon/sandslash/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 89 112 +167 236 243 +104 192 236 +0 0 0 +173 216 232 +139 168 202 +84 148 186 +1 63 94 +44 138 172 +232 232 248 +240 240 244 +88 88 88 +170 170 196 +152 152 152 +176 176 176 diff --git a/graphics/pokemon/sandslash/alolan/overworld_shiny.pal b/graphics/pokemon/sandslash/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..d7128629bf69 --- /dev/null +++ b/graphics/pokemon/sandslash/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 89 112 +167 236 243 +104 192 236 +0 0 0 +137 199 224 +106 148 197 +84 148 186 +1 63 94 +44 138 172 +232 232 248 +71 133 157 +88 88 88 +64 138 164 +71 133 157 +176 176 176 diff --git a/graphics/pokemon/sandslash/overworld.png b/graphics/pokemon/sandslash/overworld.png new file mode 100644 index 000000000000..efe541d2ada9 Binary files /dev/null and b/graphics/pokemon/sandslash/overworld.png differ diff --git a/graphics/pokemon/sandslash/overworld_normal.pal b/graphics/pokemon/sandslash/overworld_normal.pal new file mode 100644 index 000000000000..72ee2e31ef00 --- /dev/null +++ b/graphics/pokemon/sandslash/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 32 16 +136 96 40 +0 0 0 +224 168 64 +96 64 32 +160 104 32 +200 136 48 +8 40 56 +40 104 128 +232 232 248 +232 224 152 +88 88 88 +152 152 152 +192 160 136 +176 176 176 diff --git a/graphics/pokemon/sandslash/overworld_shiny.pal b/graphics/pokemon/sandslash/overworld_shiny.pal new file mode 100644 index 000000000000..b78acc2d4e70 --- /dev/null +++ b/graphics/pokemon/sandslash/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 8 8 +176 40 40 +0 0 0 +192 152 96 +112 8 8 +136 96 64 +168 120 80 +8 40 56 +40 104 128 +232 232 248 +232 224 152 +88 88 88 +152 152 152 +192 160 136 +176 176 176 diff --git a/graphics/pokemon/sandygast/overworld.png b/graphics/pokemon/sandygast/overworld.png new file mode 100644 index 000000000000..a407e9341c55 Binary files /dev/null and b/graphics/pokemon/sandygast/overworld.png differ diff --git a/graphics/pokemon/sandygast/overworld_normal.pal b/graphics/pokemon/sandygast/overworld_normal.pal new file mode 100644 index 000000000000..50ed5787cc41 --- /dev/null +++ b/graphics/pokemon/sandygast/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +233 228 195 +206 218 227 +204 199 171 +200 112 84 +96 91 78 +89 87 76 +132 47 47 +16 16 16 +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/sandygast/overworld_shiny.pal b/graphics/pokemon/sandygast/overworld_shiny.pal new file mode 100644 index 000000000000..6bdcf374b68c --- /dev/null +++ b/graphics/pokemon/sandygast/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +112 112 112 +206 218 227 +72 72 72 +248 240 80 +96 91 78 +32 32 32 +208 176 0 +16 16 16 +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/sawk/overworld.png b/graphics/pokemon/sawk/overworld.png new file mode 100644 index 000000000000..8d5bc531cda6 Binary files /dev/null and b/graphics/pokemon/sawk/overworld.png differ diff --git a/graphics/pokemon/sawk/overworld_normal.pal b/graphics/pokemon/sawk/overworld_normal.pal new file mode 100644 index 000000000000..8a8a62c1c887 --- /dev/null +++ b/graphics/pokemon/sawk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +18 63 87 +71 129 236 +33 33 33 +18 79 147 +55 55 63 +104 164 182 +11 11 11 +172 245 236 +229 229 247 +138 129 121 +95 104 112 +47 95 191 +0 0 0 +47 95 191 +0 0 0 diff --git a/graphics/pokemon/sawk/overworld_shiny.pal b/graphics/pokemon/sawk/overworld_shiny.pal new file mode 100644 index 000000000000..ccf10150dd39 --- /dev/null +++ b/graphics/pokemon/sawk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +112 96 232 +33 33 33 +72 64 88 +55 55 63 +168 200 200 +11 11 11 +208 240 232 +229 229 247 +138 129 121 +95 104 112 +80 72 192 +0 0 0 +47 95 191 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/autumn/overworld.png b/graphics/pokemon/sawsbuck/autumn/overworld.png new file mode 100644 index 000000000000..d846642dd559 Binary files /dev/null and b/graphics/pokemon/sawsbuck/autumn/overworld.png differ diff --git a/graphics/pokemon/sawsbuck/autumn/overworld_normal.pal b/graphics/pokemon/sawsbuck/autumn/overworld_normal.pal new file mode 100644 index 000000000000..2af7855b1210 --- /dev/null +++ b/graphics/pokemon/sawsbuck/autumn/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +169 37 37 +73 23 17 +73 23 17 +98 66 31 +47 13 8 +73 23 17 +153 103 45 +153 103 45 +242 242 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/autumn/overworld_shiny.pal b/graphics/pokemon/sawsbuck/autumn/overworld_shiny.pal new file mode 100644 index 000000000000..a3ea1c808c99 --- /dev/null +++ b/graphics/pokemon/sawsbuck/autumn/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +184 56 56 +67 13 11 +128 32 48 +176 104 32 +47 14 9 +128 64 16 +207 124 25 +191 173 88 +233 219 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/overworld.png b/graphics/pokemon/sawsbuck/overworld.png new file mode 100644 index 000000000000..2fcab6fc3087 Binary files /dev/null and b/graphics/pokemon/sawsbuck/overworld.png differ diff --git a/graphics/pokemon/sawsbuck/overworld_normal.pal b/graphics/pokemon/sawsbuck/overworld_normal.pal new file mode 100644 index 000000000000..3fadfc757aa3 --- /dev/null +++ b/graphics/pokemon/sawsbuck/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +57 17 10 +246 138 169 +174 79 74 +217 177 55 +57 17 10 +109 77 39 +101 18 39 +84 45 24 +217 177 55 +246 138 169 +246 138 169 +84 45 24 +210 183 93 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/overworld_shiny.pal b/graphics/pokemon/sawsbuck/overworld_shiny.pal new file mode 100644 index 000000000000..75de9f8faf8b --- /dev/null +++ b/graphics/pokemon/sawsbuck/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +61 11 5 +247 101 142 +194 54 85 +232 216 160 +54 25 18 +176 104 32 +101 18 39 +128 64 16 +212 134 32 +229 229 247 +247 247 247 +65 32 24 +194 168 101 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/summer/overworld.png b/graphics/pokemon/sawsbuck/summer/overworld.png new file mode 100644 index 000000000000..7bb026e55df0 Binary files /dev/null and b/graphics/pokemon/sawsbuck/summer/overworld.png differ diff --git a/graphics/pokemon/sawsbuck/summer/overworld_normal.pal b/graphics/pokemon/sawsbuck/summer/overworld_normal.pal new file mode 100644 index 000000000000..a742d1bd0e12 --- /dev/null +++ b/graphics/pokemon/sawsbuck/summer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +6 97 39 +13 37 25 +205 176 82 +66 13 13 +46 15 9 +98 66 31 +74 37 19 +153 103 45 +242 242 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/summer/overworld_shiny.pal b/graphics/pokemon/sawsbuck/summer/overworld_shiny.pal new file mode 100644 index 000000000000..34f7d0f0b44b --- /dev/null +++ b/graphics/pokemon/sawsbuck/summer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +8 136 64 +27 81 44 +40 19 12 +199 170 85 +233 219 172 +176 104 32 +128 64 16 +207 124 25 +141 98 51 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sawsbuck/winter/overworld.png b/graphics/pokemon/sawsbuck/winter/overworld.png new file mode 100644 index 000000000000..29748fd3e933 Binary files /dev/null and b/graphics/pokemon/sawsbuck/winter/overworld.png differ diff --git a/graphics/pokemon/sawsbuck/winter/overworld_normal.pal b/graphics/pokemon/sawsbuck/winter/overworld_normal.pal new file mode 100644 index 000000000000..3e3f00fa16b8 --- /dev/null +++ b/graphics/pokemon/sawsbuck/winter/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +93 93 93 +54 61 54 +0 0 0 +54 25 18 +220 203 69 +109 77 39 +61 11 5 +85 46 25 +212 134 32 +151 109 61 +247 247 247 +65 32 24 +159 159 159 +194 168 101 +85 39 5 diff --git a/graphics/pokemon/sawsbuck/winter/overworld_shiny.pal b/graphics/pokemon/sawsbuck/winter/overworld_shiny.pal new file mode 100644 index 000000000000..65d337c96628 --- /dev/null +++ b/graphics/pokemon/sawsbuck/winter/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +91 87 85 +54 61 54 +0 0 0 +55 21 14 +213 177 62 +128 64 16 +55 21 14 +128 64 16 +176 104 32 +128 64 16 +247 247 247 +55 21 14 +159 159 159 +213 177 62 +85 39 5 diff --git a/graphics/pokemon/scatterbug/overworld.png b/graphics/pokemon/scatterbug/overworld.png new file mode 100644 index 000000000000..2da700223db7 Binary files /dev/null and b/graphics/pokemon/scatterbug/overworld.png differ diff --git a/graphics/pokemon/scatterbug/overworld_normal.pal b/graphics/pokemon/scatterbug/overworld_normal.pal new file mode 100644 index 000000000000..9e04cea7a6b9 --- /dev/null +++ b/graphics/pokemon/scatterbug/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +54 50 48 +244 246 249 +100 93 88 +148 141 136 +16 16 16 +148 141 136 +212 197 171 +0 0 0 +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/scatterbug/overworld_shiny.pal b/graphics/pokemon/scatterbug/overworld_shiny.pal new file mode 100644 index 000000000000..7b9b22a1bcfd --- /dev/null +++ b/graphics/pokemon/scatterbug/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +34 36 36 +64 65 64 +165 166 158 +195 196 192 +16 16 16 +48 49 49 +212 197 171 +0 0 0 +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/sceptile/overworld.png b/graphics/pokemon/sceptile/overworld.png new file mode 100644 index 000000000000..b33a076b3c1f Binary files /dev/null and b/graphics/pokemon/sceptile/overworld.png differ diff --git a/graphics/pokemon/sceptile/overworld_normal.pal b/graphics/pokemon/sceptile/overworld_normal.pal new file mode 100644 index 000000000000..ccaeb5a217fd --- /dev/null +++ b/graphics/pokemon/sceptile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +200 128 216 +40 80 16 +0 0 0 +128 176 72 +160 208 104 +64 88 24 +80 144 48 +152 40 40 +248 216 88 +64 48 8 +120 104 24 +200 160 56 +104 24 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sceptile/overworld_shiny.pal b/graphics/pokemon/sceptile/overworld_shiny.pal new file mode 100644 index 000000000000..948395176618 --- /dev/null +++ b/graphics/pokemon/sceptile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +200 128 216 +24 64 56 +0 0 0 +96 152 128 +136 216 192 +48 88 80 +72 120 112 +192 144 0 +224 96 48 +64 48 8 +104 24 24 +160 56 32 +120 80 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scizor/overworld.png b/graphics/pokemon/scizor/overworld.png new file mode 100644 index 000000000000..2b88f0e58aad Binary files /dev/null and b/graphics/pokemon/scizor/overworld.png differ diff --git a/graphics/pokemon/scizor/overworld_normal.pal b/graphics/pokemon/scizor/overworld_normal.pal new file mode 100644 index 000000000000..0defd9ccf1fe --- /dev/null +++ b/graphics/pokemon/scizor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 16 8 +160 32 32 +0 0 0 +208 56 56 +80 88 112 +104 112 136 +40 48 64 +184 200 216 +144 152 176 +136 88 0 +232 232 248 +128 24 16 +248 136 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scizor/overworld_shiny.pal b/graphics/pokemon/scizor/overworld_shiny.pal new file mode 100644 index 000000000000..bff595c2fe21 --- /dev/null +++ b/graphics/pokemon/scizor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 8 +144 152 40 +0 0 0 +168 176 56 +72 128 96 +104 152 128 +40 96 64 +184 200 216 +144 184 160 +136 88 0 +232 232 248 +112 120 32 +248 136 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scolipede/overworld.png b/graphics/pokemon/scolipede/overworld.png new file mode 100644 index 000000000000..7ecd86201a96 Binary files /dev/null and b/graphics/pokemon/scolipede/overworld.png differ diff --git a/graphics/pokemon/scolipede/overworld_normal.pal b/graphics/pokemon/scolipede/overworld_normal.pal new file mode 100644 index 000000000000..1230d642a139 --- /dev/null +++ b/graphics/pokemon/scolipede/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +68 40 40 +0 0 0 +218 78 126 +151 54 87 +87 40 87 +183 77 204 +151 54 87 +104 104 104 +247 187 0 +136 96 0 +147 97 0 +104 104 104 +79 79 79 +79 79 79 +0 0 0 diff --git a/graphics/pokemon/scolipede/overworld_shiny.pal b/graphics/pokemon/scolipede/overworld_shiny.pal new file mode 100644 index 000000000000..db1adb121523 --- /dev/null +++ b/graphics/pokemon/scolipede/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +68 40 40 +0 0 0 +200 40 0 +152 0 0 +72 0 0 +56 184 176 +151 54 87 +48 80 56 +112 184 32 +136 96 0 +75 124 22 +104 104 104 +24 48 24 +79 79 79 +0 0 0 diff --git a/graphics/pokemon/scorbunny/overworld.png b/graphics/pokemon/scorbunny/overworld.png new file mode 100644 index 000000000000..f10db698d342 Binary files /dev/null and b/graphics/pokemon/scorbunny/overworld.png differ diff --git a/graphics/pokemon/scorbunny/overworld_normal.pal b/graphics/pokemon/scorbunny/overworld_normal.pal new file mode 100644 index 000000000000..bbe46b088c5a --- /dev/null +++ b/graphics/pokemon/scorbunny/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +44 252 0 +60 60 60 +68 68 68 +136 56 28 +176 52 16 +180 80 48 +208 88 52 +208 96 64 +0 0 0 +228 104 68 +228 168 60 +232 180 88 +212 136 116 +216 216 216 +252 252 252 +232 232 232 diff --git a/graphics/pokemon/scorbunny/overworld_shiny.pal b/graphics/pokemon/scorbunny/overworld_shiny.pal new file mode 100644 index 000000000000..01f4e1a4c48d --- /dev/null +++ b/graphics/pokemon/scorbunny/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 57 57 +65 65 65 +106 74 0 +172 123 8 +205 148 16 +246 180 8 +246 180 8 +0 0 0 +213 106 74 +230 172 57 +238 180 90 +255 197 49 +230 222 213 +255 255 255 +255 255 255 diff --git a/graphics/pokemon/scrafty/overworld.png b/graphics/pokemon/scrafty/overworld.png new file mode 100644 index 000000000000..456a626834bd Binary files /dev/null and b/graphics/pokemon/scrafty/overworld.png differ diff --git a/graphics/pokemon/scrafty/overworld_normal.pal b/graphics/pokemon/scrafty/overworld_normal.pal new file mode 100644 index 000000000000..81481512dbfb --- /dev/null +++ b/graphics/pokemon/scrafty/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 57 41 +222 41 57 +230 98 115 +0 0 0 +246 123 32 +32 32 32 +197 90 24 +103 85 38 +212 212 212 +246 204 15 +184 152 10 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scrafty/overworld_shiny.pal b/graphics/pokemon/scrafty/overworld_shiny.pal new file mode 100644 index 000000000000..63d67c3904ac --- /dev/null +++ b/graphics/pokemon/scrafty/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +117 80 33 +216 96 32 +232 128 104 +0 0 0 +240 207 23 +32 32 32 +192 152 24 +84 73 71 +212 212 212 +64 120 56 +85 177 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scraggy/overworld.png b/graphics/pokemon/scraggy/overworld.png new file mode 100644 index 000000000000..f02244c3a370 Binary files /dev/null and b/graphics/pokemon/scraggy/overworld.png differ diff --git a/graphics/pokemon/scraggy/overworld_normal.pal b/graphics/pokemon/scraggy/overworld_normal.pal new file mode 100644 index 000000000000..2d2c68b7f348 --- /dev/null +++ b/graphics/pokemon/scraggy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 74 59 +194 38 46 +112 87 5 +255 199 0 +182 147 0 +5 5 5 +204 204 211 +255 245 172 +5 5 5 +45 45 45 +104 74 59 +5 5 5 +5 5 5 +5 5 5 +0 0 0 diff --git a/graphics/pokemon/scraggy/overworld_shiny.pal b/graphics/pokemon/scraggy/overworld_shiny.pal new file mode 100644 index 000000000000..ab9518eb9931 --- /dev/null +++ b/graphics/pokemon/scraggy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 32 72 +163 46 116 +112 87 5 +248 160 0 +192 128 0 +0 0 0 +204 204 211 +193 185 112 +25 25 25 +45 45 45 +104 99 73 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scyther/overworld.png b/graphics/pokemon/scyther/overworld.png new file mode 100644 index 000000000000..ed45062aaef5 Binary files /dev/null and b/graphics/pokemon/scyther/overworld.png differ diff --git a/graphics/pokemon/scyther/overworld_normal.pal b/graphics/pokemon/scyther/overworld_normal.pal new file mode 100644 index 000000000000..76744263f157 --- /dev/null +++ b/graphics/pokemon/scyther/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +40 64 32 +152 208 104 +0 0 0 +96 160 64 +80 64 16 +240 216 72 +232 232 248 +176 152 40 +128 128 128 +176 176 200 +176 152 40 +240 216 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/scyther/overworld_shiny.pal b/graphics/pokemon/scyther/overworld_shiny.pal new file mode 100644 index 000000000000..f3bdc007f9cd --- /dev/null +++ b/graphics/pokemon/scyther/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +40 64 32 +104 192 16 +0 0 0 +80 144 56 +80 64 16 +240 216 72 +232 232 248 +176 152 40 +128 128 128 +176 176 200 +168 96 72 +240 168 144 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seadra/overworld.png b/graphics/pokemon/seadra/overworld.png new file mode 100644 index 000000000000..47179a2b8cee Binary files /dev/null and b/graphics/pokemon/seadra/overworld.png differ diff --git a/graphics/pokemon/seadra/overworld_normal.pal b/graphics/pokemon/seadra/overworld_normal.pal new file mode 100644 index 000000000000..affd77c8f5b7 --- /dev/null +++ b/graphics/pokemon/seadra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 80 112 +0 0 0 +120 184 240 +88 144 216 +72 136 168 +64 64 72 +232 232 248 +168 184 208 +248 208 160 +192 160 96 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seadra/overworld_shiny.pal b/graphics/pokemon/seadra/overworld_shiny.pal new file mode 100644 index 000000000000..b8760607cf15 --- /dev/null +++ b/graphics/pokemon/seadra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 56 96 +0 0 0 +120 168 216 +80 136 184 +40 88 136 +64 64 72 +232 232 248 +168 184 208 +248 192 184 +192 136 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seaking/overworld.png b/graphics/pokemon/seaking/overworld.png new file mode 100644 index 000000000000..2f335978ed8e Binary files /dev/null and b/graphics/pokemon/seaking/overworld.png differ diff --git a/graphics/pokemon/seaking/overworld_normal.pal b/graphics/pokemon/seaking/overworld_normal.pal new file mode 100644 index 000000000000..40f1f30b9820 --- /dev/null +++ b/graphics/pokemon/seaking/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +232 232 248 +96 96 96 +176 176 176 +0 0 0 +112 24 16 +248 80 40 +168 56 48 +248 232 160 +216 160 80 +240 128 160 +192 64 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seaking/overworld_shiny.pal b/graphics/pokemon/seaking/overworld_shiny.pal new file mode 100644 index 000000000000..4d5bb5463688 --- /dev/null +++ b/graphics/pokemon/seaking/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 48 48 +232 232 248 +96 96 96 +200 192 152 +0 0 0 +128 56 0 +248 136 40 +200 104 24 +248 232 160 +216 160 80 +240 128 160 +192 64 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sealeo/overworld.png b/graphics/pokemon/sealeo/overworld.png new file mode 100644 index 000000000000..ac18313c679c Binary files /dev/null and b/graphics/pokemon/sealeo/overworld.png differ diff --git a/graphics/pokemon/sealeo/overworld_normal.pal b/graphics/pokemon/sealeo/overworld_normal.pal new file mode 100644 index 000000000000..4f9f3585486e --- /dev/null +++ b/graphics/pokemon/sealeo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 104 +136 192 240 +0 0 0 +48 112 144 +80 80 104 +72 152 200 +208 216 232 +128 136 152 +232 232 248 +176 184 208 +184 168 112 +216 208 152 +120 112 80 +80 80 56 +0 0 0 diff --git a/graphics/pokemon/sealeo/overworld_shiny.pal b/graphics/pokemon/sealeo/overworld_shiny.pal new file mode 100644 index 000000000000..b7da8547101a --- /dev/null +++ b/graphics/pokemon/sealeo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 56 112 +200 160 248 +0 0 0 +128 88 160 +80 80 104 +160 128 208 +208 216 232 +128 136 152 +232 232 248 +176 184 208 +184 168 112 +216 208 152 +120 112 80 +80 80 56 +0 0 0 diff --git a/graphics/pokemon/seedot/overworld.png b/graphics/pokemon/seedot/overworld.png new file mode 100644 index 000000000000..91fe482aa40f Binary files /dev/null and b/graphics/pokemon/seedot/overworld.png differ diff --git a/graphics/pokemon/seedot/overworld_normal.pal b/graphics/pokemon/seedot/overworld_normal.pal new file mode 100644 index 000000000000..e4f984725d46 --- /dev/null +++ b/graphics/pokemon/seedot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 24 +0 0 0 +128 112 112 +96 88 80 +64 56 56 +176 160 64 +64 64 72 +120 80 40 +232 200 120 +72 48 24 +160 112 48 +136 120 40 +88 72 8 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seedot/overworld_shiny.pal b/graphics/pokemon/seedot/overworld_shiny.pal new file mode 100644 index 000000000000..858d0016b710 --- /dev/null +++ b/graphics/pokemon/seedot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +0 0 0 +168 168 168 +136 136 136 +120 120 120 +176 160 64 +64 64 72 +184 80 40 +232 200 120 +160 48 24 +208 112 48 +136 120 40 +88 72 8 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seel/overworld.png b/graphics/pokemon/seel/overworld.png new file mode 100644 index 000000000000..cc9dbad620dc Binary files /dev/null and b/graphics/pokemon/seel/overworld.png differ diff --git a/graphics/pokemon/seel/overworld_normal.pal b/graphics/pokemon/seel/overworld_normal.pal new file mode 100644 index 000000000000..2e2dac942ead --- /dev/null +++ b/graphics/pokemon/seel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 120 +48 48 80 +224 224 240 +0 0 0 +160 168 208 +112 88 32 +232 200 96 +96 96 96 +208 152 8 +248 240 184 +232 232 248 +80 32 32 +192 64 88 +224 128 144 +0 0 0 diff --git a/graphics/pokemon/seel/overworld_shiny.pal b/graphics/pokemon/seel/overworld_shiny.pal new file mode 100644 index 000000000000..88001511f5e3 --- /dev/null +++ b/graphics/pokemon/seel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 104 64 +80 80 64 +232 232 232 +0 0 0 +184 184 184 +112 88 32 +232 200 96 +96 96 96 +208 152 8 +248 240 184 +232 232 248 +80 32 32 +192 64 88 +224 128 144 +0 0 0 diff --git a/graphics/pokemon/seismitoad/overworld.png b/graphics/pokemon/seismitoad/overworld.png new file mode 100644 index 000000000000..780b69f64134 Binary files /dev/null and b/graphics/pokemon/seismitoad/overworld.png differ diff --git a/graphics/pokemon/seismitoad/overworld_normal.pal b/graphics/pokemon/seismitoad/overworld_normal.pal new file mode 100644 index 000000000000..ce4ce069ec73 --- /dev/null +++ b/graphics/pokemon/seismitoad/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +55 55 55 +87 87 87 +0 0 0 +11 55 112 +104 227 199 +11 55 112 +33 95 164 +5 138 208 +71 155 129 +236 79 47 +172 47 25 +33 33 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seismitoad/overworld_shiny.pal b/graphics/pokemon/seismitoad/overworld_shiny.pal new file mode 100644 index 000000000000..6f97a5d2f4d5 --- /dev/null +++ b/graphics/pokemon/seismitoad/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +55 55 55 +87 87 87 +0 0 0 +24 56 64 +232 128 56 +11 55 112 +24 112 104 +32 160 136 +176 104 32 +236 79 47 +172 47 25 +33 33 33 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sentret/overworld.png b/graphics/pokemon/sentret/overworld.png new file mode 100644 index 000000000000..67e333d913f8 Binary files /dev/null and b/graphics/pokemon/sentret/overworld.png differ diff --git a/graphics/pokemon/sentret/overworld_normal.pal b/graphics/pokemon/sentret/overworld_normal.pal new file mode 100644 index 000000000000..26eb876e9487 --- /dev/null +++ b/graphics/pokemon/sentret/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 56 +0 0 0 +168 128 88 +48 32 24 +80 64 56 +72 40 8 +208 168 128 +136 32 48 +160 64 112 +128 96 72 +232 232 248 +216 192 128 +240 224 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sentret/overworld_shiny.pal b/graphics/pokemon/sentret/overworld_shiny.pal new file mode 100644 index 000000000000..ee55960e3a1c --- /dev/null +++ b/graphics/pokemon/sentret/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 48 64 +0 0 0 +216 176 128 +48 32 24 +80 64 56 +120 56 8 +240 224 192 +136 32 48 +184 48 64 +176 96 80 +232 232 248 +240 216 160 +248 248 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/serperior/overworld.png b/graphics/pokemon/serperior/overworld.png new file mode 100644 index 000000000000..8cee61f96627 Binary files /dev/null and b/graphics/pokemon/serperior/overworld.png differ diff --git a/graphics/pokemon/serperior/overworld_normal.pal b/graphics/pokemon/serperior/overworld_normal.pal new file mode 100644 index 000000000000..3733e903b2b2 --- /dev/null +++ b/graphics/pokemon/serperior/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 208 232 +12 98 39 +106 115 57 +24 156 74 +236 173 21 +8 16 16 +156 213 156 +236 173 21 +115 164 115 +12 98 39 +236 173 21 +24 156 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/serperior/overworld_shiny.pal b/graphics/pokemon/serperior/overworld_shiny.pal new file mode 100644 index 000000000000..eafc2d1fda8b --- /dev/null +++ b/graphics/pokemon/serperior/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 208 232 +40 72 104 +103 114 55 +64 120 152 +207 215 195 +7 14 14 +168 232 104 +185 175 53 +96 166 87 +40 56 48 +212 33 0 +24 156 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/servine/overworld.png b/graphics/pokemon/servine/overworld.png new file mode 100644 index 000000000000..b329b478379c Binary files /dev/null and b/graphics/pokemon/servine/overworld.png differ diff --git a/graphics/pokemon/servine/overworld_normal.pal b/graphics/pokemon/servine/overworld_normal.pal new file mode 100644 index 000000000000..ca1ffe3c1439 --- /dev/null +++ b/graphics/pokemon/servine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +14 82 36 +221 195 73 +41 197 74 +31 147 55 +0 0 0 +141 120 48 +251 243 199 +110 64 20 +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/servine/overworld_shiny.pal b/graphics/pokemon/servine/overworld_shiny.pal new file mode 100644 index 000000000000..ff9fff513358 --- /dev/null +++ b/graphics/pokemon/servine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 48 72 +0 0 0 +237 151 18 +40 152 168 +63 74 11 +32 88 160 +138 103 54 +218 221 187 +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/seviper/overworld.png b/graphics/pokemon/seviper/overworld.png new file mode 100644 index 000000000000..71095eaa2e57 Binary files /dev/null and b/graphics/pokemon/seviper/overworld.png differ diff --git a/graphics/pokemon/seviper/overworld_normal.pal b/graphics/pokemon/seviper/overworld_normal.pal new file mode 100644 index 000000000000..84c7c632905a --- /dev/null +++ b/graphics/pokemon/seviper/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 40 56 +120 32 32 +112 120 136 +56 64 80 +160 48 56 +0 0 0 +80 88 104 +216 168 72 +168 112 240 +208 72 80 +248 216 88 +152 112 24 +144 88 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/seviper/overworld_shiny.pal b/graphics/pokemon/seviper/overworld_shiny.pal new file mode 100644 index 000000000000..fc90e0c9cb54 --- /dev/null +++ b/graphics/pokemon/seviper/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 40 56 +24 72 112 +112 120 136 +56 64 80 +56 112 168 +0 0 0 +80 88 104 +168 184 56 +208 72 80 +80 152 216 +200 224 88 +128 136 24 +160 48 56 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sewaddle/overworld.png b/graphics/pokemon/sewaddle/overworld.png new file mode 100644 index 000000000000..4ea3161e9d43 Binary files /dev/null and b/graphics/pokemon/sewaddle/overworld.png differ diff --git a/graphics/pokemon/sewaddle/overworld_normal.pal b/graphics/pokemon/sewaddle/overworld_normal.pal new file mode 100644 index 000000000000..c7d53519986b --- /dev/null +++ b/graphics/pokemon/sewaddle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 152 48 +144 200 8 +88 152 48 +152 120 8 +248 208 64 +192 152 64 +152 120 8 +252 252 252 +80 80 80 +224 128 8 +152 120 8 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sewaddle/overworld_shiny.pal b/graphics/pokemon/sewaddle/overworld_shiny.pal new file mode 100644 index 000000000000..7b83b6196111 --- /dev/null +++ b/graphics/pokemon/sewaddle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +64 152 104 +104 184 144 +88 152 48 +120 64 72 +240 248 168 +200 232 48 +112 128 16 +252 252 252 +80 80 80 +248 88 64 +152 120 8 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sharpedo/overworld.png b/graphics/pokemon/sharpedo/overworld.png new file mode 100644 index 000000000000..246fa5118d09 Binary files /dev/null and b/graphics/pokemon/sharpedo/overworld.png differ diff --git a/graphics/pokemon/sharpedo/overworld_normal.pal b/graphics/pokemon/sharpedo/overworld_normal.pal new file mode 100644 index 000000000000..f49ff824f150 --- /dev/null +++ b/graphics/pokemon/sharpedo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 64 104 +88 144 192 +64 112 160 +248 208 80 +32 88 136 +96 80 16 +208 168 48 +56 64 72 +72 80 88 +192 88 112 +232 232 248 +128 136 144 +160 168 176 +112 24 48 diff --git a/graphics/pokemon/sharpedo/overworld_shiny.pal b/graphics/pokemon/sharpedo/overworld_shiny.pal new file mode 100644 index 000000000000..d4d877c67579 --- /dev/null +++ b/graphics/pokemon/sharpedo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +128 32 112 +216 128 216 +192 88 192 +248 208 80 +168 56 152 +96 80 16 +208 168 48 +56 64 72 +72 80 88 +192 88 112 +232 232 248 +128 136 144 +160 168 176 +112 24 48 diff --git a/graphics/pokemon/shaymin/overworld.png b/graphics/pokemon/shaymin/overworld.png new file mode 100644 index 000000000000..49508c52f187 Binary files /dev/null and b/graphics/pokemon/shaymin/overworld.png differ diff --git a/graphics/pokemon/shaymin/overworld_normal.pal b/graphics/pokemon/shaymin/overworld_normal.pal new file mode 100644 index 000000000000..a843f529323f --- /dev/null +++ b/graphics/pokemon/shaymin/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 88 56 +160 208 112 +120 152 112 +240 192 0 +240 128 168 +128 128 152 +0 0 0 +192 88 128 +48 152 72 +232 232 248 +168 168 208 +64 64 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shaymin/overworld_shiny.pal b/graphics/pokemon/shaymin/overworld_shiny.pal new file mode 100644 index 000000000000..2479101b7b3d --- /dev/null +++ b/graphics/pokemon/shaymin/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 88 56 +112 208 176 +88 152 144 +240 192 0 +240 128 168 +128 128 152 +0 0 0 +192 88 128 +48 152 72 +232 232 248 +168 168 208 +64 64 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shedinja/overworld.png b/graphics/pokemon/shedinja/overworld.png new file mode 100644 index 000000000000..15e95f216e58 Binary files /dev/null and b/graphics/pokemon/shedinja/overworld.png differ diff --git a/graphics/pokemon/shedinja/overworld_normal.pal b/graphics/pokemon/shedinja/overworld_normal.pal new file mode 100644 index 000000000000..65dd574b7ff3 --- /dev/null +++ b/graphics/pokemon/shedinja/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 112 136 +96 88 112 +232 232 248 +152 144 160 +184 176 192 +104 80 16 +160 136 64 +240 216 120 +200 176 104 +0 0 0 +56 48 72 +64 56 32 +120 104 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shedinja/overworld_shiny.pal b/graphics/pokemon/shedinja/overworld_shiny.pal new file mode 100644 index 000000000000..ff8142c9c196 --- /dev/null +++ b/graphics/pokemon/shedinja/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 112 96 +96 88 64 +232 232 248 +152 144 120 +184 176 152 +120 112 96 +176 152 80 +248 232 144 +216 200 104 +0 0 0 +56 48 72 +80 72 48 +120 120 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shelgon/overworld.png b/graphics/pokemon/shelgon/overworld.png new file mode 100644 index 000000000000..a7c73b36dd42 Binary files /dev/null and b/graphics/pokemon/shelgon/overworld.png differ diff --git a/graphics/pokemon/shelgon/overworld_normal.pal b/graphics/pokemon/shelgon/overworld_normal.pal new file mode 100644 index 000000000000..6e6b94be6cbb --- /dev/null +++ b/graphics/pokemon/shelgon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 80 +0 0 0 +160 160 184 +232 232 248 +184 184 200 +200 200 216 +112 112 136 +88 88 104 +168 128 64 +208 176 96 +128 40 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shelgon/overworld_shiny.pal b/graphics/pokemon/shelgon/overworld_shiny.pal new file mode 100644 index 000000000000..a7eac336aeb3 --- /dev/null +++ b/graphics/pokemon/shelgon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +64 96 64 +0 0 0 +160 184 168 +216 232 240 +184 200 184 +200 224 168 +112 128 112 +88 120 88 +168 128 64 +208 176 96 +128 40 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellder/overworld.png b/graphics/pokemon/shellder/overworld.png new file mode 100644 index 000000000000..53176ade7390 Binary files /dev/null and b/graphics/pokemon/shellder/overworld.png differ diff --git a/graphics/pokemon/shellder/overworld_normal.pal b/graphics/pokemon/shellder/overworld_normal.pal new file mode 100644 index 000000000000..65fff3e0c348 --- /dev/null +++ b/graphics/pokemon/shellder/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 56 72 +160 160 240 +72 72 160 +128 128 200 +40 40 48 +152 152 152 +72 32 64 +232 232 248 +232 152 216 +192 88 176 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellder/overworld_shiny.pal b/graphics/pokemon/shellder/overworld_shiny.pal new file mode 100644 index 000000000000..a1954294aef6 --- /dev/null +++ b/graphics/pokemon/shellder/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 56 40 +224 112 48 +160 64 40 +200 72 40 +40 40 48 +152 152 152 +88 56 40 +232 232 248 +232 112 104 +192 72 80 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellos/east_sea/overworld.png b/graphics/pokemon/shellos/east_sea/overworld.png new file mode 100644 index 000000000000..b5d39d5e0ffa Binary files /dev/null and b/graphics/pokemon/shellos/east_sea/overworld.png differ diff --git a/graphics/pokemon/shellos/east_sea/overworld_normal.pal b/graphics/pokemon/shellos/east_sea/overworld_normal.pal new file mode 100644 index 000000000000..0735d64706de --- /dev/null +++ b/graphics/pokemon/shellos/east_sea/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +48 88 104 +232 232 248 +80 136 152 +0 0 0 +72 104 128 +152 152 176 +88 168 208 +248 216 56 +184 152 8 +48 48 48 +128 184 88 +88 144 80 +168 200 88 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellos/east_sea/overworld_shiny.pal b/graphics/pokemon/shellos/east_sea/overworld_shiny.pal new file mode 100644 index 000000000000..abe4ef8f93ef --- /dev/null +++ b/graphics/pokemon/shellos/east_sea/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +48 88 104 +232 232 248 +88 192 216 +0 0 0 +72 104 128 +152 152 176 +152 208 232 +248 216 56 +184 152 8 +48 48 48 +136 160 112 +96 128 96 +160 168 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellos/overworld.png b/graphics/pokemon/shellos/overworld.png new file mode 100644 index 000000000000..6bc7b369704b Binary files /dev/null and b/graphics/pokemon/shellos/overworld.png differ diff --git a/graphics/pokemon/shellos/overworld_normal.pal b/graphics/pokemon/shellos/overworld_normal.pal new file mode 100644 index 000000000000..0cde9c4df9ee --- /dev/null +++ b/graphics/pokemon/shellos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 72 +144 32 104 +0 0 0 +248 88 208 +248 136 200 +192 104 144 +248 208 88 +232 232 248 +200 160 0 +48 48 48 +128 128 128 +112 112 112 +184 184 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shellos/overworld_shiny.pal b/graphics/pokemon/shellos/overworld_shiny.pal new file mode 100644 index 000000000000..2f03c07253c4 --- /dev/null +++ b/graphics/pokemon/shellos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 72 +152 64 80 +0 0 0 +248 136 112 +248 160 136 +176 96 80 +248 208 88 +232 232 248 +200 160 0 +48 48 48 +128 128 128 +112 112 112 +184 184 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shelmet/overworld.png b/graphics/pokemon/shelmet/overworld.png new file mode 100644 index 000000000000..e629811e2392 Binary files /dev/null and b/graphics/pokemon/shelmet/overworld.png differ diff --git a/graphics/pokemon/shelmet/overworld_normal.pal b/graphics/pokemon/shelmet/overworld_normal.pal new file mode 100644 index 000000000000..0beaae3c83e5 --- /dev/null +++ b/graphics/pokemon/shelmet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 90 123 +197 197 213 +148 148 172 +41 49 90 +16 16 16 +180 32 74 +98 0 32 +255 74 123 +255 255 255 +57 131 65 +49 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shelmet/overworld_shiny.pal b/graphics/pokemon/shelmet/overworld_shiny.pal new file mode 100644 index 000000000000..b73c23ea13ad --- /dev/null +++ b/graphics/pokemon/shelmet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 32 +216 216 208 +176 168 152 +72 64 32 +16 16 16 +184 136 32 +96 88 0 +248 216 72 +152 208 160 +248 72 120 +49 49 49 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shieldon/overworld.png b/graphics/pokemon/shieldon/overworld.png new file mode 100644 index 000000000000..4636dda608d6 Binary files /dev/null and b/graphics/pokemon/shieldon/overworld.png differ diff --git a/graphics/pokemon/shieldon/overworld_normal.pal b/graphics/pokemon/shieldon/overworld_normal.pal new file mode 100644 index 000000000000..0a5616640e27 --- /dev/null +++ b/graphics/pokemon/shieldon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +88 88 88 +0 0 0 +72 72 72 +120 120 120 +144 128 72 +192 160 72 +200 200 200 +56 48 40 +232 232 248 +152 208 160 +104 80 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shieldon/overworld_shiny.pal b/graphics/pokemon/shieldon/overworld_shiny.pal new file mode 100644 index 000000000000..efcf321f7a2b --- /dev/null +++ b/graphics/pokemon/shieldon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 56 56 +104 112 144 +0 0 0 +72 80 128 +136 144 168 +160 152 72 +208 184 72 +200 200 200 +56 48 40 +232 232 248 +168 168 184 +112 96 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shiftry/overworld.png b/graphics/pokemon/shiftry/overworld.png new file mode 100644 index 000000000000..2716938e6ee4 Binary files /dev/null and b/graphics/pokemon/shiftry/overworld.png differ diff --git a/graphics/pokemon/shiftry/overworld_normal.pal b/graphics/pokemon/shiftry/overworld_normal.pal new file mode 100644 index 000000000000..43fe40217d64 --- /dev/null +++ b/graphics/pokemon/shiftry/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 80 88 +64 40 8 +160 176 184 +0 0 0 +232 232 248 +96 64 32 +160 112 48 +136 96 40 +128 136 144 +160 136 64 +232 200 120 +32 56 8 +96 136 8 +144 208 16 +0 0 0 diff --git a/graphics/pokemon/shiftry/overworld_shiny.pal b/graphics/pokemon/shiftry/overworld_shiny.pal new file mode 100644 index 000000000000..e4ea6e4dcac1 --- /dev/null +++ b/graphics/pokemon/shiftry/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +152 104 32 +80 8 8 +248 216 112 +0 0 0 +232 232 248 +160 48 8 +200 112 48 +184 96 40 +208 176 72 +160 136 64 +232 200 120 +64 56 8 +128 136 8 +184 208 16 +0 0 0 diff --git a/graphics/pokemon/shiinotic/overworld.png b/graphics/pokemon/shiinotic/overworld.png new file mode 100644 index 000000000000..2b23c62508fb Binary files /dev/null and b/graphics/pokemon/shiinotic/overworld.png differ diff --git a/graphics/pokemon/shiinotic/overworld_normal.pal b/graphics/pokemon/shiinotic/overworld_normal.pal new file mode 100644 index 000000000000..aeab30565748 --- /dev/null +++ b/graphics/pokemon/shiinotic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +231 231 231 +201 206 157 +244 180 200 +183 183 183 +178 182 116 +171 176 79 +238 141 170 +171 160 151 +199 134 195 +186 127 182 +175 116 171 +182 111 132 +104 106 66 +114 65 111 +18 18 18 diff --git a/graphics/pokemon/shiinotic/overworld_shiny.pal b/graphics/pokemon/shiinotic/overworld_shiny.pal new file mode 100644 index 000000000000..d75a86a783f8 --- /dev/null +++ b/graphics/pokemon/shiinotic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +231 231 231 +201 206 157 +152 72 64 +183 183 183 +178 182 116 +171 176 79 +192 112 88 +171 160 151 +248 208 80 +232 160 16 +168 88 24 +152 72 64 +104 106 66 +114 65 111 +18 18 18 diff --git a/graphics/pokemon/shinx/overworld.png b/graphics/pokemon/shinx/overworld.png new file mode 100644 index 000000000000..698799abd398 Binary files /dev/null and b/graphics/pokemon/shinx/overworld.png differ diff --git a/graphics/pokemon/shinx/overworld_normal.pal b/graphics/pokemon/shinx/overworld_normal.pal new file mode 100644 index 000000000000..5b1d63fcc4cb --- /dev/null +++ b/graphics/pokemon/shinx/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 88 40 +224 184 24 +184 144 32 +0 0 0 +64 64 64 +144 184 232 +112 160 216 +80 120 184 +48 80 112 +88 88 88 +208 80 64 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shinx/overworld_shiny.pal b/graphics/pokemon/shinx/overworld_shiny.pal new file mode 100644 index 000000000000..60ee66dc55e1 --- /dev/null +++ b/graphics/pokemon/shinx/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 64 16 +248 144 24 +200 104 16 +0 0 0 +64 64 64 +248 200 24 +248 184 24 +200 128 32 +104 88 40 +88 88 88 +208 80 64 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shroomish/overworld.png b/graphics/pokemon/shroomish/overworld.png new file mode 100644 index 000000000000..3443ccc814b7 Binary files /dev/null and b/graphics/pokemon/shroomish/overworld.png differ diff --git a/graphics/pokemon/shroomish/overworld_normal.pal b/graphics/pokemon/shroomish/overworld_normal.pal new file mode 100644 index 000000000000..1af76d8bba51 --- /dev/null +++ b/graphics/pokemon/shroomish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +72 64 48 +0 0 0 +192 160 128 +224 200 144 +144 128 88 +104 104 72 +120 176 88 +80 136 64 +48 88 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shroomish/overworld_shiny.pal b/graphics/pokemon/shroomish/overworld_shiny.pal new file mode 100644 index 000000000000..56d66604d4b5 --- /dev/null +++ b/graphics/pokemon/shroomish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +72 64 48 +0 0 0 +192 160 128 +224 200 144 +144 128 88 +104 104 72 +224 96 48 +184 64 48 +128 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shuckle/overworld.png b/graphics/pokemon/shuckle/overworld.png new file mode 100644 index 000000000000..0a4fb153ffc7 Binary files /dev/null and b/graphics/pokemon/shuckle/overworld.png differ diff --git a/graphics/pokemon/shuckle/overworld_normal.pal b/graphics/pokemon/shuckle/overworld_normal.pal new file mode 100644 index 000000000000..1f206bc10185 --- /dev/null +++ b/graphics/pokemon/shuckle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 96 32 +160 136 48 +240 216 80 +200 176 64 +0 0 0 +88 24 16 +72 56 56 +160 32 32 +200 168 152 +232 208 200 +208 56 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shuckle/overworld_shiny.pal b/graphics/pokemon/shuckle/overworld_shiny.pal new file mode 100644 index 000000000000..a1966e08d74d --- /dev/null +++ b/graphics/pokemon/shuckle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 96 32 +160 136 48 +240 216 80 +200 176 64 +0 0 0 +0 56 104 +72 56 56 +40 128 200 +200 168 152 +232 208 200 +64 160 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shuppet/overworld.png b/graphics/pokemon/shuppet/overworld.png new file mode 100644 index 000000000000..5aa4529e3576 Binary files /dev/null and b/graphics/pokemon/shuppet/overworld.png differ diff --git a/graphics/pokemon/shuppet/overworld_normal.pal b/graphics/pokemon/shuppet/overworld_normal.pal new file mode 100644 index 000000000000..e5daac6903b6 --- /dev/null +++ b/graphics/pokemon/shuppet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +0 0 0 +128 128 160 +160 160 192 +64 72 96 +96 104 128 +48 80 152 +80 128 200 +200 160 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/shuppet/overworld_shiny.pal b/graphics/pokemon/shuppet/overworld_shiny.pal new file mode 100644 index 000000000000..18c6d9659ee6 --- /dev/null +++ b/graphics/pokemon/shuppet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +0 0 0 +104 136 208 +152 176 216 +56 72 112 +80 104 160 +48 80 152 +80 128 200 +200 160 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sigilyph/overworld.png b/graphics/pokemon/sigilyph/overworld.png new file mode 100644 index 000000000000..3f2805407073 Binary files /dev/null and b/graphics/pokemon/sigilyph/overworld.png differ diff --git a/graphics/pokemon/sigilyph/overworld_normal.pal b/graphics/pokemon/sigilyph/overworld_normal.pal new file mode 100644 index 000000000000..95d6d5cb63db --- /dev/null +++ b/graphics/pokemon/sigilyph/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +33 112 129 +72 70 22 +7 7 7 +63 164 227 +171 92 25 +255 191 5 +40 40 40 +192 192 203 +47 155 63 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sigilyph/overworld_shiny.pal b/graphics/pokemon/sigilyph/overworld_shiny.pal new file mode 100644 index 000000000000..24e47afc05e9 --- /dev/null +++ b/graphics/pokemon/sigilyph/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +203 38 19 +90 63 20 +7 7 7 +248 136 0 +192 224 88 +40 40 40 +209 88 56 +128 152 40 +192 192 203 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/silcoon/overworld.png b/graphics/pokemon/silcoon/overworld.png new file mode 100644 index 000000000000..1b6bbbede8f6 Binary files /dev/null and b/graphics/pokemon/silcoon/overworld.png differ diff --git a/graphics/pokemon/silcoon/overworld_normal.pal b/graphics/pokemon/silcoon/overworld_normal.pal new file mode 100644 index 000000000000..efcb71b5a491 --- /dev/null +++ b/graphics/pokemon/silcoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 136 +184 184 168 +224 224 208 +80 80 80 +0 0 0 +240 104 104 +128 32 56 +0 0 0 +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/silcoon/overworld_shiny.pal b/graphics/pokemon/silcoon/overworld_shiny.pal new file mode 100644 index 000000000000..5eecbf6bee0e --- /dev/null +++ b/graphics/pokemon/silcoon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +192 136 56 +248 192 64 +248 248 168 +168 96 0 +0 0 0 +80 176 224 +0 104 128 +0 0 0 +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/silicobra/overworld.png b/graphics/pokemon/silicobra/overworld.png new file mode 100644 index 000000000000..6f6141d0e162 Binary files /dev/null and b/graphics/pokemon/silicobra/overworld.png differ diff --git a/graphics/pokemon/silicobra/overworld_normal.pal b/graphics/pokemon/silicobra/overworld_normal.pal new file mode 100644 index 000000000000..a249569ebe3b --- /dev/null +++ b/graphics/pokemon/silicobra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +24 21 13 +109 98 60 +55 54 47 +45 46 35 +163 151 107 +253 255 229 +172 164 117 +83 79 54 +184 186 159 +0 0 0 +139 213 2 +24 24 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/silicobra/overworld_shiny.pal b/graphics/pokemon/silicobra/overworld_shiny.pal new file mode 100644 index 000000000000..cd220f278a5f --- /dev/null +++ b/graphics/pokemon/silicobra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +16 16 8 +74 82 49 +49 49 41 +41 41 32 +123 131 98 +255 255 230 +139 123 106 +65 57 41 +189 189 156 +0 0 0 +205 205 16 +24 24 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/silvally/overworld.png b/graphics/pokemon/silvally/overworld.png new file mode 100644 index 000000000000..0325d6ec78d7 Binary files /dev/null and b/graphics/pokemon/silvally/overworld.png differ diff --git a/graphics/pokemon/silvally/overworld_normal.pal b/graphics/pokemon/silvally/overworld_normal.pal new file mode 100644 index 000000000000..3861e5602c8a --- /dev/null +++ b/graphics/pokemon/silvally/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 254 254 +228 231 237 +200 200 210 +175 175 190 +147 159 158 +122 122 122 +55 120 82 +72 103 165 +86 89 105 +230 79 94 +103 88 84 +71 61 59 +46 41 95 +40 34 32 +0 0 0 diff --git a/graphics/pokemon/silvally/overworld_shiny.pal b/graphics/pokemon/silvally/overworld_shiny.pal new file mode 100644 index 000000000000..df2e346bf99b --- /dev/null +++ b/graphics/pokemon/silvally/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +254 254 254 +255 243 187 +200 200 210 +210 196 89 +147 159 158 +122 122 122 +55 120 82 +72 103 165 +86 89 105 +29 182 148 +103 88 84 +71 61 59 +46 41 95 +40 34 32 +0 0 0 diff --git a/graphics/pokemon/simipour/overworld.png b/graphics/pokemon/simipour/overworld.png new file mode 100644 index 000000000000..ba9643720509 Binary files /dev/null and b/graphics/pokemon/simipour/overworld.png differ diff --git a/graphics/pokemon/simipour/overworld_normal.pal b/graphics/pokemon/simipour/overworld_normal.pal new file mode 100644 index 000000000000..45ec377628c5 --- /dev/null +++ b/graphics/pokemon/simipour/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +0 57 115 +16 106 139 +0 57 115 +32 139 164 +41 180 222 +156 230 238 +115 82 32 +255 205 123 +232 232 248 +205 164 90 +57 57 57 +82 82 82 +164 123 57 +197 197 197 diff --git a/graphics/pokemon/simipour/overworld_shiny.pal b/graphics/pokemon/simipour/overworld_shiny.pal new file mode 100644 index 000000000000..c0d4ea4132dd --- /dev/null +++ b/graphics/pokemon/simipour/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +0 57 115 +64 56 136 +48 32 96 +80 88 168 +88 112 208 +128 176 232 +115 82 32 +255 205 123 +232 232 248 +205 164 90 +57 57 57 +82 82 82 +164 123 57 +197 197 197 diff --git a/graphics/pokemon/simisage/overworld.png b/graphics/pokemon/simisage/overworld.png new file mode 100644 index 000000000000..0d36ec8a09e3 Binary files /dev/null and b/graphics/pokemon/simisage/overworld.png differ diff --git a/graphics/pokemon/simisage/overworld_normal.pal b/graphics/pokemon/simisage/overworld_normal.pal new file mode 100644 index 000000000000..d4e3004f0b45 --- /dev/null +++ b/graphics/pokemon/simisage/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 74 41 +24 164 82 +8 115 49 +255 205 123 +205 164 90 +0 0 0 +131 205 156 +232 232 248 +156 156 156 +96 96 96 +115 82 32 +164 123 57 +82 82 82 +24 74 41 +0 0 0 diff --git a/graphics/pokemon/simisage/overworld_shiny.pal b/graphics/pokemon/simisage/overworld_shiny.pal new file mode 100644 index 000000000000..6cea125c471a --- /dev/null +++ b/graphics/pokemon/simisage/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 48 40 +24 112 80 +8 80 48 +255 205 123 +205 164 90 +0 0 0 +72 168 104 +232 232 248 +156 156 156 +96 96 96 +115 82 32 +164 123 57 +82 82 82 +24 74 41 +0 0 0 diff --git a/graphics/pokemon/simisear/overworld.png b/graphics/pokemon/simisear/overworld.png new file mode 100644 index 000000000000..d978281b6b2f Binary files /dev/null and b/graphics/pokemon/simisear/overworld.png differ diff --git a/graphics/pokemon/simisear/overworld_normal.pal b/graphics/pokemon/simisear/overworld_normal.pal new file mode 100644 index 000000000000..f37d994461e0 --- /dev/null +++ b/graphics/pokemon/simisear/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 49 49 +230 82 65 +0 0 0 +189 65 57 +246 148 65 +232 232 248 +96 96 96 +205 164 90 +255 205 123 +115 82 32 +164 123 57 +82 82 82 +156 156 156 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/simisear/overworld_shiny.pal b/graphics/pokemon/simisear/overworld_shiny.pal new file mode 100644 index 000000000000..6eb29dc49117 --- /dev/null +++ b/graphics/pokemon/simisear/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 24 32 +232 40 64 +0 0 0 +160 32 48 +228 154 56 +207 207 218 +101 83 55 +228 154 56 +228 154 56 +101 83 55 +213 89 62 +101 83 55 +207 207 218 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sinistea/overworld.png b/graphics/pokemon/sinistea/overworld.png new file mode 100644 index 000000000000..b1457cb38cab Binary files /dev/null and b/graphics/pokemon/sinistea/overworld.png differ diff --git a/graphics/pokemon/sinistea/overworld_normal.pal b/graphics/pokemon/sinistea/overworld_normal.pal new file mode 100644 index 000000000000..f226a8837d3f --- /dev/null +++ b/graphics/pokemon/sinistea/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +88 52 104 +148 92 172 +152 112 8 +124 72 144 +248 212 120 +0 0 0 +244 184 44 +72 172 184 +60 144 156 +128 196 204 +104 104 120 +240 240 240 +208 208 212 +248 212 120 +208 208 212 diff --git a/graphics/pokemon/sinistea/overworld_shiny.pal b/graphics/pokemon/sinistea/overworld_shiny.pal new file mode 100644 index 000000000000..4066a1c8843c --- /dev/null +++ b/graphics/pokemon/sinistea/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +90 49 106 +148 90 172 +156 115 8 +123 74 148 +255 213 123 +0 0 0 +246 189 41 +222 131 189 +172 90 139 +238 189 230 +106 106 123 +246 246 246 +213 213 213 +255 213 123 +213 213 213 diff --git a/graphics/pokemon/sirfetchd/overworld.png b/graphics/pokemon/sirfetchd/overworld.png new file mode 100644 index 000000000000..2209cb768675 Binary files /dev/null and b/graphics/pokemon/sirfetchd/overworld.png differ diff --git a/graphics/pokemon/sirfetchd/overworld_normal.pal b/graphics/pokemon/sirfetchd/overworld_normal.pal new file mode 100644 index 000000000000..162bc674725c --- /dev/null +++ b/graphics/pokemon/sirfetchd/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 28 0 +20 72 52 +88 80 80 +28 108 76 +96 96 92 +8 12 4 +160 124 56 +104 148 44 +176 144 40 +136 192 56 +248 200 48 +132 132 104 +164 164 152 +164 164 152 +228 228 224 +228 228 224 diff --git a/graphics/pokemon/sirfetchd/overworld_shiny.pal b/graphics/pokemon/sirfetchd/overworld_shiny.pal new file mode 100644 index 000000000000..2516e98d6630 --- /dev/null +++ b/graphics/pokemon/sirfetchd/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 8 0 +74 74 74 +24 106 74 +98 90 24 +0 8 0 +164 123 57 +106 148 41 +180 156 49 +139 197 57 +255 205 49 +131 131 106 +189 180 148 +180 156 49 +230 230 222 +246 222 106 diff --git a/graphics/pokemon/sizzlipede/overworld.png b/graphics/pokemon/sizzlipede/overworld.png new file mode 100644 index 000000000000..e1c3f8257ab6 Binary files /dev/null and b/graphics/pokemon/sizzlipede/overworld.png differ diff --git a/graphics/pokemon/sizzlipede/overworld_normal.pal b/graphics/pokemon/sizzlipede/overworld_normal.pal new file mode 100644 index 000000000000..9a9cad6db9e8 --- /dev/null +++ b/graphics/pokemon/sizzlipede/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +80 12 12 +240 124 112 +148 40 40 +24 12 12 +212 64 68 +64 44 36 +196 192 32 +236 236 84 +132 72 72 +100 44 40 +108 72 16 +240 176 72 +116 84 76 +180 124 32 +0 0 0 diff --git a/graphics/pokemon/sizzlipede/overworld_shiny.pal b/graphics/pokemon/sizzlipede/overworld_shiny.pal new file mode 100644 index 000000000000..2c99aa2e875e --- /dev/null +++ b/graphics/pokemon/sizzlipede/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +82 8 8 +246 123 115 +148 41 41 +24 41 41 +213 65 65 +65 115 115 +197 197 32 +238 238 82 +131 74 74 +98 41 41 +106 74 16 +246 180 74 +90 156 156 +180 123 32 +0 0 0 diff --git a/graphics/pokemon/skarmory/overworld.png b/graphics/pokemon/skarmory/overworld.png new file mode 100644 index 000000000000..f09f7d41fe34 Binary files /dev/null and b/graphics/pokemon/skarmory/overworld.png differ diff --git a/graphics/pokemon/skarmory/overworld_normal.pal b/graphics/pokemon/skarmory/overworld_normal.pal new file mode 100644 index 000000000000..929f7e42fff1 --- /dev/null +++ b/graphics/pokemon/skarmory/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 48 104 +208 232 248 +0 0 0 +152 176 216 +72 0 16 +200 56 88 +120 144 192 +64 96 152 +160 24 48 +248 208 96 +200 168 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skarmory/overworld_shiny.pal b/graphics/pokemon/skarmory/overworld_shiny.pal new file mode 100644 index 000000000000..10a924fe94a3 --- /dev/null +++ b/graphics/pokemon/skarmory/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 48 104 +232 232 216 +0 0 0 +192 192 176 +40 88 8 +128 200 88 +152 144 136 +104 104 88 +96 160 48 +248 208 96 +200 168 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skiddo/overworld.png b/graphics/pokemon/skiddo/overworld.png new file mode 100644 index 000000000000..8a765ad7adea Binary files /dev/null and b/graphics/pokemon/skiddo/overworld.png differ diff --git a/graphics/pokemon/skiddo/overworld_normal.pal b/graphics/pokemon/skiddo/overworld_normal.pal new file mode 100644 index 000000000000..24e13e74795b --- /dev/null +++ b/graphics/pokemon/skiddo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +27 32 28 +118 113 110 +27 32 28 +166 158 152 +16 16 16 +152 123 104 +107 88 75 +62 52 46 +253 251 248 +35 75 49 +25 163 75 +196 192 189 +30 120 63 +255 108 11 +143 67 41 diff --git a/graphics/pokemon/skiddo/overworld_shiny.pal b/graphics/pokemon/skiddo/overworld_shiny.pal new file mode 100644 index 000000000000..df7b94e4957e --- /dev/null +++ b/graphics/pokemon/skiddo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +145 124 56 +194 161 49 +27 32 28 +225 189 70 +16 16 16 +251 232 216 +220 192 168 +158 132 110 +253 251 248 +108 144 42 +185 226 67 +218 217 216 +139 174 51 +255 108 11 +143 67 41 diff --git a/graphics/pokemon/skiploom/overworld.png b/graphics/pokemon/skiploom/overworld.png new file mode 100644 index 000000000000..2da705ffcc09 Binary files /dev/null and b/graphics/pokemon/skiploom/overworld.png differ diff --git a/graphics/pokemon/skiploom/overworld_normal.pal b/graphics/pokemon/skiploom/overworld_normal.pal new file mode 100644 index 000000000000..dfe268481643 --- /dev/null +++ b/graphics/pokemon/skiploom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +168 120 8 +120 80 8 +232 192 24 +248 216 80 +184 200 224 +0 0 0 +232 232 248 +40 112 8 +128 192 80 +184 216 120 +64 152 32 +184 48 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skiploom/overworld_shiny.pal b/graphics/pokemon/skiploom/overworld_shiny.pal new file mode 100644 index 000000000000..f96d249c3447 --- /dev/null +++ b/graphics/pokemon/skiploom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +160 128 8 +120 88 8 +200 168 24 +232 192 32 +184 200 224 +0 0 0 +232 232 248 +120 48 96 +200 128 168 +224 160 216 +184 88 144 +248 104 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skitty/overworld.png b/graphics/pokemon/skitty/overworld.png new file mode 100644 index 000000000000..7c1d5ebadd41 Binary files /dev/null and b/graphics/pokemon/skitty/overworld.png differ diff --git a/graphics/pokemon/skitty/overworld_normal.pal b/graphics/pokemon/skitty/overworld_normal.pal new file mode 100644 index 000000000000..d4f33d46f5e5 --- /dev/null +++ b/graphics/pokemon/skitty/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 104 72 +248 224 128 +96 56 56 +176 80 88 +248 136 152 +0 0 0 +56 56 88 +208 160 72 +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/skitty/overworld_shiny.pal b/graphics/pokemon/skitty/overworld_shiny.pal new file mode 100644 index 000000000000..73758858995f --- /dev/null +++ b/graphics/pokemon/skitty/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 104 72 +248 224 128 +96 40 32 +184 64 32 +248 128 112 +0 0 0 +56 56 88 +208 160 72 +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/skorupi/overworld.png b/graphics/pokemon/skorupi/overworld.png new file mode 100644 index 000000000000..4d18b9792098 Binary files /dev/null and b/graphics/pokemon/skorupi/overworld.png differ diff --git a/graphics/pokemon/skorupi/overworld_normal.pal b/graphics/pokemon/skorupi/overworld_normal.pal new file mode 100644 index 000000000000..e2c4b4a2b246 --- /dev/null +++ b/graphics/pokemon/skorupi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 56 80 +232 232 248 +72 72 144 +88 96 176 +176 184 192 +120 128 136 +120 128 208 +152 160 224 +40 160 152 +32 120 112 +24 192 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skorupi/overworld_shiny.pal b/graphics/pokemon/skorupi/overworld_shiny.pal new file mode 100644 index 000000000000..91068d4fcbcc --- /dev/null +++ b/graphics/pokemon/skorupi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +120 0 0 +232 232 248 +152 24 24 +184 56 48 +176 184 192 +120 128 136 +216 80 80 +248 112 104 +40 160 152 +32 120 112 +24 192 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skrelp/overworld.png b/graphics/pokemon/skrelp/overworld.png new file mode 100644 index 000000000000..91f44f48517b Binary files /dev/null and b/graphics/pokemon/skrelp/overworld.png differ diff --git a/graphics/pokemon/skrelp/overworld_normal.pal b/graphics/pokemon/skrelp/overworld_normal.pal new file mode 100644 index 000000000000..8b443bbb0ff6 --- /dev/null +++ b/graphics/pokemon/skrelp/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +54 33 27 +16 16 16 +131 87 62 +109 67 49 +92 51 38 +84 135 150 +173 98 156 +54 33 27 +222 148 200 +253 95 98 +121 202 213 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skrelp/overworld_shiny.pal b/graphics/pokemon/skrelp/overworld_shiny.pal new file mode 100644 index 000000000000..09ce52e87467 --- /dev/null +++ b/graphics/pokemon/skrelp/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +95 17 17 +16 16 16 +194 65 65 +163 41 41 +128 26 26 +84 135 150 +105 134 179 +56 103 118 +148 173 212 +253 95 98 +121 202 213 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/skuntank/overworld.png b/graphics/pokemon/skuntank/overworld.png new file mode 100644 index 000000000000..fc2ba61d2adb Binary files /dev/null and b/graphics/pokemon/skuntank/overworld.png differ diff --git a/graphics/pokemon/skuntank/overworld_normal.pal b/graphics/pokemon/skuntank/overworld_normal.pal new file mode 100644 index 000000000000..487055f4155b --- /dev/null +++ b/graphics/pokemon/skuntank/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 48 112 +232 216 144 +40 40 40 +184 160 96 +136 88 144 +64 48 64 +88 80 48 +160 40 32 +112 112 112 +192 96 64 +184 184 200 +232 232 248 +232 208 96 +0 0 0 diff --git a/graphics/pokemon/skuntank/overworld_shiny.pal b/graphics/pokemon/skuntank/overworld_shiny.pal new file mode 100644 index 000000000000..64bff7c8e3e0 --- /dev/null +++ b/graphics/pokemon/skuntank/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +152 24 64 +232 216 144 +112 0 40 +184 160 96 +208 64 104 +64 48 64 +88 80 48 +160 40 32 +112 112 112 +192 96 64 +184 184 200 +232 232 248 +232 208 96 +0 0 0 diff --git a/graphics/pokemon/skwovet/overworld.png b/graphics/pokemon/skwovet/overworld.png new file mode 100644 index 000000000000..5b20b7b61f43 Binary files /dev/null and b/graphics/pokemon/skwovet/overworld.png differ diff --git a/graphics/pokemon/skwovet/overworld_normal.pal b/graphics/pokemon/skwovet/overworld_normal.pal new file mode 100644 index 000000000000..7a3a222f145a --- /dev/null +++ b/graphics/pokemon/skwovet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 29 0 +19 17 15 +0 0 0 +77 72 64 +105 98 88 +51 42 29 +142 123 98 +173 153 128 +201 183 161 +226 145 83 +169 162 151 +215 209 199 +255 255 255 +255 173 109 +239 239 239 +0 0 0 diff --git a/graphics/pokemon/skwovet/overworld_shiny.pal b/graphics/pokemon/skwovet/overworld_shiny.pal new file mode 100644 index 000000000000..b830f20f26a8 --- /dev/null +++ b/graphics/pokemon/skwovet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 29 0 +49 16 24 +0 0 0 +106 41 49 +164 65 90 +82 49 49 +164 98 106 +197 139 148 +230 180 189 +230 148 82 +172 164 148 +213 213 197 +255 255 255 +255 172 106 +238 238 238 +0 0 0 diff --git a/graphics/pokemon/slaking/overworld.png b/graphics/pokemon/slaking/overworld.png new file mode 100644 index 000000000000..2d739781e399 Binary files /dev/null and b/graphics/pokemon/slaking/overworld.png differ diff --git a/graphics/pokemon/slaking/overworld_normal.pal b/graphics/pokemon/slaking/overworld_normal.pal new file mode 100644 index 000000000000..1e263bb16aff --- /dev/null +++ b/graphics/pokemon/slaking/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 72 88 +232 232 248 +192 192 208 +0 0 0 +144 136 152 +96 72 72 +200 176 152 +216 200 160 +144 120 96 +72 56 40 +128 104 88 +168 128 104 +120 56 72 +208 112 136 +168 80 104 diff --git a/graphics/pokemon/slaking/overworld_shiny.pal b/graphics/pokemon/slaking/overworld_shiny.pal new file mode 100644 index 000000000000..f1e08cc7f0ed --- /dev/null +++ b/graphics/pokemon/slaking/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 56 +240 248 184 +224 200 96 +0 0 0 +192 152 48 +96 72 72 +200 176 152 +216 200 160 +144 120 96 +64 48 40 +112 96 88 +152 120 104 +120 56 72 +208 112 136 +168 80 104 diff --git a/graphics/pokemon/slakoth/overworld.png b/graphics/pokemon/slakoth/overworld.png new file mode 100644 index 000000000000..a4187236feb1 Binary files /dev/null and b/graphics/pokemon/slakoth/overworld.png differ diff --git a/graphics/pokemon/slakoth/overworld_normal.pal b/graphics/pokemon/slakoth/overworld_normal.pal new file mode 100644 index 000000000000..2742a5b6d93d --- /dev/null +++ b/graphics/pokemon/slakoth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 64 +112 96 88 +184 152 112 +224 200 144 +152 128 88 +0 0 0 +144 136 152 +128 88 80 +112 64 56 +120 32 32 +208 88 88 +168 56 56 +232 232 248 +184 176 192 +88 80 96 diff --git a/graphics/pokemon/slakoth/overworld_shiny.pal b/graphics/pokemon/slakoth/overworld_shiny.pal new file mode 100644 index 000000000000..a96e6c70000b --- /dev/null +++ b/graphics/pokemon/slakoth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 40 96 +104 72 120 +176 144 168 +200 176 192 +128 96 144 +0 0 0 +144 136 152 +128 88 80 +112 64 56 +120 72 32 +208 120 88 +168 88 56 +232 232 248 +184 176 192 +88 80 96 diff --git a/graphics/pokemon/sliggoo/hisuian/overworld.png b/graphics/pokemon/sliggoo/hisuian/overworld.png new file mode 100644 index 000000000000..511b750d83cc Binary files /dev/null and b/graphics/pokemon/sliggoo/hisuian/overworld.png differ diff --git a/graphics/pokemon/sliggoo/hisuian/overworld_normal.pal b/graphics/pokemon/sliggoo/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..66b17f5ba276 --- /dev/null +++ b/graphics/pokemon/sliggoo/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +65 65 65 +106 106 106 +16 16 16 +131 131 131 +82 49 82 +189 148 205 +222 197 255 +139 82 139 +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/sliggoo/hisuian/overworld_shiny.pal b/graphics/pokemon/sliggoo/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..d9dcb3cab257 --- /dev/null +++ b/graphics/pokemon/sliggoo/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +115 74 24 +172 115 41 +16 16 16 +205 172 82 +82 49 82 +189 148 205 +222 197 255 +139 82 139 +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/sliggoo/overworld.png b/graphics/pokemon/sliggoo/overworld.png new file mode 100644 index 000000000000..fad6f57fd8d1 Binary files /dev/null and b/graphics/pokemon/sliggoo/overworld.png differ diff --git a/graphics/pokemon/sliggoo/overworld_normal.pal b/graphics/pokemon/sliggoo/overworld_normal.pal new file mode 100644 index 000000000000..d3a0260ff305 --- /dev/null +++ b/graphics/pokemon/sliggoo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +85 54 86 +191 151 203 +218 194 248 +16 16 16 +38 98 41 +57 235 68 +47 153 53 +139 87 141 +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/sliggoo/overworld_shiny.pal b/graphics/pokemon/sliggoo/overworld_shiny.pal new file mode 100644 index 000000000000..fd5a2e122ccc --- /dev/null +++ b/graphics/pokemon/sliggoo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +146 134 73 +209 194 114 +255 242 173 +16 16 16 +88 83 153 +159 154 230 +119 113 200 +226 164 145 +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/slowbro/galarian/overworld.png b/graphics/pokemon/slowbro/galarian/overworld.png new file mode 100644 index 000000000000..f62e2b3bdd84 Binary files /dev/null and b/graphics/pokemon/slowbro/galarian/overworld.png differ diff --git a/graphics/pokemon/slowbro/galarian/overworld_normal.pal b/graphics/pokemon/slowbro/galarian/overworld_normal.pal new file mode 100644 index 000000000000..c4e5d9c5b5b4 --- /dev/null +++ b/graphics/pokemon/slowbro/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +236 28 36 +232 224 232 +176 128 192 +0 0 0 +120 88 168 +240 168 176 +248 248 248 +108 44 52 +208 120 128 +72 80 88 +204 208 220 +152 152 152 +224 80 40 +216 192 88 +240 240 168 +176 160 184 diff --git a/graphics/pokemon/slowbro/galarian/overworld_shiny.pal b/graphics/pokemon/slowbro/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..508d550296dd --- /dev/null +++ b/graphics/pokemon/slowbro/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +197 205 213 +180 131 197 +0 0 0 +123 90 172 +246 246 172 +238 238 255 +0 0 0 +222 197 90 +74 82 90 +197 205 213 +156 156 156 +74 82 90 +222 197 90 +246 246 172 +156 156 156 diff --git a/graphics/pokemon/slowbro/overworld.png b/graphics/pokemon/slowbro/overworld.png new file mode 100644 index 000000000000..553c4df7f621 Binary files /dev/null and b/graphics/pokemon/slowbro/overworld.png differ diff --git a/graphics/pokemon/slowbro/overworld_normal.pal b/graphics/pokemon/slowbro/overworld_normal.pal new file mode 100644 index 000000000000..f1a3ea572f45 --- /dev/null +++ b/graphics/pokemon/slowbro/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 48 56 +240 168 176 +0 0 0 +208 120 128 +176 96 104 +72 80 88 +232 232 248 +152 152 152 +192 200 208 +216 192 88 +240 240 168 +232 232 248 +192 64 64 +216 112 96 +144 120 48 diff --git a/graphics/pokemon/slowbro/overworld_shiny.pal b/graphics/pokemon/slowbro/overworld_shiny.pal new file mode 100644 index 000000000000..8ee36f1fb36e --- /dev/null +++ b/graphics/pokemon/slowbro/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 48 88 +176 160 224 +0 0 0 +128 120 184 +80 80 136 +104 80 16 +232 232 248 +160 128 32 +208 168 96 +216 192 88 +240 240 168 +232 208 128 +192 64 64 +216 112 96 +144 120 48 diff --git a/graphics/pokemon/slowking/galarian/overworld.png b/graphics/pokemon/slowking/galarian/overworld.png new file mode 100644 index 000000000000..5babfe384b6e Binary files /dev/null and b/graphics/pokemon/slowking/galarian/overworld.png differ diff --git a/graphics/pokemon/slowking/galarian/overworld_normal.pal b/graphics/pokemon/slowking/galarian/overworld_normal.pal new file mode 100644 index 000000000000..aa19348aaa07 --- /dev/null +++ b/graphics/pokemon/slowking/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +41 194 156 +49 52 74 +16 129 8 +197 202 213 +230 230 246 +156 157 115 +90 80 115 +189 210 139 +148 109 115 +98 36 74 +0 0 0 +131 121 139 +164 165 180 +131 76 106 +189 174 189 +131 113 180 diff --git a/graphics/pokemon/slowking/galarian/overworld_shiny.pal b/graphics/pokemon/slowking/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..aa19348aaa07 --- /dev/null +++ b/graphics/pokemon/slowking/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +41 194 156 +49 52 74 +16 129 8 +197 202 213 +230 230 246 +156 157 115 +90 80 115 +189 210 139 +148 109 115 +98 36 74 +0 0 0 +131 121 139 +164 165 180 +131 76 106 +189 174 189 +131 113 180 diff --git a/graphics/pokemon/slowking/overworld.png b/graphics/pokemon/slowking/overworld.png new file mode 100644 index 000000000000..3d5dde2e49e0 Binary files /dev/null and b/graphics/pokemon/slowking/overworld.png differ diff --git a/graphics/pokemon/slowking/overworld_normal.pal b/graphics/pokemon/slowking/overworld_normal.pal new file mode 100644 index 000000000000..ec617c434801 --- /dev/null +++ b/graphics/pokemon/slowking/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 88 +0 0 0 +192 200 208 +232 232 248 +152 160 168 +152 64 72 +208 120 128 +240 168 176 +112 48 56 +200 160 64 +208 16 16 +232 200 96 +120 88 16 +200 80 96 +192 136 40 diff --git a/graphics/pokemon/slowking/overworld_shiny.pal b/graphics/pokemon/slowking/overworld_shiny.pal new file mode 100644 index 000000000000..8c5a6a3cf74a --- /dev/null +++ b/graphics/pokemon/slowking/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 88 +0 0 0 +192 200 208 +232 232 248 +152 160 168 +144 80 144 +216 136 200 +240 168 224 +80 48 112 +200 160 64 +0 136 248 +232 200 96 +120 88 16 +176 104 168 +192 136 40 diff --git a/graphics/pokemon/slowpoke/galarian/overworld.png b/graphics/pokemon/slowpoke/galarian/overworld.png new file mode 100644 index 000000000000..277a1f3a87ff Binary files /dev/null and b/graphics/pokemon/slowpoke/galarian/overworld.png differ diff --git a/graphics/pokemon/slowpoke/galarian/overworld_normal.pal b/graphics/pokemon/slowpoke/galarian/overworld_normal.pal new file mode 100644 index 000000000000..39773f539fa4 --- /dev/null +++ b/graphics/pokemon/slowpoke/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +66 63 0 +96 40 48 +173 166 8 +239 229 9 +0 0 0 +204 109 117 +240 152 160 +160 168 176 +104 80 16 +208 168 96 +240 216 144 +232 232 248 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/slowpoke/galarian/overworld_shiny.pal b/graphics/pokemon/slowpoke/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..39773f539fa4 --- /dev/null +++ b/graphics/pokemon/slowpoke/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +66 63 0 +96 40 48 +173 166 8 +239 229 9 +0 0 0 +204 109 117 +240 152 160 +160 168 176 +104 80 16 +208 168 96 +240 216 144 +232 232 248 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/slowpoke/overworld.png b/graphics/pokemon/slowpoke/overworld.png new file mode 100644 index 000000000000..7c2a0369fe6f Binary files /dev/null and b/graphics/pokemon/slowpoke/overworld.png differ diff --git a/graphics/pokemon/slowpoke/overworld_normal.pal b/graphics/pokemon/slowpoke/overworld_normal.pal new file mode 100644 index 000000000000..85748434bac2 --- /dev/null +++ b/graphics/pokemon/slowpoke/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 48 +152 88 96 +192 192 192 +232 232 248 +208 120 128 +240 152 160 +0 0 0 +160 168 176 +104 80 16 +208 168 96 +240 216 144 +248 192 176 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/slowpoke/overworld_shiny.pal b/graphics/pokemon/slowpoke/overworld_shiny.pal new file mode 100644 index 000000000000..f321ac09b66b --- /dev/null +++ b/graphics/pokemon/slowpoke/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 80 +184 112 120 +192 192 192 +232 232 248 +224 136 160 +248 176 208 +0 0 0 +160 168 176 +104 80 16 +208 168 96 +240 216 144 +248 200 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/slugma/overworld.png b/graphics/pokemon/slugma/overworld.png new file mode 100644 index 000000000000..61439bc0fbcb Binary files /dev/null and b/graphics/pokemon/slugma/overworld.png differ diff --git a/graphics/pokemon/slugma/overworld_normal.pal b/graphics/pokemon/slugma/overworld_normal.pal new file mode 100644 index 000000000000..da10c73e9dfc --- /dev/null +++ b/graphics/pokemon/slugma/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 96 64 +72 0 0 +160 56 24 +192 72 40 +200 144 16 +232 208 104 +120 24 16 +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/slugma/overworld_shiny.pal b/graphics/pokemon/slugma/overworld_shiny.pal new file mode 100644 index 000000000000..ee33de70cb54 --- /dev/null +++ b/graphics/pokemon/slugma/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +184 184 184 +64 64 64 +136 136 136 +160 160 160 +200 144 16 +232 208 104 +88 88 88 +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/slurpuff/overworld.png b/graphics/pokemon/slurpuff/overworld.png new file mode 100644 index 000000000000..94998ffac9fa Binary files /dev/null and b/graphics/pokemon/slurpuff/overworld.png differ diff --git a/graphics/pokemon/slurpuff/overworld_normal.pal b/graphics/pokemon/slurpuff/overworld_normal.pal new file mode 100644 index 000000000000..112eabce5e87 --- /dev/null +++ b/graphics/pokemon/slurpuff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +214 104 138 +236 186 215 +134 48 66 +236 186 215 +225 123 154 +134 48 66 +212 184 193 +255 255 255 +236 186 215 +134 48 66 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/slurpuff/overworld_shiny.pal b/graphics/pokemon/slurpuff/overworld_shiny.pal new file mode 100644 index 000000000000..e9f54ed7a654 --- /dev/null +++ b/graphics/pokemon/slurpuff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +203 43 83 +247 129 159 +69 44 29 +147 113 94 +98 73 58 +168 128 71 +212 177 128 +254 227 165 +247 129 158 +154 30 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/smeargle/overworld.png b/graphics/pokemon/smeargle/overworld.png new file mode 100644 index 000000000000..c6f88466ee00 Binary files /dev/null and b/graphics/pokemon/smeargle/overworld.png differ diff --git a/graphics/pokemon/smeargle/overworld_normal.pal b/graphics/pokemon/smeargle/overworld_normal.pal new file mode 100644 index 000000000000..105263d9bd7a --- /dev/null +++ b/graphics/pokemon/smeargle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +96 88 72 +0 0 0 +216 216 184 +160 152 104 +184 184 136 +64 56 48 +112 96 32 +40 112 40 +232 232 248 +176 184 192 +72 176 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/smeargle/overworld_shiny.pal b/graphics/pokemon/smeargle/overworld_shiny.pal new file mode 100644 index 000000000000..6adf1b8e0c86 --- /dev/null +++ b/graphics/pokemon/smeargle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +96 80 48 +0 0 0 +232 224 160 +168 136 72 +200 184 120 +64 56 48 +112 96 32 +152 48 104 +232 232 248 +176 184 192 +216 136 176 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/smoochum/overworld.png b/graphics/pokemon/smoochum/overworld.png new file mode 100644 index 000000000000..ccee071741cb Binary files /dev/null and b/graphics/pokemon/smoochum/overworld.png differ diff --git a/graphics/pokemon/smoochum/overworld_normal.pal b/graphics/pokemon/smoochum/overworld_normal.pal new file mode 100644 index 000000000000..ad1fb9a48f8b --- /dev/null +++ b/graphics/pokemon/smoochum/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 80 0 +0 0 0 +208 136 24 +248 192 48 +176 64 152 +248 152 200 +112 32 96 +232 232 248 +176 184 192 +152 48 80 +216 64 104 +200 128 56 +224 160 104 +152 96 40 +0 0 0 diff --git a/graphics/pokemon/smoochum/overworld_shiny.pal b/graphics/pokemon/smoochum/overworld_shiny.pal new file mode 100644 index 000000000000..0c4052b9cce2 --- /dev/null +++ b/graphics/pokemon/smoochum/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 80 16 +0 0 0 +248 192 64 +248 224 168 +232 128 224 +248 192 248 +144 32 96 +232 232 248 +176 184 192 +152 48 80 +216 64 104 +200 128 56 +224 160 104 +152 96 40 +0 0 0 diff --git a/graphics/pokemon/sneasel/hisuian/overworld.png b/graphics/pokemon/sneasel/hisuian/overworld.png new file mode 100644 index 000000000000..7f4c335a9e8f Binary files /dev/null and b/graphics/pokemon/sneasel/hisuian/overworld.png differ diff --git a/graphics/pokemon/sneasel/hisuian/overworld_normal.pal b/graphics/pokemon/sneasel/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..e909571475d7 --- /dev/null +++ b/graphics/pokemon/sneasel/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 74 98 +16 16 16 +32 24 32 +98 115 164 +164 189 222 +57 74 82 +74 49 90 +123 139 180 +255 255 255 +90 98 106 +164 123 222 +205 49 74 +246 180 65 +230 139 16 +131 148 172 diff --git a/graphics/pokemon/sneasel/hisuian/overworld_shiny.pal b/graphics/pokemon/sneasel/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..e2b78ba4413f --- /dev/null +++ b/graphics/pokemon/sneasel/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +82 82 82 +16 16 16 +189 156 49 +98 115 123 +131 148 156 +57 74 82 +230 205 82 +115 131 131 +255 255 255 +90 82 98 +90 82 98 +230 205 82 +156 172 238 +156 172 238 +131 148 172 diff --git a/graphics/pokemon/sneasel/overworld.png b/graphics/pokemon/sneasel/overworld.png new file mode 100644 index 000000000000..3cabd75c5493 Binary files /dev/null and b/graphics/pokemon/sneasel/overworld.png differ diff --git a/graphics/pokemon/sneasel/overworld_normal.pal b/graphics/pokemon/sneasel/overworld_normal.pal new file mode 100644 index 000000000000..7a4190d087f9 --- /dev/null +++ b/graphics/pokemon/sneasel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 56 72 +96 8 24 +80 152 176 +24 88 112 +200 48 72 +16 16 16 +56 112 136 +152 8 32 +56 72 80 +240 176 64 +168 184 200 +248 248 248 +224 136 16 +88 96 104 +128 144 168 diff --git a/graphics/pokemon/sneasel/overworld_shiny.pal b/graphics/pokemon/sneasel/overworld_shiny.pal new file mode 100644 index 000000000000..d84067f4bc70 --- /dev/null +++ b/graphics/pokemon/sneasel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 40 64 +152 80 0 +224 168 232 +216 72 128 +248 200 64 +16 16 16 +224 112 168 +232 144 32 +184 64 128 +120 208 248 +168 184 200 +248 248 248 +0 152 208 +88 96 104 +128 144 168 diff --git a/graphics/pokemon/sneasler/overworld.png b/graphics/pokemon/sneasler/overworld.png new file mode 100644 index 000000000000..29f5dc9d48c7 Binary files /dev/null and b/graphics/pokemon/sneasler/overworld.png differ diff --git a/graphics/pokemon/sneasler/overworld_normal.pal b/graphics/pokemon/sneasler/overworld_normal.pal new file mode 100644 index 000000000000..12b06e1358fb --- /dev/null +++ b/graphics/pokemon/sneasler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +41 49 65 +172 0 41 +74 74 98 +123 139 180 +74 49 90 +106 90 164 +164 189 222 +57 74 82 +255 255 255 +164 123 222 +246 180 65 +230 139 16 +213 0 57 +205 49 74 diff --git a/graphics/pokemon/sneasler/overworld_shiny.pal b/graphics/pokemon/sneasler/overworld_shiny.pal new file mode 100644 index 000000000000..1cfe27b932fe --- /dev/null +++ b/graphics/pokemon/sneasler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 8 8 +32 32 41 +205 172 65 +180 172 131 +213 205 156 +74 57 82 +65 49 57 +213 205 156 +57 74 82 +255 255 255 +98 82 90 +156 172 238 +156 172 238 +230 197 82 +74 106 49 diff --git a/graphics/pokemon/snivy/overworld.png b/graphics/pokemon/snivy/overworld.png new file mode 100644 index 000000000000..b3615871094e Binary files /dev/null and b/graphics/pokemon/snivy/overworld.png differ diff --git a/graphics/pokemon/snivy/overworld_normal.pal b/graphics/pokemon/snivy/overworld_normal.pal new file mode 100644 index 000000000000..3b13b6e882a6 --- /dev/null +++ b/graphics/pokemon/snivy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 88 0 +0 143 7 +0 0 0 +0 88 0 +255 226 50 +197 157 0 +96 64 32 +191 184 103 +191 184 103 +237 254 162 +232 232 248 +184 88 32 +255 226 50 +197 157 0 +237 254 162 diff --git a/graphics/pokemon/snivy/overworld_shiny.pal b/graphics/pokemon/snivy/overworld_shiny.pal new file mode 100644 index 000000000000..d17858108887 --- /dev/null +++ b/graphics/pokemon/snivy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 72 72 +0 152 152 +0 0 0 +0 88 0 +248 216 40 +192 128 0 +96 64 32 +191 184 103 +184 184 96 +224 248 184 +232 232 248 +184 88 32 +255 226 50 +197 157 0 +237 254 162 diff --git a/graphics/pokemon/snom/overworld.png b/graphics/pokemon/snom/overworld.png new file mode 100644 index 000000000000..36e63d50e256 Binary files /dev/null and b/graphics/pokemon/snom/overworld.png differ diff --git a/graphics/pokemon/snom/overworld_normal.pal b/graphics/pokemon/snom/overworld_normal.pal new file mode 100644 index 000000000000..9884fbc23581 --- /dev/null +++ b/graphics/pokemon/snom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 28 0 +44 56 60 +220 240 248 +240 248 252 +180 200 212 +104 120 128 +0 0 0 +128 128 128 +252 252 252 +212 212 212 +24 24 24 +104 88 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/snom/overworld_shiny.pal b/graphics/pokemon/snom/overworld_shiny.pal new file mode 100644 index 000000000000..ab7ceca1228f --- /dev/null +++ b/graphics/pokemon/snom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 57 57 +222 246 255 +246 255 255 +180 205 213 +106 123 131 +0 0 0 +148 156 131 +238 255 230 +222 238 205 +24 24 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/snorlax/overworld.png b/graphics/pokemon/snorlax/overworld.png new file mode 100644 index 000000000000..413990299107 Binary files /dev/null and b/graphics/pokemon/snorlax/overworld.png differ diff --git a/graphics/pokemon/snorlax/overworld_normal.pal b/graphics/pokemon/snorlax/overworld_normal.pal new file mode 100644 index 000000000000..b3f5917464fc --- /dev/null +++ b/graphics/pokemon/snorlax/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 48 +0 0 0 +80 128 144 +64 104 120 +248 224 168 +216 192 120 +40 72 72 +64 64 64 +136 104 72 +184 144 80 +232 232 248 +192 192 200 +160 160 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/snorlax/overworld_shiny.pal b/graphics/pokemon/snorlax/overworld_shiny.pal new file mode 100644 index 000000000000..f0cd65c757e9 --- /dev/null +++ b/graphics/pokemon/snorlax/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 32 72 +0 0 0 +104 136 184 +64 96 152 +248 216 168 +224 176 120 +56 64 120 +64 64 64 +136 104 72 +168 136 104 +232 232 248 +192 192 200 +160 160 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/snorunt/overworld.png b/graphics/pokemon/snorunt/overworld.png new file mode 100644 index 000000000000..42f666151921 Binary files /dev/null and b/graphics/pokemon/snorunt/overworld.png differ diff --git a/graphics/pokemon/snorunt/overworld_normal.pal b/graphics/pokemon/snorunt/overworld_normal.pal new file mode 100644 index 000000000000..15886e0c4c27 --- /dev/null +++ b/graphics/pokemon/snorunt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 64 56 +248 216 88 +200 152 56 +0 0 0 +240 104 88 +168 72 64 +48 48 64 +32 32 40 +192 80 64 +64 64 80 +40 128 192 +96 96 120 +168 168 184 +144 104 56 +232 232 248 diff --git a/graphics/pokemon/snorunt/overworld_shiny.pal b/graphics/pokemon/snorunt/overworld_shiny.pal new file mode 100644 index 000000000000..baf242ad241f --- /dev/null +++ b/graphics/pokemon/snorunt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 64 88 +80 224 248 +72 176 192 +0 0 0 +248 216 88 +144 104 56 +48 48 64 +32 32 40 +200 152 56 +64 64 80 +232 96 88 +96 96 120 +168 168 184 +64 120 136 +232 232 248 diff --git a/graphics/pokemon/snover/overworld.png b/graphics/pokemon/snover/overworld.png new file mode 100644 index 000000000000..6e8403118726 Binary files /dev/null and b/graphics/pokemon/snover/overworld.png differ diff --git a/graphics/pokemon/snover/overworld_normal.pal b/graphics/pokemon/snover/overworld_normal.pal new file mode 100644 index 000000000000..e1ec3499d8fa --- /dev/null +++ b/graphics/pokemon/snover/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 224 24 +64 64 64 +120 120 152 +232 232 248 +184 192 208 +216 216 232 +160 160 192 +0 0 0 +48 120 64 +48 72 56 +48 152 72 +64 56 24 +168 136 56 +96 80 56 +128 104 40 +0 0 0 diff --git a/graphics/pokemon/snover/overworld_shiny.pal b/graphics/pokemon/snover/overworld_shiny.pal new file mode 100644 index 000000000000..66f6e6532f79 --- /dev/null +++ b/graphics/pokemon/snover/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 224 24 +64 64 64 +120 120 152 +232 232 248 +184 192 208 +216 216 232 +160 160 192 +0 0 0 +32 72 72 +32 48 56 +32 96 96 +48 40 16 +128 104 40 +72 56 40 +96 72 24 +0 0 0 diff --git a/graphics/pokemon/snubbull/overworld.png b/graphics/pokemon/snubbull/overworld.png new file mode 100644 index 000000000000..d4aee69ec0c1 Binary files /dev/null and b/graphics/pokemon/snubbull/overworld.png differ diff --git a/graphics/pokemon/snubbull/overworld_normal.pal b/graphics/pokemon/snubbull/overworld_normal.pal new file mode 100644 index 000000000000..43446de778d7 --- /dev/null +++ b/graphics/pokemon/snubbull/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +120 32 64 +48 64 80 +240 144 184 +160 48 80 +184 72 112 +208 104 144 +232 232 248 +176 192 208 +32 80 112 +48 120 152 +72 152 192 +208 192 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/snubbull/overworld_shiny.pal b/graphics/pokemon/snubbull/overworld_shiny.pal new file mode 100644 index 000000000000..af67d8a63dd5 --- /dev/null +++ b/graphics/pokemon/snubbull/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 32 112 +120 32 64 +184 184 248 +112 72 144 +136 104 184 +160 144 216 +232 232 248 +176 192 208 +120 32 64 +216 104 136 +240 144 184 +176 192 208 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sobble/overworld.png b/graphics/pokemon/sobble/overworld.png new file mode 100644 index 000000000000..7fd769da4b4d Binary files /dev/null and b/graphics/pokemon/sobble/overworld.png differ diff --git a/graphics/pokemon/sobble/overworld_normal.pal b/graphics/pokemon/sobble/overworld_normal.pal new file mode 100644 index 000000000000..a2d82c8deb12 --- /dev/null +++ b/graphics/pokemon/sobble/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 28 0 +24 64 84 +32 72 108 +36 96 116 +0 0 0 +196 168 28 +224 196 64 +228 208 104 +36 92 132 +80 168 200 +116 184 212 +132 184 192 +172 208 212 +152 204 224 +192 220 220 +252 252 252 diff --git a/graphics/pokemon/sobble/overworld_shiny.pal b/graphics/pokemon/sobble/overworld_shiny.pal new file mode 100644 index 000000000000..ac8a70090076 --- /dev/null +++ b/graphics/pokemon/sobble/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 65 82 +32 131 131 +57 65 82 +0 0 0 +164 74 115 +213 98 156 +230 115 172 +49 180 180 +115 131 172 +172 197 238 +156 172 172 +205 222 246 +205 222 246 +205 222 246 +246 246 246 diff --git a/graphics/pokemon/solgaleo/overworld.png b/graphics/pokemon/solgaleo/overworld.png new file mode 100644 index 000000000000..7ff76401b723 Binary files /dev/null and b/graphics/pokemon/solgaleo/overworld.png differ diff --git a/graphics/pokemon/solgaleo/overworld_normal.pal b/graphics/pokemon/solgaleo/overworld_normal.pal new file mode 100644 index 000000000000..eae35eee8c25 --- /dev/null +++ b/graphics/pokemon/solgaleo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 201 255 +255 255 255 +81 52 22 +254 238 112 +255 171 40 +0 0 0 +252 132 62 +203 65 45 +155 112 34 +153 153 153 +207 211 208 +35 33 36 +29 53 102 +52 84 151 +69 76 77 +248 248 248 diff --git a/graphics/pokemon/solgaleo/overworld_shiny.pal b/graphics/pokemon/solgaleo/overworld_shiny.pal new file mode 100644 index 000000000000..42f75019562a --- /dev/null +++ b/graphics/pokemon/solgaleo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 201 255 +248 40 48 +81 52 22 +254 238 112 +255 171 40 +0 0 0 +144 56 160 +203 65 45 +155 112 34 +112 24 24 +168 40 48 +35 33 36 +29 53 102 +52 84 151 +69 76 77 +248 248 248 diff --git a/graphics/pokemon/solosis/overworld.png b/graphics/pokemon/solosis/overworld.png new file mode 100644 index 000000000000..dfa0f1475825 Binary files /dev/null and b/graphics/pokemon/solosis/overworld.png differ diff --git a/graphics/pokemon/solosis/overworld_normal.pal b/graphics/pokemon/solosis/overworld_normal.pal new file mode 100644 index 000000000000..b473e7651a95 --- /dev/null +++ b/graphics/pokemon/solosis/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +65 139 90 +90 180 123 +148 230 172 +106 98 41 +232 232 248 +90 131 90 +16 16 16 +230 222 115 +164 156 49 +205 230 189 +156 172 139 +180 205 164 +49 98 65 +148 49 74 +197 65 82 diff --git a/graphics/pokemon/solosis/overworld_shiny.pal b/graphics/pokemon/solosis/overworld_shiny.pal new file mode 100644 index 000000000000..4194bfc8cf41 --- /dev/null +++ b/graphics/pokemon/solosis/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 128 136 +88 176 168 +136 216 248 +192 96 144 +232 232 248 +96 112 80 +16 16 16 +240 216 176 +216 152 144 +216 224 168 +168 168 120 +192 200 144 +48 96 120 +148 49 74 +197 65 82 diff --git a/graphics/pokemon/solrock/overworld.png b/graphics/pokemon/solrock/overworld.png new file mode 100644 index 000000000000..088aa6e1b83d Binary files /dev/null and b/graphics/pokemon/solrock/overworld.png differ diff --git a/graphics/pokemon/solrock/overworld_normal.pal b/graphics/pokemon/solrock/overworld_normal.pal new file mode 100644 index 000000000000..6684842120b5 --- /dev/null +++ b/graphics/pokemon/solrock/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +0 0 0 +176 160 72 +208 192 96 +144 120 56 +144 72 32 +184 104 40 +216 136 56 +32 40 48 +64 72 88 +224 8 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/solrock/overworld_shiny.pal b/graphics/pokemon/solrock/overworld_shiny.pal new file mode 100644 index 000000000000..f1f5c5af0e1d --- /dev/null +++ b/graphics/pokemon/solrock/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 32 +0 0 0 +176 160 72 +208 192 96 +144 120 56 +128 32 48 +200 32 72 +240 104 136 +32 40 48 +64 72 88 +24 200 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spearow/overworld.png b/graphics/pokemon/spearow/overworld.png new file mode 100644 index 000000000000..f6f2039aabe1 Binary files /dev/null and b/graphics/pokemon/spearow/overworld.png differ diff --git a/graphics/pokemon/spearow/overworld_normal.pal b/graphics/pokemon/spearow/overworld_normal.pal new file mode 100644 index 000000000000..dd5a891a7190 --- /dev/null +++ b/graphics/pokemon/spearow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 56 16 +184 128 32 +128 88 32 +0 0 0 +144 40 16 +200 56 24 +232 232 248 +248 136 144 +232 120 88 +64 64 64 +160 80 104 +184 168 112 +136 120 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spearow/overworld_shiny.pal b/graphics/pokemon/spearow/overworld_shiny.pal new file mode 100644 index 000000000000..d38bddb6510d --- /dev/null +++ b/graphics/pokemon/spearow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 80 16 +200 168 32 +136 136 32 +0 0 0 +144 96 48 +216 120 48 +232 232 248 +248 176 32 +248 184 48 +64 64 64 +200 96 0 +184 168 112 +136 120 64 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spectrier/overworld.png b/graphics/pokemon/spectrier/overworld.png new file mode 100644 index 000000000000..a97c66c1b7b2 Binary files /dev/null and b/graphics/pokemon/spectrier/overworld.png differ diff --git a/graphics/pokemon/spectrier/overworld_normal.pal b/graphics/pokemon/spectrier/overworld_normal.pal new file mode 100644 index 000000000000..bdf64cb3a154 --- /dev/null +++ b/graphics/pokemon/spectrier/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +56 56 56 +0 40 88 +80 88 80 +120 104 216 +80 72 136 +80 80 80 +0 0 0 +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/spectrier/overworld_shiny.pal b/graphics/pokemon/spectrier/overworld_shiny.pal new file mode 100644 index 000000000000..9514f88e1260 --- /dev/null +++ b/graphics/pokemon/spectrier/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +49 49 49 +98 32 65 +115 82 123 +255 255 255 +213 90 131 +65 65 65 +0 0 0 +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/spewpa/overworld.png b/graphics/pokemon/spewpa/overworld.png new file mode 100644 index 000000000000..3a05a1a4a189 Binary files /dev/null and b/graphics/pokemon/spewpa/overworld.png differ diff --git a/graphics/pokemon/spewpa/overworld_normal.pal b/graphics/pokemon/spewpa/overworld_normal.pal new file mode 100644 index 000000000000..636221df436c --- /dev/null +++ b/graphics/pokemon/spewpa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +58 54 52 +212 197 171 +111 103 97 +16 16 16 +186 179 174 +100 93 88 +216 216 216 +240 240 236 +215 103 129 +245 204 77 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spewpa/overworld_shiny.pal b/graphics/pokemon/spewpa/overworld_shiny.pal new file mode 100644 index 000000000000..2a3cc4343ba1 --- /dev/null +++ b/graphics/pokemon/spewpa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +58 54 52 +212 197 171 +233 234 233 +16 16 16 +155 155 155 +197 198 197 +82 81 81 +110 112 111 +215 103 129 +245 204 77 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spheal/overworld.png b/graphics/pokemon/spheal/overworld.png new file mode 100644 index 000000000000..dc394187ec54 Binary files /dev/null and b/graphics/pokemon/spheal/overworld.png differ diff --git a/graphics/pokemon/spheal/overworld_normal.pal b/graphics/pokemon/spheal/overworld_normal.pal new file mode 100644 index 000000000000..4f5810be7053 --- /dev/null +++ b/graphics/pokemon/spheal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 104 +80 96 144 +0 0 0 +136 168 224 +104 136 184 +208 216 232 +176 184 208 +232 232 248 +80 80 56 +192 176 136 +160 144 112 +80 80 104 +120 112 80 +216 200 160 +0 0 0 diff --git a/graphics/pokemon/spheal/overworld_shiny.pal b/graphics/pokemon/spheal/overworld_shiny.pal new file mode 100644 index 000000000000..9c797970b85b --- /dev/null +++ b/graphics/pokemon/spheal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 64 104 +128 96 144 +0 0 0 +208 160 192 +176 120 168 +208 216 232 +176 184 208 +232 232 248 +80 80 56 +192 176 136 +160 144 112 +80 80 104 +120 112 80 +216 200 160 +0 0 0 diff --git a/graphics/pokemon/spinarak/overworld.png b/graphics/pokemon/spinarak/overworld.png new file mode 100644 index 000000000000..235adf07389c Binary files /dev/null and b/graphics/pokemon/spinarak/overworld.png differ diff --git a/graphics/pokemon/spinarak/overworld_normal.pal b/graphics/pokemon/spinarak/overworld_normal.pal new file mode 100644 index 000000000000..8ef381be2cd2 --- /dev/null +++ b/graphics/pokemon/spinarak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +32 80 32 +64 96 88 +0 0 0 +232 232 248 +112 136 152 +80 136 32 +160 216 96 +120 184 32 +80 56 0 +192 136 0 +168 184 208 +112 16 24 +208 64 104 +224 192 8 +0 0 0 diff --git a/graphics/pokemon/spinarak/overworld_shiny.pal b/graphics/pokemon/spinarak/overworld_shiny.pal new file mode 100644 index 000000000000..2a3ead998b22 --- /dev/null +++ b/graphics/pokemon/spinarak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 224 24 +48 48 112 +64 64 64 +0 0 0 +232 232 248 +112 120 120 +80 128 192 +168 200 216 +112 160 224 +96 48 88 +152 80 144 +168 184 208 +112 16 24 +208 64 104 +208 168 192 +0 0 0 diff --git a/graphics/pokemon/spinda/overworld.png b/graphics/pokemon/spinda/overworld.png new file mode 100644 index 000000000000..d50b8f9149c3 Binary files /dev/null and b/graphics/pokemon/spinda/overworld.png differ diff --git a/graphics/pokemon/spinda/overworld_normal.pal b/graphics/pokemon/spinda/overworld_normal.pal new file mode 100644 index 000000000000..0eb93e8f6c3f --- /dev/null +++ b/graphics/pokemon/spinda/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +49 164 82 +120 48 48 +16 16 16 +144 64 64 +168 128 112 +208 104 104 +216 192 168 +80 72 56 +56 64 72 +176 80 80 +192 168 144 +128 104 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spinda/overworld_shiny.pal b/graphics/pokemon/spinda/overworld_shiny.pal new file mode 100644 index 000000000000..0cc1d3a8d591 --- /dev/null +++ b/graphics/pokemon/spinda/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +49 164 82 +56 80 64 +16 16 16 +88 120 72 +168 128 112 +168 208 88 +216 192 168 +80 72 56 +56 64 72 +128 168 80 +192 168 144 +128 104 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spiritomb/overworld.png b/graphics/pokemon/spiritomb/overworld.png new file mode 100644 index 000000000000..430f8eed2572 Binary files /dev/null and b/graphics/pokemon/spiritomb/overworld.png differ diff --git a/graphics/pokemon/spiritomb/overworld_normal.pal b/graphics/pokemon/spiritomb/overworld_normal.pal new file mode 100644 index 000000000000..ed89ca8fbfb9 --- /dev/null +++ b/graphics/pokemon/spiritomb/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 56 104 +200 144 208 +168 112 168 +144 200 88 +208 240 120 +104 168 72 +64 112 64 +72 56 32 +96 88 96 +48 48 48 +104 80 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spiritomb/overworld_shiny.pal b/graphics/pokemon/spiritomb/overworld_shiny.pal new file mode 100644 index 000000000000..52f437e14310 --- /dev/null +++ b/graphics/pokemon/spiritomb/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 120 136 +152 216 248 +88 184 208 +216 128 224 +240 200 248 +192 88 192 +136 32 128 +72 56 32 +96 88 96 +48 48 48 +104 80 24 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spoink/overworld.png b/graphics/pokemon/spoink/overworld.png new file mode 100644 index 000000000000..4e3e1a833a51 Binary files /dev/null and b/graphics/pokemon/spoink/overworld.png differ diff --git a/graphics/pokemon/spoink/overworld_normal.pal b/graphics/pokemon/spoink/overworld_normal.pal new file mode 100644 index 000000000000..9ad38c64127f --- /dev/null +++ b/graphics/pokemon/spoink/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 24 64 +224 96 160 +16 16 16 +248 248 248 +144 48 96 +184 72 128 +96 104 104 +48 56 64 +128 136 136 +72 80 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spoink/overworld_shiny.pal b/graphics/pokemon/spoink/overworld_shiny.pal new file mode 100644 index 000000000000..7ac97455d6ad --- /dev/null +++ b/graphics/pokemon/spoink/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +128 136 136 +16 16 16 +248 248 248 +72 80 88 +128 136 136 +192 160 104 +88 72 48 +216 192 152 +168 120 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spritzee/overworld.png b/graphics/pokemon/spritzee/overworld.png new file mode 100644 index 000000000000..4efae5bc6781 Binary files /dev/null and b/graphics/pokemon/spritzee/overworld.png differ diff --git a/graphics/pokemon/spritzee/overworld_normal.pal b/graphics/pokemon/spritzee/overworld_normal.pal new file mode 100644 index 000000000000..87d10307a0d8 --- /dev/null +++ b/graphics/pokemon/spritzee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 39 43 +16 16 16 +236 141 161 +219 222 241 +197 95 116 +208 159 179 +232 76 90 +249 254 255 +131 71 119 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/spritzee/overworld_shiny.pal b/graphics/pokemon/spritzee/overworld_shiny.pal new file mode 100644 index 000000000000..8ece39f7a33f --- /dev/null +++ b/graphics/pokemon/spritzee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +58 42 94 +16 16 16 +124 102 171 +254 234 246 +97 74 147 +231 191 206 +245 225 11 +249 254 255 +173 86 161 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/squirtle/overworld.png b/graphics/pokemon/squirtle/overworld.png new file mode 100644 index 000000000000..bbc5861ff123 Binary files /dev/null and b/graphics/pokemon/squirtle/overworld.png differ diff --git a/graphics/pokemon/squirtle/overworld_normal.pal b/graphics/pokemon/squirtle/overworld_normal.pal new file mode 100644 index 000000000000..ed2ae724b8e1 --- /dev/null +++ b/graphics/pokemon/squirtle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 72 96 +88 184 240 +56 136 184 +232 232 248 +0 0 0 +160 8 48 +184 184 184 +216 168 48 +200 120 24 +240 208 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/squirtle/overworld_shiny.pal b/graphics/pokemon/squirtle/overworld_shiny.pal new file mode 100644 index 000000000000..95b812e82c3c --- /dev/null +++ b/graphics/pokemon/squirtle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 80 120 +136 208 248 +120 168 200 +232 232 248 +0 0 0 +160 8 48 +184 184 184 +152 168 24 +96 136 24 +240 208 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stakataka/overworld.png b/graphics/pokemon/stakataka/overworld.png new file mode 100644 index 000000000000..d4e59ce9d2b8 Binary files /dev/null and b/graphics/pokemon/stakataka/overworld.png differ diff --git a/graphics/pokemon/stakataka/overworld_normal.pal b/graphics/pokemon/stakataka/overworld_normal.pal new file mode 100644 index 000000000000..2c3b6474c184 --- /dev/null +++ b/graphics/pokemon/stakataka/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +117 117 117 +24 159 210 +20 139 182 +18 94 122 +93 93 93 +76 76 76 +35 35 35 +0 0 0 +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/stakataka/overworld_shiny.pal b/graphics/pokemon/stakataka/overworld_shiny.pal new file mode 100644 index 000000000000..d1d21069fc32 --- /dev/null +++ b/graphics/pokemon/stakataka/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +208 192 24 +24 159 210 +20 139 182 +88 80 8 +136 120 16 +160 144 16 +35 35 35 +0 0 0 +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/stantler/overworld.png b/graphics/pokemon/stantler/overworld.png new file mode 100644 index 000000000000..2296f6c0633f Binary files /dev/null and b/graphics/pokemon/stantler/overworld.png differ diff --git a/graphics/pokemon/stantler/overworld_normal.pal b/graphics/pokemon/stantler/overworld_normal.pal new file mode 100644 index 000000000000..b30705863113 --- /dev/null +++ b/graphics/pokemon/stantler/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 8 +0 0 0 +168 144 24 +224 208 80 +72 64 56 +168 184 208 +96 48 8 +200 144 88 +184 96 48 +136 32 48 +232 232 248 +112 88 80 +200 176 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stantler/overworld_shiny.pal b/graphics/pokemon/stantler/overworld_shiny.pal new file mode 100644 index 000000000000..1de599220625 --- /dev/null +++ b/graphics/pokemon/stantler/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 8 +0 0 0 +200 208 72 +240 232 152 +80 56 56 +224 120 72 +88 72 8 +192 216 104 +136 176 64 +136 32 48 +232 232 248 +112 88 80 +200 176 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/staraptor/overworld.png b/graphics/pokemon/staraptor/overworld.png new file mode 100644 index 000000000000..a6f9360ac2a7 Binary files /dev/null and b/graphics/pokemon/staraptor/overworld.png differ diff --git a/graphics/pokemon/staraptor/overworld_normal.pal b/graphics/pokemon/staraptor/overworld_normal.pal new file mode 100644 index 000000000000..5ae0c8e448a3 --- /dev/null +++ b/graphics/pokemon/staraptor/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 32 32 +72 72 72 +104 96 96 +224 48 32 +144 128 128 +56 56 56 +104 16 24 +200 200 200 +216 216 216 +248 168 32 +232 232 248 +144 144 144 +192 112 0 +72 64 64 diff --git a/graphics/pokemon/staraptor/overworld_shiny.pal b/graphics/pokemon/staraptor/overworld_shiny.pal new file mode 100644 index 000000000000..a00b91bace14 --- /dev/null +++ b/graphics/pokemon/staraptor/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +48 32 16 +96 72 64 +136 80 80 +112 112 136 +176 120 96 +88 56 48 +40 40 48 +200 200 200 +216 216 216 +248 168 32 +232 232 248 +144 144 144 +192 112 0 +96 56 56 diff --git a/graphics/pokemon/staravia/overworld.png b/graphics/pokemon/staravia/overworld.png new file mode 100644 index 000000000000..f49d10581932 Binary files /dev/null and b/graphics/pokemon/staravia/overworld.png differ diff --git a/graphics/pokemon/staravia/overworld_normal.pal b/graphics/pokemon/staravia/overworld_normal.pal new file mode 100644 index 000000000000..aa6b58e4dc95 --- /dev/null +++ b/graphics/pokemon/staravia/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 32 +64 64 64 +120 120 120 +88 88 88 +168 152 128 +0 0 0 +192 184 152 +192 112 0 +248 168 32 +184 184 176 +232 232 248 +224 216 208 +144 128 104 +208 200 200 +0 0 0 diff --git a/graphics/pokemon/staravia/overworld_shiny.pal b/graphics/pokemon/staravia/overworld_shiny.pal new file mode 100644 index 000000000000..a1dc57f1a39c --- /dev/null +++ b/graphics/pokemon/staravia/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 32 +120 72 64 +160 128 120 +136 96 88 +200 160 136 +0 0 0 +216 184 160 +224 152 0 +248 200 32 +184 184 176 +232 232 248 +224 216 208 +176 136 120 +208 200 200 +0 0 0 diff --git a/graphics/pokemon/starly/overworld.png b/graphics/pokemon/starly/overworld.png new file mode 100644 index 000000000000..9ed2c45c54a0 Binary files /dev/null and b/graphics/pokemon/starly/overworld.png differ diff --git a/graphics/pokemon/starly/overworld_normal.pal b/graphics/pokemon/starly/overworld_normal.pal new file mode 100644 index 000000000000..babbecc6b37e --- /dev/null +++ b/graphics/pokemon/starly/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +104 104 104 +72 72 72 +0 0 0 +184 184 184 +216 216 216 +192 112 0 +248 168 32 +96 96 88 +232 232 248 +80 64 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/starly/overworld_shiny.pal b/graphics/pokemon/starly/overworld_shiny.pal new file mode 100644 index 000000000000..a586e4936190 --- /dev/null +++ b/graphics/pokemon/starly/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +152 120 104 +120 96 72 +0 0 0 +184 184 184 +216 216 216 +192 136 0 +248 200 32 +128 120 88 +232 232 248 +112 88 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/starmie/overworld.png b/graphics/pokemon/starmie/overworld.png new file mode 100644 index 000000000000..b1098f1f7ac1 Binary files /dev/null and b/graphics/pokemon/starmie/overworld.png differ diff --git a/graphics/pokemon/starmie/overworld_normal.pal b/graphics/pokemon/starmie/overworld_normal.pal new file mode 100644 index 000000000000..b14064097e9d --- /dev/null +++ b/graphics/pokemon/starmie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 64 +136 112 232 +88 88 192 +64 64 112 +0 0 0 +232 176 32 +56 48 16 +104 24 24 +184 40 40 +176 144 24 +240 88 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/starmie/overworld_shiny.pal b/graphics/pokemon/starmie/overworld_shiny.pal new file mode 100644 index 000000000000..17a3770e10d1 --- /dev/null +++ b/graphics/pokemon/starmie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 64 +120 184 224 +80 144 240 +72 104 184 +0 0 0 +232 160 176 +80 32 64 +32 80 112 +56 120 176 +176 104 144 +80 168 240 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/staryu/overworld.png b/graphics/pokemon/staryu/overworld.png new file mode 100644 index 000000000000..d9a7d5c0cf42 Binary files /dev/null and b/graphics/pokemon/staryu/overworld.png differ diff --git a/graphics/pokemon/staryu/overworld_normal.pal b/graphics/pokemon/staryu/overworld_normal.pal new file mode 100644 index 000000000000..b87941ed3033 --- /dev/null +++ b/graphics/pokemon/staryu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 48 16 +0 0 0 +168 120 32 +120 80 8 +232 176 32 +184 40 40 +176 144 24 +224 96 72 +104 24 24 +88 72 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/staryu/overworld_shiny.pal b/graphics/pokemon/staryu/overworld_shiny.pal new file mode 100644 index 000000000000..a954fc80ce64 --- /dev/null +++ b/graphics/pokemon/staryu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 32 +0 0 0 +192 192 192 +144 144 144 +232 176 32 +32 112 152 +176 144 24 +72 168 200 +0 56 104 +112 112 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/steelix/overworld.png b/graphics/pokemon/steelix/overworld.png new file mode 100644 index 000000000000..1a0ff067983d Binary files /dev/null and b/graphics/pokemon/steelix/overworld.png differ diff --git a/graphics/pokemon/steelix/overworld_normal.pal b/graphics/pokemon/steelix/overworld_normal.pal new file mode 100644 index 000000000000..e951d3e46ef6 --- /dev/null +++ b/graphics/pokemon/steelix/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 80 +128 152 168 +88 120 144 +0 0 0 +160 184 200 +192 208 224 +232 232 248 +192 56 56 +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/steelix/overworld_shiny.pal b/graphics/pokemon/steelix/overworld_shiny.pal new file mode 100644 index 000000000000..ca3b5dd5ba0f --- /dev/null +++ b/graphics/pokemon/steelix/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 56 +200 160 104 +144 120 88 +0 0 0 +224 184 136 +224 208 160 +232 232 248 +192 56 56 +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/steenee/overworld.png b/graphics/pokemon/steenee/overworld.png new file mode 100644 index 000000000000..5b45ce5bcc31 Binary files /dev/null and b/graphics/pokemon/steenee/overworld.png differ diff --git a/graphics/pokemon/steenee/overworld_normal.pal b/graphics/pokemon/steenee/overworld_normal.pal new file mode 100644 index 000000000000..394284708767 --- /dev/null +++ b/graphics/pokemon/steenee/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 230 245 +232 230 96 +166 232 136 +149 197 110 +133 189 88 +155 151 178 +224 134 142 +94 144 56 +75 111 46 +88 74 94 +172 57 106 +45 63 32 +124 41 77 +0 0 0 +248 248 248 diff --git a/graphics/pokemon/steenee/overworld_shiny.pal b/graphics/pokemon/steenee/overworld_shiny.pal new file mode 100644 index 000000000000..0cb6bb975017 --- /dev/null +++ b/graphics/pokemon/steenee/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +208 200 136 +230 96 232 +232 168 240 +200 112 208 +189 88 165 +155 151 178 +224 134 142 +128 64 160 +152 0 224 +88 74 94 +172 57 106 +45 63 32 +124 41 77 +0 0 0 +248 240 200 diff --git a/graphics/pokemon/stonjourner/overworld.png b/graphics/pokemon/stonjourner/overworld.png new file mode 100644 index 000000000000..b509c9b6de2c Binary files /dev/null and b/graphics/pokemon/stonjourner/overworld.png differ diff --git a/graphics/pokemon/stonjourner/overworld_normal.pal b/graphics/pokemon/stonjourner/overworld_normal.pal new file mode 100644 index 000000000000..d62b57cad403 --- /dev/null +++ b/graphics/pokemon/stonjourner/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 74 65 +24 24 24 +180 180 164 +106 98 98 +65 74 74 +82 65 41 +49 49 49 +98 106 98 +115 82 41 +131 131 123 +246 246 189 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stonjourner/overworld_shiny.pal b/graphics/pokemon/stonjourner/overworld_shiny.pal new file mode 100644 index 000000000000..e489d9a1b5d0 --- /dev/null +++ b/graphics/pokemon/stonjourner/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 57 57 +24 24 24 +115 123 106 +57 57 49 +115 115 115 +82 65 41 +49 49 49 +172 180 172 +115 82 41 +82 82 74 +246 246 189 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stoutland/overworld.png b/graphics/pokemon/stoutland/overworld.png new file mode 100644 index 000000000000..f2e49bdd8327 Binary files /dev/null and b/graphics/pokemon/stoutland/overworld.png differ diff --git a/graphics/pokemon/stoutland/overworld_normal.pal b/graphics/pokemon/stoutland/overworld_normal.pal new file mode 100644 index 000000000000..1fdbfe3d85b6 --- /dev/null +++ b/graphics/pokemon/stoutland/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 72 24 +0 0 0 +54 54 78 +232 200 144 +144 88 64 +96 96 140 +216 144 88 +176 136 72 +72 72 104 +88 88 88 +192 192 192 +232 232 248 +120 144 152 +248 248 248 +0 0 0 diff --git a/graphics/pokemon/stoutland/overworld_shiny.pal b/graphics/pokemon/stoutland/overworld_shiny.pal new file mode 100644 index 000000000000..9720869b140f --- /dev/null +++ b/graphics/pokemon/stoutland/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +99 75 33 +0 0 0 +32 48 40 +240 184 64 +144 88 64 +48 80 64 +176 112 56 +176 136 72 +32 48 40 +102 94 95 +193 183 184 +193 183 184 +193 183 184 +193 183 184 +0 0 0 diff --git a/graphics/pokemon/stufful/overworld.png b/graphics/pokemon/stufful/overworld.png new file mode 100644 index 000000000000..ad57e8e63028 Binary files /dev/null and b/graphics/pokemon/stufful/overworld.png differ diff --git a/graphics/pokemon/stufful/overworld_normal.pal b/graphics/pokemon/stufful/overworld_normal.pal new file mode 100644 index 000000000000..ca377b1ee996 --- /dev/null +++ b/graphics/pokemon/stufful/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +245 245 245 +235 221 226 +205 205 205 +237 158 190 +189 155 167 +240 149 172 +238 122 152 +120 91 102 +222 58 99 +162 82 101 +92 73 79 +82 42 49 +57 54 54 +45 33 33 +0 0 0 diff --git a/graphics/pokemon/stufful/overworld_shiny.pal b/graphics/pokemon/stufful/overworld_shiny.pal new file mode 100644 index 000000000000..b057009d110d --- /dev/null +++ b/graphics/pokemon/stufful/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +245 245 245 +235 221 226 +205 205 205 +248 192 72 +189 155 167 +160 80 8 +200 144 40 +120 91 102 +200 64 8 +162 82 101 +92 73 79 +82 42 49 +57 54 54 +45 33 33 +0 0 0 diff --git a/graphics/pokemon/stunfisk/galarian/overworld.png b/graphics/pokemon/stunfisk/galarian/overworld.png new file mode 100644 index 000000000000..1e72ba6a4dfc Binary files /dev/null and b/graphics/pokemon/stunfisk/galarian/overworld.png differ diff --git a/graphics/pokemon/stunfisk/galarian/overworld_normal.pal b/graphics/pokemon/stunfisk/galarian/overworld_normal.pal new file mode 100644 index 000000000000..9070fb58ea90 --- /dev/null +++ b/graphics/pokemon/stunfisk/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 58 58 +29 32 27 +59 64 56 +95 102 90 +142 172 96 +157 146 133 +205 246 140 +255 255 255 +0 0 0 +119 108 95 +111 59 50 +199 199 199 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/stunfisk/galarian/overworld_shiny.pal b/graphics/pokemon/stunfisk/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..9070fb58ea90 --- /dev/null +++ b/graphics/pokemon/stunfisk/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 58 58 +29 32 27 +59 64 56 +95 102 90 +142 172 96 +157 146 133 +205 246 140 +255 255 255 +0 0 0 +119 108 95 +111 59 50 +199 199 199 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/stunfisk/overworld.png b/graphics/pokemon/stunfisk/overworld.png new file mode 100644 index 000000000000..b9f2201c9547 Binary files /dev/null and b/graphics/pokemon/stunfisk/overworld.png differ diff --git a/graphics/pokemon/stunfisk/overworld_normal.pal b/graphics/pokemon/stunfisk/overworld_normal.pal new file mode 100644 index 000000000000..d4a0040aa3ba --- /dev/null +++ b/graphics/pokemon/stunfisk/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +93 93 33 +106 63 54 +245 245 1 +201 201 1 +198 136 125 +149 95 83 +240 183 173 +0 0 0 +255 237 236 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stunfisk/overworld_shiny.pal b/graphics/pokemon/stunfisk/overworld_shiny.pal new file mode 100644 index 000000000000..eb886eb8b98a --- /dev/null +++ b/graphics/pokemon/stunfisk/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 104 152 +80 64 56 +64 200 232 +40 152 192 +184 152 104 +160 128 64 +208 176 128 +0 0 0 +255 237 236 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stunky/overworld.png b/graphics/pokemon/stunky/overworld.png new file mode 100644 index 000000000000..b6c7c2b7a537 Binary files /dev/null and b/graphics/pokemon/stunky/overworld.png differ diff --git a/graphics/pokemon/stunky/overworld_normal.pal b/graphics/pokemon/stunky/overworld_normal.pal new file mode 100644 index 000000000000..1484043595a1 --- /dev/null +++ b/graphics/pokemon/stunky/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 40 64 +88 64 96 +88 80 48 +48 48 48 +232 216 144 +184 168 112 +136 80 136 +0 0 0 +184 80 56 +216 136 104 +112 112 112 +232 232 248 +184 184 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/stunky/overworld_shiny.pal b/graphics/pokemon/stunky/overworld_shiny.pal new file mode 100644 index 000000000000..1623f89d8504 --- /dev/null +++ b/graphics/pokemon/stunky/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 0 40 +152 24 64 +88 80 48 +48 48 48 +232 216 144 +184 168 112 +208 64 104 +0 0 0 +184 80 56 +216 136 104 +112 112 112 +232 232 248 +184 184 200 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sudowoodo/overworld.png b/graphics/pokemon/sudowoodo/overworld.png new file mode 100644 index 000000000000..58dceaf06728 Binary files /dev/null and b/graphics/pokemon/sudowoodo/overworld.png differ diff --git a/graphics/pokemon/sudowoodo/overworld_normal.pal b/graphics/pokemon/sudowoodo/overworld_normal.pal new file mode 100644 index 000000000000..068f66d77275 --- /dev/null +++ b/graphics/pokemon/sudowoodo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 64 16 +0 0 0 +128 104 64 +184 152 88 +160 128 88 +24 80 16 +120 208 120 +72 152 64 +232 232 248 +224 120 120 +224 192 0 +200 168 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sudowoodo/overworld_shiny.pal b/graphics/pokemon/sudowoodo/overworld_shiny.pal new file mode 100644 index 000000000000..688e5b7769fa --- /dev/null +++ b/graphics/pokemon/sudowoodo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +88 64 16 +0 0 0 +136 120 40 +200 192 88 +168 160 64 +112 32 8 +224 144 72 +168 56 40 +232 232 248 +224 120 120 +224 192 0 +200 168 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/suicune/overworld.png b/graphics/pokemon/suicune/overworld.png new file mode 100644 index 000000000000..8c7070c238a4 Binary files /dev/null and b/graphics/pokemon/suicune/overworld.png differ diff --git a/graphics/pokemon/suicune/overworld_normal.pal b/graphics/pokemon/suicune/overworld_normal.pal new file mode 100644 index 000000000000..2cb612185f54 --- /dev/null +++ b/graphics/pokemon/suicune/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 32 96 +160 96 176 +24 56 88 +0 0 0 +96 200 192 +48 152 136 +112 56 136 +232 232 248 +48 96 136 +80 80 96 +184 200 200 +184 48 48 +96 152 192 +128 152 152 +0 0 0 diff --git a/graphics/pokemon/suicune/overworld_shiny.pal b/graphics/pokemon/suicune/overworld_shiny.pal new file mode 100644 index 000000000000..cd3ee9091d52 --- /dev/null +++ b/graphics/pokemon/suicune/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 40 64 +96 160 216 +24 96 152 +0 0 0 +120 224 216 +56 200 176 +8 88 152 +232 232 248 +48 112 176 +80 80 96 +184 200 200 +184 48 48 +144 200 232 +128 152 152 +0 0 0 diff --git a/graphics/pokemon/sunflora/overworld.png b/graphics/pokemon/sunflora/overworld.png new file mode 100644 index 000000000000..2870eb32a202 Binary files /dev/null and b/graphics/pokemon/sunflora/overworld.png differ diff --git a/graphics/pokemon/sunflora/overworld_normal.pal b/graphics/pokemon/sunflora/overworld_normal.pal new file mode 100644 index 000000000000..15ecb4f27630 --- /dev/null +++ b/graphics/pokemon/sunflora/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +128 72 0 +224 160 40 +224 184 16 +240 224 112 +232 192 32 +200 128 32 +40 80 16 +88 184 80 +120 208 112 +64 136 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sunflora/overworld_shiny.pal b/graphics/pokemon/sunflora/overworld_shiny.pal new file mode 100644 index 000000000000..8a3f67ad50c9 --- /dev/null +++ b/graphics/pokemon/sunflora/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +56 96 0 +168 176 0 +208 200 32 +248 248 136 +248 232 88 +200 152 32 +56 64 16 +128 136 64 +168 176 96 +88 104 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sunkern/overworld.png b/graphics/pokemon/sunkern/overworld.png new file mode 100644 index 000000000000..7482251893ce Binary files /dev/null and b/graphics/pokemon/sunkern/overworld.png differ diff --git a/graphics/pokemon/sunkern/overworld_normal.pal b/graphics/pokemon/sunkern/overworld_normal.pal new file mode 100644 index 000000000000..85a9e8187132 --- /dev/null +++ b/graphics/pokemon/sunkern/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +40 80 16 +0 0 0 +112 192 80 +104 160 56 +88 64 0 +216 184 48 +240 216 112 +152 104 8 +72 96 112 +32 48 56 +232 232 248 +184 136 8 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sunkern/overworld_shiny.pal b/graphics/pokemon/sunkern/overworld_shiny.pal new file mode 100644 index 000000000000..8256fa6706bd --- /dev/null +++ b/graphics/pokemon/sunkern/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 64 16 +0 0 0 +176 192 80 +152 160 56 +112 48 0 +232 184 56 +248 208 128 +176 96 8 +72 96 112 +32 48 56 +232 232 248 +216 136 8 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/surskit/overworld.png b/graphics/pokemon/surskit/overworld.png new file mode 100644 index 000000000000..f5a5ebf13acc Binary files /dev/null and b/graphics/pokemon/surskit/overworld.png differ diff --git a/graphics/pokemon/surskit/overworld_normal.pal b/graphics/pokemon/surskit/overworld_normal.pal new file mode 100644 index 000000000000..b7935fcc2f05 --- /dev/null +++ b/graphics/pokemon/surskit/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 16 +0 0 0 +224 208 72 +184 168 48 +144 120 32 +40 72 96 +96 144 184 +32 40 56 +72 104 136 +120 176 224 +232 232 248 +192 56 56 +144 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/surskit/overworld_shiny.pal b/graphics/pokemon/surskit/overworld_shiny.pal new file mode 100644 index 000000000000..e39c9ca8e40c --- /dev/null +++ b/graphics/pokemon/surskit/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 80 16 +0 0 0 +224 208 72 +184 168 48 +144 120 32 +48 64 128 +72 88 136 +32 40 56 +56 72 136 +104 120 152 +232 232 248 +192 56 56 +144 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swablu/overworld.png b/graphics/pokemon/swablu/overworld.png new file mode 100644 index 000000000000..cc22fadd58f0 Binary files /dev/null and b/graphics/pokemon/swablu/overworld.png differ diff --git a/graphics/pokemon/swablu/overworld_normal.pal b/graphics/pokemon/swablu/overworld_normal.pal new file mode 100644 index 000000000000..3bc8edb828fa --- /dev/null +++ b/graphics/pokemon/swablu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 80 120 +112 176 208 +64 112 152 +112 128 144 +0 0 0 +248 248 248 +168 176 192 +88 144 176 +72 80 104 +224 224 232 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swablu/overworld_shiny.pal b/graphics/pokemon/swablu/overworld_shiny.pal new file mode 100644 index 000000000000..e018450c6ada --- /dev/null +++ b/graphics/pokemon/swablu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 80 40 +248 216 120 +152 120 64 +112 128 144 +0 0 0 +248 248 248 +168 176 192 +208 152 48 +72 80 104 +224 224 232 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swadloon/overworld.png b/graphics/pokemon/swadloon/overworld.png new file mode 100644 index 000000000000..50d6ccc7894d Binary files /dev/null and b/graphics/pokemon/swadloon/overworld.png differ diff --git a/graphics/pokemon/swadloon/overworld_normal.pal b/graphics/pokemon/swadloon/overworld_normal.pal new file mode 100644 index 000000000000..3ac446432253 --- /dev/null +++ b/graphics/pokemon/swadloon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 112 72 +0 0 0 +144 200 8 +88 152 48 +176 160 40 +248 232 56 +184 184 168 +252 252 252 +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/swadloon/overworld_shiny.pal b/graphics/pokemon/swadloon/overworld_shiny.pal new file mode 100644 index 000000000000..899ee15b310f --- /dev/null +++ b/graphics/pokemon/swadloon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 8 +0 0 0 +176 208 0 +120 152 8 +160 152 136 +248 248 248 +184 184 168 +248 152 128 +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/swalot/overworld.png b/graphics/pokemon/swalot/overworld.png new file mode 100644 index 000000000000..0d0850d8aedc Binary files /dev/null and b/graphics/pokemon/swalot/overworld.png differ diff --git a/graphics/pokemon/swalot/overworld_normal.pal b/graphics/pokemon/swalot/overworld_normal.pal new file mode 100644 index 000000000000..f454bbdaaf7c --- /dev/null +++ b/graphics/pokemon/swalot/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 40 96 +160 128 192 +184 144 216 +0 0 0 +136 104 160 +120 88 144 +96 72 120 +216 104 104 +160 24 24 +168 128 56 +232 184 64 +56 72 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swalot/overworld_shiny.pal b/graphics/pokemon/swalot/overworld_shiny.pal new file mode 100644 index 000000000000..18fa37e4c56c --- /dev/null +++ b/graphics/pokemon/swalot/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 80 96 +144 200 232 +184 208 240 +0 0 0 +120 168 200 +104 144 168 +80 112 128 +216 104 104 +160 24 24 +224 112 56 +248 168 88 +56 72 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swampert/overworld.png b/graphics/pokemon/swampert/overworld.png new file mode 100644 index 000000000000..70415f47d334 Binary files /dev/null and b/graphics/pokemon/swampert/overworld.png differ diff --git a/graphics/pokemon/swampert/overworld_normal.pal b/graphics/pokemon/swampert/overworld_normal.pal new file mode 100644 index 000000000000..6daae155622c --- /dev/null +++ b/graphics/pokemon/swampert/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 64 72 +0 0 0 +160 160 192 +88 104 128 +48 72 112 +96 160 208 +128 184 240 +160 72 16 +248 192 128 +240 128 16 +88 120 160 +192 88 16 +48 56 80 +200 200 224 +0 0 0 diff --git a/graphics/pokemon/swampert/overworld_shiny.pal b/graphics/pokemon/swampert/overworld_shiny.pal new file mode 100644 index 000000000000..85a7d57f6e04 --- /dev/null +++ b/graphics/pokemon/swampert/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 72 +0 0 0 +184 160 192 +112 104 128 +88 64 112 +184 144 208 +216 168 240 +184 48 16 +248 192 128 +248 112 16 +144 112 160 +216 72 16 +48 56 80 +216 200 224 +0 0 0 diff --git a/graphics/pokemon/swanna/overworld.png b/graphics/pokemon/swanna/overworld.png new file mode 100644 index 000000000000..cd958e2e25b8 Binary files /dev/null and b/graphics/pokemon/swanna/overworld.png differ diff --git a/graphics/pokemon/swanna/overworld_normal.pal b/graphics/pokemon/swanna/overworld_normal.pal new file mode 100644 index 000000000000..1daee94ad2d5 --- /dev/null +++ b/graphics/pokemon/swanna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +180 197 213 +49 49 82 +238 240 246 +229 229 247 +51 51 51 +64 64 84 +76 109 158 +156 160 124 +165 205 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swanna/overworld_shiny.pal b/graphics/pokemon/swanna/overworld_shiny.pal new file mode 100644 index 000000000000..56d7661880e3 --- /dev/null +++ b/graphics/pokemon/swanna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +200 184 224 +49 49 82 +238 240 246 +229 229 247 +51 51 51 +64 64 84 +77 64 156 +64 64 84 +180 141 165 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swellow/overworld.png b/graphics/pokemon/swellow/overworld.png new file mode 100644 index 000000000000..06c500273119 Binary files /dev/null and b/graphics/pokemon/swellow/overworld.png differ diff --git a/graphics/pokemon/swellow/overworld_normal.pal b/graphics/pokemon/swellow/overworld_normal.pal new file mode 100644 index 000000000000..eefe0950b8a6 --- /dev/null +++ b/graphics/pokemon/swellow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 48 72 +104 32 64 +0 0 0 +48 72 112 +104 136 192 +72 104 152 +176 64 80 +208 208 232 +216 80 88 +184 184 192 +88 80 16 +224 208 72 +232 232 248 +64 64 64 +152 136 40 diff --git a/graphics/pokemon/swellow/overworld_shiny.pal b/graphics/pokemon/swellow/overworld_shiny.pal new file mode 100644 index 000000000000..d1b1e053948a --- /dev/null +++ b/graphics/pokemon/swellow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 72 72 +144 64 32 +0 0 0 +40 112 96 +88 192 144 +64 152 120 +192 96 48 +208 208 232 +240 136 64 +184 184 192 +104 80 16 +224 208 72 +232 232 248 +64 64 64 +168 144 40 diff --git a/graphics/pokemon/swinub/overworld.png b/graphics/pokemon/swinub/overworld.png new file mode 100644 index 000000000000..60bad0ef6118 Binary files /dev/null and b/graphics/pokemon/swinub/overworld.png differ diff --git a/graphics/pokemon/swinub/overworld_normal.pal b/graphics/pokemon/swinub/overworld_normal.pal new file mode 100644 index 000000000000..e5b76b22ba78 --- /dev/null +++ b/graphics/pokemon/swinub/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 40 8 +168 128 72 +112 88 80 +184 152 104 +144 96 56 +144 40 64 +200 96 112 +232 136 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swinub/overworld_shiny.pal b/graphics/pokemon/swinub/overworld_shiny.pal new file mode 100644 index 000000000000..fa2d2fec7181 --- /dev/null +++ b/graphics/pokemon/swinub/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +0 0 0 +40 88 48 +120 144 128 +72 104 80 +144 168 152 +96 136 104 +144 40 64 +200 96 112 +232 136 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swirlix/overworld.png b/graphics/pokemon/swirlix/overworld.png new file mode 100644 index 000000000000..640367b737e9 Binary files /dev/null and b/graphics/pokemon/swirlix/overworld.png differ diff --git a/graphics/pokemon/swirlix/overworld_normal.pal b/graphics/pokemon/swirlix/overworld_normal.pal new file mode 100644 index 000000000000..2e81ff484abc --- /dev/null +++ b/graphics/pokemon/swirlix/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +81 59 71 +16 16 16 +230 238 248 +198 149 156 +183 161 182 +165 59 64 +195 81 97 +0 0 0 +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/swirlix/overworld_shiny.pal b/graphics/pokemon/swirlix/overworld_shiny.pal new file mode 100644 index 000000000000..b7f64e0106a8 --- /dev/null +++ b/graphics/pokemon/swirlix/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +108 75 58 +16 16 16 +245 228 185 +147 111 93 +211 188 142 +165 59 64 +147 111 93 +0 0 0 +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/swoobat/overworld.png b/graphics/pokemon/swoobat/overworld.png new file mode 100644 index 000000000000..ad665f834665 Binary files /dev/null and b/graphics/pokemon/swoobat/overworld.png differ diff --git a/graphics/pokemon/swoobat/overworld_normal.pal b/graphics/pokemon/swoobat/overworld_normal.pal new file mode 100644 index 000000000000..3b15128f7045 --- /dev/null +++ b/graphics/pokemon/swoobat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +104 48 152 +16 56 64 +24 160 200 +48 120 144 +0 0 0 +168 216 240 +112 168 192 +29 29 29 +64 72 88 +192 104 120 +232 232 248 +136 72 80 +240 168 176 +184 184 192 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/swoobat/overworld_shiny.pal b/graphics/pokemon/swoobat/overworld_shiny.pal new file mode 100644 index 000000000000..84b110886f8a --- /dev/null +++ b/graphics/pokemon/swoobat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +104 48 152 +72 32 0 +248 192 48 +232 144 16 +1 1 1 +198 217 180 +198 217 180 +72 32 0 +96 48 16 +167 89 102 +198 217 180 +167 89 102 +198 217 180 +198 217 180 +1 1 1 +0 0 0 diff --git a/graphics/pokemon/sylveon/overworld.png b/graphics/pokemon/sylveon/overworld.png new file mode 100644 index 000000000000..514d3df20737 Binary files /dev/null and b/graphics/pokemon/sylveon/overworld.png differ diff --git a/graphics/pokemon/sylveon/overworld_normal.pal b/graphics/pokemon/sylveon/overworld_normal.pal new file mode 100644 index 000000000000..c280882366a1 --- /dev/null +++ b/graphics/pokemon/sylveon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +16 16 16 +238 116 159 +107 29 56 +193 67 111 +68 54 70 +74 180 244 +237 241 227 +12 111 216 +197 180 200 +109 188 235 +109 161 235 +112 24 34 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/sylveon/overworld_shiny.pal b/graphics/pokemon/sylveon/overworld_shiny.pal new file mode 100644 index 000000000000..e8487fd5a2be --- /dev/null +++ b/graphics/pokemon/sylveon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +144 200 152 +16 16 16 +103 191 244 +21 85 124 +40 130 185 +68 54 70 +238 116 159 +237 241 227 +193 67 111 +197 180 200 +238 116 159 +193 67 111 +6 42 84 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/taillow/overworld.png b/graphics/pokemon/taillow/overworld.png new file mode 100644 index 000000000000..c6ee696ace2b Binary files /dev/null and b/graphics/pokemon/taillow/overworld.png differ diff --git a/graphics/pokemon/taillow/overworld_normal.pal b/graphics/pokemon/taillow/overworld_normal.pal new file mode 100644 index 000000000000..9a576c9f8f19 --- /dev/null +++ b/graphics/pokemon/taillow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 48 72 +104 136 192 +72 104 152 +48 72 112 +240 104 104 +0 0 0 +144 48 80 +232 232 248 +192 72 88 +168 168 176 +224 208 72 +168 144 40 +64 64 64 +120 120 128 +104 80 16 diff --git a/graphics/pokemon/taillow/overworld_shiny.pal b/graphics/pokemon/taillow/overworld_shiny.pal new file mode 100644 index 000000000000..b7e2aaa47dca --- /dev/null +++ b/graphics/pokemon/taillow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 72 72 +88 192 144 +64 152 120 +40 112 96 +240 136 64 +0 0 0 +144 64 32 +232 232 248 +192 96 48 +168 168 176 +224 208 72 +168 144 40 +64 64 64 +120 120 128 +104 80 16 diff --git a/graphics/pokemon/talonflame/overworld.png b/graphics/pokemon/talonflame/overworld.png new file mode 100644 index 000000000000..43760d9e8512 Binary files /dev/null and b/graphics/pokemon/talonflame/overworld.png differ diff --git a/graphics/pokemon/talonflame/overworld_normal.pal b/graphics/pokemon/talonflame/overworld_normal.pal new file mode 100644 index 000000000000..6573ab204dd6 --- /dev/null +++ b/graphics/pokemon/talonflame/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +154 154 154 +112 103 96 +58 56 57 +190 189 187 +136 36 20 +248 127 100 +229 76 47 +156 80 68 +235 178 25 +252 224 99 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/talonflame/overworld_shiny.pal b/graphics/pokemon/talonflame/overworld_shiny.pal new file mode 100644 index 000000000000..dce07a26afd1 --- /dev/null +++ b/graphics/pokemon/talonflame/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 184 168 +16 16 16 +160 128 93 +131 31 32 +93 16 16 +207 167 126 +136 36 20 +254 97 85 +226 71 59 +156 80 68 +235 178 25 +252 224 99 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tangela/overworld.png b/graphics/pokemon/tangela/overworld.png new file mode 100644 index 000000000000..d2105e408941 Binary files /dev/null and b/graphics/pokemon/tangela/overworld.png differ diff --git a/graphics/pokemon/tangela/overworld_normal.pal b/graphics/pokemon/tangela/overworld_normal.pal new file mode 100644 index 000000000000..6c3d79edc511 --- /dev/null +++ b/graphics/pokemon/tangela/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 32 32 +104 160 168 +72 136 144 +0 0 0 +88 112 112 +64 64 64 +120 144 176 +232 232 248 +168 184 208 +160 48 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tangela/overworld_shiny.pal b/graphics/pokemon/tangela/overworld_shiny.pal new file mode 100644 index 000000000000..fddc5dd45f91 --- /dev/null +++ b/graphics/pokemon/tangela/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 32 32 +96 184 104 +56 136 56 +0 0 0 +80 96 80 +64 64 64 +120 144 176 +232 232 248 +168 184 208 +160 48 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tangrowth/overworld.png b/graphics/pokemon/tangrowth/overworld.png new file mode 100644 index 000000000000..2f1537c6cfdb Binary files /dev/null and b/graphics/pokemon/tangrowth/overworld.png differ diff --git a/graphics/pokemon/tangrowth/overworld_normal.pal b/graphics/pokemon/tangrowth/overworld_normal.pal new file mode 100644 index 000000000000..b239c0d30bd6 --- /dev/null +++ b/graphics/pokemon/tangrowth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +24 32 48 +56 136 200 +56 104 152 +0 0 0 +48 80 112 +40 64 88 +232 232 248 +168 184 208 +120 120 120 +200 64 112 +128 48 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tangrowth/overworld_shiny.pal b/graphics/pokemon/tangrowth/overworld_shiny.pal new file mode 100644 index 000000000000..79de84534b40 --- /dev/null +++ b/graphics/pokemon/tangrowth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +24 48 40 +96 200 104 +72 160 88 +0 0 0 +64 120 72 +32 112 56 +232 232 248 +168 184 208 +120 120 120 +216 64 88 +144 40 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_bulu/overworld.png b/graphics/pokemon/tapu_bulu/overworld.png new file mode 100644 index 000000000000..0f0cf0239a10 Binary files /dev/null and b/graphics/pokemon/tapu_bulu/overworld.png differ diff --git a/graphics/pokemon/tapu_bulu/overworld_normal.pal b/graphics/pokemon/tapu_bulu/overworld_normal.pal new file mode 100644 index 000000000000..0803e39c46be --- /dev/null +++ b/graphics/pokemon/tapu_bulu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +218 210 86 +185 162 27 +145 144 142 +50 185 171 +133 99 99 +79 88 78 +97 81 81 +108 85 18 +255 63 55 +181 48 61 +67 54 54 +121 29 28 +45 34 34 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_bulu/overworld_shiny.pal b/graphics/pokemon/tapu_bulu/overworld_shiny.pal new file mode 100644 index 000000000000..266b5af5fdc0 --- /dev/null +++ b/graphics/pokemon/tapu_bulu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 216 72 +192 168 16 +145 144 142 +50 185 171 +133 99 99 +79 88 78 +97 81 81 +108 85 18 +64 64 72 +40 40 48 +67 54 54 +32 40 32 +45 34 34 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_fini/overworld.png b/graphics/pokemon/tapu_fini/overworld.png new file mode 100644 index 000000000000..21de74c49823 Binary files /dev/null and b/graphics/pokemon/tapu_fini/overworld.png differ diff --git a/graphics/pokemon/tapu_fini/overworld_normal.pal b/graphics/pokemon/tapu_fini/overworld_normal.pal new file mode 100644 index 000000000000..afb189f124bd --- /dev/null +++ b/graphics/pokemon/tapu_fini/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +206 206 206 +147 193 252 +112 196 230 +94 128 187 +126 87 198 +85 85 85 +87 61 131 +36 63 111 +55 55 55 +43 30 67 +53 29 70 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_fini/overworld_shiny.pal b/graphics/pokemon/tapu_fini/overworld_shiny.pal new file mode 100644 index 000000000000..e2b7ce64abee --- /dev/null +++ b/graphics/pokemon/tapu_fini/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +206 206 206 +168 216 248 +112 196 230 +104 160 200 +64 64 72 +85 85 85 +40 40 48 +36 63 111 +55 55 55 +43 30 67 +53 29 70 +16 16 16 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_koko/overworld.png b/graphics/pokemon/tapu_koko/overworld.png new file mode 100644 index 000000000000..17eb51eb6d60 Binary files /dev/null and b/graphics/pokemon/tapu_koko/overworld.png differ diff --git a/graphics/pokemon/tapu_koko/overworld_normal.pal b/graphics/pokemon/tapu_koko/overworld_normal.pal new file mode 100644 index 000000000000..3f879409b71a --- /dev/null +++ b/graphics/pokemon/tapu_koko/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +247 218 64 +208 208 208 +217 189 38 +189 163 21 +208 128 56 +46 179 185 +97 97 97 +173 96 10 +184 88 16 +112 80 24 +66 38 3 +52 52 52 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_koko/overworld_shiny.pal b/graphics/pokemon/tapu_koko/overworld_shiny.pal new file mode 100644 index 000000000000..220447d668d0 --- /dev/null +++ b/graphics/pokemon/tapu_koko/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +64 64 72 +208 208 208 +40 40 48 +40 40 48 +240 160 72 +46 179 185 +97 97 97 +173 96 10 +200 112 24 +112 80 24 +66 38 3 +52 52 52 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_lele/overworld.png b/graphics/pokemon/tapu_lele/overworld.png new file mode 100644 index 000000000000..eed688ac674f Binary files /dev/null and b/graphics/pokemon/tapu_lele/overworld.png differ diff --git a/graphics/pokemon/tapu_lele/overworld_normal.pal b/graphics/pokemon/tapu_lele/overworld_normal.pal new file mode 100644 index 000000000000..72a35e8e681e --- /dev/null +++ b/graphics/pokemon/tapu_lele/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +253 255 255 +255 147 191 +183 183 182 +59 219 203 +255 113 131 +203 99 142 +225 74 98 +89 92 89 +137 41 56 +103 46 70 +64 47 53 +63 63 58 +36 33 28 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tapu_lele/overworld_shiny.pal b/graphics/pokemon/tapu_lele/overworld_shiny.pal new file mode 100644 index 000000000000..1a9ff7f3f73a --- /dev/null +++ b/graphics/pokemon/tapu_lele/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +253 255 255 +64 64 72 +183 183 182 +59 219 203 +255 113 131 +40 40 48 +225 74 98 +89 92 89 +137 41 56 +103 46 70 +64 47 53 +63 63 58 +36 33 28 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tauros/overworld.png b/graphics/pokemon/tauros/overworld.png new file mode 100644 index 000000000000..589016e044b5 Binary files /dev/null and b/graphics/pokemon/tauros/overworld.png differ diff --git a/graphics/pokemon/tauros/overworld_normal.pal b/graphics/pokemon/tauros/overworld_normal.pal new file mode 100644 index 000000000000..9068909bcbbe --- /dev/null +++ b/graphics/pokemon/tauros/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 32 16 +0 0 0 +200 152 64 +112 128 168 +152 120 72 +192 192 208 +80 80 104 +144 144 144 +104 96 88 +224 168 72 +72 64 64 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tauros/overworld_shiny.pal b/graphics/pokemon/tauros/overworld_shiny.pal new file mode 100644 index 000000000000..93c18b805fa0 --- /dev/null +++ b/graphics/pokemon/tauros/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 32 16 +0 0 0 +240 168 32 +112 128 168 +200 120 40 +192 192 208 +80 80 104 +144 144 144 +104 200 48 +248 208 64 +64 152 56 +232 232 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/front.ase b/graphics/pokemon/tauros/paldean_blaze_breed/front.ase deleted file mode 100644 index f0e555005184..000000000000 Binary files a/graphics/pokemon/tauros/paldean_blaze_breed/front.ase and /dev/null differ diff --git a/graphics/pokemon/teddiursa/overworld.png b/graphics/pokemon/teddiursa/overworld.png new file mode 100644 index 000000000000..1246941c742f Binary files /dev/null and b/graphics/pokemon/teddiursa/overworld.png differ diff --git a/graphics/pokemon/teddiursa/overworld_normal.pal b/graphics/pokemon/teddiursa/overworld_normal.pal new file mode 100644 index 000000000000..e80627f613be --- /dev/null +++ b/graphics/pokemon/teddiursa/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 16 +0 0 0 +232 160 56 +152 96 32 +200 120 32 +88 72 64 +240 224 192 +216 200 136 +232 232 248 +224 200 96 +176 184 192 +200 208 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/teddiursa/overworld_shiny.pal b/graphics/pokemon/teddiursa/overworld_shiny.pal new file mode 100644 index 000000000000..3a2c814db428 --- /dev/null +++ b/graphics/pokemon/teddiursa/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 72 56 +0 0 0 +144 208 144 +88 144 96 +112 176 120 +88 72 64 +240 224 192 +240 208 152 +232 232 248 +240 184 112 +176 184 192 +200 208 224 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tentacool/overworld.png b/graphics/pokemon/tentacool/overworld.png new file mode 100644 index 000000000000..4c626599f1bc Binary files /dev/null and b/graphics/pokemon/tentacool/overworld.png differ diff --git a/graphics/pokemon/tentacool/overworld_normal.pal b/graphics/pokemon/tentacool/overworld_normal.pal new file mode 100644 index 000000000000..f9f57b53462a --- /dev/null +++ b/graphics/pokemon/tentacool/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 72 96 +72 8 40 +72 144 160 +120 192 240 +0 0 0 +144 24 88 +232 232 248 +248 160 160 +40 104 120 +224 48 96 +64 64 64 +208 208 208 +64 48 40 +176 120 72 +208 168 96 diff --git a/graphics/pokemon/tentacool/overworld_shiny.pal b/graphics/pokemon/tentacool/overworld_shiny.pal new file mode 100644 index 000000000000..7f2681d5e7be --- /dev/null +++ b/graphics/pokemon/tentacool/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 48 104 +8 48 64 +160 128 176 +200 168 216 +0 0 0 +40 120 88 +232 232 248 +112 200 160 +120 88 144 +40 168 120 +64 64 64 +208 208 208 +64 48 40 +176 120 72 +208 168 96 diff --git a/graphics/pokemon/tentacruel/overworld.png b/graphics/pokemon/tentacruel/overworld.png new file mode 100644 index 000000000000..fa10e84a2d43 Binary files /dev/null and b/graphics/pokemon/tentacruel/overworld.png differ diff --git a/graphics/pokemon/tentacruel/overworld_normal.pal b/graphics/pokemon/tentacruel/overworld_normal.pal new file mode 100644 index 000000000000..653e3ecd8a94 --- /dev/null +++ b/graphics/pokemon/tentacruel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 72 96 +0 0 0 +120 192 240 +72 8 40 +80 152 168 +144 24 88 +248 160 160 +232 232 248 +224 48 96 +40 104 120 +64 64 64 +168 168 168 +152 120 88 +184 160 120 +0 0 0 diff --git a/graphics/pokemon/tentacruel/overworld_shiny.pal b/graphics/pokemon/tentacruel/overworld_shiny.pal new file mode 100644 index 000000000000..671f4748c544 --- /dev/null +++ b/graphics/pokemon/tentacruel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +48 64 104 +0 0 0 +184 192 216 +8 48 64 +136 152 176 +40 120 88 +112 200 160 +232 232 248 +40 168 120 +88 104 144 +64 64 64 +168 168 168 +152 120 88 +184 160 120 +0 0 0 diff --git a/graphics/pokemon/tepig/overworld.png b/graphics/pokemon/tepig/overworld.png new file mode 100644 index 000000000000..b600bd7e74fb Binary files /dev/null and b/graphics/pokemon/tepig/overworld.png differ diff --git a/graphics/pokemon/tepig/overworld_normal.pal b/graphics/pokemon/tepig/overworld_normal.pal new file mode 100644 index 000000000000..2ee7f03d2a4a --- /dev/null +++ b/graphics/pokemon/tepig/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 37 38 +0 0 0 +115 86 77 +80 60 53 +80 60 53 +208 96 0 +241 134 56 +248 192 0 +241 134 56 +201 67 66 +232 232 248 +115 86 77 +201 67 66 +200 200 200 +96 64 32 diff --git a/graphics/pokemon/tepig/overworld_shiny.pal b/graphics/pokemon/tepig/overworld_shiny.pal new file mode 100644 index 000000000000..ffcbe32219e7 --- /dev/null +++ b/graphics/pokemon/tepig/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 37 38 +0 0 0 +112 56 48 +64 24 24 +80 60 53 +184 152 48 +232 200 48 +248 208 112 +224 136 168 +224 80 128 +232 232 248 +115 86 77 +201 67 66 +200 200 200 +96 64 32 diff --git a/graphics/pokemon/terrakion/overworld.png b/graphics/pokemon/terrakion/overworld.png new file mode 100644 index 000000000000..e83ffe596a2e Binary files /dev/null and b/graphics/pokemon/terrakion/overworld.png differ diff --git a/graphics/pokemon/terrakion/overworld_normal.pal b/graphics/pokemon/terrakion/overworld_normal.pal new file mode 100644 index 000000000000..0008b2125911 --- /dev/null +++ b/graphics/pokemon/terrakion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 16 +73 48 40 +139 102 49 +144 136 115 +113 72 45 +194 184 173 +109 75 80 +76 105 86 +224 96 0 +238 238 247 +237 195 133 +104 14 5 +177 138 76 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/terrakion/overworld_shiny.pal b/graphics/pokemon/terrakion/overworld_shiny.pal new file mode 100644 index 000000000000..da27436c9ab5 --- /dev/null +++ b/graphics/pokemon/terrakion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 16 +62 62 62 +168 24 16 +136 120 80 +110 24 24 +184 160 112 +84 79 79 +84 79 79 +16 168 152 +237 198 142 +237 198 142 +110 24 24 +176 137 76 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/thievul/overworld.png b/graphics/pokemon/thievul/overworld.png new file mode 100644 index 000000000000..c83530247159 Binary files /dev/null and b/graphics/pokemon/thievul/overworld.png differ diff --git a/graphics/pokemon/thievul/overworld_normal.pal b/graphics/pokemon/thievul/overworld_normal.pal new file mode 100644 index 000000000000..764d23bb6039 --- /dev/null +++ b/graphics/pokemon/thievul/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +238 255 0 +8 8 7 +52 51 48 +0 0 0 +121 53 31 +21 20 18 +185 90 59 +36 14 7 +255 255 255 +210 184 61 +92 92 92 +176 176 176 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/thievul/overworld_shiny.pal b/graphics/pokemon/thievul/overworld_shiny.pal new file mode 100644 index 000000000000..6584b3d19efb --- /dev/null +++ b/graphics/pokemon/thievul/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +238 255 0 +8 8 0 +8 41 115 +0 0 0 +115 106 98 +0 16 74 +164 148 139 +24 24 24 +255 255 255 +213 189 57 +90 90 90 +180 180 180 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/throh/overworld.png b/graphics/pokemon/throh/overworld.png new file mode 100644 index 000000000000..dabd0d8ebadc Binary files /dev/null and b/graphics/pokemon/throh/overworld.png differ diff --git a/graphics/pokemon/throh/overworld_normal.pal b/graphics/pokemon/throh/overworld_normal.pal new file mode 100644 index 000000000000..61eb7658596b --- /dev/null +++ b/graphics/pokemon/throh/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +87 18 18 +87 18 18 +152 208 160 +0 0 0 +218 79 79 +164 40 40 +47 47 47 +236 227 208 +138 129 121 +11 11 11 +33 33 33 +191 182 164 +191 182 164 +229 229 247 +39 39 39 diff --git a/graphics/pokemon/throh/overworld_shiny.pal b/graphics/pokemon/throh/overworld_shiny.pal new file mode 100644 index 000000000000..7ac46dcbda28 --- /dev/null +++ b/graphics/pokemon/throh/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +87 18 18 +96 48 24 +33 33 25 +0 0 0 +232 112 40 +160 80 32 +47 47 47 +216 232 208 +120 128 104 +11 11 11 +33 33 33 +184 200 168 +191 182 164 +229 229 247 +39 39 39 diff --git a/graphics/pokemon/thundurus/overworld.png b/graphics/pokemon/thundurus/overworld.png new file mode 100644 index 000000000000..ffe39c24ddfb Binary files /dev/null and b/graphics/pokemon/thundurus/overworld.png differ diff --git a/graphics/pokemon/thundurus/overworld_normal.pal b/graphics/pokemon/thundurus/overworld_normal.pal new file mode 100644 index 000000000000..438462057539 --- /dev/null +++ b/graphics/pokemon/thundurus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +77 77 99 +237 237 246 +44 43 44 +198 198 210 +22 38 14 +145 97 201 +164 140 247 +19 82 87 +96 185 218 +78 156 180 +107 192 222 +95 135 105 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/thundurus/overworld_shiny.pal b/graphics/pokemon/thundurus/overworld_shiny.pal new file mode 100644 index 000000000000..064aa3a5cc85 --- /dev/null +++ b/graphics/pokemon/thundurus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +77 77 99 +237 237 246 +44 43 44 +198 198 210 +22 38 14 +144 32 176 +164 140 247 +24 40 72 +128 152 200 +72 96 136 +17 79 81 +186 173 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/thwackey/overworld.png b/graphics/pokemon/thwackey/overworld.png new file mode 100644 index 000000000000..d3f043eea23e Binary files /dev/null and b/graphics/pokemon/thwackey/overworld.png differ diff --git a/graphics/pokemon/thwackey/overworld_normal.pal b/graphics/pokemon/thwackey/overworld_normal.pal new file mode 100644 index 000000000000..9c84244e1e66 --- /dev/null +++ b/graphics/pokemon/thwackey/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 4 200 +48 32 16 +0 44 36 +72 56 32 +96 92 36 +128 84 44 +160 48 4 +156 104 56 +220 96 48 +8 132 100 +180 188 52 +236 212 48 +232 240 100 +0 0 0 +236 232 156 +252 252 252 diff --git a/graphics/pokemon/thwackey/overworld_shiny.pal b/graphics/pokemon/thwackey/overworld_shiny.pal new file mode 100644 index 000000000000..69b42e9b9729 --- /dev/null +++ b/graphics/pokemon/thwackey/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 16 8 +41 65 0 +74 32 49 +98 57 74 +115 82 8 +164 49 0 +156 106 57 +230 90 41 +106 148 0 +213 180 41 +238 213 49 +246 213 74 +0 0 0 +238 238 156 +255 255 255 diff --git a/graphics/pokemon/timburr/overworld.png b/graphics/pokemon/timburr/overworld.png new file mode 100644 index 000000000000..4cdec74ce592 Binary files /dev/null and b/graphics/pokemon/timburr/overworld.png differ diff --git a/graphics/pokemon/timburr/overworld_normal.pal b/graphics/pokemon/timburr/overworld_normal.pal new file mode 100644 index 000000000000..48c26d4786c0 --- /dev/null +++ b/graphics/pokemon/timburr/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +79 63 63 +191 182 164 +0 0 0 +147 129 121 +11 11 11 +121 40 55 +191 79 104 +236 112 129 +95 47 40 +229 229 247 +138 87 79 +79 47 5 +164 104 5 +112 71 5 +218 172 87 diff --git a/graphics/pokemon/timburr/overworld_shiny.pal b/graphics/pokemon/timburr/overworld_shiny.pal new file mode 100644 index 000000000000..d3ac821ecb4e --- /dev/null +++ b/graphics/pokemon/timburr/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 61 60 +208 192 128 +2 2 2 +175 151 96 +2 2 2 +186 71 45 +186 71 45 +236 112 129 +80 61 60 +213 210 213 +186 71 45 +79 47 5 +186 71 45 +112 71 5 +218 172 87 diff --git a/graphics/pokemon/tirtouga/overworld.png b/graphics/pokemon/tirtouga/overworld.png new file mode 100644 index 000000000000..57315cbad0eb Binary files /dev/null and b/graphics/pokemon/tirtouga/overworld.png differ diff --git a/graphics/pokemon/tirtouga/overworld_normal.pal b/graphics/pokemon/tirtouga/overworld_normal.pal new file mode 100644 index 000000000000..7fa5924fd99a --- /dev/null +++ b/graphics/pokemon/tirtouga/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +33 82 115 +49 115 173 +74 156 222 +54 54 54 +85 85 117 +69 69 94 +49 57 74 +69 69 94 +184 219 255 +85 85 117 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tirtouga/overworld_shiny.pal b/graphics/pokemon/tirtouga/overworld_shiny.pal new file mode 100644 index 000000000000..c2affd78a902 --- /dev/null +++ b/graphics/pokemon/tirtouga/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +24 144 104 +56 176 152 +96 200 184 +48 40 56 +104 96 112 +80 72 88 +49 57 74 +69 69 94 +184 219 255 +85 85 117 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/togedemaru/overworld.png b/graphics/pokemon/togedemaru/overworld.png new file mode 100644 index 000000000000..547586318fa9 Binary files /dev/null and b/graphics/pokemon/togedemaru/overworld.png differ diff --git a/graphics/pokemon/togedemaru/overworld_normal.pal b/graphics/pokemon/togedemaru/overworld_normal.pal new file mode 100644 index 000000000000..7ec7ff095e33 --- /dev/null +++ b/graphics/pokemon/togedemaru/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +248 208 80 +202 202 202 +216 200 192 +200 160 64 +155 155 155 +160 144 136 +110 107 112 +116 94 63 +112 80 56 +85 82 86 +64 64 80 +80 56 24 +48 48 48 +0 0 0 diff --git a/graphics/pokemon/togedemaru/overworld_shiny.pal b/graphics/pokemon/togedemaru/overworld_shiny.pal new file mode 100644 index 000000000000..70c4f082df3e --- /dev/null +++ b/graphics/pokemon/togedemaru/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +248 208 80 +240 192 176 +216 200 192 +200 160 64 +208 144 136 +160 144 136 +110 107 112 +116 94 63 +112 80 56 +85 82 86 +184 80 80 +80 56 24 +48 48 48 +0 0 0 diff --git a/graphics/pokemon/togekiss/overworld.png b/graphics/pokemon/togekiss/overworld.png new file mode 100644 index 000000000000..0808c0f9bba4 Binary files /dev/null and b/graphics/pokemon/togekiss/overworld.png differ diff --git a/graphics/pokemon/togekiss/overworld_normal.pal b/graphics/pokemon/togekiss/overworld_normal.pal new file mode 100644 index 000000000000..aea23c134313 --- /dev/null +++ b/graphics/pokemon/togekiss/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +232 232 248 +104 120 128 +64 64 64 +168 184 208 +40 168 248 +232 64 72 +144 152 176 +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/togekiss/overworld_shiny.pal b/graphics/pokemon/togekiss/overworld_shiny.pal new file mode 100644 index 000000000000..a318b5fba1bd --- /dev/null +++ b/graphics/pokemon/togekiss/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 0 0 +232 232 184 +128 120 80 +64 64 48 +184 184 136 +232 64 72 +40 168 248 +160 152 112 +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/togepi/overworld.png b/graphics/pokemon/togepi/overworld.png new file mode 100644 index 000000000000..ff0af9c3196b Binary files /dev/null and b/graphics/pokemon/togepi/overworld.png differ diff --git a/graphics/pokemon/togepi/overworld_normal.pal b/graphics/pokemon/togepi/overworld_normal.pal new file mode 100644 index 000000000000..41d5f871d87f --- /dev/null +++ b/graphics/pokemon/togepi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 40 +232 216 88 +112 96 48 +192 176 72 +152 136 72 +248 232 144 +232 232 248 +80 80 80 +0 0 0 +152 152 144 +96 168 224 +232 120 144 +216 208 208 +120 200 240 +216 80 88 diff --git a/graphics/pokemon/togepi/overworld_shiny.pal b/graphics/pokemon/togepi/overworld_shiny.pal new file mode 100644 index 000000000000..fce4f14abe27 --- /dev/null +++ b/graphics/pokemon/togepi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 40 +232 200 104 +136 80 64 +200 168 88 +168 128 72 +248 224 144 +232 232 248 +64 64 64 +0 0 0 +152 152 144 +216 80 88 +120 200 240 +216 208 208 +232 120 144 +96 168 224 diff --git a/graphics/pokemon/togetic/overworld.png b/graphics/pokemon/togetic/overworld.png new file mode 100644 index 000000000000..b380b7aa2f16 Binary files /dev/null and b/graphics/pokemon/togetic/overworld.png differ diff --git a/graphics/pokemon/togetic/overworld_normal.pal b/graphics/pokemon/togetic/overworld_normal.pal new file mode 100644 index 000000000000..4dd85b5f6f0c --- /dev/null +++ b/graphics/pokemon/togetic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +160 176 216 +40 48 88 +232 232 248 +128 144 144 +0 0 0 +216 80 88 +96 168 224 +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/togetic/overworld_shiny.pal b/graphics/pokemon/togetic/overworld_shiny.pal new file mode 100644 index 000000000000..f56fce08dbec --- /dev/null +++ b/graphics/pokemon/togetic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 24 16 +200 152 152 +96 32 32 +232 232 248 +144 104 96 +0 0 0 +96 168 224 +216 80 88 +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/torchic/overworld.png b/graphics/pokemon/torchic/overworld.png new file mode 100644 index 000000000000..5513342c36fb Binary files /dev/null and b/graphics/pokemon/torchic/overworld.png differ diff --git a/graphics/pokemon/torchic/overworld_normal.pal b/graphics/pokemon/torchic/overworld_normal.pal new file mode 100644 index 000000000000..3fd0cd45f491 --- /dev/null +++ b/graphics/pokemon/torchic/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 208 224 +120 80 16 +248 208 96 +160 144 80 +232 168 16 +0 0 0 +240 128 16 +208 96 0 +248 208 96 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torchic/overworld_shiny.pal b/graphics/pokemon/torchic/overworld_shiny.pal new file mode 100644 index 000000000000..41312ee0f967 --- /dev/null +++ b/graphics/pokemon/torchic/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 208 224 +120 80 16 +240 128 16 +208 96 0 +216 120 0 +0 0 0 +248 208 96 +200 168 48 +248 208 152 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torkoal/overworld.png b/graphics/pokemon/torkoal/overworld.png new file mode 100644 index 000000000000..1a94282109c6 Binary files /dev/null and b/graphics/pokemon/torkoal/overworld.png differ diff --git a/graphics/pokemon/torkoal/overworld_normal.pal b/graphics/pokemon/torkoal/overworld_normal.pal new file mode 100644 index 000000000000..da80304f0fa7 --- /dev/null +++ b/graphics/pokemon/torkoal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 40 +144 96 56 +208 136 80 +16 16 16 +48 56 64 +184 112 64 +120 128 128 +88 96 104 +136 32 48 +208 56 80 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torkoal/overworld_shiny.pal b/graphics/pokemon/torkoal/overworld_shiny.pal new file mode 100644 index 000000000000..9f53fcb6048c --- /dev/null +++ b/graphics/pokemon/torkoal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 40 +144 128 56 +208 176 80 +16 16 16 +64 40 40 +176 152 64 +152 88 48 +112 64 48 +136 32 48 +208 56 80 +184 184 184 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tornadus/overworld.png b/graphics/pokemon/tornadus/overworld.png new file mode 100644 index 000000000000..00117c968376 Binary files /dev/null and b/graphics/pokemon/tornadus/overworld.png differ diff --git a/graphics/pokemon/tornadus/overworld_normal.pal b/graphics/pokemon/tornadus/overworld_normal.pal new file mode 100644 index 000000000000..6f28efc38158 --- /dev/null +++ b/graphics/pokemon/tornadus/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +81 81 82 +218 218 229 +22 37 14 +216 203 66 +140 124 69 +108 55 149 +128 72 168 +38 37 38 +89 223 46 +215 106 214 +63 168 40 +73 164 46 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tornadus/overworld_shiny.pal b/graphics/pokemon/tornadus/overworld_shiny.pal new file mode 100644 index 000000000000..93eba0fc6c11 --- /dev/null +++ b/graphics/pokemon/tornadus/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +38 37 38 +198 198 210 +22 37 14 +213 164 75 +186 116 43 +38 37 38 +72 64 119 +57 80 55 +104 160 24 +72 64 119 +71 144 42 +71 144 42 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torracat/overworld.png b/graphics/pokemon/torracat/overworld.png new file mode 100644 index 000000000000..63a3d1e1605e Binary files /dev/null and b/graphics/pokemon/torracat/overworld.png differ diff --git a/graphics/pokemon/torracat/overworld_normal.pal b/graphics/pokemon/torracat/overworld_normal.pal new file mode 100644 index 000000000000..0f8a9bc5eb3c --- /dev/null +++ b/graphics/pokemon/torracat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 104 +226 223 222 +157 152 152 +255 144 60 +255 110 50 +87 79 79 +255 59 36 +62 60 60 +116 41 34 +35 33 33 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torracat/overworld_shiny.pal b/graphics/pokemon/torracat/overworld_shiny.pal new file mode 100644 index 000000000000..044c4928f767 --- /dev/null +++ b/graphics/pokemon/torracat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 240 8 +226 223 222 +157 152 152 +255 144 60 +240 104 48 +248 248 248 +184 48 32 +200 184 184 +116 41 34 +35 33 33 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/torterra/overworld.png b/graphics/pokemon/torterra/overworld.png new file mode 100644 index 000000000000..76d591256391 Binary files /dev/null and b/graphics/pokemon/torterra/overworld.png differ diff --git a/graphics/pokemon/torterra/overworld_normal.pal b/graphics/pokemon/torterra/overworld_normal.pal new file mode 100644 index 000000000000..d7ac5f7d31a3 --- /dev/null +++ b/graphics/pokemon/torterra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 96 40 +104 208 64 +64 176 80 +0 0 0 +48 48 48 +88 88 88 +208 208 216 +152 152 152 +88 184 64 +64 152 88 +120 96 48 +160 120 64 +80 64 48 +120 0 16 +232 232 248 diff --git a/graphics/pokemon/torterra/overworld_shiny.pal b/graphics/pokemon/torterra/overworld_shiny.pal new file mode 100644 index 000000000000..da952f699f56 --- /dev/null +++ b/graphics/pokemon/torterra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 80 80 +160 192 88 +112 160 72 +0 0 0 +48 48 48 +88 88 88 +208 208 216 +152 152 152 +160 192 88 +112 160 72 +112 120 48 +160 160 64 +80 88 48 +120 0 16 +232 232 248 diff --git a/graphics/pokemon/totodile/overworld.png b/graphics/pokemon/totodile/overworld.png new file mode 100644 index 000000000000..d9f0f5b9f11f Binary files /dev/null and b/graphics/pokemon/totodile/overworld.png differ diff --git a/graphics/pokemon/totodile/overworld_normal.pal b/graphics/pokemon/totodile/overworld_normal.pal new file mode 100644 index 000000000000..376cdeb3b17d --- /dev/null +++ b/graphics/pokemon/totodile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 152 184 +0 0 0 +40 56 96 +208 48 72 +80 128 184 +64 96 136 +112 176 232 +168 184 208 +232 232 248 +160 32 56 +112 24 40 +64 72 80 +168 152 80 +120 104 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/totodile/overworld_shiny.pal b/graphics/pokemon/totodile/overworld_shiny.pal new file mode 100644 index 000000000000..b9f448df6d0d --- /dev/null +++ b/graphics/pokemon/totodile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 152 184 +0 0 0 +24 80 88 +16 120 248 +40 152 184 +48 120 128 +80 200 184 +168 184 208 +232 232 248 +32 96 224 +16 56 136 +64 72 80 +168 152 80 +120 104 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toucannon/overworld.png b/graphics/pokemon/toucannon/overworld.png new file mode 100644 index 000000000000..bc174957b3b0 Binary files /dev/null and b/graphics/pokemon/toucannon/overworld.png differ diff --git a/graphics/pokemon/toucannon/overworld_normal.pal b/graphics/pokemon/toucannon/overworld_normal.pal new file mode 100644 index 000000000000..8123d4fa8d77 --- /dev/null +++ b/graphics/pokemon/toucannon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +229 215 99 +235 188 77 +158 158 158 +226 132 70 +75 148 191 +99 99 99 +218 78 64 +66 66 66 +97 41 35 +52 52 52 +37 37 37 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toucannon/overworld_shiny.pal b/graphics/pokemon/toucannon/overworld_shiny.pal new file mode 100644 index 000000000000..d96b38e2611f --- /dev/null +++ b/graphics/pokemon/toucannon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +88 120 200 +64 64 168 +200 208 104 +160 72 184 +49 131 145 +80 88 80 +224 32 104 +48 56 48 +97 41 35 +52 52 52 +37 37 37 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxapex/overworld.png b/graphics/pokemon/toxapex/overworld.png new file mode 100644 index 000000000000..2f8a61a72d14 Binary files /dev/null and b/graphics/pokemon/toxapex/overworld.png differ diff --git a/graphics/pokemon/toxapex/overworld_normal.pal b/graphics/pokemon/toxapex/overworld_normal.pal new file mode 100644 index 000000000000..d095be50db49 --- /dev/null +++ b/graphics/pokemon/toxapex/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +217 210 97 +130 187 204 +79 158 72 +93 130 165 +234 129 66 +190 93 193 +183 113 79 +128 128 128 +118 72 111 +91 75 131 +113 62 37 +68 48 65 +53 62 85 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/toxapex/overworld_shiny.pal b/graphics/pokemon/toxapex/overworld_shiny.pal new file mode 100644 index 000000000000..a7aa04de738f --- /dev/null +++ b/graphics/pokemon/toxapex/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +217 210 97 +208 112 136 +79 158 72 +184 64 88 +234 129 66 +144 56 56 +183 113 79 +128 128 128 +118 72 111 +48 72 80 +113 62 37 +152 64 112 +53 62 85 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/toxel/overworld.png b/graphics/pokemon/toxel/overworld.png new file mode 100644 index 000000000000..bfc91d819780 Binary files /dev/null and b/graphics/pokemon/toxel/overworld.png differ diff --git a/graphics/pokemon/toxel/overworld_normal.pal b/graphics/pokemon/toxel/overworld_normal.pal new file mode 100644 index 000000000000..43b6ce52bd2e --- /dev/null +++ b/graphics/pokemon/toxel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 20 +52 40 56 +88 88 88 +152 120 164 +24 12 32 +252 252 252 +116 84 128 +0 0 0 +156 92 188 +192 188 188 +104 52 128 +96 96 140 +248 248 248 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxel/overworld_shiny.pal b/graphics/pokemon/toxel/overworld_shiny.pal new file mode 100644 index 000000000000..ab75d21ddafa --- /dev/null +++ b/graphics/pokemon/toxel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 0 20 +49 41 57 +90 90 90 +156 123 164 +41 16 24 +255 255 255 +115 82 131 +0 0 0 +197 90 131 +197 189 189 +148 57 90 +98 98 139 +255 255 255 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxicroak/overworld.png b/graphics/pokemon/toxicroak/overworld.png new file mode 100644 index 000000000000..18191db95ebd Binary files /dev/null and b/graphics/pokemon/toxicroak/overworld.png differ diff --git a/graphics/pokemon/toxicroak/overworld_normal.pal b/graphics/pokemon/toxicroak/overworld_normal.pal new file mode 100644 index 000000000000..a4fce05b8c3d --- /dev/null +++ b/graphics/pokemon/toxicroak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 128 208 +40 40 72 +48 96 192 +56 80 168 +48 48 48 +248 216 56 +168 48 56 +216 160 0 +216 88 64 +112 24 32 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxicroak/overworld_shiny.pal b/graphics/pokemon/toxicroak/overworld_shiny.pal new file mode 100644 index 000000000000..797fc220a9e1 --- /dev/null +++ b/graphics/pokemon/toxicroak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 200 168 +40 56 56 +72 152 128 +48 128 96 +48 48 48 +248 216 56 +168 32 120 +216 160 0 +248 112 144 +112 24 72 +128 128 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxtricity/low_key/overworld.png b/graphics/pokemon/toxtricity/low_key/overworld.png new file mode 100644 index 000000000000..2701d7c8b129 Binary files /dev/null and b/graphics/pokemon/toxtricity/low_key/overworld.png differ diff --git a/graphics/pokemon/toxtricity/low_key/overworld_normal.pal b/graphics/pokemon/toxtricity/low_key/overworld_normal.pal new file mode 100644 index 000000000000..4ffcb8ad61dd --- /dev/null +++ b/graphics/pokemon/toxtricity/low_key/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +33 46 49 +0 0 0 +162 205 214 +26 14 32 +114 150 158 +152 83 187 +97 51 119 +255 255 255 +132 98 147 +167 141 178 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/toxtricity/low_key/overworld_shiny.pal b/graphics/pokemon/toxtricity/low_key/overworld_shiny.pal new file mode 100644 index 000000000000..4ffcb8ad61dd --- /dev/null +++ b/graphics/pokemon/toxtricity/low_key/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 128 128 +33 46 49 +0 0 0 +162 205 214 +26 14 32 +114 150 158 +152 83 187 +97 51 119 +255 255 255 +132 98 147 +167 141 178 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/toxtricity/overworld.png b/graphics/pokemon/toxtricity/overworld.png new file mode 100644 index 000000000000..286a9d72a237 Binary files /dev/null and b/graphics/pokemon/toxtricity/overworld.png differ diff --git a/graphics/pokemon/toxtricity/overworld_normal.pal b/graphics/pokemon/toxtricity/overworld_normal.pal new file mode 100644 index 000000000000..180675299875 --- /dev/null +++ b/graphics/pokemon/toxtricity/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 21 +55 52 3 +239 226 53 +181 170 28 +0 0 0 +26 14 32 +97 51 119 +152 83 187 +255 255 255 +132 98 147 +167 141 178 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toxtricity/overworld_shiny.pal b/graphics/pokemon/toxtricity/overworld_shiny.pal new file mode 100644 index 000000000000..1726f67467ff --- /dev/null +++ b/graphics/pokemon/toxtricity/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 21 +49 49 0 +238 230 49 +180 172 24 +0 0 0 +41 8 24 +156 57 90 +189 82 115 +255 255 255 +131 98 148 +164 139 180 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tranquill/overworld.png b/graphics/pokemon/tranquill/overworld.png new file mode 100644 index 000000000000..8ce1d6fcceb4 Binary files /dev/null and b/graphics/pokemon/tranquill/overworld.png differ diff --git a/graphics/pokemon/tranquill/overworld_normal.pal b/graphics/pokemon/tranquill/overworld_normal.pal new file mode 100644 index 000000000000..718a5bffae3c --- /dev/null +++ b/graphics/pokemon/tranquill/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +43 43 42 +76 76 76 +0 0 0 +151 151 151 +212 212 213 +232 49 98 +126 101 54 +224 176 38 +117 117 117 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tranquill/overworld_shiny.pal b/graphics/pokemon/tranquill/overworld_shiny.pal new file mode 100644 index 000000000000..0436c808546f --- /dev/null +++ b/graphics/pokemon/tranquill/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 64 48 +72 128 72 +0 0 0 +49 45 41 +112 168 112 +184 248 184 +96 79 92 +201 144 119 +217 217 233 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trapinch/overworld.png b/graphics/pokemon/trapinch/overworld.png new file mode 100644 index 000000000000..f42dd92999e8 Binary files /dev/null and b/graphics/pokemon/trapinch/overworld.png differ diff --git a/graphics/pokemon/trapinch/overworld_normal.pal b/graphics/pokemon/trapinch/overworld_normal.pal new file mode 100644 index 000000000000..e9cda1118b01 --- /dev/null +++ b/graphics/pokemon/trapinch/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 48 48 +16 16 16 +224 152 112 +168 88 72 +200 120 80 +40 40 40 +248 248 248 +120 120 120 +104 104 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trapinch/overworld_shiny.pal b/graphics/pokemon/trapinch/overworld_shiny.pal new file mode 100644 index 000000000000..6e8291cb15c2 --- /dev/null +++ b/graphics/pokemon/trapinch/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 80 +16 16 16 +168 168 168 +120 120 120 +136 136 136 +40 40 40 +248 248 248 +120 120 120 +104 104 104 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/treecko/overworld.png b/graphics/pokemon/treecko/overworld.png new file mode 100644 index 000000000000..1a9fe685d61a Binary files /dev/null and b/graphics/pokemon/treecko/overworld.png differ diff --git a/graphics/pokemon/treecko/overworld_normal.pal b/graphics/pokemon/treecko/overworld_normal.pal new file mode 100644 index 000000000000..965da8b10738 --- /dev/null +++ b/graphics/pokemon/treecko/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +48 72 24 +0 0 0 +200 216 120 +152 168 32 +248 216 88 +8 56 48 +64 104 40 +48 88 56 +184 48 48 +56 136 104 +104 24 24 +144 32 32 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/treecko/overworld_shiny.pal b/graphics/pokemon/treecko/overworld_shiny.pal new file mode 100644 index 000000000000..276d3cb26da3 --- /dev/null +++ b/graphics/pokemon/treecko/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +168 224 24 +24 64 56 +0 0 0 +184 232 216 +128 176 160 +248 216 88 +104 24 24 +72 120 112 +160 56 32 +224 192 128 +200 80 48 +160 112 40 +192 152 80 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trevenant/overworld.png b/graphics/pokemon/trevenant/overworld.png new file mode 100644 index 000000000000..709921cac6ea Binary files /dev/null and b/graphics/pokemon/trevenant/overworld.png differ diff --git a/graphics/pokemon/trevenant/overworld_normal.pal b/graphics/pokemon/trevenant/overworld_normal.pal new file mode 100644 index 000000000000..d493a61e9555 --- /dev/null +++ b/graphics/pokemon/trevenant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 89 50 +61 40 23 +39 28 20 +178 138 92 +185 145 97 +14 48 20 +120 86 62 +56 128 44 +16 16 16 +221 45 48 +255 89 93 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trevenant/overworld_shiny.pal b/graphics/pokemon/trevenant/overworld_shiny.pal new file mode 100644 index 000000000000..001c88041a4e --- /dev/null +++ b/graphics/pokemon/trevenant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +159 55 45 +99 100 99 +55 56 55 +187 187 186 +237 238 236 +64 22 18 +148 148 147 +215 81 66 +16 16 16 +130 102 172 +161 136 199 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tropius/overworld.png b/graphics/pokemon/tropius/overworld.png new file mode 100644 index 000000000000..cd3dba6f8f14 Binary files /dev/null and b/graphics/pokemon/tropius/overworld.png differ diff --git a/graphics/pokemon/tropius/overworld_normal.pal b/graphics/pokemon/tropius/overworld_normal.pal new file mode 100644 index 000000000000..0c28452dae51 --- /dev/null +++ b/graphics/pokemon/tropius/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 56 32 +128 184 96 +0 0 0 +64 144 72 +40 104 56 +120 96 72 +160 120 80 +64 48 0 +160 160 160 +232 232 248 +208 168 24 +184 120 8 +248 208 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tropius/overworld_shiny.pal b/graphics/pokemon/tropius/overworld_shiny.pal new file mode 100644 index 000000000000..f2b86d603942 --- /dev/null +++ b/graphics/pokemon/tropius/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 56 32 +192 216 72 +0 0 0 +160 192 56 +80 96 32 +184 120 8 +208 168 24 +120 72 8 +160 160 160 +232 232 248 +208 168 24 +184 120 8 +248 208 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trubbish/overworld.png b/graphics/pokemon/trubbish/overworld.png new file mode 100644 index 000000000000..fb6f19e452c0 Binary files /dev/null and b/graphics/pokemon/trubbish/overworld.png differ diff --git a/graphics/pokemon/trubbish/overworld_normal.pal b/graphics/pokemon/trubbish/overworld_normal.pal new file mode 100644 index 000000000000..0fc884893428 --- /dev/null +++ b/graphics/pokemon/trubbish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +176 176 176 +16 49 32 +0 0 0 +41 106 74 +74 139 106 +24 74 49 +82 74 57 +164 139 115 +220 220 220 +115 98 82 +189 49 123 +0 139 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trubbish/overworld_shiny.pal b/graphics/pokemon/trubbish/overworld_shiny.pal new file mode 100644 index 000000000000..18b7620e2bb0 --- /dev/null +++ b/graphics/pokemon/trubbish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +176 176 176 +16 24 48 +0 0 0 +40 72 104 +72 104 136 +16 40 72 +82 74 57 +152 160 112 +220 220 220 +104 112 80 +8 144 80 +168 184 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trumbeak/overworld.png b/graphics/pokemon/trumbeak/overworld.png new file mode 100644 index 000000000000..8062560d9157 Binary files /dev/null and b/graphics/pokemon/trumbeak/overworld.png differ diff --git a/graphics/pokemon/trumbeak/overworld_normal.pal b/graphics/pokemon/trumbeak/overworld_normal.pal new file mode 100644 index 000000000000..9cdd4dc7dab6 --- /dev/null +++ b/graphics/pokemon/trumbeak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +219 141 57 +146 146 146 +72 171 224 +72 113 146 +104 104 105 +95 93 93 +210 63 60 +122 75 50 +64 63 64 +62 62 62 +53 52 51 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/trumbeak/overworld_shiny.pal b/graphics/pokemon/trumbeak/overworld_shiny.pal new file mode 100644 index 000000000000..061ba8e60ffb --- /dev/null +++ b/graphics/pokemon/trumbeak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +213 213 213 +160 80 176 +146 146 146 +72 171 224 +88 192 224 +104 104 105 +80 96 80 +240 56 136 +122 75 50 +56 64 48 +62 62 62 +53 52 51 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tsareena/overworld.png b/graphics/pokemon/tsareena/overworld.png new file mode 100644 index 000000000000..0f7f8724e130 Binary files /dev/null and b/graphics/pokemon/tsareena/overworld.png differ diff --git a/graphics/pokemon/tsareena/overworld_normal.pal b/graphics/pokemon/tsareena/overworld_normal.pal new file mode 100644 index 000000000000..262496ab5709 --- /dev/null +++ b/graphics/pokemon/tsareena/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 241 241 +232 230 95 +159 211 116 +197 197 197 +125 185 77 +114 172 67 +93 140 55 +137 137 137 +209 97 140 +196 71 119 +63 93 38 +174 58 103 +115 35 66 +44 64 27 +0 0 0 diff --git a/graphics/pokemon/tsareena/overworld_shiny.pal b/graphics/pokemon/tsareena/overworld_shiny.pal new file mode 100644 index 000000000000..c05e30b3453a --- /dev/null +++ b/graphics/pokemon/tsareena/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 240 184 +232 95 199 +216 160 232 +200 192 128 +176 104 200 +152 88 200 +152 0 208 +137 137 137 +209 97 140 +196 71 119 +112 56 144 +174 58 103 +115 35 66 +44 64 27 +0 0 0 diff --git a/graphics/pokemon/turtonator/overworld.png b/graphics/pokemon/turtonator/overworld.png new file mode 100644 index 000000000000..1c42a8c540ee Binary files /dev/null and b/graphics/pokemon/turtonator/overworld.png differ diff --git a/graphics/pokemon/turtonator/overworld_normal.pal b/graphics/pokemon/turtonator/overworld_normal.pal new file mode 100644 index 000000000000..f8744fa12145 --- /dev/null +++ b/graphics/pokemon/turtonator/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +219 224 189 +223 205 50 +253 232 37 +190 190 157 +181 158 20 +152 101 86 +113 114 98 +255 83 95 +191 72 82 +176 66 68 +91 92 73 +86 61 51 +112 35 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/turtonator/overworld_shiny.pal b/graphics/pokemon/turtonator/overworld_shiny.pal new file mode 100644 index 000000000000..84f8f4c6b0db --- /dev/null +++ b/graphics/pokemon/turtonator/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +160 200 192 +223 205 50 +200 136 48 +160 200 192 +248 224 88 +152 101 86 +104 152 152 +200 136 48 +128 72 16 +56 40 32 +91 92 73 +86 61 51 +112 35 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/turtwig/overworld.png b/graphics/pokemon/turtwig/overworld.png new file mode 100644 index 000000000000..ed2e3d8276fa Binary files /dev/null and b/graphics/pokemon/turtwig/overworld.png differ diff --git a/graphics/pokemon/turtwig/overworld_normal.pal b/graphics/pokemon/turtwig/overworld_normal.pal new file mode 100644 index 000000000000..81ef901b1d7d --- /dev/null +++ b/graphics/pokemon/turtwig/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 80 56 +72 120 64 +0 0 0 +80 72 56 +152 112 56 +104 88 72 +136 200 176 +80 152 104 +208 176 40 +48 48 48 +248 232 112 +232 232 248 +72 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/turtwig/overworld_shiny.pal b/graphics/pokemon/turtwig/overworld_shiny.pal new file mode 100644 index 000000000000..c70f3b4e7bd6 --- /dev/null +++ b/graphics/pokemon/turtwig/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 80 104 +72 120 64 +0 0 0 +80 72 56 +152 112 56 +104 88 72 +112 200 216 +80 144 168 +208 176 40 +48 48 48 +248 232 112 +232 232 248 +72 72 72 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tympole/overworld.png b/graphics/pokemon/tympole/overworld.png new file mode 100644 index 000000000000..9f9778553c0d Binary files /dev/null and b/graphics/pokemon/tympole/overworld.png differ diff --git a/graphics/pokemon/tympole/overworld_normal.pal b/graphics/pokemon/tympole/overworld_normal.pal new file mode 100644 index 000000000000..b0abde6d7025 --- /dev/null +++ b/graphics/pokemon/tympole/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 96 136 +104 184 248 +112 144 192 +40 40 40 +0 0 0 +64 64 64 +96 96 96 +192 152 128 +248 216 184 +48 48 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tympole/overworld_shiny.pal b/graphics/pokemon/tympole/overworld_shiny.pal new file mode 100644 index 000000000000..82854d4d99fb --- /dev/null +++ b/graphics/pokemon/tympole/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 48 0 +248 208 120 +248 168 8 +40 40 40 +0 0 0 +64 64 64 +96 96 96 +192 152 128 +248 216 184 +48 48 48 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tynamo/overworld.png b/graphics/pokemon/tynamo/overworld.png new file mode 100644 index 000000000000..3c32e833f557 Binary files /dev/null and b/graphics/pokemon/tynamo/overworld.png differ diff --git a/graphics/pokemon/tynamo/overworld_normal.pal b/graphics/pokemon/tynamo/overworld_normal.pal new file mode 100644 index 000000000000..e36f523fd2dd --- /dev/null +++ b/graphics/pokemon/tynamo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 131 148 +205 222 230 +238 255 255 +156 164 180 +232 232 248 +205 74 0 +24 24 32 +148 32 0 +255 230 123 +255 213 0 +238 255 255 +205 222 230 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tynamo/overworld_shiny.pal b/graphics/pokemon/tynamo/overworld_shiny.pal new file mode 100644 index 000000000000..3d5dceb2594c --- /dev/null +++ b/graphics/pokemon/tynamo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 144 160 +192 224 232 +232 248 248 +136 184 200 +232 232 248 +205 74 0 +24 24 32 +148 32 0 +240 192 48 +248 136 8 +238 255 255 +205 222 230 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/type_null/overworld.png b/graphics/pokemon/type_null/overworld.png new file mode 100644 index 000000000000..ca4056c171b2 Binary files /dev/null and b/graphics/pokemon/type_null/overworld.png differ diff --git a/graphics/pokemon/type_null/overworld_normal.pal b/graphics/pokemon/type_null/overworld_normal.pal new file mode 100644 index 000000000000..6aed76aa389e --- /dev/null +++ b/graphics/pokemon/type_null/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +173 173 173 +216 133 99 +161 103 79 +122 122 122 +72 103 165 +55 120 82 +103 88 84 +67 67 67 +97 65 53 +72 60 57 +64 43 35 +46 41 95 +40 34 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/type_null/overworld_shiny.pal b/graphics/pokemon/type_null/overworld_shiny.pal new file mode 100644 index 000000000000..9355bd6e03bf --- /dev/null +++ b/graphics/pokemon/type_null/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +200 184 152 +192 88 56 +144 64 48 +160 144 104 +72 103 165 +55 120 82 +103 88 84 +67 67 67 +97 65 53 +72 60 57 +64 43 35 +46 41 95 +40 34 32 +0 0 0 +192 200 200 diff --git a/graphics/pokemon/typhlosion/hisuian/overworld.png b/graphics/pokemon/typhlosion/hisuian/overworld.png new file mode 100644 index 000000000000..d98d72059186 Binary files /dev/null and b/graphics/pokemon/typhlosion/hisuian/overworld.png differ diff --git a/graphics/pokemon/typhlosion/hisuian/overworld_normal.pal b/graphics/pokemon/typhlosion/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..1cff39ee1204 --- /dev/null +++ b/graphics/pokemon/typhlosion/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +180 57 156 +238 98 230 +246 74 106 +246 90 164 +74 65 16 +180 180 123 +0 0 0 +16 16 82 +57 49 98 +139 131 82 +90 74 156 +222 222 172 +238 238 255 +238 139 0 +82 65 49 diff --git a/graphics/pokemon/typhlosion/hisuian/overworld_shiny.pal b/graphics/pokemon/typhlosion/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..c4e051efca40 --- /dev/null +++ b/graphics/pokemon/typhlosion/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +180 57 156 +238 98 230 +246 74 106 +246 90 164 +74 65 16 +180 180 123 +0 0 0 +24 57 74 +57 98 123 +139 131 82 +57 139 172 +222 222 172 +238 238 255 +164 16 24 +82 65 49 diff --git a/graphics/pokemon/typhlosion/overworld.png b/graphics/pokemon/typhlosion/overworld.png new file mode 100644 index 000000000000..99f25eea0a40 Binary files /dev/null and b/graphics/pokemon/typhlosion/overworld.png differ diff --git a/graphics/pokemon/typhlosion/overworld_normal.pal b/graphics/pokemon/typhlosion/overworld_normal.pal new file mode 100644 index 000000000000..a4b60c5538f9 --- /dev/null +++ b/graphics/pokemon/typhlosion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 16 24 +184 48 48 +24 56 72 +216 80 80 +0 0 0 +56 96 120 +56 136 168 +240 200 40 +208 184 96 +72 64 16 +248 208 96 +232 232 248 +104 88 56 +168 144 80 +0 0 0 diff --git a/graphics/pokemon/typhlosion/overworld_shiny.pal b/graphics/pokemon/typhlosion/overworld_shiny.pal new file mode 100644 index 000000000000..f03c95c02597 --- /dev/null +++ b/graphics/pokemon/typhlosion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 16 24 +184 48 48 +88 16 56 +216 80 80 +0 0 0 +136 56 88 +184 120 160 +240 200 40 +208 184 96 +72 64 16 +248 208 96 +232 232 248 +104 88 56 +168 144 80 +0 0 0 diff --git a/graphics/pokemon/tyranitar/overworld.png b/graphics/pokemon/tyranitar/overworld.png new file mode 100644 index 000000000000..5743028ae3b8 Binary files /dev/null and b/graphics/pokemon/tyranitar/overworld.png differ diff --git a/graphics/pokemon/tyranitar/overworld_normal.pal b/graphics/pokemon/tyranitar/overworld_normal.pal new file mode 100644 index 000000000000..a01ad1769851 --- /dev/null +++ b/graphics/pokemon/tyranitar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +40 72 48 +176 216 120 +136 184 104 +88 120 80 +112 160 88 +0 0 0 +232 232 248 +32 40 40 +48 64 64 +160 184 200 +80 104 168 +56 48 104 +96 136 192 +120 136 144 +0 0 0 diff --git a/graphics/pokemon/tyranitar/overworld_shiny.pal b/graphics/pokemon/tyranitar/overworld_shiny.pal new file mode 100644 index 000000000000..b04f1f2cc317 --- /dev/null +++ b/graphics/pokemon/tyranitar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +64 72 0 +216 216 120 +176 184 80 +104 120 16 +128 152 40 +0 0 0 +232 232 248 +32 40 40 +48 64 64 +160 184 200 +112 40 144 +72 24 112 +136 88 176 +120 136 144 +0 0 0 diff --git a/graphics/pokemon/tyrantrum/overworld.png b/graphics/pokemon/tyrantrum/overworld.png new file mode 100644 index 000000000000..23fa4ca873bc Binary files /dev/null and b/graphics/pokemon/tyrantrum/overworld.png differ diff --git a/graphics/pokemon/tyrantrum/overworld_normal.pal b/graphics/pokemon/tyrantrum/overworld_normal.pal new file mode 100644 index 000000000000..1f69a40811e5 --- /dev/null +++ b/graphics/pokemon/tyrantrum/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +70 36 37 +227 141 65 +202 109 42 +182 74 76 +16 16 16 +137 61 62 +198 197 195 +59 55 55 +155 152 147 +152 78 30 +198 197 195 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tyrantrum/overworld_shiny.pal b/graphics/pokemon/tyrantrum/overworld_shiny.pal new file mode 100644 index 000000000000..387223987616 --- /dev/null +++ b/graphics/pokemon/tyrantrum/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +45 56 99 +185 185 185 +146 145 145 +97 116 225 +16 16 16 +74 90 151 +198 197 195 +59 55 55 +155 152 147 +112 112 112 +230 238 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tyrogue/overworld.png b/graphics/pokemon/tyrogue/overworld.png new file mode 100644 index 000000000000..f66fab64fb42 Binary files /dev/null and b/graphics/pokemon/tyrogue/overworld.png differ diff --git a/graphics/pokemon/tyrogue/overworld_normal.pal b/graphics/pokemon/tyrogue/overworld_normal.pal new file mode 100644 index 000000000000..889ba9d6da2c --- /dev/null +++ b/graphics/pokemon/tyrogue/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 48 104 +0 0 0 +200 160 216 +112 80 128 +168 120 176 +176 184 192 +136 96 8 +232 232 248 +72 88 104 +136 144 152 +96 24 24 +192 56 56 +144 40 40 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tyrogue/overworld_shiny.pal b/graphics/pokemon/tyrogue/overworld_shiny.pal new file mode 100644 index 000000000000..b4a1b2d1c014 --- /dev/null +++ b/graphics/pokemon/tyrogue/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 80 +0 0 0 +192 176 192 +104 96 104 +152 136 152 +176 184 192 +32 120 152 +232 232 248 +72 88 104 +136 144 152 +0 56 64 +56 160 192 +32 120 152 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/tyrunt/overworld.png b/graphics/pokemon/tyrunt/overworld.png new file mode 100644 index 000000000000..6ca4c9604cd9 Binary files /dev/null and b/graphics/pokemon/tyrunt/overworld.png differ diff --git a/graphics/pokemon/tyrunt/overworld_normal.pal b/graphics/pokemon/tyrunt/overworld_normal.pal new file mode 100644 index 000000000000..2a66ac071c8b --- /dev/null +++ b/graphics/pokemon/tyrunt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 43 39 +229 90 53 +124 104 94 +96 79 70 +155 152 147 +16 16 16 +198 197 195 +155 124 111 +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/tyrunt/overworld_shiny.pal b/graphics/pokemon/tyrunt/overworld_shiny.pal new file mode 100644 index 000000000000..47313d0d1f7c --- /dev/null +++ b/graphics/pokemon/tyrunt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +33 61 89 +191 191 191 +82 131 179 +61 102 143 +155 152 147 +16 16 16 +198 197 195 +91 153 214 +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/umbreon/overworld.png b/graphics/pokemon/umbreon/overworld.png new file mode 100644 index 000000000000..6bf726c2ced1 Binary files /dev/null and b/graphics/pokemon/umbreon/overworld.png differ diff --git a/graphics/pokemon/umbreon/overworld_normal.pal b/graphics/pokemon/umbreon/overworld_normal.pal new file mode 100644 index 000000000000..c44e7b2e1223 --- /dev/null +++ b/graphics/pokemon/umbreon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +104 112 120 +0 0 0 +224 176 40 +176 128 16 +248 216 88 +64 72 80 +128 88 8 +112 8 8 +232 232 248 +208 24 24 +40 56 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/umbreon/overworld_shiny.pal b/graphics/pokemon/umbreon/overworld_shiny.pal new file mode 100644 index 000000000000..f4379a6c6a60 --- /dev/null +++ b/graphics/pokemon/umbreon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 40 56 +104 112 120 +0 0 0 +88 176 200 +40 136 160 +144 216 232 +64 72 80 +40 136 152 +176 128 16 +232 232 248 +224 176 40 +40 56 64 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/unfezant/followerf.png b/graphics/pokemon/unfezant/followerf.png new file mode 100644 index 000000000000..ae5e096b4bc2 Binary files /dev/null and b/graphics/pokemon/unfezant/followerf.png differ diff --git a/graphics/pokemon/unfezant/overworld.png b/graphics/pokemon/unfezant/overworld.png new file mode 100644 index 000000000000..d1aa945df72d Binary files /dev/null and b/graphics/pokemon/unfezant/overworld.png differ diff --git a/graphics/pokemon/unfezant/overworld_normal.pal b/graphics/pokemon/unfezant/overworld_normal.pal new file mode 100644 index 000000000000..ade74aadfdc2 --- /dev/null +++ b/graphics/pokemon/unfezant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +45 45 45 +0 0 0 +247 54 109 +151 151 151 +212 212 212 +208 25 75 +77 77 77 +171 171 178 +247 194 46 +117 117 117 +61 46 32 +247 194 39 +229 229 247 +168 134 32 +39 151 109 diff --git a/graphics/pokemon/unfezant/overworld_shiny.pal b/graphics/pokemon/unfezant/overworld_shiny.pal new file mode 100644 index 000000000000..cb3ec8c47f72 --- /dev/null +++ b/graphics/pokemon/unfezant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +32 32 24 +0 0 0 +200 88 208 +151 151 151 +200 200 176 +112 56 144 +88 64 40 +88 64 40 +168 160 128 +103 103 103 +50 45 40 +168 160 128 +229 229 247 +118 156 100 +39 151 109 diff --git a/graphics/pokemon/unfezant_f/overworld.png b/graphics/pokemon/unfezant_f/overworld.png new file mode 100644 index 000000000000..ae5e096b4bc2 Binary files /dev/null and b/graphics/pokemon/unfezant_f/overworld.png differ diff --git a/graphics/pokemon/unown/b/overworld.png b/graphics/pokemon/unown/b/overworld.png new file mode 100644 index 000000000000..b2500cca0cd4 Binary files /dev/null and b/graphics/pokemon/unown/b/overworld.png differ diff --git a/graphics/pokemon/unown/c/overworld.png b/graphics/pokemon/unown/c/overworld.png new file mode 100644 index 000000000000..d7f631f31e0e Binary files /dev/null and b/graphics/pokemon/unown/c/overworld.png differ diff --git a/graphics/pokemon/unown/d/overworld.png b/graphics/pokemon/unown/d/overworld.png new file mode 100644 index 000000000000..426e517d5df4 Binary files /dev/null and b/graphics/pokemon/unown/d/overworld.png differ diff --git a/graphics/pokemon/unown/e/overworld.png b/graphics/pokemon/unown/e/overworld.png new file mode 100644 index 000000000000..741a5ef42e14 Binary files /dev/null and b/graphics/pokemon/unown/e/overworld.png differ diff --git a/graphics/pokemon/unown/exclamation_mark/overworld.png b/graphics/pokemon/unown/exclamation_mark/overworld.png new file mode 100644 index 000000000000..4271c7ab99a2 Binary files /dev/null and b/graphics/pokemon/unown/exclamation_mark/overworld.png differ diff --git a/graphics/pokemon/unown/f/overworld.png b/graphics/pokemon/unown/f/overworld.png new file mode 100644 index 000000000000..ea3332e941fe Binary files /dev/null and b/graphics/pokemon/unown/f/overworld.png differ diff --git a/graphics/pokemon/unown/g/overworld.png b/graphics/pokemon/unown/g/overworld.png new file mode 100644 index 000000000000..d9308fbe3a13 Binary files /dev/null and b/graphics/pokemon/unown/g/overworld.png differ diff --git a/graphics/pokemon/unown/h/overworld.png b/graphics/pokemon/unown/h/overworld.png new file mode 100644 index 000000000000..9abe3e400104 Binary files /dev/null and b/graphics/pokemon/unown/h/overworld.png differ diff --git a/graphics/pokemon/unown/i/overworld.png b/graphics/pokemon/unown/i/overworld.png new file mode 100644 index 000000000000..39aa3b857219 Binary files /dev/null and b/graphics/pokemon/unown/i/overworld.png differ diff --git a/graphics/pokemon/unown/j/overworld.png b/graphics/pokemon/unown/j/overworld.png new file mode 100644 index 000000000000..af240eafd38a Binary files /dev/null and b/graphics/pokemon/unown/j/overworld.png differ diff --git a/graphics/pokemon/unown/k/overworld.png b/graphics/pokemon/unown/k/overworld.png new file mode 100644 index 000000000000..b448f866e65f Binary files /dev/null and b/graphics/pokemon/unown/k/overworld.png differ diff --git a/graphics/pokemon/unown/l/overworld.png b/graphics/pokemon/unown/l/overworld.png new file mode 100644 index 000000000000..b11096a1ab72 Binary files /dev/null and b/graphics/pokemon/unown/l/overworld.png differ diff --git a/graphics/pokemon/unown/m/overworld.png b/graphics/pokemon/unown/m/overworld.png new file mode 100644 index 000000000000..0d5f60e29701 Binary files /dev/null and b/graphics/pokemon/unown/m/overworld.png differ diff --git a/graphics/pokemon/unown/n/overworld.png b/graphics/pokemon/unown/n/overworld.png new file mode 100644 index 000000000000..8b3939283159 Binary files /dev/null and b/graphics/pokemon/unown/n/overworld.png differ diff --git a/graphics/pokemon/unown/o/overworld.png b/graphics/pokemon/unown/o/overworld.png new file mode 100644 index 000000000000..23a5f2e2773f Binary files /dev/null and b/graphics/pokemon/unown/o/overworld.png differ diff --git a/graphics/pokemon/unown/overworld.png b/graphics/pokemon/unown/overworld.png new file mode 100644 index 000000000000..160a75a83dfe Binary files /dev/null and b/graphics/pokemon/unown/overworld.png differ diff --git a/graphics/pokemon/unown/overworld_normal.pal b/graphics/pokemon/unown/overworld_normal.pal new file mode 100644 index 000000000000..1e603c38957c --- /dev/null +++ b/graphics/pokemon/unown/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +205 205 172 +0 0 0 +96 104 144 +64 72 88 +40 48 64 +232 232 248 +184 184 184 +0 0 0 +0 0 0 +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/unown/overworld_shiny.pal b/graphics/pokemon/unown/overworld_shiny.pal new file mode 100644 index 000000000000..2b77657dc053 --- /dev/null +++ b/graphics/pokemon/unown/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +205 205 172 +16 48 144 +112 144 232 +80 120 232 +48 88 224 +232 232 248 +184 184 184 +0 0 0 +0 0 0 +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/unown/p/overworld.png b/graphics/pokemon/unown/p/overworld.png new file mode 100644 index 000000000000..f3699ebdcdba Binary files /dev/null and b/graphics/pokemon/unown/p/overworld.png differ diff --git a/graphics/pokemon/unown/q/overworld.png b/graphics/pokemon/unown/q/overworld.png new file mode 100644 index 000000000000..1e2bc7f46f77 Binary files /dev/null and b/graphics/pokemon/unown/q/overworld.png differ diff --git a/graphics/pokemon/unown/question_mark/overworld.png b/graphics/pokemon/unown/question_mark/overworld.png new file mode 100644 index 000000000000..e4d210288364 Binary files /dev/null and b/graphics/pokemon/unown/question_mark/overworld.png differ diff --git a/graphics/pokemon/unown/r/overworld.png b/graphics/pokemon/unown/r/overworld.png new file mode 100644 index 000000000000..70194b27cd4b Binary files /dev/null and b/graphics/pokemon/unown/r/overworld.png differ diff --git a/graphics/pokemon/unown/s/overworld.png b/graphics/pokemon/unown/s/overworld.png new file mode 100644 index 000000000000..2dacced84728 Binary files /dev/null and b/graphics/pokemon/unown/s/overworld.png differ diff --git a/graphics/pokemon/unown/t/overworld.png b/graphics/pokemon/unown/t/overworld.png new file mode 100644 index 000000000000..cb476bf5ee92 Binary files /dev/null and b/graphics/pokemon/unown/t/overworld.png differ diff --git a/graphics/pokemon/unown/u/overworld.png b/graphics/pokemon/unown/u/overworld.png new file mode 100644 index 000000000000..2bde3485416f Binary files /dev/null and b/graphics/pokemon/unown/u/overworld.png differ diff --git a/graphics/pokemon/unown/v/overworld.png b/graphics/pokemon/unown/v/overworld.png new file mode 100644 index 000000000000..0bb8dba96c8e Binary files /dev/null and b/graphics/pokemon/unown/v/overworld.png differ diff --git a/graphics/pokemon/unown/w/overworld.png b/graphics/pokemon/unown/w/overworld.png new file mode 100644 index 000000000000..d49a4cf96cb9 Binary files /dev/null and b/graphics/pokemon/unown/w/overworld.png differ diff --git a/graphics/pokemon/unown/x/overworld.png b/graphics/pokemon/unown/x/overworld.png new file mode 100644 index 000000000000..e1621d278bd6 Binary files /dev/null and b/graphics/pokemon/unown/x/overworld.png differ diff --git a/graphics/pokemon/unown/y/overworld.png b/graphics/pokemon/unown/y/overworld.png new file mode 100644 index 000000000000..d9fe25135b0f Binary files /dev/null and b/graphics/pokemon/unown/y/overworld.png differ diff --git a/graphics/pokemon/unown/z/overworld.png b/graphics/pokemon/unown/z/overworld.png new file mode 100644 index 000000000000..e2097128e7d6 Binary files /dev/null and b/graphics/pokemon/unown/z/overworld.png differ diff --git a/graphics/pokemon/unused_garbage.bin b/graphics/pokemon/unused_garbage.bin deleted file mode 100644 index fcb503112fc5..000000000000 Binary files a/graphics/pokemon/unused_garbage.bin and /dev/null differ diff --git a/graphics/pokemon/ursaluna/bloodmoon/overworld.png b/graphics/pokemon/ursaluna/bloodmoon/overworld.png new file mode 100644 index 000000000000..fbb792082021 Binary files /dev/null and b/graphics/pokemon/ursaluna/bloodmoon/overworld.png differ diff --git a/graphics/pokemon/ursaluna/bloodmoon/overworld_normal.pal b/graphics/pokemon/ursaluna/bloodmoon/overworld_normal.pal new file mode 100644 index 000000000000..bce28e18ac20 --- /dev/null +++ b/graphics/pokemon/ursaluna/bloodmoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +65 141 172 +255 48 90 +197 194 205 +32 105 57 +189 129 82 +148 149 148 +82 72 82 +213 161 98 +49 48 41 +115 76 57 +238 234 255 +156 105 65 +115 117 115 +74 36 24 +16 16 16 +17 17 17 diff --git a/graphics/pokemon/ursaluna/overworld.png b/graphics/pokemon/ursaluna/overworld.png new file mode 100644 index 000000000000..4fc2e0177f04 Binary files /dev/null and b/graphics/pokemon/ursaluna/overworld.png differ diff --git a/graphics/pokemon/ursaluna/overworld_normal.pal b/graphics/pokemon/ursaluna/overworld_normal.pal new file mode 100644 index 000000000000..358836abce50 --- /dev/null +++ b/graphics/pokemon/ursaluna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +57 41 41 +106 74 65 +74 57 49 +65 65 65 +115 115 115 +148 148 148 +115 82 74 +238 238 255 +197 197 213 +197 139 57 +213 164 98 +148 106 57 +32 106 57 +222 205 139 diff --git a/graphics/pokemon/ursaluna/overworld_shiny.pal b/graphics/pokemon/ursaluna/overworld_shiny.pal new file mode 100644 index 000000000000..1af516796a78 --- /dev/null +++ b/graphics/pokemon/ursaluna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +131 57 49 +180 90 82 +164 74 65 +74 74 74 +131 131 123 +156 156 156 +197 106 98 +238 238 255 +156 156 156 +205 180 57 +222 189 98 +148 106 57 +123 148 197 +222 205 115 diff --git a/graphics/pokemon/ursaring/overworld.png b/graphics/pokemon/ursaring/overworld.png new file mode 100644 index 000000000000..193585e6b0b1 Binary files /dev/null and b/graphics/pokemon/ursaring/overworld.png differ diff --git a/graphics/pokemon/ursaring/overworld_normal.pal b/graphics/pokemon/ursaring/overworld_normal.pal new file mode 100644 index 000000000000..763e99e6ce36 --- /dev/null +++ b/graphics/pokemon/ursaring/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 40 8 +120 72 48 +0 0 0 +176 128 88 +152 104 64 +192 136 56 +208 160 96 +144 104 56 +192 192 200 +232 232 248 +88 72 64 +216 200 136 +160 168 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/ursaring/overworld_shiny.pal b/graphics/pokemon/ursaring/overworld_shiny.pal new file mode 100644 index 000000000000..222323119b26 --- /dev/null +++ b/graphics/pokemon/ursaring/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +24 56 16 +40 112 48 +0 0 0 +136 200 96 +88 160 72 +192 136 56 +208 160 96 +144 104 56 +192 192 200 +232 232 248 +88 72 64 +216 200 136 +160 168 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/urshifu/overworld.png b/graphics/pokemon/urshifu/overworld.png new file mode 100644 index 000000000000..fd726f3113de Binary files /dev/null and b/graphics/pokemon/urshifu/overworld.png differ diff --git a/graphics/pokemon/urshifu/overworld_normal.pal b/graphics/pokemon/urshifu/overworld_normal.pal new file mode 100644 index 000000000000..03f1772def42 --- /dev/null +++ b/graphics/pokemon/urshifu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +248 248 248 +184 184 184 +72 72 88 +104 96 112 +64 64 56 +208 168 32 +248 248 96 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/urshifu/overworld_shiny.pal b/graphics/pokemon/urshifu/overworld_shiny.pal new file mode 100644 index 000000000000..465bbf54c4f9 --- /dev/null +++ b/graphics/pokemon/urshifu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +255 255 255 +205 205 205 +106 98 115 +139 139 139 +98 90 74 +189 90 32 +255 148 49 +41 41 32 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/uxie/overworld.png b/graphics/pokemon/uxie/overworld.png new file mode 100644 index 000000000000..4f762b9a43ab Binary files /dev/null and b/graphics/pokemon/uxie/overworld.png differ diff --git a/graphics/pokemon/uxie/overworld_normal.pal b/graphics/pokemon/uxie/overworld_normal.pal new file mode 100644 index 000000000000..383a2a8a7b0c --- /dev/null +++ b/graphics/pokemon/uxie/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 56 +136 120 88 +192 152 88 +240 200 88 +168 40 0 +248 168 152 +72 72 88 +176 208 248 +232 64 32 +112 128 176 +0 0 0 +144 184 208 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/uxie/overworld_shiny.pal b/graphics/pokemon/uxie/overworld_shiny.pal new file mode 100644 index 000000000000..37864c416d56 --- /dev/null +++ b/graphics/pokemon/uxie/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 64 32 +160 96 40 +224 152 64 +248 192 72 +168 40 0 +248 168 152 +104 80 56 +248 216 88 +232 64 32 +176 128 48 +0 0 0 +216 176 88 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vanillish/overworld.png b/graphics/pokemon/vanillish/overworld.png new file mode 100644 index 000000000000..a918c5dfb9bc Binary files /dev/null and b/graphics/pokemon/vanillish/overworld.png differ diff --git a/graphics/pokemon/vanillish/overworld_normal.pal b/graphics/pokemon/vanillish/overworld_normal.pal new file mode 100644 index 000000000000..879e4ea39956 --- /dev/null +++ b/graphics/pokemon/vanillish/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 129 182 +238 240 246 +208 208 236 +182 182 218 +63 71 104 +164 222 244 +95 155 236 +108 166 236 +76 82 164 +0 0 0 +155 218 245 +41 98 172 +32 82 123 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vanillish/overworld_shiny.pal b/graphics/pokemon/vanillish/overworld_shiny.pal new file mode 100644 index 000000000000..be9ad808130c --- /dev/null +++ b/graphics/pokemon/vanillish/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 129 182 +238 240 246 +208 208 236 +182 182 218 +63 71 104 +184 184 240 +168 128 232 +168 128 232 +76 82 164 +0 0 0 +184 184 240 +128 80 168 +32 82 123 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vanillite/overworld.png b/graphics/pokemon/vanillite/overworld.png new file mode 100644 index 000000000000..dd66fd463dfa Binary files /dev/null and b/graphics/pokemon/vanillite/overworld.png differ diff --git a/graphics/pokemon/vanillite/overworld_normal.pal b/graphics/pokemon/vanillite/overworld_normal.pal new file mode 100644 index 000000000000..950017ffb5d9 --- /dev/null +++ b/graphics/pokemon/vanillite/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +123 139 189 +240 242 247 +74 82 115 +189 189 222 +213 213 238 +123 164 197 +164 222 246 +65 74 139 +106 164 238 +49 57 98 +0 0 0 +106 123 164 +32 82 123 +41 98 172 +0 0 0 diff --git a/graphics/pokemon/vanillite/overworld_shiny.pal b/graphics/pokemon/vanillite/overworld_shiny.pal new file mode 100644 index 000000000000..923c14a83737 --- /dev/null +++ b/graphics/pokemon/vanillite/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 56 88 +247 247 247 +74 82 115 +216 176 176 +232 216 216 +109 94 161 +207 160 223 +74 82 115 +192 128 168 +74 82 115 +13 22 36 +109 94 161 +112 56 88 +112 56 88 +0 0 0 diff --git a/graphics/pokemon/vanilluxe/overworld.png b/graphics/pokemon/vanilluxe/overworld.png new file mode 100644 index 000000000000..6f3162a06350 Binary files /dev/null and b/graphics/pokemon/vanilluxe/overworld.png differ diff --git a/graphics/pokemon/vanilluxe/overworld_normal.pal b/graphics/pokemon/vanilluxe/overworld_normal.pal new file mode 100644 index 000000000000..41a1d154218f --- /dev/null +++ b/graphics/pokemon/vanilluxe/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +113 129 182 +183 183 218 +238 240 246 +49 75 112 +208 208 236 +41 98 172 +163 221 244 +107 165 236 +76 82 164 +55 54 94 +132 90 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vanilluxe/overworld_shiny.pal b/graphics/pokemon/vanilluxe/overworld_shiny.pal new file mode 100644 index 000000000000..a120e4a34efd --- /dev/null +++ b/graphics/pokemon/vanilluxe/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +113 129 182 +176 192 240 +238 240 246 +49 75 112 +208 208 236 +87 72 167 +176 192 240 +150 155 226 +87 72 167 +55 54 94 +132 90 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vaporeon/overworld.png b/graphics/pokemon/vaporeon/overworld.png new file mode 100644 index 000000000000..beec2a377559 Binary files /dev/null and b/graphics/pokemon/vaporeon/overworld.png differ diff --git a/graphics/pokemon/vaporeon/overworld_normal.pal b/graphics/pokemon/vaporeon/overworld_normal.pal new file mode 100644 index 000000000000..03347d86c19d --- /dev/null +++ b/graphics/pokemon/vaporeon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +32 56 104 +128 200 232 +88 176 224 +48 104 136 +72 136 176 +8 48 72 +16 112 120 +32 144 136 +176 152 56 +80 72 56 +224 200 104 +208 208 208 +160 160 160 +232 232 248 diff --git a/graphics/pokemon/vaporeon/overworld_shiny.pal b/graphics/pokemon/vaporeon/overworld_shiny.pal new file mode 100644 index 000000000000..12e395a08663 --- /dev/null +++ b/graphics/pokemon/vaporeon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +72 40 80 +192 168 232 +184 136 216 +104 80 104 +136 104 192 +96 40 80 +136 24 104 +168 72 136 +176 152 56 +80 72 56 +224 200 104 +208 208 208 +160 160 160 +232 232 248 diff --git a/graphics/pokemon/venipede/overworld.png b/graphics/pokemon/venipede/overworld.png new file mode 100644 index 000000000000..9add5c858de7 Binary files /dev/null and b/graphics/pokemon/venipede/overworld.png differ diff --git a/graphics/pokemon/venipede/overworld_normal.pal b/graphics/pokemon/venipede/overworld_normal.pal new file mode 100644 index 000000000000..61a94495e70b --- /dev/null +++ b/graphics/pokemon/venipede/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +124 56 72 +182 65 92 +191 69 98 +227 81 116 +55 55 55 +79 79 79 +26 95 77 +20 140 80 +22 177 116 +55 106 55 +224 172 35 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/venipede/overworld_shiny.pal b/graphics/pokemon/venipede/overworld_shiny.pal new file mode 100644 index 000000000000..97a17fdcd961 --- /dev/null +++ b/graphics/pokemon/venipede/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +64 64 16 +96 72 40 +144 80 48 +55 55 55 +40 40 40 +40 72 8 +80 112 0 +96 144 0 +55 106 55 +182 65 92 +224 172 35 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/venomoth/overworld.png b/graphics/pokemon/venomoth/overworld.png new file mode 100644 index 000000000000..69c7ae22eb51 Binary files /dev/null and b/graphics/pokemon/venomoth/overworld.png differ diff --git a/graphics/pokemon/venomoth/overworld_normal.pal b/graphics/pokemon/venomoth/overworld_normal.pal new file mode 100644 index 000000000000..81d74a59b965 --- /dev/null +++ b/graphics/pokemon/venomoth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 64 88 +0 0 0 +160 104 240 +208 152 248 +232 184 248 +104 96 136 +232 232 248 +192 192 192 +112 112 112 +152 120 64 +216 184 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/venomoth/overworld_shiny.pal b/graphics/pokemon/venomoth/overworld_shiny.pal new file mode 100644 index 000000000000..954f2a52324c --- /dev/null +++ b/graphics/pokemon/venomoth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 80 104 +0 0 0 +120 176 232 +160 216 248 +208 232 248 +80 136 216 +232 232 248 +192 192 192 +112 112 112 +152 120 64 +216 184 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/venonat/overworld.png b/graphics/pokemon/venonat/overworld.png new file mode 100644 index 000000000000..d872137dbf35 Binary files /dev/null and b/graphics/pokemon/venonat/overworld.png differ diff --git a/graphics/pokemon/venonat/overworld_normal.pal b/graphics/pokemon/venonat/overworld_normal.pal new file mode 100644 index 000000000000..d88c0e21b296 --- /dev/null +++ b/graphics/pokemon/venonat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 32 64 +0 0 0 +160 104 240 +112 72 208 +232 232 248 +136 136 136 +200 200 200 +72 56 128 +136 0 0 +248 200 200 +232 128 152 +168 48 80 +176 144 80 +216 184 128 +128 96 32 diff --git a/graphics/pokemon/venonat/overworld_shiny.pal b/graphics/pokemon/venonat/overworld_shiny.pal new file mode 100644 index 000000000000..7d8d9dec2003 --- /dev/null +++ b/graphics/pokemon/venonat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 32 64 +0 0 0 +160 104 240 +112 72 208 +232 232 248 +136 136 136 +200 200 200 +72 56 128 +0 96 136 +184 248 248 +88 192 224 +0 136 192 +176 144 80 +216 184 128 +128 96 32 diff --git a/graphics/pokemon/venusaur/overworld.png b/graphics/pokemon/venusaur/overworld.png new file mode 100644 index 000000000000..7ae681a895e3 Binary files /dev/null and b/graphics/pokemon/venusaur/overworld.png differ diff --git a/graphics/pokemon/venusaur/overworld_normal.pal b/graphics/pokemon/venusaur/overworld_normal.pal new file mode 100644 index 000000000000..19b75679eaed --- /dev/null +++ b/graphics/pokemon/venusaur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 248 184 +104 32 40 +200 72 128 +232 192 112 +240 120 160 +248 224 8 +192 128 40 +0 0 0 +64 96 48 +144 64 32 +96 168 16 +136 224 32 +64 152 96 +104 216 192 +160 160 160 +232 232 248 diff --git a/graphics/pokemon/venusaur/overworld_shiny.pal b/graphics/pokemon/venusaur/overworld_shiny.pal new file mode 100644 index 000000000000..0ca20763bd57 --- /dev/null +++ b/graphics/pokemon/venusaur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +208 248 184 +120 64 40 +240 176 0 +232 192 112 +248 224 0 +248 224 8 +192 128 40 +0 0 0 +64 96 48 +144 64 32 +56 144 16 +96 184 56 +112 152 48 +160 208 56 +160 160 160 +232 232 248 diff --git a/graphics/pokemon/vespiquen/overworld.png b/graphics/pokemon/vespiquen/overworld.png new file mode 100644 index 000000000000..5c131d7e4089 Binary files /dev/null and b/graphics/pokemon/vespiquen/overworld.png differ diff --git a/graphics/pokemon/vespiquen/overworld_normal.pal b/graphics/pokemon/vespiquen/overworld_normal.pal new file mode 100644 index 000000000000..7f98a243db60 --- /dev/null +++ b/graphics/pokemon/vespiquen/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 224 232 +48 48 48 +104 104 104 +160 184 224 +200 104 40 +160 32 56 +248 200 56 +176 104 32 +232 152 24 +72 64 40 +248 48 104 +168 88 48 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/vespiquen/overworld_shiny.pal b/graphics/pokemon/vespiquen/overworld_shiny.pal new file mode 100644 index 000000000000..fda7a17c8557 --- /dev/null +++ b/graphics/pokemon/vespiquen/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +216 224 232 +48 48 48 +104 104 104 +160 184 224 +200 104 40 +160 32 56 +248 136 56 +152 56 32 +216 88 64 +72 64 40 +248 48 104 +168 88 48 +232 232 248 +0 0 0 diff --git a/graphics/pokemon/vibrava/overworld.png b/graphics/pokemon/vibrava/overworld.png new file mode 100644 index 000000000000..feea84430f81 Binary files /dev/null and b/graphics/pokemon/vibrava/overworld.png differ diff --git a/graphics/pokemon/vibrava/overworld_normal.pal b/graphics/pokemon/vibrava/overworld_normal.pal new file mode 100644 index 000000000000..edd646d95440 --- /dev/null +++ b/graphics/pokemon/vibrava/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 88 56 +72 72 72 +160 176 136 +16 16 16 +56 56 56 +128 136 96 +104 104 104 +40 104 24 +120 184 112 +96 160 96 +216 224 184 +184 192 208 +248 248 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vibrava/overworld_shiny.pal b/graphics/pokemon/vibrava/overworld_shiny.pal new file mode 100644 index 000000000000..59288c990b36 --- /dev/null +++ b/graphics/pokemon/vibrava/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 88 56 +72 72 72 +160 176 136 +16 16 16 +56 56 56 +128 136 96 +104 104 104 +128 80 32 +224 136 16 +176 112 24 +216 224 184 +184 192 208 +248 248 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/victini/overworld.png b/graphics/pokemon/victini/overworld.png new file mode 100644 index 000000000000..3c76017a1368 Binary files /dev/null and b/graphics/pokemon/victini/overworld.png differ diff --git a/graphics/pokemon/victini/overworld_normal.pal b/graphics/pokemon/victini/overworld_normal.pal new file mode 100644 index 000000000000..1dee2cdac826 --- /dev/null +++ b/graphics/pokemon/victini/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 168 +74 41 18 +230 77 40 +142 40 17 +109 101 43 +232 174 79 +0 0 0 +73 48 40 +248 237 138 +48 136 192 +32 104 168 +238 238 247 +247 231 200 +75 171 208 +166 133 46 +230 77 40 diff --git a/graphics/pokemon/victini/overworld_shiny.pal b/graphics/pokemon/victini/overworld_shiny.pal new file mode 100644 index 000000000000..663e14a70240 --- /dev/null +++ b/graphics/pokemon/victini/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 168 +74 41 18 +248 64 24 +112 16 0 +96 96 96 +184 184 184 +0 0 0 +73 48 40 +248 248 248 +48 136 192 +32 104 168 +238 238 247 +243 243 243 +75 171 208 +128 128 136 +230 77 40 diff --git a/graphics/pokemon/victreebel/overworld.png b/graphics/pokemon/victreebel/overworld.png new file mode 100644 index 000000000000..58079e2cd429 Binary files /dev/null and b/graphics/pokemon/victreebel/overworld.png differ diff --git a/graphics/pokemon/victreebel/overworld_normal.pal b/graphics/pokemon/victreebel/overworld_normal.pal new file mode 100644 index 000000000000..3e00a8ecaf59 --- /dev/null +++ b/graphics/pokemon/victreebel/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 64 48 +64 88 40 +128 96 40 +0 0 0 +96 152 56 +184 136 56 +136 216 80 +168 64 112 +120 8 64 +32 32 32 +240 120 160 +192 192 192 +232 232 248 +184 160 48 +240 224 72 diff --git a/graphics/pokemon/victreebel/overworld_shiny.pal b/graphics/pokemon/victreebel/overworld_shiny.pal new file mode 100644 index 000000000000..ae4a85f8ef25 --- /dev/null +++ b/graphics/pokemon/victreebel/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 48 +88 80 48 +128 96 40 +0 0 0 +128 112 72 +184 136 56 +184 152 88 +64 112 152 +64 88 128 +32 32 32 +96 168 216 +192 192 192 +232 232 248 +152 160 72 +200 216 88 diff --git a/graphics/pokemon/vigoroth/overworld.png b/graphics/pokemon/vigoroth/overworld.png new file mode 100644 index 000000000000..951885303cef Binary files /dev/null and b/graphics/pokemon/vigoroth/overworld.png differ diff --git a/graphics/pokemon/vigoroth/overworld_normal.pal b/graphics/pokemon/vigoroth/overworld_normal.pal new file mode 100644 index 000000000000..f226b3dbde1f --- /dev/null +++ b/graphics/pokemon/vigoroth/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 24 24 +96 88 104 +64 56 72 +208 88 88 +168 56 56 +176 168 176 +0 0 0 +232 232 248 +216 208 216 +144 104 96 +120 80 72 +96 48 48 +232 128 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vigoroth/overworld_shiny.pal b/graphics/pokemon/vigoroth/overworld_shiny.pal new file mode 100644 index 000000000000..d352536d052a --- /dev/null +++ b/graphics/pokemon/vigoroth/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 32 16 +120 112 72 +96 80 48 +208 96 72 +168 64 48 +184 176 128 +0 0 0 +232 232 248 +216 216 168 +144 104 96 +120 80 72 +96 48 48 +232 136 104 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vikavolt/overworld.png b/graphics/pokemon/vikavolt/overworld.png new file mode 100644 index 000000000000..dbd1c77383ec Binary files /dev/null and b/graphics/pokemon/vikavolt/overworld.png differ diff --git a/graphics/pokemon/vikavolt/overworld_normal.pal b/graphics/pokemon/vikavolt/overworld_normal.pal new file mode 100644 index 000000000000..6a1e69c1fb5d --- /dev/null +++ b/graphics/pokemon/vikavolt/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +222 223 246 +226 191 70 +137 142 165 +55 152 195 +195 112 23 +134 105 28 +86 93 96 +50 116 152 +32 85 114 +60 67 70 +23 68 101 +37 39 41 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vikavolt/overworld_shiny.pal b/graphics/pokemon/vikavolt/overworld_shiny.pal new file mode 100644 index 000000000000..9a794a547920 --- /dev/null +++ b/graphics/pokemon/vikavolt/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +222 223 246 +168 248 24 +137 142 165 +208 200 208 +208 56 32 +134 105 28 +86 93 96 +160 144 160 +88 80 88 +60 67 70 +88 88 88 +37 39 41 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vileplume/overworld.png b/graphics/pokemon/vileplume/overworld.png new file mode 100644 index 000000000000..8d9728feffb7 Binary files /dev/null and b/graphics/pokemon/vileplume/overworld.png differ diff --git a/graphics/pokemon/vileplume/overworld_normal.pal b/graphics/pokemon/vileplume/overworld_normal.pal new file mode 100644 index 000000000000..f803547b53fb --- /dev/null +++ b/graphics/pokemon/vileplume/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 32 16 +216 96 112 +216 184 144 +168 48 72 +0 0 0 +248 136 72 +168 80 16 +32 56 104 +48 80 112 +64 112 152 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vileplume/overworld_shiny.pal b/graphics/pokemon/vileplume/overworld_shiny.pal new file mode 100644 index 000000000000..7ed5503f4ad8 --- /dev/null +++ b/graphics/pokemon/vileplume/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +104 64 24 +248 184 72 +216 224 144 +200 112 16 +0 0 0 +248 160 24 +168 128 16 +32 72 40 +56 120 64 +120 160 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/virizion/overworld.png b/graphics/pokemon/virizion/overworld.png new file mode 100644 index 000000000000..a61c383dfd44 Binary files /dev/null and b/graphics/pokemon/virizion/overworld.png differ diff --git a/graphics/pokemon/virizion/overworld_normal.pal b/graphics/pokemon/virizion/overworld_normal.pal new file mode 100644 index 000000000000..4ffdcfbb2638 --- /dev/null +++ b/graphics/pokemon/virizion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +44 72 37 +55 130 52 +24 40 16 +139 215 47 +75 94 83 +117 179 51 +220 153 149 +220 153 149 +109 101 43 +197 166 106 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/virizion/overworld_shiny.pal b/graphics/pokemon/virizion/overworld_shiny.pal new file mode 100644 index 000000000000..5c9f5d8df0dd --- /dev/null +++ b/graphics/pokemon/virizion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +63 76 51 +144 56 88 +24 40 16 +232 136 160 +104 112 160 +208 96 120 +241 228 205 +224 107 136 +171 55 36 +197 165 106 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/archipelago/overworld.png b/graphics/pokemon/vivillon/archipelago/overworld.png new file mode 100644 index 000000000000..259b90a64d92 Binary files /dev/null and b/graphics/pokemon/vivillon/archipelago/overworld.png differ diff --git a/graphics/pokemon/vivillon/archipelago/overworld_normal.pal b/graphics/pokemon/vivillon/archipelago/overworld_normal.pal new file mode 100644 index 000000000000..5646ef56e5e6 --- /dev/null +++ b/graphics/pokemon/vivillon/archipelago/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +192 73 76 +99 57 62 +62 62 60 +207 188 157 +185 120 93 +75 191 117 +155 90 73 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/archipelago/overworld_shiny.pal b/graphics/pokemon/vivillon/archipelago/overworld_shiny.pal new file mode 100644 index 000000000000..350b00e2302b --- /dev/null +++ b/graphics/pokemon/vivillon/archipelago/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +192 73 76 +99 57 62 +110 110 102 +207 188 157 +185 120 93 +75 191 117 +155 90 73 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/continental/overworld.png b/graphics/pokemon/vivillon/continental/overworld.png new file mode 100644 index 000000000000..51adbd54ae13 Binary files /dev/null and b/graphics/pokemon/vivillon/continental/overworld.png differ diff --git a/graphics/pokemon/vivillon/continental/overworld_normal.pal b/graphics/pokemon/vivillon/continental/overworld_normal.pal new file mode 100644 index 000000000000..67fa56778cbd --- /dev/null +++ b/graphics/pokemon/vivillon/continental/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +208 137 101 +109 72 53 +62 62 60 +255 251 123 +209 89 79 +249 192 104 +90 84 102 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/continental/overworld_shiny.pal b/graphics/pokemon/vivillon/continental/overworld_shiny.pal new file mode 100644 index 000000000000..3fa7e4862d3a --- /dev/null +++ b/graphics/pokemon/vivillon/continental/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +208 137 101 +109 72 53 +110 110 102 +255 251 123 +209 89 79 +249 192 104 +90 84 102 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/elegant/overworld.png b/graphics/pokemon/vivillon/elegant/overworld.png new file mode 100644 index 000000000000..9cf951ab152f Binary files /dev/null and b/graphics/pokemon/vivillon/elegant/overworld.png differ diff --git a/graphics/pokemon/vivillon/elegant/overworld_normal.pal b/graphics/pokemon/vivillon/elegant/overworld_normal.pal new file mode 100644 index 000000000000..9c25835776da --- /dev/null +++ b/graphics/pokemon/vivillon/elegant/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +237 221 253 +50 45 69 +252 225 96 +62 62 60 +143 123 179 +213 168 238 +220 76 79 +113 100 156 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 diff --git a/graphics/pokemon/vivillon/elegant/overworld_shiny.pal b/graphics/pokemon/vivillon/elegant/overworld_shiny.pal new file mode 100644 index 000000000000..2929621808a4 --- /dev/null +++ b/graphics/pokemon/vivillon/elegant/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +237 221 253 +50 45 69 +252 225 96 +110 110 102 +143 123 179 +213 168 238 +220 76 79 +113 100 156 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 diff --git a/graphics/pokemon/vivillon/fancy/overworld.png b/graphics/pokemon/vivillon/fancy/overworld.png new file mode 100644 index 000000000000..353e85d6a669 Binary files /dev/null and b/graphics/pokemon/vivillon/fancy/overworld.png differ diff --git a/graphics/pokemon/vivillon/fancy/overworld_normal.pal b/graphics/pokemon/vivillon/fancy/overworld_normal.pal new file mode 100644 index 000000000000..792d36c45e7c --- /dev/null +++ b/graphics/pokemon/vivillon/fancy/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 160 248 +16 16 16 +62 62 60 +206 221 152 +87 80 83 +155 146 151 +129 182 114 +236 118 121 +245 229 232 +62 27 26 +183 214 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/fancy/overworld_shiny.pal b/graphics/pokemon/vivillon/fancy/overworld_shiny.pal new file mode 100644 index 000000000000..690cfdd9a2f0 --- /dev/null +++ b/graphics/pokemon/vivillon/fancy/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 160 248 +16 16 16 +62 60 58 +206 221 152 +96 91 90 +173 164 167 +129 182 114 +236 118 121 +245 229 232 +62 60 58 +183 214 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/garden/overworld.png b/graphics/pokemon/vivillon/garden/overworld.png new file mode 100644 index 000000000000..b2fd3d4a1869 Binary files /dev/null and b/graphics/pokemon/vivillon/garden/overworld.png differ diff --git a/graphics/pokemon/vivillon/garden/overworld_normal.pal b/graphics/pokemon/vivillon/garden/overworld_normal.pal new file mode 100644 index 000000000000..34fde952ec72 --- /dev/null +++ b/graphics/pokemon/vivillon/garden/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +70 128 91 +38 56 45 +62 62 60 +82 184 153 +140 205 103 +183 97 93 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/garden/overworld_shiny.pal b/graphics/pokemon/vivillon/garden/overworld_shiny.pal new file mode 100644 index 000000000000..4ac2f2c76504 --- /dev/null +++ b/graphics/pokemon/vivillon/garden/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +70 128 91 +38 56 45 +110 110 102 +82 184 153 +140 205 103 +183 97 93 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/high_plains/overworld.png b/graphics/pokemon/vivillon/high_plains/overworld.png new file mode 100644 index 000000000000..5a1d4df35f59 Binary files /dev/null and b/graphics/pokemon/vivillon/high_plains/overworld.png differ diff --git a/graphics/pokemon/vivillon/high_plains/overworld_normal.pal b/graphics/pokemon/vivillon/high_plains/overworld_normal.pal new file mode 100644 index 000000000000..76552c14c012 --- /dev/null +++ b/graphics/pokemon/vivillon/high_plains/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +224 131 94 +97 68 53 +62 62 60 +239 164 109 +168 78 77 +164 110 72 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +156 97 72 +73 109 79 +236 204 30 diff --git a/graphics/pokemon/vivillon/high_plains/overworld_shiny.pal b/graphics/pokemon/vivillon/high_plains/overworld_shiny.pal new file mode 100644 index 000000000000..6d2de96234cd --- /dev/null +++ b/graphics/pokemon/vivillon/high_plains/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +224 131 94 +97 68 53 +110 110 102 +239 164 109 +168 78 77 +164 110 72 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +156 97 72 +73 109 79 +236 204 30 diff --git a/graphics/pokemon/vivillon/jungle/overworld.png b/graphics/pokemon/vivillon/jungle/overworld.png new file mode 100644 index 000000000000..d4e43eb5e18e Binary files /dev/null and b/graphics/pokemon/vivillon/jungle/overworld.png differ diff --git a/graphics/pokemon/vivillon/jungle/overworld_normal.pal b/graphics/pokemon/vivillon/jungle/overworld_normal.pal new file mode 100644 index 000000000000..7a15e8218f1c --- /dev/null +++ b/graphics/pokemon/vivillon/jungle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +95 113 100 +60 64 61 +62 62 60 +112 132 114 +155 204 160 +140 139 136 +216 214 210 +183 179 171 +97 96 95 +116 79 50 +194 152 116 +151 108 77 +0 0 0 diff --git a/graphics/pokemon/vivillon/jungle/overworld_shiny.pal b/graphics/pokemon/vivillon/jungle/overworld_shiny.pal new file mode 100644 index 000000000000..420afe6fea65 --- /dev/null +++ b/graphics/pokemon/vivillon/jungle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +95 113 100 +60 64 61 +110 110 102 +112 132 114 +155 204 160 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +116 79 50 +194 152 116 +151 108 77 +0 0 0 diff --git a/graphics/pokemon/vivillon/marine/overworld.png b/graphics/pokemon/vivillon/marine/overworld.png new file mode 100644 index 000000000000..7faa9449d0af Binary files /dev/null and b/graphics/pokemon/vivillon/marine/overworld.png differ diff --git a/graphics/pokemon/vivillon/marine/overworld_normal.pal b/graphics/pokemon/vivillon/marine/overworld_normal.pal new file mode 100644 index 000000000000..7b55c906c5c3 --- /dev/null +++ b/graphics/pokemon/vivillon/marine/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +65 147 201 +64 59 103 +62 62 60 +115 205 237 +233 232 231 +140 139 136 +183 179 171 +97 96 95 +50 74 106 +75 110 159 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/marine/overworld_shiny.pal b/graphics/pokemon/vivillon/marine/overworld_shiny.pal new file mode 100644 index 000000000000..3525539d33fe --- /dev/null +++ b/graphics/pokemon/vivillon/marine/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +65 147 201 +64 59 103 +110 110 102 +115 205 237 +233 232 231 +185 185 176 +183 179 171 +97 96 95 +50 74 106 +75 110 159 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/meadow/overworld.png b/graphics/pokemon/vivillon/meadow/overworld.png new file mode 100644 index 000000000000..7af7e67072d2 Binary files /dev/null and b/graphics/pokemon/vivillon/meadow/overworld.png differ diff --git a/graphics/pokemon/vivillon/meadow/overworld_normal.pal b/graphics/pokemon/vivillon/meadow/overworld_normal.pal new file mode 100644 index 000000000000..c1a028a140e0 --- /dev/null +++ b/graphics/pokemon/vivillon/meadow/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +202 105 121 +116 60 69 +62 62 60 +243 143 190 +233 232 231 +74 180 183 +140 139 136 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/meadow/overworld_shiny.pal b/graphics/pokemon/vivillon/meadow/overworld_shiny.pal new file mode 100644 index 000000000000..098ddca30f97 --- /dev/null +++ b/graphics/pokemon/vivillon/meadow/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +202 105 121 +116 60 69 +110 110 102 +243 143 190 +233 232 231 +74 180 183 +185 185 176 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/modern/overworld.png b/graphics/pokemon/vivillon/modern/overworld.png new file mode 100644 index 000000000000..e952b77e03f5 Binary files /dev/null and b/graphics/pokemon/vivillon/modern/overworld.png differ diff --git a/graphics/pokemon/vivillon/modern/overworld_normal.pal b/graphics/pokemon/vivillon/modern/overworld_normal.pal new file mode 100644 index 000000000000..e9c5b62ecc29 --- /dev/null +++ b/graphics/pokemon/vivillon/modern/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +249 254 255 +126 62 86 +62 62 60 +91 123 183 +221 97 93 +253 242 129 +171 79 92 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/modern/overworld_shiny.pal b/graphics/pokemon/vivillon/modern/overworld_shiny.pal new file mode 100644 index 000000000000..f3ba9a255c2b --- /dev/null +++ b/graphics/pokemon/vivillon/modern/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +249 254 255 +126 62 86 +110 110 102 +91 123 183 +221 97 93 +253 242 129 +171 79 92 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/monsoon/overworld.png b/graphics/pokemon/vivillon/monsoon/overworld.png new file mode 100644 index 000000000000..4e764e3e7510 Binary files /dev/null and b/graphics/pokemon/vivillon/monsoon/overworld.png differ diff --git a/graphics/pokemon/vivillon/monsoon/overworld_normal.pal b/graphics/pokemon/vivillon/monsoon/overworld_normal.pal new file mode 100644 index 000000000000..5c1e9b68ee3c --- /dev/null +++ b/graphics/pokemon/vivillon/monsoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +249 254 255 +75 73 99 +231 232 232 +103 108 114 +173 239 238 +140 139 136 +126 141 212 +194 195 196 +233 232 231 +183 179 171 +150 151 152 +97 96 95 +124 202 210 diff --git a/graphics/pokemon/vivillon/monsoon/overworld_shiny.pal b/graphics/pokemon/vivillon/monsoon/overworld_shiny.pal new file mode 100644 index 000000000000..6be7ea31d6fc --- /dev/null +++ b/graphics/pokemon/vivillon/monsoon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +245 249 249 +76 74 98 +245 249 249 +105 108 109 +173 239 238 +170 170 165 +125 143 211 +194 195 196 +245 249 249 +170 170 165 +170 170 165 +105 108 109 +124 202 210 diff --git a/graphics/pokemon/vivillon/ocean/overworld.png b/graphics/pokemon/vivillon/ocean/overworld.png new file mode 100644 index 000000000000..3c7b1b92cb8f Binary files /dev/null and b/graphics/pokemon/vivillon/ocean/overworld.png differ diff --git a/graphics/pokemon/vivillon/ocean/overworld_normal.pal b/graphics/pokemon/vivillon/ocean/overworld_normal.pal new file mode 100644 index 000000000000..202e5aed1b6a --- /dev/null +++ b/graphics/pokemon/vivillon/ocean/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 31 +50 46 78 +252 248 132 +243 106 96 +241 175 103 +146 145 141 +233 232 231 +131 188 229 +97 96 95 +87 136 199 +62 94 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/ocean/overworld_shiny.pal b/graphics/pokemon/vivillon/ocean/overworld_shiny.pal new file mode 100644 index 000000000000..044c91ddc264 --- /dev/null +++ b/graphics/pokemon/vivillon/ocean/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +50 46 78 +252 248 132 +243 106 96 +108 108 101 +241 175 103 +184 184 175 +233 232 231 +131 188 229 +87 136 199 +62 94 136 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/overworld.png b/graphics/pokemon/vivillon/overworld.png new file mode 100644 index 000000000000..6c4d09f88bf1 Binary files /dev/null and b/graphics/pokemon/vivillon/overworld.png differ diff --git a/graphics/pokemon/vivillon/overworld_normal.pal b/graphics/pokemon/vivillon/overworld_normal.pal new file mode 100644 index 000000000000..46f8c176edca --- /dev/null +++ b/graphics/pokemon/vivillon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +212 207 219 +140 138 154 +62 62 60 +249 254 255 +187 193 191 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +152 162 159 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/overworld_shiny.pal b/graphics/pokemon/vivillon/overworld_shiny.pal new file mode 100644 index 000000000000..d61b8186c841 --- /dev/null +++ b/graphics/pokemon/vivillon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +212 207 219 +140 138 154 +110 110 102 +249 254 255 +187 193 191 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +152 162 159 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/poke_ball/overworld.png b/graphics/pokemon/vivillon/poke_ball/overworld.png new file mode 100644 index 000000000000..023615a1bfdc Binary files /dev/null and b/graphics/pokemon/vivillon/poke_ball/overworld.png differ diff --git a/graphics/pokemon/vivillon/poke_ball/overworld_normal.pal b/graphics/pokemon/vivillon/poke_ball/overworld_normal.pal new file mode 100644 index 000000000000..3a7817c8ea3a --- /dev/null +++ b/graphics/pokemon/vivillon/poke_ball/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 168 248 +16 16 16 +62 62 60 +172 52 54 +62 27 26 +111 39 40 +211 101 103 +246 180 182 +86 82 93 +225 224 222 +147 146 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/poke_ball/overworld_shiny.pal b/graphics/pokemon/vivillon/poke_ball/overworld_shiny.pal new file mode 100644 index 000000000000..015dcf290336 --- /dev/null +++ b/graphics/pokemon/vivillon/poke_ball/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 168 248 +16 16 16 +62 39 37 +172 52 54 +62 39 37 +111 39 40 +211 101 103 +246 180 182 +94 91 96 +227 226 224 +169 168 163 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/polar/overworld.png b/graphics/pokemon/vivillon/polar/overworld.png new file mode 100644 index 000000000000..d6c24d599f33 Binary files /dev/null and b/graphics/pokemon/vivillon/polar/overworld.png differ diff --git a/graphics/pokemon/vivillon/polar/overworld_normal.pal b/graphics/pokemon/vivillon/polar/overworld_normal.pal new file mode 100644 index 000000000000..31488b122dc6 --- /dev/null +++ b/graphics/pokemon/vivillon/polar/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +62 67 110 +50 46 78 +62 62 60 +78 94 150 +255 255 255 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +135 165 210 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/polar/overworld_shiny.pal b/graphics/pokemon/vivillon/polar/overworld_shiny.pal new file mode 100644 index 000000000000..c597ac5098b0 --- /dev/null +++ b/graphics/pokemon/vivillon/polar/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +62 67 110 +50 46 78 +110 110 102 +78 94 150 +255 255 255 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +135 165 210 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/river/overworld.png b/graphics/pokemon/vivillon/river/overworld.png new file mode 100644 index 000000000000..983c82d2a5ed Binary files /dev/null and b/graphics/pokemon/vivillon/river/overworld.png differ diff --git a/graphics/pokemon/vivillon/river/overworld_normal.pal b/graphics/pokemon/vivillon/river/overworld_normal.pal new file mode 100644 index 000000000000..2dcfb037187a --- /dev/null +++ b/graphics/pokemon/vivillon/river/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +179 139 81 +106 78 56 +62 62 60 +204 169 95 +153 140 85 +102 92 69 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +49 113 107 +64 159 192 +118 201 210 diff --git a/graphics/pokemon/vivillon/river/overworld_shiny.pal b/graphics/pokemon/vivillon/river/overworld_shiny.pal new file mode 100644 index 000000000000..1ed1cad2a679 --- /dev/null +++ b/graphics/pokemon/vivillon/river/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +179 139 81 +106 78 56 +110 110 102 +204 169 95 +153 140 85 +102 92 69 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +49 113 107 +64 159 192 +118 201 210 diff --git a/graphics/pokemon/vivillon/sandstorm/overworld.png b/graphics/pokemon/vivillon/sandstorm/overworld.png new file mode 100644 index 000000000000..b10bf90418f9 Binary files /dev/null and b/graphics/pokemon/vivillon/sandstorm/overworld.png differ diff --git a/graphics/pokemon/vivillon/sandstorm/overworld_normal.pal b/graphics/pokemon/vivillon/sandstorm/overworld_normal.pal new file mode 100644 index 000000000000..75a5a382dfc6 --- /dev/null +++ b/graphics/pokemon/vivillon/sandstorm/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +221 189 139 +77 60 53 +62 62 60 +240 219 165 +187 180 133 +111 106 82 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +112 95 80 +184 142 112 +0 0 0 diff --git a/graphics/pokemon/vivillon/sandstorm/overworld_shiny.pal b/graphics/pokemon/vivillon/sandstorm/overworld_shiny.pal new file mode 100644 index 000000000000..691552206853 --- /dev/null +++ b/graphics/pokemon/vivillon/sandstorm/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +221 189 139 +77 60 53 +110 110 102 +240 219 165 +187 180 133 +111 106 82 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +112 95 80 +184 142 112 +0 0 0 diff --git a/graphics/pokemon/vivillon/savanna/overworld.png b/graphics/pokemon/vivillon/savanna/overworld.png new file mode 100644 index 000000000000..84cdd7f5b19b Binary files /dev/null and b/graphics/pokemon/vivillon/savanna/overworld.png differ diff --git a/graphics/pokemon/vivillon/savanna/overworld_normal.pal b/graphics/pokemon/vivillon/savanna/overworld_normal.pal new file mode 100644 index 000000000000..357fdd9ce15e --- /dev/null +++ b/graphics/pokemon/vivillon/savanna/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +106 141 190 +73 66 122 +62 62 60 +253 245 136 +162 218 193 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/savanna/overworld_shiny.pal b/graphics/pokemon/vivillon/savanna/overworld_shiny.pal new file mode 100644 index 000000000000..caf64a4a3c57 --- /dev/null +++ b/graphics/pokemon/vivillon/savanna/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +106 141 190 +73 66 122 +110 110 102 +253 245 136 +162 218 193 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/sun/overworld.png b/graphics/pokemon/vivillon/sun/overworld.png new file mode 100644 index 000000000000..48d9294e3df5 Binary files /dev/null and b/graphics/pokemon/vivillon/sun/overworld.png differ diff --git a/graphics/pokemon/vivillon/sun/overworld_normal.pal b/graphics/pokemon/vivillon/sun/overworld_normal.pal new file mode 100644 index 000000000000..b75ea83e3369 --- /dev/null +++ b/graphics/pokemon/vivillon/sun/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +238 171 118 +119 59 53 +62 62 60 +252 244 136 +244 130 154 +140 139 136 +214 94 128 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/sun/overworld_shiny.pal b/graphics/pokemon/vivillon/sun/overworld_shiny.pal new file mode 100644 index 000000000000..8776840e0d5a --- /dev/null +++ b/graphics/pokemon/vivillon/sun/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +238 171 118 +119 59 53 +110 110 102 +252 244 136 +244 130 154 +185 185 176 +214 94 128 +233 232 231 +183 179 171 +97 96 95 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/tundra/overworld.png b/graphics/pokemon/vivillon/tundra/overworld.png new file mode 100644 index 000000000000..6de83f9cb477 Binary files /dev/null and b/graphics/pokemon/vivillon/tundra/overworld.png differ diff --git a/graphics/pokemon/vivillon/tundra/overworld_normal.pal b/graphics/pokemon/vivillon/tundra/overworld_normal.pal new file mode 100644 index 000000000000..2ec3e7a49e48 --- /dev/null +++ b/graphics/pokemon/vivillon/tundra/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +139 190 231 +60 105 138 +62 62 60 +176 224 245 +255 255 255 +140 139 136 +233 232 231 +183 179 171 +97 96 95 +103 157 215 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vivillon/tundra/overworld_shiny.pal b/graphics/pokemon/vivillon/tundra/overworld_shiny.pal new file mode 100644 index 000000000000..142b48fbaf8a --- /dev/null +++ b/graphics/pokemon/vivillon/tundra/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +62 62 60 +139 190 231 +60 105 138 +110 110 102 +176 224 245 +255 255 255 +185 185 176 +233 232 231 +183 179 171 +97 96 95 +103 157 215 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/volbeat/overworld.png b/graphics/pokemon/volbeat/overworld.png new file mode 100644 index 000000000000..00db3d2c22c2 Binary files /dev/null and b/graphics/pokemon/volbeat/overworld.png differ diff --git a/graphics/pokemon/volbeat/overworld_normal.pal b/graphics/pokemon/volbeat/overworld_normal.pal new file mode 100644 index 000000000000..ad118011eba7 --- /dev/null +++ b/graphics/pokemon/volbeat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 48 +0 0 0 +64 64 72 +192 152 56 +224 184 64 +40 40 48 +176 176 192 +120 32 48 +224 112 120 +208 72 80 +232 232 248 +176 56 64 +104 104 112 +136 136 152 +224 208 88 diff --git a/graphics/pokemon/volbeat/overworld_shiny.pal b/graphics/pokemon/volbeat/overworld_shiny.pal new file mode 100644 index 000000000000..bd281bb9e091 --- /dev/null +++ b/graphics/pokemon/volbeat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 48 +0 0 0 +64 64 72 +152 136 56 +192 168 64 +40 40 48 +200 168 208 +0 56 104 +128 184 232 +88 144 208 +232 232 248 +56 112 168 +104 104 112 +168 136 176 +224 208 88 diff --git a/graphics/pokemon/volcanion/overworld.png b/graphics/pokemon/volcanion/overworld.png new file mode 100644 index 000000000000..6d0f1b08992e Binary files /dev/null and b/graphics/pokemon/volcanion/overworld.png differ diff --git a/graphics/pokemon/volcanion/overworld_normal.pal b/graphics/pokemon/volcanion/overworld_normal.pal new file mode 100644 index 000000000000..239bff08ef40 --- /dev/null +++ b/graphics/pokemon/volcanion/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 36 47 +208 174 84 +173 117 45 +16 16 16 +66 22 27 +231 84 81 +147 67 80 +105 176 187 +48 108 140 +193 188 187 +170 76 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/volcanion/overworld_shiny.pal b/graphics/pokemon/volcanion/overworld_shiny.pal new file mode 100644 index 000000000000..1f484364691e --- /dev/null +++ b/graphics/pokemon/volcanion/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 126 37 +226 106 219 +173 93 168 +16 16 16 +136 126 37 +236 219 68 +191 175 37 +105 176 187 +48 108 140 +193 188 187 +170 76 74 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/volcarona/overworld.png b/graphics/pokemon/volcarona/overworld.png new file mode 100644 index 000000000000..5f2a3065f40d Binary files /dev/null and b/graphics/pokemon/volcarona/overworld.png differ diff --git a/graphics/pokemon/volcarona/overworld_normal.pal b/graphics/pokemon/volcarona/overworld_normal.pal new file mode 100644 index 000000000000..4642303ade87 --- /dev/null +++ b/graphics/pokemon/volcarona/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +157 77 65 +72 73 76 +212 86 55 +23 38 15 +235 235 243 +158 200 224 +76 105 86 +220 154 25 +88 131 154 +224 128 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/volcarona/overworld_shiny.pal b/graphics/pokemon/volcarona/overworld_shiny.pal new file mode 100644 index 000000000000..c7a01678aadd --- /dev/null +++ b/graphics/pokemon/volcarona/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 94 29 +72 73 76 +200 152 16 +23 38 15 +100 104 142 +224 224 224 +76 105 86 +232 184 24 +0 221 98 +158 160 210 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/voltorb/hisuian/overworld.png b/graphics/pokemon/voltorb/hisuian/overworld.png new file mode 100644 index 000000000000..9289315c623d Binary files /dev/null and b/graphics/pokemon/voltorb/hisuian/overworld.png differ diff --git a/graphics/pokemon/voltorb/hisuian/overworld_normal.pal b/graphics/pokemon/voltorb/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..72e6674a7ba0 --- /dev/null +++ b/graphics/pokemon/voltorb/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 0 0 +0 0 0 +222 57 24 +238 180 82 +115 16 16 +172 123 65 +255 98 57 +205 205 213 +255 164 106 +238 238 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/voltorb/hisuian/overworld_shiny.pal b/graphics/pokemon/voltorb/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..fda740f72362 --- /dev/null +++ b/graphics/pokemon/voltorb/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +0 0 0 +41 41 41 +238 180 82 +16 16 16 +172 123 65 +49 49 49 +205 205 213 +57 57 57 +238 238 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/voltorb/overworld.png b/graphics/pokemon/voltorb/overworld.png new file mode 100644 index 000000000000..365e07ca2635 Binary files /dev/null and b/graphics/pokemon/voltorb/overworld.png differ diff --git a/graphics/pokemon/voltorb/overworld_normal.pal b/graphics/pokemon/voltorb/overworld_normal.pal new file mode 100644 index 000000000000..bdc59b6fb90b --- /dev/null +++ b/graphics/pokemon/voltorb/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +232 80 80 +240 112 112 +200 32 32 +0 0 0 +200 200 208 +112 16 16 +160 160 160 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/voltorb/overworld_shiny.pal b/graphics/pokemon/voltorb/overworld_shiny.pal new file mode 100644 index 000000000000..a906eed53202 --- /dev/null +++ b/graphics/pokemon/voltorb/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +72 152 248 +144 208 248 +32 104 200 +0 0 0 +200 200 208 +24 80 144 +160 160 160 +232 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vullaby/overworld.png b/graphics/pokemon/vullaby/overworld.png new file mode 100644 index 000000000000..a478e072bcb0 Binary files /dev/null and b/graphics/pokemon/vullaby/overworld.png differ diff --git a/graphics/pokemon/vullaby/overworld_normal.pal b/graphics/pokemon/vullaby/overworld_normal.pal new file mode 100644 index 000000000000..392fc49fee93 --- /dev/null +++ b/graphics/pokemon/vullaby/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +70 54 54 +53 45 45 +182 61 78 +212 117 151 +235 147 168 +94 94 93 +237 237 199 +172 155 121 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vullaby/overworld_shiny.pal b/graphics/pokemon/vullaby/overworld_shiny.pal new file mode 100644 index 000000000000..7811c36566eb --- /dev/null +++ b/graphics/pokemon/vullaby/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +158 84 80 +158 84 80 +158 84 80 +158 84 80 +232 88 144 +158 84 80 +227 227 220 +160 152 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vulpix/alolan/overworld.png b/graphics/pokemon/vulpix/alolan/overworld.png new file mode 100644 index 000000000000..2557ae031421 Binary files /dev/null and b/graphics/pokemon/vulpix/alolan/overworld.png differ diff --git a/graphics/pokemon/vulpix/alolan/overworld_normal.pal b/graphics/pokemon/vulpix/alolan/overworld_normal.pal new file mode 100644 index 000000000000..afefdbb0cf26 --- /dev/null +++ b/graphics/pokemon/vulpix/alolan/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +91 119 160 +211 230 253 +250 251 253 +206 222 238 +71 101 147 +150 188 205 +119 154 169 +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/vulpix/alolan/overworld_shiny.pal b/graphics/pokemon/vulpix/alolan/overworld_shiny.pal new file mode 100644 index 000000000000..9be720ef3d16 --- /dev/null +++ b/graphics/pokemon/vulpix/alolan/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +149 100 152 +237 213 240 +253 250 253 +219 204 230 +140 93 148 +184 156 198 +149 100 152 +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/vulpix/overworld.png b/graphics/pokemon/vulpix/overworld.png new file mode 100644 index 000000000000..e8db777a0050 Binary files /dev/null and b/graphics/pokemon/vulpix/overworld.png differ diff --git a/graphics/pokemon/vulpix/overworld_normal.pal b/graphics/pokemon/vulpix/overworld_normal.pal new file mode 100644 index 000000000000..6b9a00fded3d --- /dev/null +++ b/graphics/pokemon/vulpix/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +88 56 48 +168 80 24 +216 112 48 +240 136 72 +184 88 56 +136 56 56 +88 64 72 +232 232 248 +240 200 152 +120 72 56 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/vulpix/overworld_shiny.pal b/graphics/pokemon/vulpix/overworld_shiny.pal new file mode 100644 index 000000000000..634302db6f28 --- /dev/null +++ b/graphics/pokemon/vulpix/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +104 72 48 +216 112 24 +248 152 48 +248 192 88 +208 136 8 +144 120 40 +88 88 56 +232 232 248 +240 216 176 +144 120 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wailmer/overworld.png b/graphics/pokemon/wailmer/overworld.png new file mode 100644 index 000000000000..9e8a7e494a98 Binary files /dev/null and b/graphics/pokemon/wailmer/overworld.png differ diff --git a/graphics/pokemon/wailmer/overworld_normal.pal b/graphics/pokemon/wailmer/overworld_normal.pal new file mode 100644 index 000000000000..43fa25d0a133 --- /dev/null +++ b/graphics/pokemon/wailmer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 64 96 +104 160 224 +64 128 192 +16 16 16 +48 104 160 +40 96 136 +136 152 168 +96 112 120 +64 72 80 +184 200 216 +80 64 32 +136 120 72 +192 184 120 +168 152 96 +216 232 248 diff --git a/graphics/pokemon/wailmer/overworld_shiny.pal b/graphics/pokemon/wailmer/overworld_shiny.pal new file mode 100644 index 000000000000..b6cd625b49a2 --- /dev/null +++ b/graphics/pokemon/wailmer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 64 96 +168 160 240 +144 136 208 +16 16 16 +120 112 168 +112 88 136 +136 152 168 +96 112 120 +64 72 80 +184 200 216 +80 64 32 +136 120 72 +192 184 120 +168 152 96 +216 232 248 diff --git a/graphics/pokemon/wailord/overworld.png b/graphics/pokemon/wailord/overworld.png new file mode 100644 index 000000000000..7fec5932a5d8 Binary files /dev/null and b/graphics/pokemon/wailord/overworld.png differ diff --git a/graphics/pokemon/wailord/overworld_normal.pal b/graphics/pokemon/wailord/overworld_normal.pal new file mode 100644 index 000000000000..992e70524679 --- /dev/null +++ b/graphics/pokemon/wailord/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +64 128 192 +32 64 104 +104 160 224 +40 104 152 +136 160 176 +184 200 216 +56 72 80 +216 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wailord/overworld_shiny.pal b/graphics/pokemon/wailord/overworld_shiny.pal new file mode 100644 index 000000000000..7b78080c7c21 --- /dev/null +++ b/graphics/pokemon/wailord/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +144 128 192 +80 64 96 +168 160 240 +112 88 136 +136 160 176 +184 200 216 +56 72 80 +216 232 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/walrein/overworld.png b/graphics/pokemon/walrein/overworld.png new file mode 100644 index 000000000000..e6d9ae8b0493 Binary files /dev/null and b/graphics/pokemon/walrein/overworld.png differ diff --git a/graphics/pokemon/walrein/overworld_normal.pal b/graphics/pokemon/walrein/overworld_normal.pal new file mode 100644 index 000000000000..ab057a2c2b19 --- /dev/null +++ b/graphics/pokemon/walrein/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 104 +208 216 232 +0 0 0 +176 184 208 +128 136 152 +136 184 248 +104 160 216 +80 128 176 +248 216 88 +48 64 104 +192 152 24 +80 80 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/walrein/overworld_shiny.pal b/graphics/pokemon/walrein/overworld_shiny.pal new file mode 100644 index 000000000000..070b7487981a --- /dev/null +++ b/graphics/pokemon/walrein/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 104 +208 216 232 +0 0 0 +176 184 208 +128 136 152 +200 160 248 +160 128 208 +128 88 160 +248 216 88 +88 56 112 +192 152 24 +80 80 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wartortle/overworld.png b/graphics/pokemon/wartortle/overworld.png new file mode 100644 index 000000000000..53c5c24a0584 Binary files /dev/null and b/graphics/pokemon/wartortle/overworld.png differ diff --git a/graphics/pokemon/wartortle/overworld_normal.pal b/graphics/pokemon/wartortle/overworld_normal.pal new file mode 100644 index 000000000000..d421a7063e25 --- /dev/null +++ b/graphics/pokemon/wartortle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +64 64 64 +232 232 248 +160 160 160 +64 80 152 +112 152 224 +64 120 216 +56 56 72 +0 0 0 +160 8 48 +184 136 24 +160 88 24 +240 208 112 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wartortle/overworld_shiny.pal b/graphics/pokemon/wartortle/overworld_shiny.pal new file mode 100644 index 000000000000..32dbf8ab5ca9 --- /dev/null +++ b/graphics/pokemon/wartortle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +64 64 64 +232 232 248 +160 160 160 +64 96 152 +128 184 248 +88 144 216 +56 56 72 +0 0 0 +160 8 48 +144 168 24 +96 136 24 +240 208 112 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/watchog/overworld.png b/graphics/pokemon/watchog/overworld.png new file mode 100644 index 000000000000..f2e9ff47338f Binary files /dev/null and b/graphics/pokemon/watchog/overworld.png differ diff --git a/graphics/pokemon/watchog/overworld_normal.pal b/graphics/pokemon/watchog/overworld_normal.pal new file mode 100644 index 000000000000..3e75b9e987be --- /dev/null +++ b/graphics/pokemon/watchog/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 41 57 +115 49 65 +0 0 0 +148 57 57 +47 46 47 +152 152 152 +218 85 79 +230 222 210 +212 157 60 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/watchog/overworld_shiny.pal b/graphics/pokemon/watchog/overworld_shiny.pal new file mode 100644 index 000000000000..0a5ae605c945 --- /dev/null +++ b/graphics/pokemon/watchog/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +90 41 57 +112 48 86 +0 0 0 +144 56 96 +47 46 47 +152 152 152 +212 118 77 +193 223 190 +91 169 85 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weavile/overworld.png b/graphics/pokemon/weavile/overworld.png new file mode 100644 index 000000000000..9a0bb45eaebc Binary files /dev/null and b/graphics/pokemon/weavile/overworld.png differ diff --git a/graphics/pokemon/weavile/overworld_normal.pal b/graphics/pokemon/weavile/overworld_normal.pal new file mode 100644 index 000000000000..155eff3de614 --- /dev/null +++ b/graphics/pokemon/weavile/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 8 32 +160 40 64 +200 48 72 +96 8 24 +48 56 88 +64 96 160 +104 120 176 +0 0 0 +240 176 64 +168 184 200 +112 120 128 +232 232 248 +56 72 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weavile/overworld_shiny.pal b/graphics/pokemon/weavile/overworld_shiny.pal new file mode 100644 index 000000000000..e45ea86c0ddf --- /dev/null +++ b/graphics/pokemon/weavile/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +168 104 56 +232 168 72 +248 208 64 +136 72 32 +120 32 104 +192 88 184 +224 176 224 +0 0 0 +240 176 64 +168 184 200 +112 120 128 +232 232 248 +128 56 128 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weedle/overworld.png b/graphics/pokemon/weedle/overworld.png new file mode 100644 index 000000000000..dd0679be626d Binary files /dev/null and b/graphics/pokemon/weedle/overworld.png differ diff --git a/graphics/pokemon/weedle/overworld_normal.pal b/graphics/pokemon/weedle/overworld_normal.pal new file mode 100644 index 000000000000..be7742350ce3 --- /dev/null +++ b/graphics/pokemon/weedle/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +232 232 248 +96 72 40 +128 128 128 +192 152 64 +184 184 184 +248 208 64 +0 0 0 +192 40 64 +248 112 136 +192 40 64 +160 120 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weedle/overworld_shiny.pal b/graphics/pokemon/weedle/overworld_shiny.pal new file mode 100644 index 000000000000..eb8ffc26db13 --- /dev/null +++ b/graphics/pokemon/weedle/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 64 64 +232 232 248 +96 72 40 +128 128 128 +224 168 16 +184 184 184 +248 248 128 +0 0 0 +192 40 64 +248 184 216 +200 96 112 +160 120 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weepinbell/overworld.png b/graphics/pokemon/weepinbell/overworld.png new file mode 100644 index 000000000000..4f96c0973d73 Binary files /dev/null and b/graphics/pokemon/weepinbell/overworld.png differ diff --git a/graphics/pokemon/weepinbell/overworld_normal.pal b/graphics/pokemon/weepinbell/overworld_normal.pal new file mode 100644 index 000000000000..866d6941aa86 --- /dev/null +++ b/graphics/pokemon/weepinbell/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 64 48 +184 136 56 +0 0 0 +128 96 40 +184 160 48 +240 224 72 +96 152 56 +64 88 40 +136 216 80 +232 232 248 +120 8 64 +168 64 112 +184 184 184 +88 88 88 +240 120 160 diff --git a/graphics/pokemon/weepinbell/overworld_shiny.pal b/graphics/pokemon/weepinbell/overworld_shiny.pal new file mode 100644 index 000000000000..35014b32d92e --- /dev/null +++ b/graphics/pokemon/weepinbell/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +80 64 48 +184 136 56 +0 0 0 +128 96 40 +160 168 64 +224 240 88 +120 160 32 +72 88 40 +168 216 80 +232 232 248 +80 56 112 +152 136 176 +184 184 184 +88 88 88 +192 200 232 diff --git a/graphics/pokemon/weezing/galarian/overworld.png b/graphics/pokemon/weezing/galarian/overworld.png new file mode 100644 index 000000000000..883a3637decd Binary files /dev/null and b/graphics/pokemon/weezing/galarian/overworld.png differ diff --git a/graphics/pokemon/weezing/galarian/overworld_normal.pal b/graphics/pokemon/weezing/galarian/overworld_normal.pal new file mode 100644 index 000000000000..84ad50f8bd2d --- /dev/null +++ b/graphics/pokemon/weezing/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 44 156 +0 0 0 +0 0 0 +148 145 148 +106 56 65 +98 101 98 +205 202 205 +57 165 65 +82 190 90 +57 60 57 +238 234 255 +106 198 115 +115 113 115 +164 161 131 +230 226 230 +123 125 123 diff --git a/graphics/pokemon/weezing/galarian/overworld_shiny.pal b/graphics/pokemon/weezing/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..84ad50f8bd2d --- /dev/null +++ b/graphics/pokemon/weezing/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 44 156 +0 0 0 +0 0 0 +148 145 148 +106 56 65 +98 101 98 +205 202 205 +57 165 65 +82 190 90 +57 60 57 +238 234 255 +106 198 115 +115 113 115 +164 161 131 +230 226 230 +123 125 123 diff --git a/graphics/pokemon/weezing/overworld.png b/graphics/pokemon/weezing/overworld.png new file mode 100644 index 000000000000..f5ddcfe4fb93 Binary files /dev/null and b/graphics/pokemon/weezing/overworld.png differ diff --git a/graphics/pokemon/weezing/overworld_normal.pal b/graphics/pokemon/weezing/overworld_normal.pal new file mode 100644 index 000000000000..357fa9a4eefc --- /dev/null +++ b/graphics/pokemon/weezing/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +144 128 40 +200 184 120 +56 40 56 +120 104 192 +136 128 208 +88 80 120 +0 0 0 +168 168 208 +232 232 248 +104 56 64 +128 72 80 +160 160 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/weezing/overworld_shiny.pal b/graphics/pokemon/weezing/overworld_shiny.pal new file mode 100644 index 000000000000..d43b58cd8238 --- /dev/null +++ b/graphics/pokemon/weezing/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +128 72 128 +184 144 184 +48 72 80 +104 144 136 +136 168 168 +72 112 96 +0 0 0 +168 168 208 +232 232 248 +104 56 64 +128 72 80 +176 160 128 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whimsicott/overworld.png b/graphics/pokemon/whimsicott/overworld.png new file mode 100644 index 000000000000..62057ff6f895 Binary files /dev/null and b/graphics/pokemon/whimsicott/overworld.png differ diff --git a/graphics/pokemon/whimsicott/overworld_normal.pal b/graphics/pokemon/whimsicott/overworld_normal.pal new file mode 100644 index 000000000000..c9e2ef3b0095 --- /dev/null +++ b/graphics/pokemon/whimsicott/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +168 151 83 +106 84 64 +226 218 202 +41 66 22 +194 178 137 +194 178 137 +12 12 12 +41 66 22 +66 119 65 +237 237 247 +106 84 64 +226 218 202 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whimsicott/overworld_shiny.pal b/graphics/pokemon/whimsicott/overworld_shiny.pal new file mode 100644 index 000000000000..1e09d1a78e6e --- /dev/null +++ b/graphics/pokemon/whimsicott/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +110 94 94 +105 89 68 +248 240 232 +56 50 50 +192 192 184 +194 178 137 +9 9 9 +35 86 194 +107 154 170 +237 237 247 +82 57 41 +230 222 205 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whirlipede/overworld.png b/graphics/pokemon/whirlipede/overworld.png new file mode 100644 index 000000000000..d6cc3e73d1ec Binary files /dev/null and b/graphics/pokemon/whirlipede/overworld.png differ diff --git a/graphics/pokemon/whirlipede/overworld_normal.pal b/graphics/pokemon/whirlipede/overworld_normal.pal new file mode 100644 index 000000000000..10ce9dee7ffe --- /dev/null +++ b/graphics/pokemon/whirlipede/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +149 108 231 +64 64 80 +100 85 143 +198 165 255 +184 80 144 +0 0 0 +64 64 80 +40 40 40 +168 128 64 +208 176 96 +149 108 231 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whirlipede/overworld_shiny.pal b/graphics/pokemon/whirlipede/overworld_shiny.pal new file mode 100644 index 000000000000..18192596b39c --- /dev/null +++ b/graphics/pokemon/whirlipede/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 56 88 +64 56 72 +100 85 143 +128 104 160 +88 152 136 +0 0 0 +64 64 80 +40 40 40 +168 128 64 +208 176 96 +96 80 128 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whiscash/overworld.png b/graphics/pokemon/whiscash/overworld.png new file mode 100644 index 000000000000..27d4ee088c1f Binary files /dev/null and b/graphics/pokemon/whiscash/overworld.png differ diff --git a/graphics/pokemon/whiscash/overworld_normal.pal b/graphics/pokemon/whiscash/overworld_normal.pal new file mode 100644 index 000000000000..f714c83272a1 --- /dev/null +++ b/graphics/pokemon/whiscash/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 64 128 +48 64 136 +96 160 216 +96 80 32 +0 0 0 +32 96 160 +64 128 184 +144 120 56 +72 96 160 +104 128 192 +176 160 72 +24 32 104 +208 192 96 +232 232 248 +176 176 192 diff --git a/graphics/pokemon/whiscash/overworld_shiny.pal b/graphics/pokemon/whiscash/overworld_shiny.pal new file mode 100644 index 000000000000..38240b5f2c5e --- /dev/null +++ b/graphics/pokemon/whiscash/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 64 128 +40 48 64 +96 160 216 +96 56 16 +0 0 0 +32 96 160 +64 128 184 +144 80 56 +48 64 96 +80 104 160 +208 96 48 +32 32 40 +248 144 96 +232 232 248 +176 176 192 diff --git a/graphics/pokemon/whismur/overworld.png b/graphics/pokemon/whismur/overworld.png new file mode 100644 index 000000000000..d484493fd2b2 Binary files /dev/null and b/graphics/pokemon/whismur/overworld.png differ diff --git a/graphics/pokemon/whismur/overworld_normal.pal b/graphics/pokemon/whismur/overworld_normal.pal new file mode 100644 index 000000000000..c09aa2d027f2 --- /dev/null +++ b/graphics/pokemon/whismur/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 40 72 +80 56 8 +0 0 0 +232 160 200 +160 88 128 +208 120 168 +192 168 48 +152 136 40 +224 208 72 +64 72 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/whismur/overworld_shiny.pal b/graphics/pokemon/whismur/overworld_shiny.pal new file mode 100644 index 000000000000..79be5822f1f2 --- /dev/null +++ b/graphics/pokemon/whismur/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +96 40 72 +32 104 88 +0 0 0 +232 160 200 +160 88 128 +208 120 168 +96 192 120 +72 176 104 +128 208 136 +64 72 88 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wigglytuff/overworld.png b/graphics/pokemon/wigglytuff/overworld.png new file mode 100644 index 000000000000..c89239412b1b Binary files /dev/null and b/graphics/pokemon/wigglytuff/overworld.png differ diff --git a/graphics/pokemon/wigglytuff/overworld_normal.pal b/graphics/pokemon/wigglytuff/overworld_normal.pal new file mode 100644 index 000000000000..a04a0b9f2ebe --- /dev/null +++ b/graphics/pokemon/wigglytuff/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 56 80 +232 232 248 +0 0 0 +192 192 192 +80 80 80 +240 152 168 +184 104 128 +56 96 200 +112 184 248 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wigglytuff/overworld_shiny.pal b/graphics/pokemon/wigglytuff/overworld_shiny.pal new file mode 100644 index 000000000000..6a51c7dcd6df --- /dev/null +++ b/graphics/pokemon/wigglytuff/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 56 80 +232 232 248 +0 0 0 +192 192 192 +80 80 80 +248 200 216 +208 136 160 +8 152 80 +136 232 144 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wimpod/overworld.png b/graphics/pokemon/wimpod/overworld.png new file mode 100644 index 000000000000..2febc3dd146a Binary files /dev/null and b/graphics/pokemon/wimpod/overworld.png differ diff --git a/graphics/pokemon/wimpod/overworld_normal.pal b/graphics/pokemon/wimpod/overworld_normal.pal new file mode 100644 index 000000000000..800eb3f2a8d2 --- /dev/null +++ b/graphics/pokemon/wimpod/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 247 247 +237 230 80 +190 211 207 +138 159 158 +92 120 119 +166 94 151 +113 62 112 +51 66 66 +101 55 100 +72 39 71 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wimpod/overworld_shiny.pal b/graphics/pokemon/wimpod/overworld_shiny.pal new file mode 100644 index 000000000000..161794f58cd5 --- /dev/null +++ b/graphics/pokemon/wimpod/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +247 247 247 +237 230 80 +224 232 232 +168 184 176 +128 144 144 +248 72 40 +176 32 16 +51 66 66 +101 55 100 +72 39 71 +16 16 16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wingull/overworld.png b/graphics/pokemon/wingull/overworld.png new file mode 100644 index 000000000000..6aaed2667ad4 Binary files /dev/null and b/graphics/pokemon/wingull/overworld.png differ diff --git a/graphics/pokemon/wingull/overworld_normal.pal b/graphics/pokemon/wingull/overworld_normal.pal new file mode 100644 index 000000000000..88ea5da4969c --- /dev/null +++ b/graphics/pokemon/wingull/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 88 +64 104 144 +136 136 152 +48 72 112 +80 144 184 +0 0 0 +232 232 248 +160 200 224 +176 184 200 +104 160 216 +168 144 40 +224 208 72 +104 80 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wingull/overworld_shiny.pal b/graphics/pokemon/wingull/overworld_shiny.pal new file mode 100644 index 000000000000..19fdc5e02dc1 --- /dev/null +++ b/graphics/pokemon/wingull/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 88 +64 104 16 +136 136 152 +40 64 8 +112 168 32 +0 0 0 +232 232 248 +200 224 120 +176 184 200 +144 200 72 +168 144 40 +224 208 72 +104 80 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wishiwashi/overworld.png b/graphics/pokemon/wishiwashi/overworld.png new file mode 100644 index 000000000000..5a47bda39599 Binary files /dev/null and b/graphics/pokemon/wishiwashi/overworld.png differ diff --git a/graphics/pokemon/wishiwashi/overworld_normal.pal b/graphics/pokemon/wishiwashi/overworld_normal.pal new file mode 100644 index 000000000000..4197bbc38f59 --- /dev/null +++ b/graphics/pokemon/wishiwashi/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 241 242 +239 240 241 +211 214 216 +141 207 228 +133 166 182 +89 151 213 +148 123 205 +83 133 181 +64 86 141 +81 83 85 +52 58 64 +23 70 80 +16 49 56 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/wishiwashi/overworld_shiny.pal b/graphics/pokemon/wishiwashi/overworld_shiny.pal new file mode 100644 index 000000000000..ca70dee150e0 --- /dev/null +++ b/graphics/pokemon/wishiwashi/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +240 240 192 +239 240 241 +211 214 216 +141 207 228 +133 166 182 +89 151 213 +148 123 205 +83 133 181 +216 136 0 +81 83 85 +52 58 64 +136 120 104 +16 49 56 +16 16 16 +0 0 0 diff --git a/graphics/pokemon/wobbuffet/overworld.png b/graphics/pokemon/wobbuffet/overworld.png new file mode 100644 index 000000000000..04b136113566 Binary files /dev/null and b/graphics/pokemon/wobbuffet/overworld.png differ diff --git a/graphics/pokemon/wobbuffet/overworld_normal.pal b/graphics/pokemon/wobbuffet/overworld_normal.pal new file mode 100644 index 000000000000..208392f976f7 --- /dev/null +++ b/graphics/pokemon/wobbuffet/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 56 112 +112 200 240 +56 160 192 +56 128 160 +0 0 0 +32 48 64 +56 80 112 +168 184 208 +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/wobbuffet/overworld_shiny.pal b/graphics/pokemon/wobbuffet/overworld_shiny.pal new file mode 100644 index 000000000000..126ef8e8c9e0 --- /dev/null +++ b/graphics/pokemon/wobbuffet/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 24 80 +216 160 240 +192 120 216 +152 104 152 +0 0 0 +32 48 64 +56 80 112 +168 184 208 +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/woobat/overworld.png b/graphics/pokemon/woobat/overworld.png new file mode 100644 index 000000000000..2035262ed4c3 Binary files /dev/null and b/graphics/pokemon/woobat/overworld.png differ diff --git a/graphics/pokemon/woobat/overworld_normal.pal b/graphics/pokemon/woobat/overworld_normal.pal new file mode 100644 index 000000000000..83841034413e --- /dev/null +++ b/graphics/pokemon/woobat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 64 +168 216 240 +0 0 0 +112 168 192 +64 72 88 +29 29 29 +192 104 120 +136 72 80 +240 168 176 +72 104 120 +252 188 219 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/woobat/overworld_shiny.pal b/graphics/pokemon/woobat/overworld_shiny.pal new file mode 100644 index 000000000000..9f71bce45fd3 --- /dev/null +++ b/graphics/pokemon/woobat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 64 +192 232 160 +0 0 0 +120 184 56 +64 72 88 +29 29 29 +192 104 120 +136 72 80 +240 168 176 +72 104 120 +252 188 219 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wooloo/overworld.png b/graphics/pokemon/wooloo/overworld.png new file mode 100644 index 000000000000..3dbcd7fd0fdc Binary files /dev/null and b/graphics/pokemon/wooloo/overworld.png differ diff --git a/graphics/pokemon/wooloo/overworld_normal.pal b/graphics/pokemon/wooloo/overworld_normal.pal new file mode 100644 index 000000000000..8e782102b475 --- /dev/null +++ b/graphics/pokemon/wooloo/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 252 36 +0 0 0 +40 28 24 +52 48 48 +72 56 48 +84 64 56 +108 108 108 +236 236 236 +28 20 20 +148 148 148 +180 180 180 +228 152 152 +0 0 0 +196 196 196 +236 236 236 +252 252 252 diff --git a/graphics/pokemon/wooloo/overworld_shiny.pal b/graphics/pokemon/wooloo/overworld_shiny.pal new file mode 100644 index 000000000000..52f3c558accd --- /dev/null +++ b/graphics/pokemon/wooloo/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +74 74 74 +49 49 49 +255 255 255 +82 65 57 +0 0 0 +255 255 255 +74 74 74 +148 148 148 +172 172 172 +230 156 156 +0 0 0 +24 24 24 +49 41 41 +90 74 74 diff --git a/graphics/pokemon/wooper/overworld.png b/graphics/pokemon/wooper/overworld.png new file mode 100644 index 000000000000..e41562eb17e9 Binary files /dev/null and b/graphics/pokemon/wooper/overworld.png differ diff --git a/graphics/pokemon/wooper/overworld_normal.pal b/graphics/pokemon/wooper/overworld_normal.pal new file mode 100644 index 000000000000..bf2ff38e1e07 --- /dev/null +++ b/graphics/pokemon/wooper/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +144 200 248 +112 176 240 +32 64 120 +96 40 96 +232 232 248 +72 144 200 +176 112 208 +56 112 160 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wooper/overworld_shiny.pal b/graphics/pokemon/wooper/overworld_shiny.pal new file mode 100644 index 000000000000..3818d41187e0 --- /dev/null +++ b/graphics/pokemon/wooper/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +248 216 224 +248 192 208 +104 48 96 +160 64 64 +232 232 248 +216 152 176 +248 120 136 +176 104 152 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wormadam/overworld.png b/graphics/pokemon/wormadam/overworld.png new file mode 100644 index 000000000000..68d418865d76 Binary files /dev/null and b/graphics/pokemon/wormadam/overworld.png differ diff --git a/graphics/pokemon/wormadam/overworld_normal.pal b/graphics/pokemon/wormadam/overworld_normal.pal new file mode 100644 index 000000000000..0a22762e6799 --- /dev/null +++ b/graphics/pokemon/wormadam/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 96 96 +72 72 72 +32 64 32 +0 0 0 +40 168 48 +40 120 72 +232 232 248 +80 168 24 +64 120 24 +136 208 56 +184 200 152 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wormadam/overworld_shiny.pal b/graphics/pokemon/wormadam/overworld_shiny.pal new file mode 100644 index 000000000000..61118908ca8d --- /dev/null +++ b/graphics/pokemon/wormadam/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 128 152 +72 96 104 +32 64 32 +0 0 0 +40 168 48 +40 120 72 +232 232 248 +80 168 24 +64 120 24 +136 208 56 +184 200 152 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wormadam/sandy_cloak/overworld.png b/graphics/pokemon/wormadam/sandy_cloak/overworld.png new file mode 100644 index 000000000000..ed34c20e726c Binary files /dev/null and b/graphics/pokemon/wormadam/sandy_cloak/overworld.png differ diff --git a/graphics/pokemon/wormadam/sandy_cloak/overworld_normal.pal b/graphics/pokemon/wormadam/sandy_cloak/overworld_normal.pal new file mode 100644 index 000000000000..010a4f490ee0 --- /dev/null +++ b/graphics/pokemon/wormadam/sandy_cloak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 96 96 +72 72 72 +0 0 0 +56 32 16 +144 104 40 +80 64 48 +192 144 64 +200 192 136 +232 232 248 +152 144 96 +232 216 136 +192 56 40 +200 112 96 +0 0 0 diff --git a/graphics/pokemon/wormadam/sandy_cloak/overworld_shiny.pal b/graphics/pokemon/wormadam/sandy_cloak/overworld_shiny.pal new file mode 100644 index 000000000000..80ed0f7d9a87 --- /dev/null +++ b/graphics/pokemon/wormadam/sandy_cloak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 128 152 +72 96 104 +0 0 0 +56 32 16 +144 104 40 +80 64 48 +192 144 64 +200 192 136 +232 232 248 +152 144 96 +232 216 136 +192 56 40 +200 112 96 +0 0 0 diff --git a/graphics/pokemon/wormadam/trash_cloak/overworld.png b/graphics/pokemon/wormadam/trash_cloak/overworld.png new file mode 100644 index 000000000000..e380c1c549d7 Binary files /dev/null and b/graphics/pokemon/wormadam/trash_cloak/overworld.png differ diff --git a/graphics/pokemon/wormadam/trash_cloak/overworld_normal.pal b/graphics/pokemon/wormadam/trash_cloak/overworld_normal.pal new file mode 100644 index 000000000000..93c0000a827e --- /dev/null +++ b/graphics/pokemon/wormadam/trash_cloak/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 96 96 +72 72 72 +96 48 64 +0 0 0 +216 56 136 +152 32 88 +160 96 128 +216 120 152 +232 232 248 +248 168 168 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wormadam/trash_cloak/overworld_shiny.pal b/graphics/pokemon/wormadam/trash_cloak/overworld_shiny.pal new file mode 100644 index 000000000000..8e4880455f08 --- /dev/null +++ b/graphics/pokemon/wormadam/trash_cloak/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +96 128 152 +72 96 104 +96 48 64 +0 0 0 +216 56 136 +152 32 88 +160 96 128 +216 120 152 +232 232 248 +248 168 168 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wurmple/overworld.png b/graphics/pokemon/wurmple/overworld.png new file mode 100644 index 000000000000..6879324184de Binary files /dev/null and b/graphics/pokemon/wurmple/overworld.png differ diff --git a/graphics/pokemon/wurmple/overworld_normal.pal b/graphics/pokemon/wurmple/overworld_normal.pal new file mode 100644 index 000000000000..bebe46894084 --- /dev/null +++ b/graphics/pokemon/wurmple/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +240 104 104 +128 32 56 +120 96 24 +240 216 104 +184 48 72 +176 152 56 +80 80 80 +176 144 128 +112 88 80 +248 208 184 +168 168 176 +136 136 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wurmple/overworld_shiny.pal b/graphics/pokemon/wurmple/overworld_shiny.pal new file mode 100644 index 000000000000..47db427639e4 --- /dev/null +++ b/graphics/pokemon/wurmple/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +168 136 216 +72 56 88 +120 96 24 +240 216 104 +120 96 152 +176 152 56 +80 80 80 +176 144 128 +112 88 80 +248 208 184 +168 168 176 +136 136 144 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wynaut/overworld.png b/graphics/pokemon/wynaut/overworld.png new file mode 100644 index 000000000000..6d5aba3d3b41 Binary files /dev/null and b/graphics/pokemon/wynaut/overworld.png differ diff --git a/graphics/pokemon/wynaut/overworld_normal.pal b/graphics/pokemon/wynaut/overworld_normal.pal new file mode 100644 index 000000000000..471fe47f929c --- /dev/null +++ b/graphics/pokemon/wynaut/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +136 208 224 +104 176 192 +24 64 80 +48 104 120 +80 136 152 +40 40 48 +32 80 96 +192 56 56 +112 32 32 +64 64 80 +232 232 248 +96 96 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wynaut/overworld_shiny.pal b/graphics/pokemon/wynaut/overworld_shiny.pal new file mode 100644 index 000000000000..d79dfe5fdfde --- /dev/null +++ b/graphics/pokemon/wynaut/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +240 176 224 +208 144 200 +72 16 80 +136 80 136 +176 112 168 +40 40 48 +104 48 104 +192 56 56 +112 32 32 +64 64 80 +232 232 248 +96 96 120 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wyrdeer/overworld.png b/graphics/pokemon/wyrdeer/overworld.png new file mode 100644 index 000000000000..bb6f602c6f08 Binary files /dev/null and b/graphics/pokemon/wyrdeer/overworld.png differ diff --git a/graphics/pokemon/wyrdeer/overworld_normal.pal b/graphics/pokemon/wyrdeer/overworld_normal.pal new file mode 100644 index 000000000000..cce7305c9ac3 --- /dev/null +++ b/graphics/pokemon/wyrdeer/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 24 24 +238 213 148 +164 139 115 +74 65 65 +0 0 0 +164 156 172 +65 49 74 +197 189 197 +131 131 131 +172 172 189 +246 246 255 +213 213 222 +65 16 8 +180 74 8 +98 90 106 diff --git a/graphics/pokemon/wyrdeer/overworld_shiny.pal b/graphics/pokemon/wyrdeer/overworld_shiny.pal new file mode 100644 index 000000000000..39de1ba1ab17 --- /dev/null +++ b/graphics/pokemon/wyrdeer/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 41 0 +238 197 131 +172 139 90 +90 82 49 +0 0 0 +180 180 106 +65 57 8 +205 205 139 +123 139 106 +164 189 148 +230 238 213 +205 222 189 +49 41 0 +148 90 90 +90 82 49 diff --git a/graphics/pokemon/xatu/overworld.png b/graphics/pokemon/xatu/overworld.png new file mode 100644 index 000000000000..70b4c85391e8 Binary files /dev/null and b/graphics/pokemon/xatu/overworld.png differ diff --git a/graphics/pokemon/xatu/overworld_normal.pal b/graphics/pokemon/xatu/overworld_normal.pal new file mode 100644 index 000000000000..e163237491fa --- /dev/null +++ b/graphics/pokemon/xatu/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 80 32 +128 192 112 +0 0 0 +96 144 56 +232 232 248 +120 16 32 +96 80 0 +240 208 96 +184 200 224 +184 152 48 +176 40 56 +48 48 48 +216 72 88 +64 80 96 +112 128 152 diff --git a/graphics/pokemon/xatu/overworld_shiny.pal b/graphics/pokemon/xatu/overworld_shiny.pal new file mode 100644 index 000000000000..060166738514 --- /dev/null +++ b/graphics/pokemon/xatu/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 80 32 +160 200 112 +0 0 0 +136 160 48 +232 232 248 +120 64 16 +96 80 0 +240 208 96 +184 200 224 +184 152 48 +176 88 56 +48 48 48 +216 120 88 +64 80 96 +112 128 152 diff --git a/graphics/pokemon/xerneas/overworld.png b/graphics/pokemon/xerneas/overworld.png new file mode 100644 index 000000000000..3c25137df4ab Binary files /dev/null and b/graphics/pokemon/xerneas/overworld.png differ diff --git a/graphics/pokemon/xerneas/overworld_normal.pal b/graphics/pokemon/xerneas/overworld_normal.pal new file mode 100644 index 000000000000..cfa83f54653c --- /dev/null +++ b/graphics/pokemon/xerneas/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +32 34 38 +48 181 222 +84 63 30 +164 88 198 +212 193 126 +139 138 111 +218 52 55 +255 208 67 +55 64 205 +92 123 216 +55 57 65 +202 204 210 +84 63 30 +0 0 0 diff --git a/graphics/pokemon/xerneas/overworld_shiny.pal b/graphics/pokemon/xerneas/overworld_shiny.pal new file mode 100644 index 000000000000..6b1dbf99418e --- /dev/null +++ b/graphics/pokemon/xerneas/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +53 51 52 +48 181 222 +84 63 30 +164 88 198 +212 193 126 +139 138 111 +218 52 55 +255 208 67 +25 134 171 +38 199 254 +224 224 224 +202 204 210 +119 117 119 +0 0 0 diff --git a/graphics/pokemon/xurkitree/overworld.png b/graphics/pokemon/xurkitree/overworld.png new file mode 100644 index 000000000000..801ec0194155 Binary files /dev/null and b/graphics/pokemon/xurkitree/overworld.png differ diff --git a/graphics/pokemon/xurkitree/overworld_normal.pal b/graphics/pokemon/xurkitree/overworld_normal.pal new file mode 100644 index 000000000000..7cf96c13611f --- /dev/null +++ b/graphics/pokemon/xurkitree/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 251 241 +193 225 255 +252 180 0 +230 141 0 +171 104 0 +117 149 167 +102 117 125 +74 90 100 +58 74 83 +100 55 0 +43 54 57 +43 53 59 +30 38 43 +29 34 38 +0 0 0 diff --git a/graphics/pokemon/xurkitree/overworld_shiny.pal b/graphics/pokemon/xurkitree/overworld_shiny.pal new file mode 100644 index 000000000000..f8c3ae934d03 --- /dev/null +++ b/graphics/pokemon/xurkitree/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +241 251 241 +193 225 255 +252 180 0 +230 141 0 +171 104 0 +117 149 167 +40 136 184 +8 48 72 +58 74 83 +100 55 0 +24 88 128 +43 53 59 +30 38 43 +8 64 96 +0 0 0 diff --git a/graphics/pokemon/yamask/galarian/overworld.png b/graphics/pokemon/yamask/galarian/overworld.png new file mode 100644 index 000000000000..718654dd3829 Binary files /dev/null and b/graphics/pokemon/yamask/galarian/overworld.png differ diff --git a/graphics/pokemon/yamask/galarian/overworld_normal.pal b/graphics/pokemon/yamask/galarian/overworld_normal.pal new file mode 100644 index 000000000000..0e811796801c --- /dev/null +++ b/graphics/pokemon/yamask/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +140 78 78 +0 0 0 +24 24 24 +56 56 56 +159 83 188 +87 43 104 +77 71 72 +128 128 128 +235 93 91 +194 184 185 +136 126 127 +179 56 54 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/yamask/galarian/overworld_shiny.pal b/graphics/pokemon/yamask/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..0e811796801c --- /dev/null +++ b/graphics/pokemon/yamask/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +140 78 78 +0 0 0 +24 24 24 +56 56 56 +159 83 188 +87 43 104 +77 71 72 +128 128 128 +235 93 91 +194 184 185 +136 126 127 +179 56 54 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/yamask/overworld.png b/graphics/pokemon/yamask/overworld.png new file mode 100644 index 000000000000..68993cfca101 Binary files /dev/null and b/graphics/pokemon/yamask/overworld.png differ diff --git a/graphics/pokemon/yamask/overworld_normal.pal b/graphics/pokemon/yamask/overworld_normal.pal new file mode 100644 index 000000000000..2b661e533eb3 --- /dev/null +++ b/graphics/pokemon/yamask/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +71 71 71 +44 44 44 +255 0 0 +0 0 0 +40 40 40 +129 79 25 +172 154 220 +245 164 33 +199 121 11 +255 218 112 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yamask/overworld_shiny.pal b/graphics/pokemon/yamask/overworld_shiny.pal new file mode 100644 index 000000000000..65c3ee00ccff --- /dev/null +++ b/graphics/pokemon/yamask/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +11 11 11 +72 72 128 +40 40 72 +240 216 40 +0 0 0 +40 40 72 +96 96 96 +152 208 160 +192 192 192 +136 136 136 +208 208 208 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yamper/overworld.png b/graphics/pokemon/yamper/overworld.png new file mode 100644 index 000000000000..2f6432b6de8e Binary files /dev/null and b/graphics/pokemon/yamper/overworld.png differ diff --git a/graphics/pokemon/yamper/overworld_normal.pal b/graphics/pokemon/yamper/overworld_normal.pal new file mode 100644 index 000000000000..5216291b749f --- /dev/null +++ b/graphics/pokemon/yamper/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 12 252 +132 120 12 +240 228 100 +104 76 40 +216 200 16 +204 168 120 +0 0 0 +188 140 76 +252 252 252 +68 52 28 +152 208 104 +76 116 36 +116 116 116 +220 220 220 +152 208 104 +0 0 0 diff --git a/graphics/pokemon/yamper/overworld_shiny.pal b/graphics/pokemon/yamper/overworld_shiny.pal new file mode 100644 index 000000000000..c52e2bbddf1a --- /dev/null +++ b/graphics/pokemon/yamper/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 12 252 +131 123 8 +246 230 98 +139 115 123 +222 205 16 +255 213 222 +0 0 0 +230 189 197 +255 255 255 +65 49 24 +156 213 106 +74 115 32 +115 115 115 +222 222 222 +156 213 106 +0 0 0 diff --git a/graphics/pokemon/yanma/overworld.png b/graphics/pokemon/yanma/overworld.png new file mode 100644 index 000000000000..4f9e45ea9579 Binary files /dev/null and b/graphics/pokemon/yanma/overworld.png differ diff --git a/graphics/pokemon/yanma/overworld_normal.pal b/graphics/pokemon/yanma/overworld_normal.pal new file mode 100644 index 000000000000..576f73c2f7bc --- /dev/null +++ b/graphics/pokemon/yanma/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +56 72 72 +0 0 0 +80 96 136 +184 200 224 +96 24 24 +240 104 80 +184 64 16 +232 232 248 +144 48 8 +216 72 48 +40 104 8 +232 120 48 +160 232 128 +112 192 80 +0 0 0 diff --git a/graphics/pokemon/yanma/overworld_shiny.pal b/graphics/pokemon/yanma/overworld_shiny.pal new file mode 100644 index 000000000000..29807c87b350 --- /dev/null +++ b/graphics/pokemon/yanma/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +248 160 176 +56 72 72 +0 0 0 +80 96 136 +184 200 224 +24 64 112 +120 200 248 +72 128 192 +232 232 248 +48 96 152 +96 160 216 +40 104 8 +120 216 248 +160 232 128 +112 192 80 +0 0 0 diff --git a/graphics/pokemon/yanmega/overworld.png b/graphics/pokemon/yanmega/overworld.png new file mode 100644 index 000000000000..8ec817a0ea0e Binary files /dev/null and b/graphics/pokemon/yanmega/overworld.png differ diff --git a/graphics/pokemon/yanmega/overworld_normal.pal b/graphics/pokemon/yanmega/overworld_normal.pal new file mode 100644 index 000000000000..32551f207d9d --- /dev/null +++ b/graphics/pokemon/yanmega/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 16 8 +64 64 64 +0 0 0 +248 72 48 +208 56 48 +32 48 24 +48 96 32 +56 128 24 +88 8 16 +72 96 112 +232 232 248 +184 184 184 +80 168 48 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yanmega/overworld_shiny.pal b/graphics/pokemon/yanmega/overworld_shiny.pal new file mode 100644 index 000000000000..d25d4b4759fa --- /dev/null +++ b/graphics/pokemon/yanmega/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 16 88 +64 64 64 +0 0 0 +248 72 120 +208 56 120 +32 48 24 +48 96 96 +56 128 128 +88 8 96 +72 96 112 +232 232 248 +184 184 184 +80 168 176 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yungoos/overworld.png b/graphics/pokemon/yungoos/overworld.png new file mode 100644 index 000000000000..7c8f82a2047b Binary files /dev/null and b/graphics/pokemon/yungoos/overworld.png differ diff --git a/graphics/pokemon/yungoos/overworld_normal.pal b/graphics/pokemon/yungoos/overworld_normal.pal new file mode 100644 index 000000000000..a37df815b998 --- /dev/null +++ b/graphics/pokemon/yungoos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +242 193 76 +216 149 54 +151 170 177 +184 126 34 +190 122 86 +227 101 142 +184 115 34 +128 93 38 +206 60 94 +153 84 75 +77 46 42 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yungoos/overworld_shiny.pal b/graphics/pokemon/yungoos/overworld_shiny.pal new file mode 100644 index 000000000000..d2ece18b2796 --- /dev/null +++ b/graphics/pokemon/yungoos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +232 232 248 +224 160 224 +184 104 192 +151 170 177 +184 126 34 +192 128 120 +227 101 142 +136 64 128 +128 93 38 +206 60 94 +176 80 72 +77 46 42 +16 16 16 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yveltal/overworld.png b/graphics/pokemon/yveltal/overworld.png new file mode 100644 index 000000000000..0e6b2a19caf8 Binary files /dev/null and b/graphics/pokemon/yveltal/overworld.png differ diff --git a/graphics/pokemon/yveltal/overworld_normal.pal b/graphics/pokemon/yveltal/overworld_normal.pal new file mode 100644 index 000000000000..3b9046a01f10 --- /dev/null +++ b/graphics/pokemon/yveltal/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +44 34 34 +96 78 80 +44 34 34 +76 60 61 +150 132 134 +191 173 175 +96 78 80 +155 37 42 +212 58 65 +94 192 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/yveltal/overworld_shiny.pal b/graphics/pokemon/yveltal/overworld_shiny.pal new file mode 100644 index 000000000000..d766f39ebc2c --- /dev/null +++ b/graphics/pokemon/yveltal/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +111 111 111 +239 239 239 +46 41 56 +202 201 201 +83 77 92 +117 108 129 +68 62 80 +146 30 58 +196 40 78 +94 192 192 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zacian/crowned_sword/overworld.png b/graphics/pokemon/zacian/crowned_sword/overworld.png new file mode 100644 index 000000000000..b8069ecd51e5 Binary files /dev/null and b/graphics/pokemon/zacian/crowned_sword/overworld.png differ diff --git a/graphics/pokemon/zacian/crowned_sword/overworld_normal.pal b/graphics/pokemon/zacian/crowned_sword/overworld_normal.pal new file mode 100644 index 000000000000..906648fada31 --- /dev/null +++ b/graphics/pokemon/zacian/crowned_sword/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +57 109 164 +197 145 65 +98 93 24 +16 36 41 +213 210 98 +213 76 49 +164 56 32 +246 226 189 +0 0 0 +74 68 16 +74 133 197 +230 226 230 +90 85 24 +32 68 106 +222 109 90 diff --git a/graphics/pokemon/zacian/crowned_sword/overworld_shiny.pal b/graphics/pokemon/zacian/crowned_sword/overworld_shiny.pal new file mode 100644 index 000000000000..906648fada31 --- /dev/null +++ b/graphics/pokemon/zacian/crowned_sword/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +57 109 164 +197 145 65 +98 93 24 +16 36 41 +213 210 98 +213 76 49 +164 56 32 +246 226 189 +0 0 0 +74 68 16 +74 133 197 +230 226 230 +90 85 24 +32 68 106 +222 109 90 diff --git a/graphics/pokemon/zacian/overworld.png b/graphics/pokemon/zacian/overworld.png new file mode 100644 index 000000000000..ed0fb3e1cf7e Binary files /dev/null and b/graphics/pokemon/zacian/overworld.png differ diff --git a/graphics/pokemon/zacian/overworld_normal.pal b/graphics/pokemon/zacian/overworld_normal.pal new file mode 100644 index 000000000000..e101fb2511ee --- /dev/null +++ b/graphics/pokemon/zacian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 252 72 +12 24 36 +32 32 32 +160 56 32 +208 76 48 +216 108 88 +0 0 0 +208 196 48 +192 144 64 +248 232 208 +56 108 160 +72 132 192 +236 204 136 +244 216 164 +32 32 32 +248 232 208 diff --git a/graphics/pokemon/zacian/overworld_shiny.pal b/graphics/pokemon/zacian/overworld_shiny.pal new file mode 100644 index 000000000000..23c75881b25e --- /dev/null +++ b/graphics/pokemon/zacian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 32 41 +0 24 32 +0 24 32 +0 90 115 +0 131 172 +0 0 0 +213 205 49 +197 148 65 +230 230 230 +57 123 139 +106 197 222 +238 205 139 +246 222 164 +0 24 32 +255 238 213 diff --git a/graphics/pokemon/zamazenta/crowned_shield/overworld.png b/graphics/pokemon/zamazenta/crowned_shield/overworld.png new file mode 100644 index 000000000000..8adba6b7404c Binary files /dev/null and b/graphics/pokemon/zamazenta/crowned_shield/overworld.png differ diff --git a/graphics/pokemon/zamazenta/crowned_shield/overworld_normal.pal b/graphics/pokemon/zamazenta/crowned_shield/overworld_normal.pal new file mode 100644 index 000000000000..54124216e5e8 --- /dev/null +++ b/graphics/pokemon/zamazenta/crowned_shield/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +41 64 148 +16 28 57 +164 153 41 +148 28 32 +222 210 32 +205 44 57 +213 210 106 +74 72 16 +172 174 189 +24 44 98 +0 0 0 +32 48 115 +148 157 172 +213 214 222 +205 194 57 diff --git a/graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.pal b/graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.pal new file mode 100644 index 000000000000..54124216e5e8 --- /dev/null +++ b/graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +131 129 131 +41 64 148 +16 28 57 +164 153 41 +148 28 32 +222 210 32 +205 44 57 +213 210 106 +74 72 16 +172 174 189 +24 44 98 +0 0 0 +32 48 115 +148 157 172 +213 214 222 +205 194 57 diff --git a/graphics/pokemon/zamazenta/overworld.png b/graphics/pokemon/zamazenta/overworld.png new file mode 100644 index 000000000000..73ae7fbe8617 Binary files /dev/null and b/graphics/pokemon/zamazenta/overworld.png differ diff --git a/graphics/pokemon/zamazenta/overworld_normal.pal b/graphics/pokemon/zamazenta/overworld_normal.pal new file mode 100644 index 000000000000..dcb72ec73cea --- /dev/null +++ b/graphics/pokemon/zamazenta/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 252 252 +0 0 0 +88 12 20 +28 44 108 +20 32 76 +164 32 44 +204 44 56 +0 0 0 +32 32 32 +0 0 0 +216 208 32 +40 64 148 +208 208 208 +152 156 172 +236 204 136 +208 208 208 diff --git a/graphics/pokemon/zamazenta/overworld_shiny.pal b/graphics/pokemon/zamazenta/overworld_shiny.pal new file mode 100644 index 000000000000..2587ed85acc6 --- /dev/null +++ b/graphics/pokemon/zamazenta/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +57 16 41 +82 0 32 +32 0 8 +123 41 98 +180 74 139 +0 0 0 +32 0 8 +0 0 0 +222 213 32 +148 16 57 +230 230 230 +148 156 172 +238 205 139 +197 197 205 diff --git a/graphics/pokemon/zangoose/overworld.png b/graphics/pokemon/zangoose/overworld.png new file mode 100644 index 000000000000..84fce3accb60 Binary files /dev/null and b/graphics/pokemon/zangoose/overworld.png differ diff --git a/graphics/pokemon/zangoose/overworld_normal.pal b/graphics/pokemon/zangoose/overworld_normal.pal new file mode 100644 index 000000000000..77e03fcc55a5 --- /dev/null +++ b/graphics/pokemon/zangoose/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +120 32 32 +72 80 96 +0 0 0 +232 232 248 +208 72 80 +112 120 136 +208 208 208 +160 48 56 +152 160 176 +224 112 128 +160 48 96 +240 112 184 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zangoose/overworld_shiny.pal b/graphics/pokemon/zangoose/overworld_shiny.pal new file mode 100644 index 000000000000..e7d5ad5f558f --- /dev/null +++ b/graphics/pokemon/zangoose/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 64 +72 120 144 +72 80 96 +0 0 0 +232 232 248 +96 168 184 +112 120 136 +208 208 208 +80 144 160 +152 160 176 +112 192 200 +160 48 56 +120 32 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zapdos/galarian/overworld.png b/graphics/pokemon/zapdos/galarian/overworld.png new file mode 100644 index 000000000000..648884dbe6a6 Binary files /dev/null and b/graphics/pokemon/zapdos/galarian/overworld.png differ diff --git a/graphics/pokemon/zapdos/galarian/overworld_normal.pal b/graphics/pokemon/zapdos/galarian/overworld_normal.pal new file mode 100644 index 000000000000..6dd0f253bdc3 --- /dev/null +++ b/graphics/pokemon/zapdos/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +252 252 252 +40 16 0 +0 0 0 +220 104 28 +248 144 72 +144 64 12 +24 24 24 +56 56 56 +248 216 64 +248 216 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zapdos/galarian/overworld_shiny.pal b/graphics/pokemon/zapdos/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..be143c0a1f8e --- /dev/null +++ b/graphics/pokemon/zapdos/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +41 16 0 +0 0 0 +213 156 24 +238 213 57 +139 90 0 +16 16 16 +32 32 32 +255 255 255 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zapdos/overworld.png b/graphics/pokemon/zapdos/overworld.png new file mode 100644 index 000000000000..cac1899cdb48 Binary files /dev/null and b/graphics/pokemon/zapdos/overworld.png differ diff --git a/graphics/pokemon/zapdos/overworld_normal.pal b/graphics/pokemon/zapdos/overworld_normal.pal new file mode 100644 index 000000000000..33f5fe77565b --- /dev/null +++ b/graphics/pokemon/zapdos/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 40 24 +248 216 64 +248 208 0 +224 168 24 +88 80 64 +184 120 0 +64 64 64 +176 176 208 +232 232 248 +160 112 72 +224 144 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zapdos/overworld_shiny.pal b/graphics/pokemon/zapdos/overworld_shiny.pal new file mode 100644 index 000000000000..094c2a747450 --- /dev/null +++ b/graphics/pokemon/zapdos/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +56 40 24 +248 200 96 +248 168 0 +216 136 16 +88 80 64 +160 96 0 +64 64 64 +176 176 208 +232 232 248 +160 112 72 +224 144 72 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zarude/overworld.png b/graphics/pokemon/zarude/overworld.png new file mode 100644 index 000000000000..2e7aa3c49c6f Binary files /dev/null and b/graphics/pokemon/zarude/overworld.png differ diff --git a/graphics/pokemon/zarude/overworld_normal.pal b/graphics/pokemon/zarude/overworld_normal.pal new file mode 100644 index 000000000000..d8589e15c151 --- /dev/null +++ b/graphics/pokemon/zarude/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +188 72 72 +0 0 0 +52 52 52 +60 64 60 +92 96 92 +44 60 40 +76 104 72 +108 148 88 +148 196 88 +172 172 172 +220 84 88 +136 144 148 +252 252 252 +172 172 172 +148 196 88 +136 148 144 diff --git a/graphics/pokemon/zarude/overworld_shiny.pal b/graphics/pokemon/zarude/overworld_shiny.pal new file mode 100644 index 000000000000..882fbf12421f --- /dev/null +++ b/graphics/pokemon/zarude/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +188 72 72 +0 0 0 +49 49 49 +57 65 57 +90 98 90 +41 57 41 +74 106 74 +106 148 90 +148 197 90 +230 189 131 +222 82 90 +197 164 115 +255 255 255 +230 189 131 +148 197 90 +197 164 115 diff --git a/graphics/pokemon/zebstrika/overworld.png b/graphics/pokemon/zebstrika/overworld.png new file mode 100644 index 000000000000..fbe6fa8f5664 Binary files /dev/null and b/graphics/pokemon/zebstrika/overworld.png differ diff --git a/graphics/pokemon/zebstrika/overworld_normal.pal b/graphics/pokemon/zebstrika/overworld_normal.pal new file mode 100644 index 000000000000..fa9c14b6c0e6 --- /dev/null +++ b/graphics/pokemon/zebstrika/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +57 65 65 +57 65 65 +244 245 247 +204 204 204 +7 7 7 +24 32 32 +7 7 7 +164 164 164 +57 65 65 +112 112 112 +116 168 95 +7 7 7 +7 7 7 +7 7 7 +0 0 0 diff --git a/graphics/pokemon/zebstrika/overworld_shiny.pal b/graphics/pokemon/zebstrika/overworld_shiny.pal new file mode 100644 index 000000000000..27178df2c18e --- /dev/null +++ b/graphics/pokemon/zebstrika/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 64 112 +56 40 64 +244 245 247 +204 204 204 +16 16 16 +30 38 38 +0 0 0 +164 164 164 +30 109 89 +116 116 116 +134 216 33 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zekrom/overworld.png b/graphics/pokemon/zekrom/overworld.png new file mode 100644 index 000000000000..1e509f1d7f24 Binary files /dev/null and b/graphics/pokemon/zekrom/overworld.png differ diff --git a/graphics/pokemon/zekrom/overworld_normal.pal b/graphics/pokemon/zekrom/overworld_normal.pal new file mode 100644 index 000000000000..fe20163c7dc7 --- /dev/null +++ b/graphics/pokemon/zekrom/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +38 37 38 +18 32 11 +30 29 30 +99 99 99 +88 88 88 +62 62 66 +7 137 148 +52 52 56 +13 25 7 +131 40 41 +36 62 91 +204 39 86 +18 93 109 +32 151 194 +37 186 228 diff --git a/graphics/pokemon/zekrom/overworld_shiny.pal b/graphics/pokemon/zekrom/overworld_shiny.pal new file mode 100644 index 000000000000..601b414e3056 --- /dev/null +++ b/graphics/pokemon/zekrom/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +38 37 38 +18 32 11 +48 56 56 +56 112 128 +56 112 128 +56 88 96 +170 195 131 +56 88 96 +13 25 7 +78 78 80 +27 176 53 +78 78 80 +27 176 53 +170 195 131 +37 186 228 diff --git a/graphics/pokemon/zeraora/overworld.png b/graphics/pokemon/zeraora/overworld.png new file mode 100644 index 000000000000..303d776e4321 Binary files /dev/null and b/graphics/pokemon/zeraora/overworld.png differ diff --git a/graphics/pokemon/zeraora/overworld_normal.pal b/graphics/pokemon/zeraora/overworld_normal.pal new file mode 100644 index 000000000000..b21c536126d7 --- /dev/null +++ b/graphics/pokemon/zeraora/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +249 228 85 +218 169 54 +91 208 242 +47 151 198 +239 138 78 +104 108 110 +131 87 37 +26 94 124 +56 61 67 +28 31 34 +16 16 16 +15 15 16 +0 0 0 +32 144 216 +88 208 240 diff --git a/graphics/pokemon/zeraora/overworld_shiny.pal b/graphics/pokemon/zeraora/overworld_shiny.pal new file mode 100644 index 000000000000..7e6fa612bb4b --- /dev/null +++ b/graphics/pokemon/zeraora/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +248 248 248 +184 184 192 +248 216 32 +200 136 8 +216 0 0 +104 108 110 +88 88 96 +56 88 88 +56 61 67 +28 31 34 +16 16 16 +15 15 16 +0 0 0 +200 136 8 +248 216 32 diff --git a/graphics/pokemon/zigzagoon/galarian/overworld.png b/graphics/pokemon/zigzagoon/galarian/overworld.png new file mode 100644 index 000000000000..2785e862ab6e Binary files /dev/null and b/graphics/pokemon/zigzagoon/galarian/overworld.png differ diff --git a/graphics/pokemon/zigzagoon/galarian/overworld_normal.pal b/graphics/pokemon/zigzagoon/galarian/overworld_normal.pal new file mode 100644 index 000000000000..6b74af8455e5 --- /dev/null +++ b/graphics/pokemon/zigzagoon/galarian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +52 87 191 +31 43 44 +36 36 36 +52 52 52 +96 101 106 +62 64 66 +163 164 163 +245 245 246 +0 0 0 +178 179 178 +113 119 125 +238 150 178 +217 74 127 +110 59 81 +64 72 80 +168 184 208 diff --git a/graphics/pokemon/zigzagoon/galarian/overworld_shiny.pal b/graphics/pokemon/zigzagoon/galarian/overworld_shiny.pal new file mode 100644 index 000000000000..6b74af8455e5 --- /dev/null +++ b/graphics/pokemon/zigzagoon/galarian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +52 87 191 +31 43 44 +36 36 36 +52 52 52 +96 101 106 +62 64 66 +163 164 163 +245 245 246 +0 0 0 +178 179 178 +113 119 125 +238 150 178 +217 74 127 +110 59 81 +64 72 80 +168 184 208 diff --git a/graphics/pokemon/zigzagoon/overworld.png b/graphics/pokemon/zigzagoon/overworld.png new file mode 100644 index 000000000000..a8b2449006db Binary files /dev/null and b/graphics/pokemon/zigzagoon/overworld.png differ diff --git a/graphics/pokemon/zigzagoon/overworld_normal.pal b/graphics/pokemon/zigzagoon/overworld_normal.pal new file mode 100644 index 000000000000..def45b750917 --- /dev/null +++ b/graphics/pokemon/zigzagoon/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 32 +216 208 152 +200 176 120 +72 48 24 +120 72 40 +176 128 88 +0 0 0 +152 136 88 +152 96 56 +40 32 24 +64 48 40 +232 232 248 +120 128 144 +168 184 208 +64 72 80 diff --git a/graphics/pokemon/zigzagoon/overworld_shiny.pal b/graphics/pokemon/zigzagoon/overworld_shiny.pal new file mode 100644 index 000000000000..a73c33cd795f --- /dev/null +++ b/graphics/pokemon/zigzagoon/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 32 +216 208 152 +200 176 120 +80 40 8 +168 72 16 +216 120 56 +0 0 0 +152 136 88 +192 96 40 +40 32 24 +64 48 40 +232 232 248 +120 128 144 +168 184 208 +64 72 80 diff --git a/graphics/pokemon/zoroark/hisuian/overworld.png b/graphics/pokemon/zoroark/hisuian/overworld.png new file mode 100644 index 000000000000..7c7b2ece4f8d Binary files /dev/null and b/graphics/pokemon/zoroark/hisuian/overworld.png differ diff --git a/graphics/pokemon/zoroark/hisuian/overworld_normal.pal b/graphics/pokemon/zoroark/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..2f1ce6dd4efc --- /dev/null +++ b/graphics/pokemon/zoroark/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +131 32 32 +230 98 98 +238 131 131 +74 74 82 +180 57 57 +82 82 90 +246 180 180 +205 205 205 +172 172 172 +148 148 148 +255 255 255 +230 205 32 +238 238 255 +213 213 238 diff --git a/graphics/pokemon/zoroark/hisuian/overworld_shiny.pal b/graphics/pokemon/zoroark/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..6790bfcc43ee --- /dev/null +++ b/graphics/pokemon/zoroark/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +0 0 0 +57 16 82 +156 74 230 +189 123 238 +41 49 49 +123 65 197 +41 49 49 +222 172 246 +205 205 205 +115 115 115 +148 148 148 +255 255 255 +230 205 32 +238 238 255 +164 164 180 diff --git a/graphics/pokemon/zoroark/overworld.png b/graphics/pokemon/zoroark/overworld.png new file mode 100644 index 000000000000..56d1cc381642 Binary files /dev/null and b/graphics/pokemon/zoroark/overworld.png differ diff --git a/graphics/pokemon/zoroark/overworld_normal.pal b/graphics/pokemon/zoroark/overworld_normal.pal new file mode 100644 index 000000000000..ee6eef09df38 --- /dev/null +++ b/graphics/pokemon/zoroark/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +4 4 4 +55 58 68 +31 34 50 +112 33 55 +63 11 33 +120 40 64 +168 16 64 +72 16 40 +85 85 91 +164 11 55 +123 166 175 +41 111 114 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zoroark/overworld_shiny.pal b/graphics/pokemon/zoroark/overworld_shiny.pal new file mode 100644 index 000000000000..de3371e25361 --- /dev/null +++ b/graphics/pokemon/zoroark/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +4 4 4 +82 82 90 +31 34 50 +64 40 152 +41 42 64 +64 40 152 +112 48 192 +41 42 64 +120 120 128 +112 48 192 +124 182 191 +41 111 114 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zorua/hisuian/overworld.png b/graphics/pokemon/zorua/hisuian/overworld.png new file mode 100644 index 000000000000..9d98e3fd7af9 Binary files /dev/null and b/graphics/pokemon/zorua/hisuian/overworld.png differ diff --git a/graphics/pokemon/zorua/hisuian/overworld_normal.pal b/graphics/pokemon/zorua/hisuian/overworld_normal.pal new file mode 100644 index 000000000000..eeebf485ae83 --- /dev/null +++ b/graphics/pokemon/zorua/hisuian/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +180 57 57 +0 0 0 +238 131 131 +32 32 49 +148 148 148 +82 82 90 +205 205 205 +255 255 255 +106 106 106 +131 32 32 +164 98 16 +230 98 98 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zorua/hisuian/overworld_shiny.pal b/graphics/pokemon/zorua/hisuian/overworld_shiny.pal new file mode 100644 index 000000000000..8dc5c397afbe --- /dev/null +++ b/graphics/pokemon/zorua/hisuian/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 115 230 +0 0 0 +148 222 230 +24 24 32 +115 115 115 +65 74 74 +156 156 164 +255 255 255 +74 74 74 +24 82 123 +222 189 0 +65 156 230 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zorua/overworld.png b/graphics/pokemon/zorua/overworld.png new file mode 100644 index 000000000000..1198b0526e6f Binary files /dev/null and b/graphics/pokemon/zorua/overworld.png differ diff --git a/graphics/pokemon/zorua/overworld_normal.pal b/graphics/pokemon/zorua/overworld_normal.pal new file mode 100644 index 000000000000..55fb61c8600f --- /dev/null +++ b/graphics/pokemon/zorua/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +19 20 50 +151 49 76 +109 47 43 +0 0 0 +106 106 142 +81 81 128 +43 44 101 +43 44 101 +238 238 247 +81 81 128 +198 196 235 +16 70 96 +19 20 50 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zorua/overworld_shiny.pal b/graphics/pokemon/zorua/overworld_shiny.pal new file mode 100644 index 000000000000..a2c904905cda --- /dev/null +++ b/graphics/pokemon/zorua/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 48 +8 176 208 +0 112 192 +0 0 0 +96 72 72 +72 48 48 +49 32 32 +43 44 101 +238 238 247 +81 81 128 +198 196 235 +16 70 96 +19 20 50 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zubat/overworld.png b/graphics/pokemon/zubat/overworld.png new file mode 100644 index 000000000000..3b51b35c6ccd Binary files /dev/null and b/graphics/pokemon/zubat/overworld.png differ diff --git a/graphics/pokemon/zubat/overworld_normal.pal b/graphics/pokemon/zubat/overworld_normal.pal new file mode 100644 index 000000000000..96f060973c8d --- /dev/null +++ b/graphics/pokemon/zubat/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 56 64 +64 112 120 +80 184 176 +0 0 0 +136 96 184 +184 184 192 +96 64 128 +0 0 0 +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/zubat/overworld_shiny.pal b/graphics/pokemon/zubat/overworld_shiny.pal new file mode 100644 index 000000000000..59cd81a4a9fa --- /dev/null +++ b/graphics/pokemon/zubat/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 56 24 +96 120 56 +160 184 88 +0 0 0 +216 144 184 +184 184 192 +184 112 136 +0 0 0 +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/zweilous/overworld.png b/graphics/pokemon/zweilous/overworld.png new file mode 100644 index 000000000000..d53b9b3538a6 Binary files /dev/null and b/graphics/pokemon/zweilous/overworld.png differ diff --git a/graphics/pokemon/zweilous/overworld_normal.pal b/graphics/pokemon/zweilous/overworld_normal.pal new file mode 100644 index 000000000000..3dc394b8ba3e --- /dev/null +++ b/graphics/pokemon/zweilous/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +33 25 33 +33 25 33 +55 47 55 +11 11 11 +71 71 71 +0 0 0 +47 87 155 +87 138 218 +18 40 95 +147 55 40 +71 71 71 +185 172 189 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zweilous/overworld_shiny.pal b/graphics/pokemon/zweilous/overworld_shiny.pal new file mode 100644 index 000000000000..a4a575882146 --- /dev/null +++ b/graphics/pokemon/zweilous/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 40 40 +33 25 33 +80 64 64 +11 11 11 +96 88 80 +0 0 0 +88 104 48 +112 152 72 +40 40 24 +147 55 40 +71 71 71 +185 172 189 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zygarde/overworld.png b/graphics/pokemon/zygarde/overworld.png new file mode 100644 index 000000000000..3df96aa87f24 Binary files /dev/null and b/graphics/pokemon/zygarde/overworld.png differ diff --git a/graphics/pokemon/zygarde/overworld_normal.pal b/graphics/pokemon/zygarde/overworld_normal.pal new file mode 100644 index 000000000000..19a4ee581e94 --- /dev/null +++ b/graphics/pokemon/zygarde/overworld_normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +60 67 57 +40 45 39 +147 188 62 +27 29 26 +82 129 59 +53 86 44 +142 150 126 +209 218 182 +21 52 10 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/zygarde/overworld_shiny.pal b/graphics/pokemon/zygarde/overworld_shiny.pal new file mode 100644 index 000000000000..93af7b25f0f7 --- /dev/null +++ b/graphics/pokemon/zygarde/overworld_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 176 232 +16 16 16 +202 201 201 +164 163 163 +43 184 147 +27 29 26 +26 129 102 +10 78 59 +107 203 178 +136 229 205 +4 46 34 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/types/none.png b/graphics/types/none.png new file mode 100644 index 000000000000..a2ea01d556a3 Binary files /dev/null and b/graphics/types/none.png differ diff --git a/graphics/types/stellar.png b/graphics/types/stellar.png new file mode 100644 index 000000000000..ee18b997eae4 Binary files /dev/null and b/graphics/types/stellar.png differ diff --git a/graphics/weather/fog.pal b/graphics/weather/fog.pal index 6191b6692855..1f40dd4e74f5 100644 --- a/graphics/weather/fog.pal +++ b/graphics/weather/fog.pal @@ -10,7 +10,7 @@ JASC-PAL 213 213 213 222 222 222 164 164 164 -255 0 255 +0 0 0 255 0 255 255 0 255 180 180 180 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 6a2728aff4a0..1b514b8ed3ed 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -22,7 +22,7 @@ STARTERGFXDIR := graphics/starter_choose NAMINGGFXDIR := graphics/naming_screen 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 +types := none normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy stellar contest_types := cool beauty cute smart tough ### Tilesets ### @@ -238,6 +238,15 @@ $(FONTGFXDIR)/narrow.latfont: $(FONTGFXDIR)/latin_narrow.png $(FONTGFXDIR)/small_narrow.latfont: $(FONTGFXDIR)/latin_small_narrow.png $(GFX) $< $@ +$(FONTGFXDIR)/narrower.latfont: $(FONTGFXDIR)/latin_narrower.png + $(GFX) $< $@ + +$(FONTGFXDIR)/small_narrower.latfont: $(FONTGFXDIR)/latin_small_narrower.png + $(GFX) $< $@ + +$(FONTGFXDIR)/short_narrow.latfont: $(FONTGFXDIR)/latin_short_narrow.png + $(GFX) $< $@ + $(FONTGFXDIR)/small.hwjpnfont: $(FONTGFXDIR)/japanese_small.png $(GFX) $< $@ diff --git a/include/battle.h b/include/battle.h index 19a7ca24253b..c48dc7883504 100644 --- a/include/battle.h +++ b/include/battle.h @@ -15,8 +15,30 @@ #include "pokeball.h" #include "battle_debug.h" #include "battle_dynamax.h" +#include "battle_terastal.h" +#include "battle_gimmick.h" #include "random.h" // for rng_value_t +// Helper for accessing command arguments and advancing gBattlescriptCurrInstr. +// +// For example accuracycheck is defined as: +// +// .macro accuracycheck failInstr:req, move:req +// .byte 0x1 +// .4byte \failInstr +// .2byte \move +// .endm +// +// Which corresponds to: +// +// CMD_ARGS(const u8 *failInstr, u16 move); +// +// The arguments can be accessed as cmd->failInstr and cmd->move. +// gBattlescriptCurrInstr = cmd->nextInstr; advances to the next instruction. +#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) const u8 nextInstr[0]; } *const cmd UNUSED = (const void *)gBattlescriptCurrInstr +#define VARIOUS_ARGS(...) CMD_ARGS(u8 battler, u8 id, ##__VA_ARGS__) +#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) + // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \ @@ -291,7 +313,8 @@ struct AI_SavedBattleMon u16 ability; u16 moves[MAX_MON_MOVES]; u16 heldItem; - u16 species; + u16 species:15; + u16 saved:1; u8 types[3]; }; @@ -322,6 +345,12 @@ struct SwitchinCandidate bool8 hypotheticalStatus; }; +struct SimulatedDamage +{ + s32 expected; + s32 minimum; +}; + // Ai Data used when deciding which move to use, computed only once before each turn's start. struct AiLogicData { @@ -333,7 +362,7 @@ 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 - s32 simulatedDmg[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // attacker, target, moveIndex + struct SimulatedDamage 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]; @@ -528,24 +557,6 @@ struct LinkBattlerHeader struct BattleEnigmaBerry battleEnigmaBerry; }; -struct MegaEvolutionData -{ - u8 toEvolve; // As flags using gBitTable. - bool8 alreadyEvolved[4]; // Array id is used for mon position. - u8 battlerId; - bool8 playerSelect; - u8 triggerSpriteId; -}; - -struct UltraBurstData -{ - u8 toBurst; // As flags using gBitTable. - bool8 alreadyBursted[4]; // Array id is used for mon position. - u8 battlerId; - bool8 playerSelect; - u8 triggerSpriteId; -}; - struct Illusion { u8 on; @@ -557,39 +568,32 @@ struct Illusion struct ZMoveData { - u8 viable:1; // current move can become a z move + u8 viable:1; // current move can become a z move u8 viewing:1; // if player is viewing the z move name instead of regular moves - u8 active:1; // is z move being used this turn - u8 zStatusActive:1; - u8 healReplacement:1; - u8 activeCategory:2; // active z move category - u8 zUnused:1; - u8 triggerSpriteId; + u8 healReplacement:6; u8 possibleZMoves[MAX_BATTLERS_COUNT]; - u16 chosenZMove; // z move of move cursor is on - u8 effect; - u8 used[MAX_BATTLERS_COUNT]; //one per bank for multi-battles - u16 toBeUsed[MAX_BATTLERS_COUNT]; // z moves per battler to be used u16 baseMoves[MAX_BATTLERS_COUNT]; - u8 categories[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 activeCategory; - u8 categories[MAX_BATTLERS_COUNT]; - u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move + u16 baseMoves[MAX_BATTLERS_COUNT]; // base move of Max Move u16 lastUsedBaseMove; u16 levelUpHP; }; +struct BattleGimmickData +{ + u8 usableGimmick[MAX_BATTLERS_COUNT]; // first usable gimmick that can be selected for each battler + bool8 playerSelect; // used to toggle trigger and update battle UI + u8 triggerSpriteId; + u8 indicatorSpriteId[MAX_BATTLERS_COUNT]; + u8 toActivate; // stores whether a battler should transform at start of turn as bitfield + u8 activeGimmick[NUM_BATTLE_SIDES][PARTY_SIZE]; // stores the active gimmick for each party member + bool8 activated[MAX_BATTLERS_COUNT][GIMMICKS_COUNT]; // stores whether a trainer has used gimmick +}; + struct LostItem { u16 originalItem:15; @@ -687,6 +691,7 @@ struct BattleStruct } multiBuffer; u8 wishPerishSongState; u8 wishPerishSongBattlerId; + u8 aiCalcInProgress:1; u8 overworldWeatherDone:1; u8 startingStatusDone:1; u8 isAtkCancelerForCalledMove:1; // Certain cases in atk canceler should only be checked once, when the original move is called, however others need to be checked the twice. @@ -707,15 +712,17 @@ struct BattleStruct u8 magnitudeBasePower; u8 presentBasePower; u8 roostTypes[MAX_BATTLERS_COUNT][2]; - u8 savedBattlerTarget; + u8 savedBattlerTarget[5]; + u8 savedBattlerAttacker[5]; + u8 savedTargetCount:4; + u8 savedAttackerCount:4; bool8 ateBoost[MAX_BATTLERS_COUNT]; u8 activeAbilityPopUps; // as bits for each battler u8 abilityPopUpSpriteIds[MAX_BATTLERS_COUNT][2]; // two per battler bool8 throwingPokeBall; - struct MegaEvolutionData mega; - struct UltraBurstData burst; struct ZMoveData zmove; struct DynamaxData dynamax; + struct BattleGimmickData gimmick; const u8 *trainerSlideMsg; bool8 trainerSlideLowHpMsgDone; u8 introState; @@ -743,6 +750,9 @@ struct BattleStruct u8 blunderPolicy:1; // should blunder policy activate u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky u8 bouncedMoveIsUsed:1; + u8 descriptionSubmenu:1; // For Move Description window in move selection screen + u8 ackBallUseBtn:1; // Used for the last used ball feature + u8 ballSwapped:1; // Used for the last used ball feature 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. @@ -771,6 +781,7 @@ struct BattleStruct u8 trainerSlideDynamaxMsgDone:1; u8 pledgeMove:1; u8 isSkyBattle:1; + u8 poisonPuppeteerConfusion: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]; @@ -784,6 +795,10 @@ struct BattleStruct u8 quickClawRandom[MAX_BATTLERS_COUNT]; u8 quickDrawRandom[MAX_BATTLERS_COUNT]; u8 shellSideArmCategory[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT]; + u8 boosterEnergyActivates; + u8 distortedTypeMatchups; + u8 categoryOverride; // for Z-Moves and Max Moves + u32 stellarBoostFlags[NUM_BATTLE_SIDES]; // stored as a bitfield of flags for all types for each side }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, @@ -812,9 +827,9 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #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))) - -#define IS_BATTLER_TYPELESS(battlerId)(GetBattlerType(battlerId, 0) == TYPE_MYSTERY && GetBattlerType(battlerId, 1) == TYPE_MYSTERY && GetBattlerType(battlerId, 2) == TYPE_MYSTERY) +#define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0, FALSE) == type || GetBattlerType(battlerId, 1, FALSE) == type || (GetBattlerType(battlerId, 2, FALSE) != TYPE_MYSTERY && GetBattlerType(battlerId, 2, FALSE) == type))) +#define IS_BATTLER_OF_BASE_TYPE(battlerId, type)((GetBattlerType(battlerId, 0, TRUE) == type || GetBattlerType(battlerId, 1, TRUE) == type || (GetBattlerType(battlerId, 2, TRUE) != TYPE_MYSTERY && GetBattlerType(battlerId, 2, TRUE) == type))) +#define IS_BATTLER_TYPELESS(battlerId)(GetBattlerType(battlerId, 0, FALSE) == TYPE_MYSTERY && GetBattlerType(battlerId, 1, FALSE) == TYPE_MYSTERY && GetBattlerType(battlerId, 2, FALSE) == TYPE_MYSTERY) #define SET_BATTLER_TYPE(battlerId, type) \ { \ @@ -1110,6 +1125,7 @@ extern u16 gLastThrownBall; extern u16 gBallToDisplay; extern bool8 gLastUsedBallMenuPresent; extern u8 gPartyCriticalHits[PARTY_SIZE]; +extern u8 gCategoryIconSpriteId; static inline u32 GetBattlerPosition(u32 battler) { diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h index e2c78040918c..431ed3569898 100644 --- a/include/battle_ai_main.h +++ b/include/battle_ai_main.h @@ -1,6 +1,9 @@ #ifndef GUARD_BATTLE_AI_MAIN_H #define GUARD_BATTLE_AI_MAIN_H + +typedef s32 (*AiScoreFunc)(u32, u32, u32, s32); + #define UNKNOWN_NO_OF_HITS UINT32_MAX // return vals for BattleAI_ChooseMoveOrAction @@ -29,26 +32,26 @@ #define STAT_CHANGE_ACC 10 #define STAT_CHANGE_EVASION 11 -#define BEST_DAMAGE_MOVE 1 // Move with the most amount of hits with the best accuracy/effect -#define POWERFUL_STATUS_MOVE 10 // Moves with this score will be chosen over a move that faints target +#define BEST_DAMAGE_MOVE 1 // Move with the most amount of hits with the best accuracy/effect +#define POWERFUL_STATUS_MOVE 10 // Moves with this score will be chosen over a move that faints target +#define NO_DAMAGE_OR_FAILS -20 // Move fails or does no damage -// Temporary scores that are added together to determine a final score at the at of AI_CalcMoveEffectScore +// Scores given in AI_CalcMoveEffectScore +#define NO_INCREASE 0 #define WEAK_EFFECT 1 #define DECENT_EFFECT 2 -#define GOOD_EFFECT 4 -#define BEST_EFFECT 6 - -// AI_CalcMoveEffectScore final score -#define NOT_GOOD_ENOUGH 0 // Not worth using over a damaging move -#define GOOD_MOVE_EFFECTS 2 // Worth using over a damaging move -#define PREFERRED_MOVE_EFFECTS 3 // Worth using over a damagin move and is better then DECENT_EFFECT -#define BEST_MOVE_EFFECTS 4 // Best possible move effects. E.g. stat boosting moves that boost multiply moves +#define GOOD_EFFECT 3 +#define BEST_EFFECT 4 // AI_TryToFaint #define FAST_KILL 6 // AI is faster and faints target #define SLOW_KILL 4 // AI is slower and faints target #define LAST_CHANCE 2 // AI faints to target. It should try and do damage with a priority move +// AI_Risky +#define STRONG_RISKY_EFFECT 3 +#define AVERAGE_RISKY_EFFECT 2 + #include "test_runner.h" // Logs for debugging AI tests. @@ -66,6 +69,14 @@ score += val; \ } while (0) \ +#define ADJUST_AND_RETURN_SCORE(val) \ + do \ + { \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, sBattler_AI, AI_THINKING_STRUCT->movesetIndex, val); \ + score += val; \ + return score; \ + } while (0) \ + #define ADJUST_SCORE_PTR(val) \ do \ { \ @@ -94,6 +105,7 @@ void Ai_InitPartyStruct(void); void Ai_UpdateSwitchInData(u32 battler); void Ai_UpdateFaintData(u32 battler); void SetAiLogicDataForTurn(struct AiLogicData *aiData); +void ResetDynamicAiFunc(void); extern u8 sBattler_AI; diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index 16f6468757c1..b52e792612e9 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, bool32 switchAfterMonKOd); +u32 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd); bool32 ShouldSwitch(u32 battler, bool32 emitResult); #endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 8ea2141aee12..94d895e8fd08 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -3,8 +3,20 @@ #define FOE(battler) ((BATTLE_OPPOSITE(battler)) & BIT_SIDE) -#define AI_STRIKES_FIRST(battlerAi, battlerDef, move)((AI_WhoStrikesFirst(battlerAi, battlerDef, move) == AI_IS_FASTER)) +// Roll boundaries used by AI when scoring. Doesn't affect actual damage dealt. +#define MAX_ROLL_PERCENTAGE DMG_ROLL_PERCENT_HI +#define MIN_ROLL_PERCENTAGE DMG_ROLL_PERCENT_LO +#define DMG_ROLL_PERCENTAGE ((MAX_ROLL_PERCENTAGE + MIN_ROLL_PERCENTAGE + 1) / 2) // Controls the damage roll the AI sees for the default roll. By default the 9th roll is seen +enum DamageRollType +{ + DMG_ROLL_LOWEST, + DMG_ROLL_DEFAULT, + DMG_ROLL_HIGHEST, +}; + +bool32 AI_IsFaster(u32 battlerAi, u32 battlerDef, u32 move); +bool32 AI_IsSlower(u32 battlerAi, u32 battlerDef, u32 move); bool32 AI_RandLessThan(u32 val); bool32 IsAiVsAiBattle(void); bool32 BattlerHasAi(u32 battlerId); @@ -30,6 +42,7 @@ s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered); bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk); u32 NoOfHitsForTargetToFaintAI(u32 battlerDef, u32 battlerAtk); u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef); +u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget); bool32 CanTargetMoveFaintAi(u32 move, u32 battlerDef, u32 battlerAtk, u32 nHits); bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dmgMod); s32 AI_DecideKnownAbilityForTurn(u32 battlerId); @@ -82,8 +95,8 @@ bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility); bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect); bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category); s32 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); +struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, enum DamageRollType rollType); +struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather, enum DamageRollType rollType); bool32 AI_IsDamagedByRecoil(u32 battler); u32 GetNoOfHitsToKO(u32 dmg, s32 hp); u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef); @@ -103,6 +116,7 @@ bool32 HasMoveWithAdditionalEffect(u32 battlerId, u32 moveEffect); bool32 HasMoveWithCriticalHitChance(u32 battlerId); bool32 HasMoveWithMoveEffectExcept(u32 battlerId, u32 moveEffect, u32 exception); bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool32 ignoreStatus, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect); +bool32 HasAnyKnownMove(u32 battlerId); bool32 IsAromaVeilProtectedMove(u32 move); bool32 IsNonVolatileStatusMoveEffect(u32 moveEffect); bool32 IsStatLoweringMoveEffect(u32 moveEffect); @@ -176,8 +190,8 @@ bool32 PartyHasMoveCategory(u32 battlerId, u32 category); bool32 SideHasMoveCategory(u32 battlerId, u32 category); // score increases -void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score); -void IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score); +u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId); +u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId); void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); @@ -185,11 +199,11 @@ 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); -s32 AI_CheckMoveEffects(u32 battlerAtk, u32 battlerDef, u32 move, s32 score, struct AiLogicData *aiData, u32 predictedMove, bool32 isDoubleBattle); +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker, enum DamageRollType rollType); s32 AI_TryToClearStats(u32 battlerAtk, u32 battlerDef, bool32 isDoubleBattle); bool32 AI_ShouldCopyStatChanges(u32 battlerAtk, u32 battlerDef); bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData); void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); +bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData); #endif //GUARD_BATTLE_AI_UTIL_H diff --git a/include/battle_anim.h b/include/battle_anim.h index 8e21f2f84d1a..ce9749685ef6 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -537,6 +537,9 @@ extern const union AnimCmd *const gAnims_WillOWispOrb[]; extern const union AnimCmd *const gAnims_FirePlume[]; // battle_anim_dragon.c +extern const union AnimCmd *const gAnims_DreepyMissilePlayer[]; +extern const union AnimCmd *const gAnims_DreepyMissileOpponent[]; +extern const union AnimCmd *const gAnims_DreepyMissileOpponentNotDrag[]; extern const union AnimCmd *const gAnims_DragonBreathFire[]; extern const union AnimCmd *const gAnims_DragonRageFirePlume[]; extern const union AffineAnimCmd *const gAffineAnims_DragonRageFire[]; diff --git a/include/battle_anim_scripts.h b/include/battle_anim_scripts.h new file mode 100644 index 000000000000..d97aaa421df6 --- /dev/null +++ b/include/battle_anim_scripts.h @@ -0,0 +1,940 @@ +#ifndef GUARD_BATTLE_ANIM_SCRIPTS_H +#define GUARD_BATTLE_ANIM_SCRIPTS_H + +extern const u8 Move_NONE[]; +extern const u8 Move_POUND[]; +extern const u8 Move_KARATE_CHOP[]; +extern const u8 Move_DOUBLE_SLAP[]; +extern const u8 Move_COMET_PUNCH[]; +extern const u8 Move_MEGA_PUNCH[]; +extern const u8 Move_PAY_DAY[]; +extern const u8 Move_FIRE_PUNCH[]; +extern const u8 Move_ICE_PUNCH[]; +extern const u8 Move_THUNDER_PUNCH[]; +extern const u8 Move_SCRATCH[]; +extern const u8 Move_VISE_GRIP[]; +extern const u8 Move_GUILLOTINE[]; +extern const u8 Move_RAZOR_WIND[]; +extern const u8 Move_SWORDS_DANCE[]; +extern const u8 Move_CUT[]; +extern const u8 Move_GUST[]; +extern const u8 Move_WING_ATTACK[]; +extern const u8 Move_WHIRLWIND[]; +extern const u8 Move_FLY[]; +extern const u8 Move_BIND[]; +extern const u8 Move_SLAM[]; +extern const u8 Move_VINE_WHIP[]; +extern const u8 Move_STOMP[]; +extern const u8 Move_DOUBLE_KICK[]; +extern const u8 Move_MEGA_KICK[]; +extern const u8 Move_JUMP_KICK[]; +extern const u8 Move_ROLLING_KICK[]; +extern const u8 Move_SAND_ATTACK[]; +extern const u8 Move_HEADBUTT[]; +extern const u8 Move_HORN_ATTACK[]; +extern const u8 Move_FURY_ATTACK[]; +extern const u8 Move_HORN_DRILL[]; +extern const u8 Move_TACKLE[]; +extern const u8 Move_BODY_SLAM[]; +extern const u8 Move_WRAP[]; +extern const u8 Move_TAKE_DOWN[]; +extern const u8 Move_THRASH[]; +extern const u8 Move_DOUBLE_EDGE[]; +extern const u8 Move_TAIL_WHIP[]; +extern const u8 Move_POISON_STING[]; +extern const u8 Move_TWINEEDLE[]; +extern const u8 Move_PIN_MISSILE[]; +extern const u8 Move_LEER[]; +extern const u8 Move_BITE[]; +extern const u8 Move_GROWL[]; +extern const u8 Move_ROAR[]; +extern const u8 Move_SING[]; +extern const u8 Move_SUPERSONIC[]; +extern const u8 Move_SONIC_BOOM[]; +extern const u8 Move_DISABLE[]; +extern const u8 Move_ACID[]; +extern const u8 Move_EMBER[]; +extern const u8 Move_FLAMETHROWER[]; +extern const u8 Move_MIST[]; +extern const u8 Move_WATER_GUN[]; +extern const u8 Move_HYDRO_PUMP[]; +extern const u8 Move_SURF[]; +extern const u8 Move_ICE_BEAM[]; +extern const u8 Move_BLIZZARD[]; +extern const u8 Move_PSYBEAM[]; +extern const u8 Move_BUBBLE_BEAM[]; +extern const u8 Move_AURORA_BEAM[]; +extern const u8 Move_HYPER_BEAM[]; +extern const u8 Move_PECK[]; +extern const u8 Move_DRILL_PECK[]; +extern const u8 Move_SUBMISSION[]; +extern const u8 Move_LOW_KICK[]; +extern const u8 Move_COUNTER[]; +extern const u8 Move_SEISMIC_TOSS[]; +extern const u8 Move_STRENGTH[]; +extern const u8 Move_ABSORB[]; +extern const u8 Move_MEGA_DRAIN[]; +extern const u8 Move_LEECH_SEED[]; +extern const u8 Move_GROWTH[]; +extern const u8 Move_RAZOR_LEAF[]; +extern const u8 Move_SOLAR_BEAM[]; +extern const u8 Move_POISON_POWDER[]; +extern const u8 Move_STUN_SPORE[]; +extern const u8 Move_SLEEP_POWDER[]; +extern const u8 Move_PETAL_DANCE[]; +extern const u8 Move_STRING_SHOT[]; +extern const u8 Move_DRAGON_RAGE[]; +extern const u8 Move_FIRE_SPIN[]; +extern const u8 Move_THUNDER_SHOCK[]; +extern const u8 Move_THUNDERBOLT[]; +extern const u8 Move_THUNDER_WAVE[]; +extern const u8 Move_THUNDER[]; +extern const u8 Move_ROCK_THROW[]; +extern const u8 Move_EARTHQUAKE[]; +extern const u8 Move_FISSURE[]; +extern const u8 Move_DIG[]; +extern const u8 Move_TOXIC[]; +extern const u8 Move_CONFUSION[]; +extern const u8 Move_PSYCHIC[]; +extern const u8 Move_HYPNOSIS[]; +extern const u8 Move_MEDITATE[]; +extern const u8 Move_AGILITY[]; +extern const u8 Move_QUICK_ATTACK[]; +extern const u8 Move_RAGE[]; +extern const u8 Move_TELEPORT[]; +extern const u8 Move_NIGHT_SHADE[]; +extern const u8 Move_MIMIC[]; +extern const u8 Move_SCREECH[]; +extern const u8 Move_DOUBLE_TEAM[]; +extern const u8 Move_RECOVER[]; +extern const u8 Move_HARDEN[]; +extern const u8 Move_MINIMIZE[]; +extern const u8 Move_SMOKESCREEN[]; +extern const u8 Move_CONFUSE_RAY[]; +extern const u8 Move_WITHDRAW[]; +extern const u8 Move_DEFENSE_CURL[]; +extern const u8 Move_BARRIER[]; +extern const u8 Move_LIGHT_SCREEN[]; +extern const u8 Move_HAZE[]; +extern const u8 Move_REFLECT[]; +extern const u8 Move_FOCUS_ENERGY[]; +extern const u8 Move_BIDE[]; +extern const u8 Move_METRONOME[]; +extern const u8 Move_MIRROR_MOVE[]; +extern const u8 Move_SELF_DESTRUCT[]; +extern const u8 Move_EGG_BOMB[]; +extern const u8 Move_LICK[]; +extern const u8 Move_SMOG[]; +extern const u8 Move_SLUDGE[]; +extern const u8 Move_BONE_CLUB[]; +extern const u8 Move_FIRE_BLAST[]; +extern const u8 Move_WATERFALL[]; +extern const u8 Move_CLAMP[]; +extern const u8 Move_SWIFT[]; +extern const u8 Move_SKULL_BASH[]; +extern const u8 Move_SPIKE_CANNON[]; +extern const u8 Move_CONSTRICT[]; +extern const u8 Move_AMNESIA[]; +extern const u8 Move_KINESIS[]; +extern const u8 Move_SOFT_BOILED[]; +extern const u8 Move_HIGH_JUMP_KICK[]; +extern const u8 Move_GLARE[]; +extern const u8 Move_DREAM_EATER[]; +extern const u8 Move_POISON_GAS[]; +extern const u8 Move_BARRAGE[]; +extern const u8 Move_LEECH_LIFE[]; +extern const u8 Move_LOVELY_KISS[]; +extern const u8 Move_SKY_ATTACK[]; +extern const u8 Move_TRANSFORM[]; +extern const u8 Move_BUBBLE[]; +extern const u8 Move_DIZZY_PUNCH[]; +extern const u8 Move_SPORE[]; +extern const u8 Move_FLASH[]; +extern const u8 Move_PSYWAVE[]; +extern const u8 Move_SPLASH[]; +extern const u8 Move_ACID_ARMOR[]; +extern const u8 Move_CRABHAMMER[]; +extern const u8 Move_EXPLOSION[]; +extern const u8 Move_FURY_SWIPES[]; +extern const u8 Move_BONEMERANG[]; +extern const u8 Move_REST[]; +extern const u8 Move_ROCK_SLIDE[]; +extern const u8 Move_HYPER_FANG[]; +extern const u8 Move_SHARPEN[]; +extern const u8 Move_CONVERSION[]; +extern const u8 Move_TRI_ATTACK[]; +extern const u8 Move_SUPER_FANG[]; +extern const u8 Move_SLASH[]; +extern const u8 Move_SUBSTITUTE[]; +extern const u8 Move_STRUGGLE[]; +extern const u8 Move_SKETCH[]; +extern const u8 Move_TRIPLE_KICK[]; +extern const u8 Move_THIEF[]; +extern const u8 Move_SPIDER_WEB[]; +extern const u8 Move_MIND_READER[]; +extern const u8 Move_NIGHTMARE[]; +extern const u8 Move_FLAME_WHEEL[]; +extern const u8 Move_SNORE[]; +extern const u8 Move_CURSE[]; +extern const u8 Move_FLAIL[]; +extern const u8 Move_CONVERSION_2[]; +extern const u8 Move_AEROBLAST[]; +extern const u8 Move_COTTON_SPORE[]; +extern const u8 Move_REVERSAL[]; +extern const u8 Move_SPITE[]; +extern const u8 Move_POWDER_SNOW[]; +extern const u8 Move_PROTECT[]; +extern const u8 Move_MACH_PUNCH[]; +extern const u8 Move_SCARY_FACE[]; +extern const u8 Move_FEINT_ATTACK[]; +extern const u8 Move_SWEET_KISS[]; +extern const u8 Move_BELLY_DRUM[]; +extern const u8 Move_SLUDGE_BOMB[]; +extern const u8 Move_MUD_SLAP[]; +extern const u8 Move_OCTAZOOKA[]; +extern const u8 Move_SPIKES[]; +extern const u8 Move_ZAP_CANNON[]; +extern const u8 Move_FORESIGHT[]; +extern const u8 Move_DESTINY_BOND[]; +extern const u8 Move_PERISH_SONG[]; +extern const u8 Move_ICY_WIND[]; +extern const u8 Move_DETECT[]; +extern const u8 Move_BONE_RUSH[]; +extern const u8 Move_LOCK_ON[]; +extern const u8 Move_OUTRAGE[]; +extern const u8 Move_SANDSTORM[]; +extern const u8 Move_GIGA_DRAIN[]; +extern const u8 Move_ENDURE[]; +extern const u8 Move_CHARM[]; +extern const u8 Move_ROLLOUT[]; +extern const u8 Move_FALSE_SWIPE[]; +extern const u8 Move_SWAGGER[]; +extern const u8 Move_MILK_DRINK[]; +extern const u8 Move_SPARK[]; +extern const u8 Move_FURY_CUTTER[]; +extern const u8 Move_STEEL_WING[]; +extern const u8 Move_MEAN_LOOK[]; +extern const u8 Move_ATTRACT[]; +extern const u8 Move_SLEEP_TALK[]; +extern const u8 Move_HEAL_BELL[]; +extern const u8 Move_RETURN[]; +extern const u8 Move_PRESENT[]; +extern const u8 Move_FRUSTRATION[]; +extern const u8 Move_SAFEGUARD[]; +extern const u8 Move_PAIN_SPLIT[]; +extern const u8 Move_SACRED_FIRE[]; +extern const u8 Move_MAGNITUDE[]; +extern const u8 Move_DYNAMIC_PUNCH[]; +extern const u8 Move_MEGAHORN[]; +extern const u8 Move_DRAGON_BREATH[]; +extern const u8 Move_BATON_PASS[]; +extern const u8 Move_ENCORE[]; +extern const u8 Move_PURSUIT[]; +extern const u8 Move_RAPID_SPIN[]; +extern const u8 Move_SWEET_SCENT[]; +extern const u8 Move_IRON_TAIL[]; +extern const u8 Move_METAL_CLAW[]; +extern const u8 Move_VITAL_THROW[]; +extern const u8 Move_MORNING_SUN[]; +extern const u8 Move_SYNTHESIS[]; +extern const u8 Move_MOONLIGHT[]; +extern const u8 Move_HIDDEN_POWER[]; +extern const u8 Move_CROSS_CHOP[]; +extern const u8 Move_TWISTER[]; +extern const u8 Move_RAIN_DANCE[]; +extern const u8 Move_SUNNY_DAY[]; +extern const u8 Move_CRUNCH[]; +extern const u8 Move_MIRROR_COAT[]; +extern const u8 Move_PSYCH_UP[]; +extern const u8 Move_EXTREME_SPEED[]; +extern const u8 Move_ANCIENT_POWER[]; +extern const u8 Move_SHADOW_BALL[]; +extern const u8 Move_FUTURE_SIGHT[]; +extern const u8 Move_ROCK_SMASH[]; +extern const u8 Move_WHIRLPOOL[]; +extern const u8 Move_BEAT_UP[]; +extern const u8 Move_FAKE_OUT[]; +extern const u8 Move_UPROAR[]; +extern const u8 Move_STOCKPILE[]; +extern const u8 Move_SPIT_UP[]; +extern const u8 Move_SWALLOW[]; +extern const u8 Move_HEAT_WAVE[]; +extern const u8 Move_HAIL[]; +extern const u8 Move_TORMENT[]; +extern const u8 Move_FLATTER[]; +extern const u8 Move_WILL_O_WISP[]; +extern const u8 Move_MEMENTO[]; +extern const u8 Move_FACADE[]; +extern const u8 Move_FOCUS_PUNCH[]; +extern const u8 Move_SMELLING_SALTS[]; +extern const u8 Move_FOLLOW_ME[]; +extern const u8 Move_NATURE_POWER[]; +extern const u8 Move_CHARGE[]; +extern const u8 Move_TAUNT[]; +extern const u8 Move_HELPING_HAND[]; +extern const u8 Move_TRICK[]; +extern const u8 Move_ROLE_PLAY[]; +extern const u8 Move_WISH[]; +extern const u8 Move_ASSIST[]; +extern const u8 Move_INGRAIN[]; +extern const u8 Move_SUPERPOWER[]; +extern const u8 Move_MAGIC_COAT[]; +extern const u8 Move_RECYCLE[]; +extern const u8 Move_REVENGE[]; +extern const u8 Move_BRICK_BREAK[]; +extern const u8 Move_YAWN[]; +extern const u8 Move_KNOCK_OFF[]; +extern const u8 Move_ENDEAVOR[]; +extern const u8 Move_ERUPTION[]; +extern const u8 Move_SKILL_SWAP[]; +extern const u8 Move_IMPRISON[]; +extern const u8 Move_REFRESH[]; +extern const u8 Move_GRUDGE[]; +extern const u8 Move_SNATCH[]; +extern const u8 Move_SECRET_POWER[]; +extern const u8 Move_DIVE[]; +extern const u8 Move_ARM_THRUST[]; +extern const u8 Move_CAMOUFLAGE[]; +extern const u8 Move_TAIL_GLOW[]; +extern const u8 Move_LUSTER_PURGE[]; +extern const u8 Move_MIST_BALL[]; +extern const u8 Move_FEATHER_DANCE[]; +extern const u8 Move_TEETER_DANCE[]; +extern const u8 Move_BLAZE_KICK[]; +extern const u8 Move_MUD_SPORT[]; +extern const u8 Move_ICE_BALL[]; +extern const u8 Move_NEEDLE_ARM[]; +extern const u8 Move_SLACK_OFF[]; +extern const u8 Move_HYPER_VOICE[]; +extern const u8 Move_POISON_FANG[]; +extern const u8 Move_CRUSH_CLAW[]; +extern const u8 Move_BLAST_BURN[]; +extern const u8 Move_HYDRO_CANNON[]; +extern const u8 Move_METEOR_MASH[]; +extern const u8 Move_ASTONISH[]; +extern const u8 Move_WEATHER_BALL[]; +extern const u8 Move_AROMATHERAPY[]; +extern const u8 Move_FAKE_TEARS[]; +extern const u8 Move_AIR_CUTTER[]; +extern const u8 Move_OVERHEAT[]; +extern const u8 Move_ODOR_SLEUTH[]; +extern const u8 Move_ROCK_TOMB[]; +extern const u8 Move_SILVER_WIND[]; +extern const u8 Move_METAL_SOUND[]; +extern const u8 Move_GRASS_WHISTLE[]; +extern const u8 Move_TICKLE[]; +extern const u8 Move_COSMIC_POWER[]; +extern const u8 Move_WATER_SPOUT[]; +extern const u8 Move_SIGNAL_BEAM[]; +extern const u8 Move_SHADOW_PUNCH[]; +extern const u8 Move_EXTRASENSORY[]; +extern const u8 Move_SKY_UPPERCUT[]; +extern const u8 Move_SAND_TOMB[]; +extern const u8 Move_SHEER_COLD[]; +extern const u8 Move_MUDDY_WATER[]; +extern const u8 Move_BULLET_SEED[]; +extern const u8 Move_AERIAL_ACE[]; +extern const u8 Move_ICICLE_SPEAR[]; +extern const u8 Move_IRON_DEFENSE[]; +extern const u8 Move_BLOCK[]; +extern const u8 Move_HOWL[]; +extern const u8 Move_DRAGON_CLAW[]; +extern const u8 Move_FRENZY_PLANT[]; +extern const u8 Move_BULK_UP[]; +extern const u8 Move_BOUNCE[]; +extern const u8 Move_MUD_SHOT[]; +extern const u8 Move_POISON_TAIL[]; +extern const u8 Move_COVET[]; +extern const u8 Move_VOLT_TACKLE[]; +extern const u8 Move_MAGICAL_LEAF[]; +extern const u8 Move_WATER_SPORT[]; +extern const u8 Move_CALM_MIND[]; +extern const u8 Move_LEAF_BLADE[]; +extern const u8 Move_DRAGON_DANCE[]; +extern const u8 Move_ROCK_BLAST[]; +extern const u8 Move_SHOCK_WAVE[]; +extern const u8 Move_WATER_PULSE[]; +extern const u8 Move_DOOM_DESIRE[]; +extern const u8 Move_PSYCHO_BOOST[]; +extern const u8 Move_ROOST[]; +extern const u8 Move_GRAVITY[]; +extern const u8 Move_MIRACLE_EYE[]; +extern const u8 Move_WAKE_UP_SLAP[]; +extern const u8 Move_HAMMER_ARM[]; +extern const u8 Move_GYRO_BALL[]; +extern const u8 Move_HEALING_WISH[]; +extern const u8 Move_BRINE[]; +extern const u8 Move_NATURAL_GIFT[]; +extern const u8 Move_FEINT[]; +extern const u8 Move_PLUCK[]; +extern const u8 Move_TAILWIND[]; +extern const u8 Move_ACUPRESSURE[]; +extern const u8 Move_METAL_BURST[]; +extern const u8 Move_U_TURN[]; +extern const u8 Move_CLOSE_COMBAT[]; +extern const u8 Move_PAYBACK[]; +extern const u8 Move_ASSURANCE[]; +extern const u8 Move_EMBARGO[]; +extern const u8 Move_FLING[]; +extern const u8 Move_PSYCHO_SHIFT[]; +extern const u8 Move_TRUMP_CARD[]; +extern const u8 Move_HEAL_BLOCK[]; +extern const u8 Move_WRING_OUT[]; +extern const u8 Move_POWER_TRICK[]; +extern const u8 Move_GASTRO_ACID[]; +extern const u8 Move_LUCKY_CHANT[]; +extern const u8 Move_ME_FIRST[]; +extern const u8 Move_COPYCAT[]; +extern const u8 Move_POWER_SWAP[]; +extern const u8 Move_GUARD_SWAP[]; +extern const u8 Move_PUNISHMENT[]; +extern const u8 Move_LAST_RESORT[]; +extern const u8 Move_WORRY_SEED[]; +extern const u8 Move_SUCKER_PUNCH[]; +extern const u8 Move_TOXIC_SPIKES[]; +extern const u8 Move_HEART_SWAP[]; +extern const u8 Move_AQUA_RING[]; +extern const u8 Move_MAGNET_RISE[]; +extern const u8 Move_FLARE_BLITZ[]; +extern const u8 Move_FORCE_PALM[]; +extern const u8 Move_AURA_SPHERE[]; +extern const u8 Move_ROCK_POLISH[]; +extern const u8 Move_POISON_JAB[]; +extern const u8 Move_DARK_PULSE[]; +extern const u8 Move_NIGHT_SLASH[]; +extern const u8 Move_AQUA_TAIL[]; +extern const u8 Move_SEED_BOMB[]; +extern const u8 Move_AIR_SLASH[]; +extern const u8 Move_X_SCISSOR[]; +extern const u8 Move_BUG_BUZZ[]; +extern const u8 Move_DRAGON_PULSE[]; +extern const u8 Move_DRAGON_RUSH[]; +extern const u8 Move_POWER_GEM[]; +extern const u8 Move_DRAIN_PUNCH[]; +extern const u8 Move_VACUUM_WAVE[]; +extern const u8 Move_FOCUS_BLAST[]; +extern const u8 Move_ENERGY_BALL[]; +extern const u8 Move_BRAVE_BIRD[]; +extern const u8 Move_EARTH_POWER[]; +extern const u8 Move_SWITCHEROO[]; +extern const u8 Move_GIGA_IMPACT[]; +extern const u8 Move_NASTY_PLOT[]; +extern const u8 Move_BULLET_PUNCH[]; +extern const u8 Move_AVALANCHE[]; +extern const u8 Move_ICE_SHARD[]; +extern const u8 Move_SHADOW_CLAW[]; +extern const u8 Move_THUNDER_FANG[]; +extern const u8 Move_ICE_FANG[]; +extern const u8 Move_FIRE_FANG[]; +extern const u8 Move_SHADOW_SNEAK[]; +extern const u8 Move_MUD_BOMB[]; +extern const u8 Move_PSYCHO_CUT[]; +extern const u8 Move_ZEN_HEADBUTT[]; +extern const u8 Move_MIRROR_SHOT[]; +extern const u8 Move_FLASH_CANNON[]; +extern const u8 Move_ROCK_CLIMB[]; +extern const u8 Move_DEFOG[]; +extern const u8 Move_TRICK_ROOM[]; +extern const u8 Move_DRACO_METEOR[]; +extern const u8 Move_DISCHARGE[]; +extern const u8 Move_LAVA_PLUME[]; +extern const u8 Move_LEAF_STORM[]; +extern const u8 Move_POWER_WHIP[]; +extern const u8 Move_ROCK_WRECKER[]; +extern const u8 Move_CROSS_POISON[]; +extern const u8 Move_GUNK_SHOT[]; +extern const u8 Move_IRON_HEAD[]; +extern const u8 Move_MAGNET_BOMB[]; +extern const u8 Move_STONE_EDGE[]; +extern const u8 Move_CAPTIVATE[]; +extern const u8 Move_STEALTH_ROCK[]; +extern const u8 Move_GRASS_KNOT[]; +extern const u8 Move_CHATTER[]; +extern const u8 Move_JUDGMENT[]; +extern const u8 Move_BUG_BITE[]; +extern const u8 Move_CHARGE_BEAM[]; +extern const u8 Move_WOOD_HAMMER[]; +extern const u8 Move_AQUA_JET[]; +extern const u8 Move_ATTACK_ORDER[]; +extern const u8 Move_DEFEND_ORDER[]; +extern const u8 Move_HEAL_ORDER[]; +extern const u8 Move_HEAD_SMASH[]; +extern const u8 Move_DOUBLE_HIT[]; +extern const u8 Move_ROAR_OF_TIME[]; +extern const u8 Move_SPACIAL_REND[]; +extern const u8 Move_LUNAR_DANCE[]; +extern const u8 Move_CRUSH_GRIP[]; +extern const u8 Move_MAGMA_STORM[]; +extern const u8 Move_DARK_VOID[]; +extern const u8 Move_SEED_FLARE[]; +extern const u8 Move_OMINOUS_WIND[]; +extern const u8 Move_SHADOW_FORCE[]; +extern const u8 Move_HONE_CLAWS[]; +extern const u8 Move_WIDE_GUARD[]; +extern const u8 Move_GUARD_SPLIT[]; +extern const u8 Move_POWER_SPLIT[]; +extern const u8 Move_WONDER_ROOM[]; +extern const u8 Move_PSYSHOCK[]; +extern const u8 Move_VENOSHOCK[]; +extern const u8 Move_AUTOTOMIZE[]; +extern const u8 Move_RAGE_POWDER[]; +extern const u8 Move_TELEKINESIS[]; +extern const u8 Move_MAGIC_ROOM[]; +extern const u8 Move_SMACK_DOWN[]; +extern const u8 Move_STORM_THROW[]; +extern const u8 Move_FLAME_BURST[]; +extern const u8 Move_SLUDGE_WAVE[]; +extern const u8 Move_QUIVER_DANCE[]; +extern const u8 Move_HEAVY_SLAM[]; +extern const u8 Move_SYNCHRONOISE[]; +extern const u8 Move_ELECTRO_BALL[]; +extern const u8 Move_SOAK[]; +extern const u8 Move_FLAME_CHARGE[]; +extern const u8 Move_COIL[]; +extern const u8 Move_LOW_SWEEP[]; +extern const u8 Move_ACID_SPRAY[]; +extern const u8 Move_FOUL_PLAY[]; +extern const u8 Move_SIMPLE_BEAM[]; +extern const u8 Move_ENTRAINMENT[]; +extern const u8 Move_AFTER_YOU[]; +extern const u8 Move_ROUND[]; +extern const u8 Move_ECHOED_VOICE[]; +extern const u8 Move_CHIP_AWAY[]; +extern const u8 Move_CLEAR_SMOG[]; +extern const u8 Move_STORED_POWER[]; +extern const u8 Move_QUICK_GUARD[]; +extern const u8 Move_ALLY_SWITCH[]; +extern const u8 Move_SCALD[]; +extern const u8 Move_SHELL_SMASH[]; +extern const u8 Move_HEAL_PULSE[]; +extern const u8 Move_HEX[]; +extern const u8 Move_SKY_DROP[]; +extern const u8 Move_SHIFT_GEAR[]; +extern const u8 Move_CIRCLE_THROW[]; +extern const u8 Move_INCINERATE[]; +extern const u8 Move_QUASH[]; +extern const u8 Move_ACROBATICS[]; +extern const u8 Move_REFLECT_TYPE[]; +extern const u8 Move_RETALIATE[]; +extern const u8 Move_FINAL_GAMBIT[]; +extern const u8 Move_BESTOW[]; +extern const u8 Move_INFERNO[]; +extern const u8 Move_WATER_PLEDGE[]; +extern const u8 Move_FIRE_PLEDGE[]; +extern const u8 Move_GRASS_PLEDGE[]; +extern const u8 Move_VOLT_SWITCH[]; +extern const u8 Move_STRUGGLE_BUG[]; +extern const u8 Move_BULLDOZE[]; +extern const u8 Move_FROST_BREATH[]; +extern const u8 Move_DRAGON_TAIL[]; +extern const u8 Move_WORK_UP[]; +extern const u8 Move_ELECTROWEB[]; +extern const u8 Move_WILD_CHARGE[]; +extern const u8 Move_DRILL_RUN[]; +extern const u8 Move_DUAL_CHOP[]; +extern const u8 Move_HEART_STAMP[]; +extern const u8 Move_HORN_LEECH[]; +extern const u8 Move_SACRED_SWORD[]; +extern const u8 Move_RAZOR_SHELL[]; +extern const u8 Move_HEAT_CRASH[]; +extern const u8 Move_LEAF_TORNADO[]; +extern const u8 Move_STEAMROLLER[]; +extern const u8 Move_COTTON_GUARD[]; +extern const u8 Move_NIGHT_DAZE[]; +extern const u8 Move_PSYSTRIKE[]; +extern const u8 Move_TAIL_SLAP[]; +extern const u8 Move_HURRICANE[]; +extern const u8 Move_HEAD_CHARGE[]; +extern const u8 Move_GEAR_GRIND[]; +extern const u8 Move_SEARING_SHOT[]; +extern const u8 Move_TECHNO_BLAST[]; +extern const u8 Move_RELIC_SONG[]; +extern const u8 Move_SECRET_SWORD[]; +extern const u8 Move_GLACIATE[]; +extern const u8 Move_BOLT_STRIKE[]; +extern const u8 Move_BLUE_FLARE[]; +extern const u8 Move_FIERY_DANCE[]; +extern const u8 Move_FREEZE_SHOCK[]; +extern const u8 Move_ICE_BURN[]; +extern const u8 Move_SNARL[]; +extern const u8 Move_ICICLE_CRASH[]; +extern const u8 Move_V_CREATE[]; +extern const u8 Move_FUSION_FLARE[]; +extern const u8 Move_FUSION_BOLT[]; +extern const u8 Move_FLYING_PRESS[]; +extern const u8 Move_MAT_BLOCK[]; +extern const u8 Move_BELCH[]; +extern const u8 Move_ROTOTILLER[]; +extern const u8 Move_STICKY_WEB[]; +extern const u8 Move_FELL_STINGER[]; +extern const u8 Move_PHANTOM_FORCE[]; +extern const u8 Move_TRICK_OR_TREAT[]; +extern const u8 Move_NOBLE_ROAR[]; +extern const u8 Move_ION_DELUGE[]; +extern const u8 Move_PARABOLIC_CHARGE[]; +extern const u8 Move_FORESTS_CURSE[]; +extern const u8 Move_PETAL_BLIZZARD[]; +extern const u8 Move_FREEZE_DRY[]; +extern const u8 Move_DISARMING_VOICE[]; +extern const u8 Move_PARTING_SHOT[]; +extern const u8 Move_TOPSY_TURVY[]; +extern const u8 Move_DRAINING_KISS[]; +extern const u8 Move_CRAFTY_SHIELD[]; +extern const u8 Move_FLOWER_SHIELD[]; +extern const u8 Move_GRASSY_TERRAIN[]; +extern const u8 Move_MISTY_TERRAIN[]; +extern const u8 Move_ELECTRIFY[]; +extern const u8 Move_PLAY_ROUGH[]; +extern const u8 Move_FAIRY_WIND[]; +extern const u8 Move_MOONBLAST[]; +extern const u8 Move_BOOMBURST[]; +extern const u8 Move_FAIRY_LOCK[]; +extern const u8 Move_KINGS_SHIELD[]; +extern const u8 Move_PLAY_NICE[]; +extern const u8 Move_CONFIDE[]; +extern const u8 Move_DIAMOND_STORM[]; +extern const u8 Move_STEAM_ERUPTION[]; +extern const u8 Move_HYPERSPACE_HOLE[]; +extern const u8 Move_WATER_SHURIKEN[]; +extern const u8 Move_MYSTICAL_FIRE[]; +extern const u8 Move_SPIKY_SHIELD[]; +extern const u8 Move_AROMATIC_MIST[]; +extern const u8 Move_EERIE_IMPULSE[]; +extern const u8 Move_VENOM_DRENCH[]; +extern const u8 Move_POWDER[]; +extern const u8 Move_GEOMANCY[]; +extern const u8 Move_MAGNETIC_FLUX[]; +extern const u8 Move_HAPPY_HOUR[]; +extern const u8 Move_ELECTRIC_TERRAIN[]; +extern const u8 Move_DAZZLING_GLEAM[]; +extern const u8 Move_CELEBRATE[]; +extern const u8 Move_HOLD_HANDS[]; +extern const u8 Move_BABY_DOLL_EYES[]; +extern const u8 Move_NUZZLE[]; +extern const u8 Move_HOLD_BACK[]; +extern const u8 Move_INFESTATION[]; +extern const u8 Move_POWER_UP_PUNCH[]; +extern const u8 Move_OBLIVION_WING[]; +extern const u8 Move_THOUSAND_ARROWS[]; +extern const u8 Move_THOUSAND_WAVES[]; +extern const u8 Move_LANDS_WRATH[]; +extern const u8 Move_LIGHT_OF_RUIN[]; +extern const u8 Move_ORIGIN_PULSE[]; +extern const u8 Move_PRECIPICE_BLADES[]; +extern const u8 Move_DRAGON_ASCENT[]; +extern const u8 Move_HYPERSPACE_FURY[]; +extern const u8 Move_SHORE_UP[]; +extern const u8 Move_FIRST_IMPRESSION[]; +extern const u8 Move_BANEFUL_BUNKER[]; +extern const u8 Move_SPIRIT_SHACKLE[]; +extern const u8 Move_DARKEST_LARIAT[]; +extern const u8 Move_SPARKLING_ARIA[]; +extern const u8 Move_ICE_HAMMER[]; +extern const u8 Move_FLORAL_HEALING[]; +extern const u8 Move_HIGH_HORSEPOWER[]; +extern const u8 Move_STRENGTH_SAP[]; +extern const u8 Move_SOLAR_BLADE[]; +extern const u8 Move_LEAFAGE[]; +extern const u8 Move_SPOTLIGHT[]; +extern const u8 Move_TOXIC_THREAD[]; +extern const u8 Move_LASER_FOCUS[]; +extern const u8 Move_GEAR_UP[]; +extern const u8 Move_THROAT_CHOP[]; +extern const u8 Move_POLLEN_PUFF[]; +extern const u8 Move_ANCHOR_SHOT[]; +extern const u8 Move_PSYCHIC_TERRAIN[]; +extern const u8 Move_LUNGE[]; +extern const u8 Move_FIRE_LASH[]; +extern const u8 Move_POWER_TRIP[]; +extern const u8 Move_BURN_UP[]; +extern const u8 Move_SPEED_SWAP[]; +extern const u8 Move_SMART_STRIKE[]; +extern const u8 Move_PURIFY[]; +extern const u8 Move_REVELATION_DANCE[]; +extern const u8 Move_CORE_ENFORCER[]; +extern const u8 Move_TROP_KICK[]; +extern const u8 Move_INSTRUCT[]; +extern const u8 Move_BEAK_BLAST[]; +extern const u8 Move_CLANGING_SCALES[]; +extern const u8 Move_DRAGON_HAMMER[]; +extern const u8 Move_BRUTAL_SWING[]; +extern const u8 Move_AURORA_VEIL[]; +extern const u8 Move_SHELL_TRAP[]; +extern const u8 Move_FLEUR_CANNON[]; +extern const u8 Move_PSYCHIC_FANGS[]; +extern const u8 Move_STOMPING_TANTRUM[]; +extern const u8 Move_SHADOW_BONE[]; +extern const u8 Move_ACCELEROCK[]; +extern const u8 Move_LIQUIDATION[]; +extern const u8 Move_PRISMATIC_LASER[]; +extern const u8 Move_SPECTRAL_THIEF[]; +extern const u8 Move_SUNSTEEL_STRIKE[]; +extern const u8 Move_MOONGEIST_BEAM[]; +extern const u8 Move_TEARFUL_LOOK[]; +extern const u8 Move_ZING_ZAP[]; +extern const u8 Move_NATURES_MADNESS[]; +extern const u8 Move_MULTI_ATTACK[]; +extern const u8 Move_MIND_BLOWN[]; +extern const u8 Move_PLASMA_FISTS[]; +extern const u8 Move_PHOTON_GEYSER[]; +extern const u8 Move_ZIPPY_ZAP[]; +extern const u8 Move_SPLISHY_SPLASH[]; +extern const u8 Move_FLOATY_FALL[]; +extern const u8 Move_PIKA_PAPOW[]; +extern const u8 Move_BOUNCY_BUBBLE[]; +extern const u8 Move_BUZZY_BUZZ[]; +extern const u8 Move_SIZZLY_SLIDE[]; +extern const u8 Move_GLITZY_GLOW[]; +extern const u8 Move_BADDY_BAD[]; +extern const u8 Move_SAPPY_SEED[]; +extern const u8 Move_FREEZY_FROST[]; +extern const u8 Move_SPARKLY_SWIRL[]; +extern const u8 Move_VEEVEE_VOLLEY[]; +extern const u8 Move_DOUBLE_IRON_BASH[]; +extern const u8 Move_DYNAMAX_CANNON[]; +extern const u8 Move_SNIPE_SHOT[]; +extern const u8 Move_JAW_LOCK[]; +extern const u8 Move_STUFF_CHEEKS[]; +extern const u8 Move_NO_RETREAT[]; +extern const u8 Move_TAR_SHOT[]; +extern const u8 Move_MAGIC_POWDER[]; +extern const u8 Move_DRAGON_DARTS[]; +extern const u8 Move_TEATIME[]; +extern const u8 Move_OCTOLOCK[]; +extern const u8 Move_BOLT_BEAK[]; +extern const u8 Move_FISHIOUS_REND[]; +extern const u8 Move_COURT_CHANGE[]; +extern const u8 Move_CLANGOROUS_SOUL[]; +extern const u8 Move_BODY_PRESS[]; +extern const u8 Move_DECORATE[]; +extern const u8 Move_DRUM_BEATING[]; +extern const u8 Move_SNAP_TRAP[]; +extern const u8 Move_PYRO_BALL[]; +extern const u8 Move_BEHEMOTH_BLADE[]; +extern const u8 Move_BEHEMOTH_BASH[]; +extern const u8 Move_AURA_WHEEL[]; +extern const u8 Move_BREAKING_SWIPE[]; +extern const u8 Move_BRANCH_POKE[]; +extern const u8 Move_OVERDRIVE[]; +extern const u8 Move_APPLE_ACID[]; +extern const u8 Move_GRAV_APPLE[]; +extern const u8 Move_SPIRIT_BREAK[]; +extern const u8 Move_STRANGE_STEAM[]; +extern const u8 Move_LIFE_DEW[]; +extern const u8 Move_OBSTRUCT[]; +extern const u8 Move_FALSE_SURRENDER[]; +extern const u8 Move_METEOR_ASSAULT[]; +extern const u8 Move_ETERNABEAM[]; +extern const u8 Move_STEEL_BEAM[]; +extern const u8 Move_EXPANDING_FORCE[]; +extern const u8 Move_STEEL_ROLLER[]; +extern const u8 Move_SCALE_SHOT[]; +extern const u8 Move_METEOR_BEAM[]; +extern const u8 Move_SHELL_SIDE_ARM[]; +extern const u8 Move_MISTY_EXPLOSION[]; +extern const u8 Move_GRASSY_GLIDE[]; +extern const u8 Move_RISING_VOLTAGE[]; +extern const u8 Move_TERRAIN_PULSE[]; +extern const u8 Move_SKITTER_SMACK[]; +extern const u8 Move_BURNING_JEALOUSY[]; +extern const u8 Move_LASH_OUT[]; +extern const u8 Move_POLTERGEIST[]; +extern const u8 Move_CORROSIVE_GAS[]; +extern const u8 Move_COACHING[]; +extern const u8 Move_FLIP_TURN[]; +extern const u8 Move_TRIPLE_AXEL[]; +extern const u8 Move_DUAL_WINGBEAT[]; +extern const u8 Move_SCORCHING_SANDS[]; +extern const u8 Move_JUNGLE_HEALING[]; +extern const u8 Move_WICKED_BLOW[]; +extern const u8 Move_SURGING_STRIKES[]; +extern const u8 Move_THUNDER_CAGE[]; +extern const u8 Move_DRAGON_ENERGY[]; +extern const u8 Move_FREEZING_GLARE[]; +extern const u8 Move_FIERY_WRATH[]; +extern const u8 Move_THUNDEROUS_KICK[]; +extern const u8 Move_GLACIAL_LANCE[]; +extern const u8 Move_ASTRAL_BARRAGE[]; +extern const u8 Move_EERIE_SPELL[]; +extern const u8 Move_DIRE_CLAW[]; +extern const u8 Move_PSYSHIELD_BASH[]; +extern const u8 Move_POWER_SHIFT[]; +extern const u8 Move_STONE_AXE[]; +extern const u8 Move_SPRINGTIDE_STORM[]; +extern const u8 Move_MYSTICAL_POWER[]; +extern const u8 Move_RAGING_FURY[]; +extern const u8 Move_WAVE_CRASH[]; +extern const u8 Move_CHLOROBLAST[]; +extern const u8 Move_MOUNTAIN_GALE[]; +extern const u8 Move_VICTORY_DANCE[]; +extern const u8 Move_HEADLONG_RUSH[]; +extern const u8 Move_BARB_BARRAGE[]; +extern const u8 Move_ESPER_WING[]; +extern const u8 Move_BITTER_MALICE[]; +extern const u8 Move_SHELTER[]; +extern const u8 Move_TRIPLE_ARROWS[]; +extern const u8 Move_INFERNAL_PARADE[]; +extern const u8 Move_CEASELESS_EDGE[]; +extern const u8 Move_BLEAKWIND_STORM[]; +extern const u8 Move_WILDBOLT_STORM[]; +extern const u8 Move_SANDSEAR_STORM[]; +extern const u8 Move_LUNAR_BLESSING[]; +extern const u8 Move_TAKE_HEART[]; +extern const u8 Move_TERA_BLAST[]; +extern const u8 Move_SILK_TRAP[]; +extern const u8 Move_AXE_KICK[]; +extern const u8 Move_LAST_RESPECTS[]; +extern const u8 Move_LUMINA_CRASH[]; +extern const u8 Move_ORDER_UP[]; +extern const u8 Move_JET_PUNCH[]; +extern const u8 Move_SPICY_EXTRACT[]; +extern const u8 Move_SPIN_OUT[]; +extern const u8 Move_POPULATION_BOMB[]; +extern const u8 Move_ICE_SPINNER[]; +extern const u8 Move_GLAIVE_RUSH[]; +extern const u8 Move_REVIVAL_BLESSING[]; +extern const u8 Move_SALT_CURE[]; +extern const u8 Move_TRIPLE_DIVE[]; +extern const u8 Move_MORTAL_SPIN[]; +extern const u8 Move_DOODLE[]; +extern const u8 Move_FILLET_AWAY[]; +extern const u8 Move_KOWTOW_CLEAVE[]; +extern const u8 Move_FLOWER_TRICK[]; +extern const u8 Move_TORCH_SONG[]; +extern const u8 Move_AQUA_STEP[]; +extern const u8 Move_RAGING_BULL[]; +extern const u8 Move_MAKE_IT_RAIN[]; +extern const u8 Move_RUINATION[]; +extern const u8 Move_COLLISION_COURSE[]; +extern const u8 Move_ELECTRO_DRIFT[]; +extern const u8 Move_SHED_TAIL[]; +extern const u8 Move_CHILLY_RECEPTION[]; +extern const u8 Move_TIDY_UP[]; +extern const u8 Move_SNOWSCAPE[]; +extern const u8 Move_POUNCE[]; +extern const u8 Move_TRAILBLAZE[]; +extern const u8 Move_CHILLING_WATER[]; +extern const u8 Move_HYPER_DRILL[]; +extern const u8 Move_TWIN_BEAM[]; +extern const u8 Move_RAGE_FIST[]; +extern const u8 Move_ARMOR_CANNON[]; +extern const u8 Move_BITTER_BLADE[]; +extern const u8 Move_DOUBLE_SHOCK[]; +extern const u8 Move_GIGATON_HAMMER[]; +extern const u8 Move_COMEUPPANCE[]; +extern const u8 Move_AQUA_CUTTER[]; +extern const u8 Move_BLAZING_TORQUE[]; +extern const u8 Move_WICKED_TORQUE[]; +extern const u8 Move_NOXIOUS_TORQUE[]; +extern const u8 Move_COMBAT_TORQUE[]; +extern const u8 Move_MAGICAL_TORQUE[]; +extern const u8 Move_PSYBLADE[]; +extern const u8 Move_HYDRO_STEAM[]; +extern const u8 Move_BLOOD_MOON[]; +extern const u8 Move_MATCHA_GOTCHA[]; +extern const u8 Move_SYRUP_BOMB[]; +extern const u8 Move_IVY_CUDGEL[]; +extern const u8 Move_ELECTRO_SHOT[]; +extern const u8 Move_TERA_STARSTORM[]; +extern const u8 Move_FICKLE_BEAM[]; +extern const u8 Move_BURNING_BULWARK[]; +extern const u8 Move_THUNDERCLAP[]; +extern const u8 Move_MIGHTY_CLEAVE[]; +extern const u8 Move_TACHYON_CUTTER[]; +extern const u8 Move_HARD_PRESS[]; +extern const u8 Move_DRAGON_CHEER[]; +extern const u8 Move_ALLURING_VOICE[]; +extern const u8 Move_TEMPER_FLARE[]; +extern const u8 Move_SUPERCELL_SLAM[]; +extern const u8 Move_PSYCHIC_NOISE[]; +extern const u8 Move_UPPER_HAND[]; +extern const u8 Move_MALIGNANT_CHAIN[]; +extern const u8 Move_BREAKNECK_BLITZ[]; +extern const u8 Move_ALL_OUT_PUMMELING[]; +extern const u8 Move_SUPERSONIC_SKYSTRIKE[]; +extern const u8 Move_ACID_DOWNPOUR[]; +extern const u8 Move_TECTONIC_RAGE[]; +extern const u8 Move_CONTINENTAL_CRUSH[]; +extern const u8 Move_SAVAGE_SPIN_OUT[]; +extern const u8 Move_NEVER_ENDING_NIGHTMARE[]; +extern const u8 Move_CORKSCREW_CRASH[]; +extern const u8 Move_INFERNO_OVERDRIVE[]; +extern const u8 Move_HYDRO_VORTEX[]; +extern const u8 Move_BLOOM_DOOM[]; +extern const u8 Move_GIGAVOLT_HAVOC[]; +extern const u8 Move_SHATTERED_PSYCHE[]; +extern const u8 Move_SUBZERO_SLAMMER[]; +extern const u8 Move_DEVASTATING_DRAKE[]; +extern const u8 Move_BLACK_HOLE_ECLIPSE[]; +extern const u8 Move_TWINKLE_TACKLE[]; +extern const u8 Move_CATASTROPIKA[]; +extern const u8 Move_10000000_VOLT_THUNDERBOLT[]; +extern const u8 Move_STOKED_SPARKSURFER[]; +extern const u8 Move_EXTREME_EVOBOOST[]; +extern const u8 Move_PULVERIZING_PANCAKE[]; +extern const u8 Move_GENESIS_SUPERNOVA[]; +extern const u8 Move_SINISTER_ARROW_RAID[]; +extern const u8 Move_MALICIOUS_MOONSAULT[]; +extern const u8 Move_OCEANIC_OPERETTA[]; +extern const u8 Move_SPLINTERED_STORMSHARDS[]; +extern const u8 Move_LETS_SNUGGLE_FOREVER[]; +extern const u8 Move_CLANGOROUS_SOULBLAZE[]; +extern const u8 Move_GUARDIAN_OF_ALOLA[]; +extern const u8 Move_SEARING_SUNRAZE_SMASH[]; +extern const u8 Move_MENACING_MOONRAZE_MAELSTROM[]; +extern const u8 Move_LIGHT_THAT_BURNS_THE_SKY[]; +extern const u8 Move_SOUL_STEALING_7_STAR_STRIKE[]; +extern const u8 Move_MAX_GUARD[]; +extern const u8 Move_MAX_FLARE[]; +extern const u8 Move_MAX_FLUTTERBY[]; +extern const u8 Move_MAX_LIGHTNING[]; +extern const u8 Move_MAX_STRIKE[]; +extern const u8 Move_MAX_KNUCKLE[]; +extern const u8 Move_MAX_PHANTASM[]; +extern const u8 Move_MAX_HAILSTORM[]; +extern const u8 Move_MAX_OOZE[]; +extern const u8 Move_MAX_GEYSER[]; +extern const u8 Move_MAX_AIRSTREAM[]; +extern const u8 Move_MAX_STARFALL[]; +extern const u8 Move_MAX_WYRMWIND[]; +extern const u8 Move_MAX_MINDSTORM[]; +extern const u8 Move_MAX_ROCKFALL[]; +extern const u8 Move_MAX_QUAKE[]; +extern const u8 Move_MAX_DARKNESS[]; +extern const u8 Move_MAX_OVERGROWTH[]; +extern const u8 Move_MAX_STEELSPIKE[]; +extern const u8 Move_G_MAX_VINE_LASH[]; +extern const u8 Move_G_MAX_WILDFIRE[]; +extern const u8 Move_G_MAX_CANNONADE[]; +extern const u8 Move_G_MAX_BEFUDDLE[]; +extern const u8 Move_G_MAX_VOLT_CRASH[]; +extern const u8 Move_G_MAX_GOLD_RUSH[]; +extern const u8 Move_G_MAX_CHI_STRIKE[]; +extern const u8 Move_G_MAX_TERROR[]; +extern const u8 Move_G_MAX_FOAM_BURST[]; +extern const u8 Move_G_MAX_RESONANCE[]; +extern const u8 Move_G_MAX_CUDDLE[]; +extern const u8 Move_G_MAX_REPLENISH[]; +extern const u8 Move_G_MAX_MALODOR[]; +extern const u8 Move_G_MAX_MELTDOWN[]; +extern const u8 Move_G_MAX_DRUM_SOLO[]; +extern const u8 Move_G_MAX_FIREBALL[]; +extern const u8 Move_G_MAX_HYDROSNIPE[]; +extern const u8 Move_G_MAX_WIND_RAGE[]; +extern const u8 Move_G_MAX_GRAVITAS[]; +extern const u8 Move_G_MAX_STONESURGE[]; +extern const u8 Move_G_MAX_VOLCALITH[]; +extern const u8 Move_G_MAX_TARTNESS[]; +extern const u8 Move_G_MAX_SWEETNESS[]; +extern const u8 Move_G_MAX_SANDBLAST[]; +extern const u8 Move_G_MAX_STUN_SHOCK[]; +extern const u8 Move_G_MAX_CENTIFERNO[]; +extern const u8 Move_G_MAX_SMITE[]; +extern const u8 Move_G_MAX_SNOOZE[]; +extern const u8 Move_G_MAX_FINALE[]; +extern const u8 Move_G_MAX_STEELSURGE[]; +extern const u8 Move_G_MAX_DEPLETION[]; +extern const u8 Move_G_MAX_ONE_BLOW[]; +extern const u8 Move_G_MAX_RAPID_FLOW[]; + +#endif // GUARD_BATTLE_ANIM_SCRIPTS_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 5f3bd8316e48..a670113bc791 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -98,9 +98,7 @@ enum { // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 -#define RET_MEGA_EVOLUTION (1 << 7) -#define RET_ULTRA_BURST (1 << 6) -#define RET_DYNAMAX (1 << 5) +#define RET_GIMMICK (1 << 7) struct UnusedControllerStruct { @@ -130,8 +128,6 @@ struct ChooseMoveStruct u8 monType1; u8 monType2; u8 monType3; - struct MegaEvolutionData mega; - struct UltraBurstData burst; struct ZMoveData zmove; }; @@ -261,7 +257,7 @@ void BattleControllerComplete(u32 battler); // Can be used for all the controlle void BtlController_Empty(u32 battler); // Empty command, does nothing, only completes the execution. void BtlController_TerminatorNop(u32 battler); // Dummy function at the end of the table. void BattleControllerDummy(u32 battler); -void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit); +void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit, bool32 doSlideIn); void Controller_WaitForString(u32 battler); void Controller_WaitForHealthBar(u32 battler); diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h index 1e3f3265b741..20cd4d5e79ee 100644 --- a/include/battle_dynamax.h +++ b/include/battle_dynamax.h @@ -56,21 +56,19 @@ enum MaxMoveEffect MAX_EFFECT_BYPASS_PROTECT, }; -bool32 IsDynamaxed(u16 battlerId); -bool32 CanDynamax(u16 battlerId); -bool32 IsGigantamaxed(u16 battlerId); +bool32 CanDynamax(u32 battler); +bool32 IsGigantamaxed(u32 battler); 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); +void ActivateDynamax(u32 battler); +u16 GetNonDynamaxHP(u32 battler); +u16 GetNonDynamaxMaxHP(u32 battler); +void UndoDynamax(u32 battler); +bool32 IsMoveBlockedByMaxGuard(u32 move); +bool32 IsMoveBlockedByDynamax(u32 move); -bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove); -u16 GetMaxMove(u16 battlerId, u16 baseMove); -u8 GetMaxMovePower(u16 move); -bool32 IsMaxMove(u16 move); +u16 GetMaxMove(u32 battler, u32 baseMove); +u8 GetMaxMovePower(u32 move); +bool32 IsMaxMove(u32 move); void ChooseDamageNonTypesString(u8 type); void BS_UpdateDynamax(void); @@ -78,15 +76,8 @@ 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_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h index 95c97cabaa23..968f8d48dccd 100644 --- a/include/battle_gfx_sfx_util.h +++ b/include/battle_gfx_sfx_util.h @@ -31,6 +31,7 @@ void BattleStopLowHpSound(void); u8 GetMonHPBarLevel(struct Pokemon *mon); void HandleBattleLowHpMusicChange(void); void SetBattlerSpriteAffineMode(u8 affineMode); +void CreateEnemyShadowSprite(u32 battler); void LoadAndCreateEnemyShadowSprites(void); void SpriteCB_SetInvisible(struct Sprite *sprite); void SetBattlerShadowSpriteCallback(u8 battler, u16 species); diff --git a/include/battle_gimmick.h b/include/battle_gimmick.h new file mode 100644 index 000000000000..de1352a611e1 --- /dev/null +++ b/include/battle_gimmick.h @@ -0,0 +1,51 @@ +#ifndef GUARD_BATTLE_GIMMICK_H +#define GUARD_BATTLE_GIMMICK_H + +enum Gimmick +{ + GIMMICK_NONE, + GIMMICK_MEGA, + GIMMICK_ULTRA_BURST, + GIMMICK_Z_MOVE, + GIMMICK_DYNAMAX, + GIMMICK_TERA, + GIMMICKS_COUNT, +}; + +struct GimmickInfo +{ + const struct SpritePalette *triggerPal; // trigger gfx data + const struct SpriteSheet *triggerSheet; + const struct SpriteTemplate *triggerTemplate; + const struct SpritePalette *indicatorPal; // indicator gfx data + const struct SpriteSheet *indicatorSheet; + bool32 (*CanActivate)(u32 battler); + void (*ActivateGimmick)(u32 battler); +}; + +void AssignUsableGimmicks(void); +bool32 CanActivateGimmick(u32 battler, enum Gimmick gimmick); +bool32 IsGimmickSelected(u32 battler, enum Gimmick gimmick); +void SetActiveGimmick(u32 battler, enum Gimmick gimmick); +enum Gimmick GetActiveGimmick(u32 battler); +bool32 ShouldTrainerBattlerUseGimmick(u32 battler, enum Gimmick gimmick); +bool32 HasTrainerUsedGimmick(u32 battler, enum Gimmick gimmick); +void SetGimmickAsActivated(u32 battler, enum Gimmick gimmick); + +void ChangeGimmickTriggerSprite(u32 spriteId, u32 animId); +void CreateGimmickTriggerSprite(u32 battler); +bool32 IsGimmickTriggerSpriteActive(void); +void HideGimmickTriggerSprite(void); +void DestroyGimmickTriggerSprite(void); + +void LoadIndicatorSpritesGfx(void); +u32 GetIndicatorTileTag(u32 battler); +u32 GetIndicatorPalTag(u32 battler); +void UpdateIndicatorVisibilityAndType(u32 healthboxId, bool32 invisible); +void UpdateIndicatorOamPriority(u32 healthboxId, u32 oamPriority); +void UpdateIndicatorLevelData(u32 healthboxId, u32 level); +void CreateIndicatorSprite(u32 battler); + +extern const struct GimmickInfo gGimmicksInfo[]; + +#endif diff --git a/include/battle_interface.h b/include/battle_interface.h index b26205d8102d..6635298dc102 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -48,21 +48,38 @@ enum #define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE #define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE -#define TAG_MEGA_TRIGGER_TILE 0xD777 +#define TAG_GIMMICK_TRIGGER_TILE 0xD777 #define TAG_MEGA_INDICATOR_TILE 0xD778 #define TAG_ALPHA_INDICATOR_TILE 0xD779 #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_DYNAMAX_INDICATOR_TILE 0xD77B -#define TAG_MEGA_TRIGGER_PAL 0xD777 +#define TAG_NORMAL_INDICATOR_TILE 0xD77C +#define TAG_FIGHTING_INDICATOR_TILE 0xD77D +#define TAG_FLYING_INDICATOR_TILE 0xD77E +#define TAG_POISON_INDICATOR_TILE 0xD77F +#define TAG_GROUND_INDICATOR_TILE 0xD780 +#define TAG_ROCK_INDICATOR_TILE 0xD781 +#define TAG_BUG_INDICATOR_TILE 0xD782 +#define TAG_GHOST_INDICATOR_TILE 0xD783 +#define TAG_STEEL_INDICATOR_TILE 0xD784 +// empty spot for TYPE_MYSTERY +#define TAG_FIRE_INDICATOR_TILE 0xD786 +#define TAG_WATER_INDICATOR_TILE 0xD787 +#define TAG_GRASS_INDICATOR_TILE 0xD788 +#define TAG_ELECTRIC_INDICATOR_TILE 0xD789 +#define TAG_PSYCHIC_INDICATOR_TILE 0xD78A +#define TAG_ICE_INDICATOR_TILE 0xD78B +#define TAG_DRAGON_INDICATOR_TILE 0xD78C +#define TAG_DARK_INDICATOR_TILE 0xD78D +#define TAG_FAIRY_INDICATOR_TILE 0xD78E +#define TAG_STELLAR_INDICATOR_TILE 0xD78F +#define TAG_TERA_TRIGGER_TILE 0xD790 + +#define TAG_GIMMICK_TRIGGER_PAL 0xD777 #define TAG_MEGA_INDICATOR_PAL 0xD778 #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 +#define TAG_TERA_INDICATOR_PAL 0xD77A enum { @@ -92,18 +109,6 @@ 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); -void CreateMegaTriggerSprite(u8 battlerId, u8 palId); -bool32 IsMegaTriggerSpriteActive(void); -void HideMegaTriggerSprite(void); -void DestroyMegaTriggerSprite(void); -void ChangeBurstTriggerSprite(u8 spriteId, u8 animId); -void CreateBurstTriggerSprite(u8 battlerId, u8 palId); -bool32 IsBurstTriggerSpriteActive(void); -void HideBurstTriggerSprite(void); -void DestroyBurstTriggerSprite(void); -void MegaIndicator_LoadSpritesGfx(void); -void MegaIndicator_SetVisibilities(u32 healthboxId, bool32 invisible); u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart); void Task_HidePartyStatusSummary(u8 taskId); void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId); @@ -112,7 +117,6 @@ u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u8 GetHPBarLevel(s16 hp, s16 maxhp); void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle); void DestroyAbilityPopUp(u8 battlerId); -void HideTriggerSprites(void); bool32 CanThrowLastUsedBall(void); void TryHideLastUsedBall(void); void TryRestoreLastUsedBall(void); @@ -120,5 +124,6 @@ void TryAddLastUsedBallItemSprites(void); void SwapBallToDisplay(bool32 sameBall); void ArrowsChangeColorLastBallCycle(bool32 showArrows); void UpdateAbilityPopup(u8 battlerId); +void CategoryIcons_LoadSpritesGfx(void); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/battle_main.h b/include/battle_main.h index e313ec662955..59a515b50843 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -57,6 +57,7 @@ void SpriteCB_FaintSlideAnim(struct Sprite *sprite); void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); void EndBounceEffect(u8 battler, u8 which); void SpriteCB_PlayerMonFromBall(struct Sprite *sprite); +void SpriteCB_PlayerMonSlideIn(struct Sprite *sprite); void SpriteCB_TrainerThrowObject(struct Sprite *sprite); void AnimSetCenterToCornerVecX(struct Sprite *sprite); void BeginBattleIntroDummy(void); @@ -91,6 +92,7 @@ extern const struct SpriteTemplate gUnusedBattleInitSprite; extern const struct OamData gOamData_BattleSpriteOpponentSide; extern const struct OamData gOamData_BattleSpritePlayerSide; extern const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES]; +extern const uq4_12_t gTypeEffectivenessTable[NUMBER_OF_MON_TYPES][NUMBER_OF_MON_TYPES]; extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index 5075d52be735..4f1593d4d821 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -47,18 +47,18 @@ bool32 IsShieldsDownProtected(u32 battler); u32 IsAbilityStatusProtected(u32 battler); bool32 TryResetBattlerStatChanges(u8 battler); bool32 CanCamouflage(u8 battlerId); -u16 GetNaturePowerMove(void); +u32 GetNaturePowerMove(u32 battler); void StealTargetItem(u8 battlerStealer, u8 battlerItem); u8 GetCatchingBattler(void); u32 GetHighestStatId(u32 battlerId); bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType); +bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef); bool32 IsMoveNotAllowedInSkyBattles(u32 move); bool32 DoSwitchInAbilities(u32 battlerId); u8 GetFirstFaintedPartyIndex(u8 battlerId); bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler); extern void (* const gBattleScriptingCommandsTable[])(void); -extern const u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4]; extern const struct StatFractions gAccuracyStageRatios[]; #endif // GUARD_BATTLE_SCRIPT_COMMANDS_H diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 148a91783b50..0c9f72c276a0 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -51,9 +51,14 @@ extern const u8 BattleScript_LevelUp[]; extern const u8 BattleScript_RainContinuesOrEnds[]; extern const u8 BattleScript_SnowContinuesOrEnds[]; extern const u8 BattleScript_DamagingWeatherContinues[]; +extern const u8 BattleScript_DamagingWeather[]; +extern const u8 BattleScript_IceBodyHeal[]; extern const u8 BattleScript_SandStormHailSnowEnds[]; extern const u8 BattleScript_SunlightContinues[]; extern const u8 BattleScript_SunlightFaded[]; +extern const u8 BattleScript_FogContinues[]; +extern const u8 BattleScript_FogEnded_Ret[]; +extern const u8 BattleScript_FogEnded[]; extern const u8 BattleScript_OverworldStatusStarts[]; extern const u8 BattleScript_OverworldWeatherStarts[]; extern const u8 BattleScript_OverworldTerrain[]; @@ -81,6 +86,7 @@ extern const u8 BattleScript_DmgHazardsOnBattlerScripting[]; extern const u8 BattleScript_DmgHazardsOnFaintedBattler[]; extern const u8 BattleScript_PerishSongTakesLife[]; extern const u8 BattleScript_PerishSongCountGoesDown[]; +extern const u8 BattleScript_AllStatsUpZMove[]; extern const u8 BattleScript_AllStatsUp[]; extern const u8 BattleScript_RapidSpinAway[]; extern const u8 BattleScript_WrapFree[]; @@ -110,7 +116,6 @@ extern const u8 BattleScript_MagicCoatBouncePrankster[]; extern const u8 BattleScript_SnatchedMove[]; extern const u8 BattleScript_EnduredMsg[]; extern const u8 BattleScript_OneHitKOMsg[]; -extern const u8 BattleScript_SAtkDown2[]; extern const u8 BattleScript_FocusPunchSetUp[]; extern const u8 BattleScript_MoveUsedIsAsleep[]; extern const u8 BattleScript_MoveUsedWokeUp[]; @@ -178,6 +183,7 @@ extern const u8 BattleScript_FlashFireBoost_PPLoss[]; extern const u8 BattleScript_FlashFireBoost[]; extern const u8 BattleScript_AbilityNoStatLoss[]; extern const u8 BattleScript_ItemNoStatLoss[]; +extern const u8 BattleScript_ItemNoStatLossSpicyExtract[]; extern const u8 BattleScript_BRNPrevention[]; extern const u8 BattleScript_PRLZPrevention[]; extern const u8 BattleScript_PSNPrevention[]; @@ -366,6 +372,8 @@ extern const u8 BattleScript_DancerActivates[]; extern const u8 BattleScript_AftermathDmg[]; extern const u8 BattleScript_AttackerFormChange[]; extern const u8 BattleScript_AttackerFormChangeEnd3[]; +extern const u8 BattleScript_AttackerFormChangeWithString[]; +extern const u8 BattleScript_AttackerFormChangeWithStringEnd3[]; extern const u8 BattleScript_TargetFormChange[]; extern const u8 BattleScript_AnticipationActivates[]; extern const u8 BattleScript_SlowStartEnds[]; @@ -384,6 +392,7 @@ extern const u8 BattleScript_CheekPouchActivates[]; extern const u8 BattleScript_TotemVar[]; extern const u8 BattleScript_TotemFlaredToLife[]; extern const u8 BattleScript_AnnounceAirLockCloudNine[]; +extern const u8 BattleScript_ActivateTeraformZero[]; extern const u8 BattleScript_BattlerAbilityStatRaiseOnSwitchIn[]; extern const u8 BattleScript_CottonDownActivates[]; extern const u8 BattleScript_BallFetch[]; @@ -438,6 +447,7 @@ extern const u8 BattleScript_PastelVeilActivates[]; extern const u8 BattleScript_MimicryActivatesEnd3[]; extern const u8 BattleScript_ApplyMimicry[]; extern const u8 BattleScript_AttackerFormChangeEnd3NoPopup[]; +extern const u8 BattleScript_AttackerFormChangeWithStringEnd3NoPopup[]; extern const u8 BattleScript_AttackerFormChangeMoveEffect[]; extern const u8 BattleScript_BothCanNoLongerEscape[]; extern const u8 BattleScript_OctolockEndTurn[]; @@ -500,6 +510,11 @@ extern const u8 BattleScript_TheSeaOfFireDisappeared[]; extern const u8 BattleScript_TheSwampDisappeared[]; extern const u8 BattleScript_EffectPsychicNoise[]; extern const u8 BattleScript_AromaVeilProtectsRet[]; +extern const u8 BattleScript_LowerAtkSpAtk[]; +extern const u8 BattleScript_Terastallization[]; +extern const u8 BattleScript_BoosterEnergyEnd2[]; +extern const u8 BattleScript_TeraShellDistortingTypeMatchups[]; +extern const u8 BattleScript_TeraFormChange[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; @@ -826,5 +841,7 @@ extern const u8 BattleScript_EffectFilletAway[]; extern const u8 BattleScript_EffectShedTail[]; extern const u8 BattleScript_EffectUpperHand[]; extern const u8 BattleScript_EffectTidyUp[]; +extern const u8 BattleScript_EffectSpicyExtract[]; +extern const u8 BattleScript_DamageToQuarterTargetHP[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_terastal.h b/include/battle_terastal.h new file mode 100644 index 000000000000..6b5c38546346 --- /dev/null +++ b/include/battle_terastal.h @@ -0,0 +1,14 @@ +#ifndef GUARD_BATTLE_TERASTAL_H +#define GUARD_BATTLE_TERASTAL_H + +void ActivateTera(u32 battler); +void ApplyBattlerVisualsForTeraAnim(u32 battler); +bool32 CanTerastallize(u32 battler); +u32 GetBattlerTeraType(u32 battler); +void ExpendTypeStellarBoost(u32 battler, u32 type); +bool32 IsTypeStellarBoosted(u32 battler, u32 type); +uq4_12_t GetTeraMultiplier(u32 battler, u32 type); + +u16 GetTeraTypeRGB(u32 type); + +#endif diff --git a/include/battle_tower.h b/include/battle_tower.h index a80314592726..074fccf3a5f5 100644 --- a/include/battle_tower.h +++ b/include/battle_tower.h @@ -1,6 +1,8 @@ #ifndef GUARD_BATTLE_TOWER_H #define GUARD_BATTLE_TOWER_H +#include "data.h" + struct RSBattleTowerRecord { /*0x00*/ u8 lvlMode; // 0 = level 50, 1 = level 100 @@ -24,23 +26,13 @@ struct BattleFrontierTrainer const u16 *monSet; }; -struct FacilityMon -{ - u16 species; - u16 moves[MAX_MON_MOVES]; - u8 itemTableId; - u8 evSpread; - u8 nature; -}; - extern const u8 gTowerMaleFacilityClasses[30]; extern const u8 gTowerMaleTrainerGfxIds[30]; extern const u8 gTowerFemaleFacilityClasses[20]; extern const u8 gTowerFemaleTrainerGfxIds[20]; -extern const u16 gBattleFrontierHeldItems[]; -extern const struct FacilityMon gBattleFrontierMons[]; +extern const struct TrainerMon gBattleFrontierMons[]; extern const struct BattleFrontierTrainer gBattleFrontierTrainers[]; -extern const struct FacilityMon gSlateportBattleTentMons[]; +extern const struct TrainerMon gSlateportBattleTentMons[]; extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; // Temporary storage for monIds of the opponent team @@ -48,13 +40,13 @@ extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[]; extern u16 gFrontierTempParty[]; extern const struct BattleFrontierTrainer *gFacilityTrainers; -extern const struct FacilityMon *gFacilityTrainerMons; +extern const struct TrainerMon *gFacilityTrainerMons; void CallBattleTowerFunc(void); u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum); void SetBattleFacilityTrainerGfxId(u16 trainerId, u8 tempVarId); void SetEReaderTrainerGfxId(void); -u8 GetBattleFacilityTrainerGfxId(u16 trainerId); +u16 GetBattleFacilityTrainerGfxId(u16 trainerId); void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm); u8 GetFrontierTrainerFrontSpriteId(u16 trainerId); u8 GetFrontierOpponentClass(u16 trainerId); @@ -81,8 +73,9 @@ void GetBattleTowerTrainerLanguage(u8 *dst, u16 trainerId); u8 SetFacilityPtrsGetLevel(void); u8 GetFrontierEnemyMonLevel(u8 lvlMode); s32 GetHighestLevelInPlayerParty(void); -u8 FacilityClassToGraphicsId(u8 facilityClass); +u16 FacilityClassToGraphicsId(u8 facilityClass); bool32 ValidateBattleTowerRecord(u8 recordId); // unused void TrySetLinkBattleTowerEnemyPartyLevel(void); +void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32 otID, u32 flags, struct Pokemon *dst); #endif //GUARD_BATTLE_TOWER_H diff --git a/include/battle_util.h b/include/battle_util.h index 118ef8c6b3a9..8eadf47c983c 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -20,24 +20,29 @@ #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF -#define ABILITYEFFECT_ON_SWITCHIN 0 -#define ABILITYEFFECT_ENDTURN 1 -#define ABILITYEFFECT_MOVES_BLOCK 2 -#define ABILITYEFFECT_ABSORBING 3 -#define ABILITYEFFECT_MOVE_END_ATTACKER 4 -#define ABILITYEFFECT_MOVE_END 5 -#define ABILITYEFFECT_IMMUNITY 6 -#define ABILITYEFFECT_SYNCHRONIZE 7 -#define ABILITYEFFECT_ATK_SYNCHRONIZE 8 -#define ABILITYEFFECT_MOVE_END_OTHER 9 -#define ABILITYEFFECT_NEUTRALIZINGGAS 10 -#define ABILITYEFFECT_FIELD_SPORT 11 // Only used if B_SPORT_TURNS >= GEN_6 -#define ABILITYEFFECT_ON_WEATHER 12 -#define ABILITYEFFECT_ON_TERRAIN 13 -#define ABILITYEFFECT_SWITCH_IN_TERRAIN 14 -#define ABILITYEFFECT_SWITCH_IN_WEATHER 15 -#define ABILITYEFFECT_OPPORTUNIST 16 -#define ABILITYEFFECT_SWITCH_IN_STATUSES 17 +enum { + ABILITYEFFECT_ON_SWITCHIN, + ABILITYEFFECT_ENDTURN, + ABILITYEFFECT_MOVES_BLOCK, + ABILITYEFFECT_WOULD_BLOCK, // Checks immunity without triggering a script + ABILITYEFFECT_ABSORBING, + ABILITYEFFECT_WOULD_ABSORB, // Checks immunity without triggering a script + ABILITYEFFECT_MOVE_END_ATTACKER, + ABILITYEFFECT_MOVE_END, + ABILITYEFFECT_IMMUNITY, + ABILITYEFFECT_SYNCHRONIZE, + ABILITYEFFECT_ATK_SYNCHRONIZE, + ABILITYEFFECT_MOVE_END_OTHER, + ABILITYEFFECT_NEUTRALIZINGGAS, + ABILITYEFFECT_FIELD_SPORT, // Only used if B_SPORT_TURNS >= GEN_6 + ABILITYEFFECT_ON_WEATHER, + ABILITYEFFECT_ON_TERRAIN, + ABILITYEFFECT_SWITCH_IN_TERRAIN, + ABILITYEFFECT_SWITCH_IN_WEATHER, + ABILITYEFFECT_OPPORTUNIST, + ABILITYEFFECT_SWITCH_IN_STATUSES, +}; + // 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 @@ -59,6 +64,10 @@ #define IS_WHOLE_SIDE_ALIVE(battler) ((IsBattlerAlive(battler) && IsBattlerAlive(BATTLE_PARTNER(battler)))) #define IS_ALIVE_AND_PRESENT(battler) (IsBattlerAlive(battler) && IsBattlerSpritePresent(battler)) +// Lowest and highest percentages used for damage roll calculations +#define DMG_ROLL_PERCENT_LO 85 +#define DMG_ROLL_PERCENT_HI 100 + // for Natural Gift and Fling struct TypePower { @@ -180,10 +189,13 @@ s32 CalculateMoveDamageVars(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveTy uq4_12_t CalcTypeEffectivenessMultiplier(u32 move, u32 moveType, u32 battlerAtk, u32 battlerDef, u32 defAbility, bool32 recordAbilities); uq4_12_t CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilityDef); uq4_12_t GetTypeModifier(u32 atkType, u32 defType); +uq4_12_t GetTypeEffectiveness(struct Pokemon *mon, u8 moveType); s32 GetStealthHazardDamage(u8 hazardType, u32 battler); s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 maxHp); bool32 CanMegaEvolve(u32 battler); bool32 CanUltraBurst(u32 battler); +void ActivateMegaEvolution(u32 battler); +void ActivateUltraBurst(u32 battler); bool32 IsBattlerMegaEvolved(u32 battler); bool32 IsBattlerPrimalReverted(u32 battler); bool32 IsBattlerUltraBursted(u32 battler); @@ -232,6 +244,8 @@ bool32 MoveHasAdditionalEffectWithChance(u32 move, u32 moveEffect, u32 chance); bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect); bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument); bool32 MoveHasChargeTurnAdditionalEffect(u32 move); +bool32 CanTargetPartner(u32 battlerAtk, u32 battlerDef); +bool32 TargetFullyImmuneToCurrMove(u32 BattlerAtk, u32 battlerDef); bool32 CanBeSlept(u32 battler, u32 ability); bool32 CanBePoisoned(u32 battlerAtk, u32 battlerDef, u32 defAbility); @@ -250,7 +264,7 @@ bool32 AreBattlersOfOppositeGender(u32 battler1, u32 battler2); bool32 AreBattlersOfSameGender(u32 battler1, u32 battler2); u32 CalcSecondaryEffectChance(u32 battler, u32 battlerAbility, const struct AdditionalEffect *additionalEffect); bool32 MoveEffectIsGuaranteed(u32 battler, u32 battlerAbility, const struct AdditionalEffect *additionalEffect); -u8 GetBattlerType(u32 battler, u8 typeIndex); +u8 GetBattlerType(u32 battler, u8 typeIndex, bool32 ignoreTera); bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon); bool8 IsMonBannedFromSkyBattles(u16 species); void RemoveBattlerType(u32 battler, u8 type); diff --git a/include/battle_z_move.h b/include/battle_z_move.h index 92fb685b2f19..bfa4c8495af3 100644 --- a/include/battle_z_move.h +++ b/include/battle_z_move.h @@ -13,19 +13,17 @@ struct SignatureZMove u16 zmove; }; -bool8 IsZMove(u16 move); -void QueueZMove(u8 battler, u16 baseMove); -bool32 IsViableZMove(u8 battler, u16 move); -bool32 TryChangeZIndicator(u8 battler, u8 moveIndex); -void CreateZMoveTriggerSprite(u8, bool8); -void HideZMoveTriggerSprite(void); -bool32 IsZMoveTriggerSpriteActive(void); -void DestroyZMoveTriggerSprite(void); -u16 GetTypeBasedZMove(u16 move, u8 battler); +bool32 IsZMove(u32 move); +bool32 CanUseZMove(u32 battler); +u32 GetUsableZMove(u32 battler, u32 move); +void ActivateZMove(u32 battler); +bool32 IsViableZMove(u32 battler, u32 move); +bool32 TryChangeZTrigger(u32 battler, u32 moveIndex); +u32 GetTypeBasedZMove(u32 move); +u32 GetSignatureZMove(u32 move, u32 species, u32 item); bool32 MoveSelectionDisplayZMove(u16 zmove, u32 battler); void SetZEffect(void); -bool32 IsZMoveUsable(u8 battler, u16 moveIndex); -void GetUsableZMoves(u8 battler, u16 *moves); -u16 GetZMovePower(u16 move); +void AssignUsableZMoves(u32 battler, u16 *moves); +u32 GetZMovePower(u32 move); #endif // GUARD_BATTLE_Z_MOVE_H diff --git a/include/config/battle.h b/include/config/battle.h index f80cf3d2a1d7..881e8a27156d 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -39,10 +39,11 @@ #define B_MULTIPLE_TARGETS_DMG GEN_LATEST // In Gen4+, damage dealt by moves that hit multiple targets at once is reduced to 75%. Before, it was 50%. // Type settings +#define B_EXPANDED_TYPE_NAMES TRUE // If TRUE, type names are increased from 6 characters to 8 characters. #define B_GHOSTS_ESCAPE GEN_LATEST // In Gen6+, abilities like Shadow Tag or moves like Mean Look fail on Ghost-type Pokémon. They can also escape any Wild Battle. #define B_PARALYZE_ELECTRIC GEN_LATEST // In Gen6+, Electric-type Pokémon can't be paralyzed. #define B_POWDER_GRASS GEN_LATEST // In Gen6+, Grass-type Pokémon are immune to powder and spore moves. -#define B_STEEL_RESISTANCES GEN_LATEST // In Gen6+, Steel-type Pokémon are no longer resistant to Dark-type and Ghost-type moves. +#define B_UPDATED_TYPE_MATCHUPS GEN_LATEST // Updates Type matchups. src/data/types_info.h for details. #define B_PRANKSTER_DARK_TYPES GEN_LATEST // In Gen7+, Prankster-elevated status moves do not affect Dark type Pokémon. #define B_SHEER_COLD_IMMUNITY GEN_LATEST // In Gen7+, Ice-types are immune to Sheer Cold #define B_ROOST_PURE_FLYING GEN_LATEST // In Gen5+, Roost makes pure Flying-types into Normal-type. @@ -118,6 +119,8 @@ #define B_IMPRISON GEN_LATEST // In Gen5+, Imprison doesn't fail if opposing pokemon don't have any moves the user knows. #define B_ALLY_SWITCH_FAIL_CHANCE GEN_LATEST // In Gen9, using Ally Switch consecutively decreases the chance of success for each consecutive use. #define B_SKETCH_BANS GEN_LATEST // In Gen9+, Sketch is unable to copy more moves than in previous generations. +#define B_KNOCK_OFF_REMOVAL GEN_LATEST // In Gen5+, Knock Off removes the foe's item instead of rendering it unusable. +#define B_HEAL_BELL_SOUNDPROOF GEN_LATEST // In Gen5, Heal Bell affects all mons with Soundproof. In Gen6-8 it affects inactive mons, but not battlers. In Gen9 it always affects the user. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -145,6 +148,9 @@ #define B_INTREPID_SWORD GEN_LATEST // In Gen9+, Intrepid Sword raises Attack by one stage only once per Battle. #define B_DAUNTLESS_SHIELD GEN_LATEST // In Gen9+, Dauntless Shield raises Defense by one stage only once per Battle. #define B_DISGUISE_HP_LOSS GEN_LATEST // In Gen8+, when a Disguised Mimikyu's Disguise is busted, upon changing to its Busted Form it loses HP equal to 1/8 of its maximum HP. +#define B_ABILITY_TRIGGER_CHANCE GEN_LATEST // In Gen3, Shed Skin, Cute Charm, Flame Body, Static and Poison Point have a 1/3 chance to trigger. In Gen 4+ it's 30%. + // In Gen3, Effect Spore has a 10% chance to sleep, poison or paralyze, with an equal chance. + // In Gen4, it's 30%. In Gen5+ it has 11% to sleep, 9% chance to poison and 10% chance to paralyze. // 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. @@ -153,6 +159,7 @@ #define B_X_ITEMS_BUFF GEN_LATEST // In Gen7+, the X Items raise a stat by 2 stages instead of 1. #define B_MENTAL_HERB GEN_LATEST // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. #define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. +#define B_RETURN_STOLEN_NPC_ITEMS GEN_LATEST // In Gen5+, Thief and Covet no longer steal items from NPCs. #define B_RESTORE_HELD_BATTLE_ITEMS GEN_LATEST // In Gen9, all non-berry items are restored after battle. #define B_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Latis' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. #define B_NET_BALL_MODIFIER GEN_LATEST // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. @@ -179,6 +186,8 @@ #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. +#define B_FLAG_TERA_ORB_CHARGED 0 // If this flag is set, the Tera Orb is charged. It is automatically set upon healing and cleared upon Terastallizing once configured. +#define B_FLAG_TERA_ORB_NO_COST 0 // If this flag is set, the Tera Orb does not use up its charge upon Terastallization. In S/V, this occurs after an event with Terapagos. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. @@ -198,7 +207,6 @@ // Terrain settings #define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. #define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8. -#define B_FOG_TERRAIN TRUE // If TRUE, overworld Fog generates Misty Terrain as in Gen 8. #define B_TERRAIN_TYPE_BOOST GEN_LATEST // In Gen8, damage is boosted by 30% instead of 50%. #define B_SECRET_POWER_EFFECT GEN_LATEST // Secret Power's effects change depending on terrain and generation. See MOVE_EFFECT_SECRET_POWER's case in `SetMoveEffect`. #define B_SECRET_POWER_ANIMATION GEN_LATEST // Secret Power's animations change depending on terrain and generation. @@ -208,13 +216,15 @@ // Interface settings #define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. #define B_FAST_INTRO TRUE // If set to TRUE, battle intro texts print at the same time as animation of a Pokémon, as opposing to waiting for the animation to end. -#define B_FAST_HP_DRAIN TRUE // If set to TRUE, HP bars will move faster to accomodate higher max HP amounts. +#define B_FAST_HP_DRAIN TRUE // If set to TRUE, HP bars will move faster. +#define B_FAST_EXP_GROW TRUE // If set to TRUE, EXP bars will move faster. #define B_SHOW_TARGETS TRUE // If set to TRUE, all available targets, for moves hitting 2 or 3 Pokémon, will be shown before selecting a move. #define B_SHOW_CATEGORY_ICON TRUE // If set to TRUE, it will show an icon in the summary showing the move's category. #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. -#define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters. +#define B_EXPANDED_MOVE_NAMES TRUE // If set to FALSE, move names are decreased from 16 characters to 12 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 +#define B_MOVE_DESCRIPTION_BUTTON L_BUTTON // If set to a button other than B_LAST_USED_BALL_BUTTON, pressing this button will open the move description menu // 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) @@ -235,7 +245,8 @@ #define B_TRAINER_MON_RANDOM_ABILITY FALSE // If this is set to TRUE a random legal ability will be generated for a trainer mon #define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level #define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config. -#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail. +#define B_OVERWORLD_SNOW GEN_LATEST // In Gen9+, overworld Snow will summon snow instead of hail in battle. +#define B_OVERWORLD_FOG GEN_LATEST // In Gen8+, overworld Fog summons Misty Terrain in battle. In Gen4 only, overworld Fog summons the unique fog weather condition in battle. #define B_TOXIC_REVERSAL GEN_LATEST // In Gen5+, bad poison will change to regular poison at the end of battles. #define B_TRY_CATCH_TRAINER_BALL GEN_LATEST // In Gen4+, trying to catch a Trainer's Pokémon does not consume the Poké Ball. @@ -257,4 +268,9 @@ #define B_NEW_IMPACT_PALETTE TRUE // If set to TRUE, it updates the basic 'hit' palette. #define B_NEW_SURF_PARTICLE_PALETTE TRUE // If set to TRUE, it updates Surf's wave palette. +// Poké Ball animation and sounds +#define B_ENEMY_THROW_BALLS GEN_LATEST // In GEN_6+, enemy Trainers throw Poké Balls into battle instead of them just appearing on the ground and opening. +#define B_ENEMY_THROW_BALLS_SOUND GEN_LATEST // In GEN_5+, enemy Trainer's Poké Balls make a sound when thrown to send out a Pokémon. This can only be used when B_ENEMY_THROW_BALLS is set to GEN_6 or later. +#define B_PLAYER_THROW_BALLS_SOUND GEN_LATEST // In GEN_5+, the player's Poké Balls make a sound when thrown to send out a Pokémon. + #endif // GUARD_CONFIG_BATTLE_H diff --git a/include/config/debug.h b/include/config/debug.h index eea676b3070c..2446b9360c0b 100644 --- a/include/config/debug.h +++ b/include/config/debug.h @@ -12,6 +12,6 @@ #define DEBUG_AI_DELAY_TIMER FALSE // If set to TRUE, displays the number of frames it takes for the AI to choose a move. Replaces the "What will PKMN do" text. Useful for devs or anyone who modifies the AI code and wants to see if it doesn't take too long to run. // Pokémon Debug -#define DEBUG_POKEMON_MENU TRUE // Enables a debug menu for pokemon sprites and icons, accessed by pressing SELECT in the summary screen. +#define DEBUG_POKEMON_SPRITE_VISUALIZER TRUE // Enables a debug menu for Pokémon sprites and icons, accessed by pressing Select in the summary screen. #endif // GUARD_CONFIG_DEBUG_H diff --git a/include/config.h b/include/config/general.h similarity index 84% rename from include/config.h rename to include/config/general.h index 41695a77b4ee..dc39f4919a3f 100644 --- a/include/config.h +++ b/include/config/general.h @@ -1,5 +1,5 @@ -#ifndef GUARD_CONFIG_H -#define GUARD_CONFIG_H +#ifndef GUARD_CONFIG_GENERAL_H +#define GUARD_CONFIG_GENERAL_H // In the Generation 3 games, Asserts were used in various debug builds. // Ruby/Sapphire and Emerald do not have these asserts while Fire Red @@ -53,7 +53,7 @@ #define POKEMON_EXPANSION #define ITEM_EXPANSION -// Generation constants used in configs to define behavior +// Generation constants used in configs to define behavior. #define GEN_1 0 #define GEN_2 1 #define GEN_3 2 @@ -63,6 +63,7 @@ #define GEN_7 6 #define GEN_8 7 #define GEN_9 8 +// Changing GEN_LATEST's value to a different Generation will change every default setting that uses it at once. #define GEN_LATEST GEN_9 // General settings @@ -70,6 +71,7 @@ #define POKEDEX_PLUS_HGSS FALSE // If TRUE, enables the custom HGSS style Pokedex. #define SUMMARY_SCREEN_NATURE_COLORS TRUE // If TRUE, nature-based stat boosts and reductions will be red and blue in the summary screen. #define HQ_RANDOM TRUE // If TRUE, replaces the default RNG with an implementation of SFC32 RNG. May break code that relies on RNG. +#define COMPETITIVE_PARTY_SYNTAX TRUE // If TRUE, parties are defined in "competitive syntax". // Measurement system constants to be used for UNITS #define UNITS_IMPERIAL 0 // Inches, feet, pounds @@ -78,4 +80,7 @@ #define UNITS UNITS_IMPERIAL #define CHAR_DEC_SEPARATOR CHAR_PERIOD // CHAR_PERIOD is used as a decimal separator only in the UK and the US. The rest of the world uses CHAR_COMMA. -#endif // GUARD_CONFIG_H +// Naming Screen +#define AUTO_LOWERCASE_KEYBOARD GEN_LATEST // Starting in GEN_6, after entering the first uppercase character, the keyboard switches to lowercase letters. + +#endif // GUARD_CONFIG_GENERAL_H diff --git a/include/config/item.h b/include/config/item.h index 9b2f4156d801..644a73ade6d8 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -2,6 +2,7 @@ #define GUARD_CONFIG_ITEM_H // Item config +#define I_EXPANDED_ITEM_NAMES TRUE // If set to FALSE, item names are decreased from 20 characters to 14 characters. #define I_SHINY_CHARM_ADDITIONAL_ROLLS 2 // Amount of additional shiny rolls if the player has the Shiny Charm. Set it to 0 to disable Shiny Charm's effects. #define I_KEY_FOSSILS GEN_LATEST // In Gen4+, all Gen 3 fossils became regular items. #define I_KEY_ESCAPE_ROPE GEN_LATEST // In Gen8, Escape Rope became a Key Item. Keep in mind, this will make it free to buy in marts. @@ -36,4 +37,9 @@ // Vs. Seeker #define I_VS_SEEKER_CHARGING 0 // If this flag is assigned, the Vs Seeker functionality will be enabled. When the player has the Vs. Seeker, Match Call rematch functions will stop working. +//Fishing +#define I_FISHING_CHAIN FALSE // Introduced in XY, hooking the same Pokémon repeatedly will increase the odds of that mon being shiny. NOTE: This implementation is an approximation of the actual feature, as XY have not been throughoutly documented or datamined. +#define I_FISHING_MINIGAME GEN_3 // Each generation uses a variation of reeling in Pokémon once they have been hooked. +#define I_FISHING_PROXIMITY FALSE // Introduced in XY, fishing away from other people in enclosed areas will increase the chances of a Pokémon being hooked. NOTE: This implementation is an approximation of the actual feature, as XY have not been throughoutly documented or datamined. + #endif // GUARD_CONFIG_ITEM_H diff --git a/include/config/overworld.h b/include/config/overworld.h index 06a396d4ddd6..b6664269960c 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -6,18 +6,19 @@ // 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. #define OW_DOUBLE_APPROACH_WITH_ONE_MON FALSE // If enabled, you can be spotted by two trainers at the same time even if you only have one eligible Pokémon in your party. +#define OW_HIDE_REPEAT_MAP_POPUP FALSE // If enabled, map popups will not appear if entering a map with the same Map Section Id as the last. + +// These generational defines only make a distinction for Berries and the OW_PC_MOVE_ORDER +#define GEN_6_XY GEN_6 +#define GEN_6_ORAS GEN_LATEST + 1 // PC settings #define OW_PC_PRESS_B GEN_LATEST // In Gen4, pressing B when holding a Pokémon is equivalent to placing it. In Gen3, it gives the "You're holding a Pokémon!" error. #define OW_PC_JAPAN_WALDA_ICONS TRUE // In the US release of Emerald, the Cross, Bolt, and Plusle icons for Walda's wallpapers were left blank from the Japan release. Setting this to TRUE will restore them. #define OW_PC_HEAL GEN_LATEST // In Gen8+, Pokémon are not healed when deposited in the PC. - -// Berry settings -// These generational defines only make a distinction for Berries! -#define GEN_6_XY GEN_6 -#define GEN_6_ORAS GEN_LATEST + 1 +#define OW_PC_MOVE_ORDER GEN_LATEST // Starting in Gen4, the order of options in the PC menu change. +#define OW_PC_RELEASE_ITEM GEN_LATEST // In Gen8+, Pokémon that get released with a held item return it to the bag. #define OW_BERRY_MUTATIONS FALSE // If enabled, Berry plants can mutate based on berries planted next to them. #define OW_BERRY_MUTATION_CHANCE 25 // Determines the % chance of a mutation. @@ -32,27 +33,68 @@ #define OW_BERRY_YIELD_RATE GEN_3 // Presets for how many Berries each plant can yield. #define OW_BERRY_DRAIN_RATE GEN_6_ORAS // If OW_BERRY_MOISTURE is enabled, this setting changes how fast the soil dries out. GEN_4 uses a Berry-dependent drain rate, GEN_6_XY dries out in 24 hours (4 hours with the relevant Mulch) and GEN_6_ORAS dries out in 4 hours. Other values are illegal. +// Overworld Pokémon +#define OW_POKEMON_OBJECT_EVENTS TRUE // Adds Object Event fields for every species. Can be used for NPCs using the OBJ_EVENT_GFX_SPECIES macro (eg. OBJ_EVENT_GFX_SPECIES(BULBASAUR)) +#define OW_SUBSTITUTE_PLACEHOLDER TRUE // Use a substitute OW for Pokémon that are missing overworld sprites +#define OW_LARGE_OW_SUPPORT TRUE // If true, adds a small amount of overhead to OW code so that large (48x48, 64x64) OWs will display correctly under bridges, etc. +#define OW_PKMN_OBJECTS_SHARE_PALETTES FALSE // [WIP!! NOT ALL PALETTES HAVE BEEN ADJUSTED FOR THIS!!] If TRUE, follower palettes are taken from battle sprites. +#define OW_GFX_COMPRESS TRUE // Adds support for compressed OW graphics, (Also compresses pokemon follower graphics). + // Compressed gfx are incompatible with non-power-of-two sprite sizes: + // (You should not use 48x48 sprites/tables for compressed gfx) + // 16x32, 32x32, 64x64 etc are fine +// Follower Pokémon +#define OW_FOLLOWERS_ENABLED FALSE // Enables follower Pokémon, HGSS style. Requires OW_POKEMON_OBJECT_EVENTS. Note that additional scripting may be required for them to be fully supported! +#define OW_FOLLOWERS_BOBBING TRUE // If true, follower pokemon will bob up and down during their idle & walking animations +#define OW_FOLLOWERS_POKEBALLS TRUE // Followers will emerge from the pokeball they are stored in, instead of a normal pokeball + // Out-of-battle Ability effects -#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. -#define OW_COMPOUND_EYES GEN_LATEST // Prior to Gen9, if a Pokémon with Compound Eyes is leading the party, the wild held item rate is increased to 60%/20%. -#define OW_SUPER_LUCK GEN_LATEST // In Gen8, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. -#define OW_CUTE_CHARM GEN_LATEST // Prior to Gen9, if a Pokémon with Cute Charm is leading the party, wild encounters have a 66.7% chance to be forced to be of the opposite gender. -#define OW_ILLUMINATE GEN_LATEST // Prior to Gen9, if a Pokémon with Illuminate is leading the party, the wild encounter rate is doubled. -#define OW_INFILTRATOR GEN_LATEST // In Gen8, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. -#define OW_HARVEST GEN_LATEST // In Gen8, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. -#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. -#define OW_STORM_DRAIN GEN_LATEST // In Gen8, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. -#define OW_FLASH_FIRE GEN_LATEST // In Gen8, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. -#define OW_MAGNET_PULL GEN_LATEST // Prior to Gen9, if a Pokémon with Magnet Pull is leading the party, there is a 50% chance to encounter a Steel-type Pokémon. -#define OW_STATIC GEN_LATEST // Prior to Gen9, if a Pokémon with Static is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8+, if a Pokémon with Synchronize leads the party, wild Pokémon will always have their same Nature as opposed to the 50% chance in previous games. Gift Pokémon excluded. + // In USUM (here GEN_7), if a Pokémon with Synchronize leads the party, gift Pokémon will always have their same Nature regardless of their Egg Group. + // In ORAS (here GEN_6), if a Pokémon with Synchronize leads the party, gift Pokémon from the No Eggs Discovered Egg Group will always have their same Nature. +#define OW_SUPER_LUCK GEN_LATEST // In Gen8+, if a Pokémon with Super Luck is leading the party, the wild held item rate is increased to 60%/20%. +#define OW_INFILTRATOR GEN_LATEST // In Gen8+, if a Pokémon with Infiltrator is leading the party, the wild encounter rate is halved. +#define OW_HARVEST GEN_LATEST // In Gen8+, if a Pokémon with Harvest is leading the party, there is a 50% chance to encounter a Grass-type Pokémon. +#define OW_LIGHTNING_ROD GEN_LATEST // In Gen8+, if a Pokémon with Lightning Rod is leading the party, there is a 50% chance to encounter an Electric-type Pokémon. +#define OW_STORM_DRAIN GEN_LATEST // In Gen8+, if a Pokémon with Storm Drain is leading the party, there is a 50% chance to encounter a Water-type Pokémon. +#define OW_FLASH_FIRE GEN_LATEST // In Gen8+, if a Pokémon with Flash Fire is leading the party, there is a 50% chance to encounter a Fire-type Pokémon. + +// These generational defines only make a distinction for OW_ALTERED_TIME_RATIO +#define GEN_8_PLA GEN_LATEST + 2 + +//Time +#define OW_TIMES_OF_DAY GEN_LATEST // Different generations have the times of day change at different times. +#define OW_USE_FAKE_RTC FALSE // When TRUE, seconds on the in-game clock will only advance once every 60 playTimeVBlanks (every 60 frames). +#define OW_ALTERED_TIME_RATIO GEN_LATEST // In GEN_8_PLA, the time in game moves forward 60 seconds for every second in the RTC. In GEN_9, it is 20 seconds. This has no effect if OW_USE_FAKE_RTC is FALSE. // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. // Eg: Replace with FLAG_UNUSED_0x264 so you can use that flag to toggle the feature. +#define OW_FLAG_PAUSE_TIME 0 // If this flag is set and OW_USE_FAKE_RTC is enabled, seconds on the in-game clock will not advance. #define OW_FLAG_NO_ENCOUNTER 0 // If this flag is set, wild encounters will be disabled. #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) +// Map pop-up config +#define OW_POPUP_GENERATION GEN_3 // Different generations display location names in overworld pop-ups differently. + // Only choies are currently GEN_3 and GEN_5, all others will default to Gen3 pop-ups. + +// Gen5 map pop-up config +// Constants +#define OW_POPUP_BW_TIME_NONE 0 // Don't show the time +#define OW_POPUP_BW_TIME_12_HR 1 // Use 12 hour (AM/PM) time +#define OW_POPUP_BW_TIME_24_HR 2 // Use 24 hour time + +#define OW_POPUP_BW_COLOR_BLACK 0 // Black pop-up from B2 +#define OW_POPUP_BW_COLOR_WHITE 1 // White pop-up from W2 + +// Configuration +#define OW_POPUP_BW_COLOR OW_POPUP_BW_COLOR_BLACK // B2W2 use different colors for their map pop-ups. +#define OW_POPUP_BW_TIME_MODE OW_POPUP_BW_TIME_NONE // Determines what type of time is shown. +#define OW_POPUP_BW_ALPHA_BLEND FALSE // Enables alpha blending/transparency for the pop-ups. Mainly intended to be used with the black color option. + +// Pokémon Center +#define OW_IGNORE_EGGS_ON_HEAL GEN_LATEST // In Gen 4+, the nurse in the Pokémon Center does not heal Eggs on healing machine. + #endif // GUARD_CONFIG_OVERWORLD_H diff --git a/include/config/pokemon.h b/include/config/pokemon.h index 810640d6b5dd..7bf9450cbbbe 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -36,14 +36,21 @@ #define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. #define P_KADABRA_EVERSTONE GEN_LATEST // Since Gen 4, Kadabra can evolve even when holding an Everstone. #define P_SHUCKLE_BERRY_JUICE GEN_LATEST // In Gen 2, Shuckle had a 1/16 chance of converting Berry that it's holding into Berry Juice. Enabling this will allow Shuckle to do this with an Oran Berry, which is the spiritual succesor of the Berry item. +#define P_ARCEUS_UNIQUE_FORM_ICONS GEN_LATEST // Since Gen 9, Arceus additionally changes its icon to reflect its current form. // Other settings -#define P_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon -#define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. -#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. -#define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. -#define P_SHOW_TERA_TYPE GEN_8 // Since Gen 9, the Tera Type is shown on the summary screen. -#define P_TM_LITERACY GEN_LATEST // Since Gen 6, TM illiterate Pokémon can learn TMs that teach moves that are in their level-up learnsets. +#define P_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon +#define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. +#define P_CRIES_ENABLED TRUE // If TRUE, Pokémon will have cries. Disabling this saves around a LOT of ROM space (over 25%!), but instead we recommend disabling individual unused Pokémon families in include/config/species_enabled.h. +#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. +#define P_SHOW_TERA_TYPE GEN_8 // Since Gen 9, the Tera Type is shown on the summary screen. +#define P_TM_LITERACY GEN_LATEST // Since Gen 6, TM illiterate Pokémon can learn TMs that teach moves that are in their level-up learnsets. +#define P_CAN_FORGET_HIDDEN_MOVE FALSE // If TRUE, Pokémon can forget any move, even if it is a Hidden Move. +#define P_EGG_CYCLE_LENGTH GEN_LATEST // Since Gen 8, egg cycles take half as many steps as before. +#define P_TWO_FRAME_FRONT_SPRITES TRUE // In Pokémon Emerald, Pokémon front sprites always consist of two frames. This config can revert it to only use the first frame, as is the case in the other Gen 3 games. +#define P_ONLY_OBTAINABLE_SHINIES FALSE // If TRUE, Pokémon encountered in the Battle Pyramid won't be shiny. +#define P_NO_SHINIES_WITHOUT_POKEBALLS FALSE // If TRUE, Pokémon encountered when the player is out of Poké Balls won't be shiny // Learnset helper toggles #define P_LEARNSET_HELPER_TEACHABLE TRUE // If TRUE, teachable_learnsets.h will be populated by tools/learnset_helpers/teachable.py using the included JSON files based on available TMs and tutors. diff --git a/include/config/test.h b/include/config/test.h new file mode 100644 index 000000000000..bd721beb9d60 --- /dev/null +++ b/include/config/test.h @@ -0,0 +1,1138 @@ +#ifndef GUARD_CONFIG_TEST_H +#define GUARD_CONFIG_TEST_H + +#undef B_EXPANDED_MOVE_NAMES +#define B_EXPANDED_MOVE_NAMES TRUE +#undef I_EXPANDED_ITEM_NAMES +#define I_EXPANDED_ITEM_NAMES TRUE +#undef POKEMON_NAME_LENGTH +#define POKEMON_NAME_LENGTH 12 +#undef B_EXPANDED_TYPE_NAMES +#define B_EXPANDED_TYPE_NAMES TRUE + +#undef P_MEGA_EVOLUTIONS +#define P_MEGA_EVOLUTIONS TRUE +#undef P_PRIMAL_REVERSIONS +#define P_PRIMAL_REVERSIONS TRUE +#undef P_ULTRA_BURST_FORMS +#define P_ULTRA_BURST_FORMS TRUE +#undef P_GIGANTAMAX_FORMS +#define P_GIGANTAMAX_FORMS TRUE +#undef P_TERA_FORMS +#define P_TERA_FORMS TRUE +#undef P_FUSION_FORMS +#define P_FUSION_FORMS TRUE +#undef P_ALOLAN_FORMS +#define P_ALOLAN_FORMS TRUE +#undef P_GALARIAN_FORMS +#define P_GALARIAN_FORMS TRUE +#undef P_HISUIAN_FORMS +#define P_HISUIAN_FORMS TRUE +#undef P_PALDEAN_FORMS +#define P_PALDEAN_FORMS TRUE +#undef P_PIKACHU_EXTRA_FORMS +#define P_PIKACHU_EXTRA_FORMS TRUE +#undef P_COSPLAY_PIKACHU_FORMS +#define P_COSPLAY_PIKACHU_FORMS TRUE +#undef P_CAP_PIKACHU_FORMS +#define P_CAP_PIKACHU_FORMS TRUE +#undef P_GEN_2_CROSS_EVOS +#define P_GEN_2_CROSS_EVOS TRUE +#undef P_GEN_3_CROSS_EVOS +#define P_GEN_3_CROSS_EVOS TRUE +#undef P_GEN_4_CROSS_EVOS +#define P_GEN_4_CROSS_EVOS TRUE +#undef P_GEN_6_CROSS_EVOS +#define P_GEN_6_CROSS_EVOS TRUE +#undef P_GEN_8_CROSS_EVOS +#define P_GEN_8_CROSS_EVOS TRUE +#undef P_GEN_9_CROSS_EVOS +#define P_GEN_9_CROSS_EVOS TRUE + +#undef P_FAMILY_BULBASAUR +#define P_FAMILY_BULBASAUR TRUE +#undef P_FAMILY_CHARMANDER +#define P_FAMILY_CHARMANDER TRUE +#undef P_FAMILY_SQUIRTLE +#define P_FAMILY_SQUIRTLE TRUE +#undef P_FAMILY_CATERPIE +#define P_FAMILY_CATERPIE TRUE +#undef P_FAMILY_WEEDLE +#define P_FAMILY_WEEDLE TRUE +#undef P_FAMILY_PIDGEY +#define P_FAMILY_PIDGEY TRUE +#undef P_FAMILY_RATTATA +#define P_FAMILY_RATTATA TRUE +#undef P_FAMILY_SPEAROW +#define P_FAMILY_SPEAROW TRUE +#undef P_FAMILY_EKANS +#define P_FAMILY_EKANS TRUE +#undef P_FAMILY_PIKACHU +#define P_FAMILY_PIKACHU TRUE +#undef P_FAMILY_SANDSHREW +#define P_FAMILY_SANDSHREW TRUE +#undef P_FAMILY_NIDORAN +#define P_FAMILY_NIDORAN TRUE +#undef P_FAMILY_CLEFAIRY +#define P_FAMILY_CLEFAIRY TRUE +#undef P_FAMILY_VULPIX +#define P_FAMILY_VULPIX TRUE +#undef P_FAMILY_JIGGLYPUFF +#define P_FAMILY_JIGGLYPUFF TRUE +#undef P_FAMILY_ZUBAT +#define P_FAMILY_ZUBAT TRUE +#undef P_FAMILY_ODDISH +#define P_FAMILY_ODDISH TRUE +#undef P_FAMILY_PARAS +#define P_FAMILY_PARAS TRUE +#undef P_FAMILY_VENONAT +#define P_FAMILY_VENONAT TRUE +#undef P_FAMILY_DIGLETT +#define P_FAMILY_DIGLETT TRUE +#undef P_FAMILY_MEOWTH +#define P_FAMILY_MEOWTH TRUE +#undef P_FAMILY_PSYDUCK +#define P_FAMILY_PSYDUCK TRUE +#undef P_FAMILY_MANKEY +#define P_FAMILY_MANKEY TRUE +#undef P_FAMILY_GROWLITHE +#define P_FAMILY_GROWLITHE TRUE +#undef P_FAMILY_POLIWAG +#define P_FAMILY_POLIWAG TRUE +#undef P_FAMILY_ABRA +#define P_FAMILY_ABRA TRUE +#undef P_FAMILY_MACHOP +#define P_FAMILY_MACHOP TRUE +#undef P_FAMILY_BELLSPROUT +#define P_FAMILY_BELLSPROUT TRUE +#undef P_FAMILY_TENTACOOL +#define P_FAMILY_TENTACOOL TRUE +#undef P_FAMILY_GEODUDE +#define P_FAMILY_GEODUDE TRUE +#undef P_FAMILY_PONYTA +#define P_FAMILY_PONYTA TRUE +#undef P_FAMILY_SLOWPOKE +#define P_FAMILY_SLOWPOKE TRUE +#undef P_FAMILY_MAGNEMITE +#define P_FAMILY_MAGNEMITE TRUE +#undef P_FAMILY_FARFETCHD +#define P_FAMILY_FARFETCHD TRUE +#undef P_FAMILY_DODUO +#define P_FAMILY_DODUO TRUE +#undef P_FAMILY_SEEL +#define P_FAMILY_SEEL TRUE +#undef P_FAMILY_GRIMER +#define P_FAMILY_GRIMER TRUE +#undef P_FAMILY_SHELLDER +#define P_FAMILY_SHELLDER TRUE +#undef P_FAMILY_GASTLY +#define P_FAMILY_GASTLY TRUE +#undef P_FAMILY_ONIX +#define P_FAMILY_ONIX TRUE +#undef P_FAMILY_DROWZEE +#define P_FAMILY_DROWZEE TRUE +#undef P_FAMILY_KRABBY +#define P_FAMILY_KRABBY TRUE +#undef P_FAMILY_VOLTORB +#define P_FAMILY_VOLTORB TRUE +#undef P_FAMILY_EXEGGCUTE +#define P_FAMILY_EXEGGCUTE TRUE +#undef P_FAMILY_CUBONE +#define P_FAMILY_CUBONE TRUE +#undef P_FAMILY_HITMONS +#define P_FAMILY_HITMONS TRUE +#undef P_FAMILY_LICKITUNG +#define P_FAMILY_LICKITUNG TRUE +#undef P_FAMILY_KOFFING +#define P_FAMILY_KOFFING TRUE +#undef P_FAMILY_RHYHORN +#define P_FAMILY_RHYHORN TRUE +#undef P_FAMILY_CHANSEY +#define P_FAMILY_CHANSEY TRUE +#undef P_FAMILY_TANGELA +#define P_FAMILY_TANGELA TRUE +#undef P_FAMILY_KANGASKHAN +#define P_FAMILY_KANGASKHAN TRUE +#undef P_FAMILY_HORSEA +#define P_FAMILY_HORSEA TRUE +#undef P_FAMILY_GOLDEEN +#define P_FAMILY_GOLDEEN TRUE +#undef P_FAMILY_STARYU +#define P_FAMILY_STARYU TRUE +#undef P_FAMILY_MR_MIME +#define P_FAMILY_MR_MIME TRUE +#undef P_FAMILY_SCYTHER +#define P_FAMILY_SCYTHER TRUE +#undef P_FAMILY_JYNX +#define P_FAMILY_JYNX TRUE +#undef P_FAMILY_ELECTABUZZ +#define P_FAMILY_ELECTABUZZ TRUE +#undef P_FAMILY_MAGMAR +#define P_FAMILY_MAGMAR TRUE +#undef P_FAMILY_PINSIR +#define P_FAMILY_PINSIR TRUE +#undef P_FAMILY_TAUROS +#define P_FAMILY_TAUROS TRUE +#undef P_FAMILY_MAGIKARP +#define P_FAMILY_MAGIKARP TRUE +#undef P_FAMILY_LAPRAS +#define P_FAMILY_LAPRAS TRUE +#undef P_FAMILY_DITTO +#define P_FAMILY_DITTO TRUE +#undef P_FAMILY_EEVEE +#define P_FAMILY_EEVEE TRUE +#undef P_FAMILY_PORYGON +#define P_FAMILY_PORYGON TRUE +#undef P_FAMILY_OMANYTE +#define P_FAMILY_OMANYTE TRUE +#undef P_FAMILY_KABUTO +#define P_FAMILY_KABUTO TRUE +#undef P_FAMILY_AERODACTYL +#define P_FAMILY_AERODACTYL TRUE +#undef P_FAMILY_SNORLAX +#define P_FAMILY_SNORLAX TRUE +#undef P_FAMILY_ARTICUNO +#define P_FAMILY_ARTICUNO TRUE +#undef P_FAMILY_ZAPDOS +#define P_FAMILY_ZAPDOS TRUE +#undef P_FAMILY_MOLTRES +#define P_FAMILY_MOLTRES TRUE +#undef P_FAMILY_DRATINI +#define P_FAMILY_DRATINI TRUE +#undef P_FAMILY_MEWTWO +#define P_FAMILY_MEWTWO TRUE +#undef P_FAMILY_MEW +#define P_FAMILY_MEW TRUE + +#undef P_FAMILY_CHIKORITA +#define P_FAMILY_CHIKORITA TRUE +#undef P_FAMILY_CYNDAQUIL +#define P_FAMILY_CYNDAQUIL TRUE +#undef P_FAMILY_TOTODILE +#define P_FAMILY_TOTODILE TRUE +#undef P_FAMILY_SENTRET +#define P_FAMILY_SENTRET TRUE +#undef P_FAMILY_HOOTHOOT +#define P_FAMILY_HOOTHOOT TRUE +#undef P_FAMILY_LEDYBA +#define P_FAMILY_LEDYBA TRUE +#undef P_FAMILY_SPINARAK +#define P_FAMILY_SPINARAK TRUE +#undef P_FAMILY_CHINCHOU +#define P_FAMILY_CHINCHOU TRUE +#undef P_FAMILY_TOGEPI +#define P_FAMILY_TOGEPI TRUE +#undef P_FAMILY_NATU +#define P_FAMILY_NATU TRUE +#undef P_FAMILY_MAREEP +#define P_FAMILY_MAREEP TRUE +#undef P_FAMILY_MARILL +#define P_FAMILY_MARILL TRUE +#undef P_FAMILY_SUDOWOODO +#define P_FAMILY_SUDOWOODO TRUE +#undef P_FAMILY_HOPPIP +#define P_FAMILY_HOPPIP TRUE +#undef P_FAMILY_AIPOM +#define P_FAMILY_AIPOM TRUE +#undef P_FAMILY_SUNKERN +#define P_FAMILY_SUNKERN TRUE +#undef P_FAMILY_YANMA +#define P_FAMILY_YANMA TRUE +#undef P_FAMILY_WOOPER +#define P_FAMILY_WOOPER TRUE +#undef P_FAMILY_MURKROW +#define P_FAMILY_MURKROW TRUE +#undef P_FAMILY_MISDREAVUS +#define P_FAMILY_MISDREAVUS TRUE +#undef P_FAMILY_UNOWN +#define P_FAMILY_UNOWN TRUE +#undef P_FAMILY_WOBBUFFET +#define P_FAMILY_WOBBUFFET TRUE +#undef P_FAMILY_GIRAFARIG +#define P_FAMILY_GIRAFARIG TRUE +#undef P_FAMILY_PINECO +#define P_FAMILY_PINECO TRUE +#undef P_FAMILY_DUNSPARCE +#define P_FAMILY_DUNSPARCE TRUE +#undef P_FAMILY_GLIGAR +#define P_FAMILY_GLIGAR TRUE +#undef P_FAMILY_SNUBBULL +#define P_FAMILY_SNUBBULL TRUE +#undef P_FAMILY_QWILFISH +#define P_FAMILY_QWILFISH TRUE +#undef P_FAMILY_SHUCKLE +#define P_FAMILY_SHUCKLE TRUE +#undef P_FAMILY_HERACROSS +#define P_FAMILY_HERACROSS TRUE +#undef P_FAMILY_SNEASEL +#define P_FAMILY_SNEASEL TRUE +#undef P_FAMILY_TEDDIURSA +#define P_FAMILY_TEDDIURSA TRUE +#undef P_FAMILY_SLUGMA +#define P_FAMILY_SLUGMA TRUE +#undef P_FAMILY_SWINUB +#define P_FAMILY_SWINUB TRUE +#undef P_FAMILY_CORSOLA +#define P_FAMILY_CORSOLA TRUE +#undef P_FAMILY_REMORAID +#define P_FAMILY_REMORAID TRUE +#undef P_FAMILY_DELIBIRD +#define P_FAMILY_DELIBIRD TRUE +#undef P_FAMILY_MANTINE +#define P_FAMILY_MANTINE TRUE +#undef P_FAMILY_SKARMORY +#define P_FAMILY_SKARMORY TRUE +#undef P_FAMILY_HOUNDOUR +#define P_FAMILY_HOUNDOUR TRUE +#undef P_FAMILY_PHANPY +#define P_FAMILY_PHANPY TRUE +#undef P_FAMILY_STANTLER +#define P_FAMILY_STANTLER TRUE +#undef P_FAMILY_SMEARGLE +#define P_FAMILY_SMEARGLE TRUE +#undef P_FAMILY_MILTANK +#define P_FAMILY_MILTANK TRUE +#undef P_FAMILY_RAIKOU +#define P_FAMILY_RAIKOU TRUE +#undef P_FAMILY_ENTEI +#define P_FAMILY_ENTEI TRUE +#undef P_FAMILY_SUICUNE +#define P_FAMILY_SUICUNE TRUE +#undef P_FAMILY_LARVITAR +#define P_FAMILY_LARVITAR TRUE +#undef P_FAMILY_LUGIA +#define P_FAMILY_LUGIA TRUE +#undef P_FAMILY_HO_OH +#define P_FAMILY_HO_OH TRUE +#undef P_FAMILY_CELEBI +#define P_FAMILY_CELEBI TRUE + +#undef P_FAMILY_TREECKO +#define P_FAMILY_TREECKO TRUE +#undef P_FAMILY_TORCHIC +#define P_FAMILY_TORCHIC TRUE +#undef P_FAMILY_MUDKIP +#define P_FAMILY_MUDKIP TRUE +#undef P_FAMILY_POOCHYENA +#define P_FAMILY_POOCHYENA TRUE +#undef P_FAMILY_ZIGZAGOON +#define P_FAMILY_ZIGZAGOON TRUE +#undef P_FAMILY_WURMPLE +#define P_FAMILY_WURMPLE TRUE +#undef P_FAMILY_LOTAD +#define P_FAMILY_LOTAD TRUE +#undef P_FAMILY_SEEDOT +#define P_FAMILY_SEEDOT TRUE +#undef P_FAMILY_TAILLOW +#define P_FAMILY_TAILLOW TRUE +#undef P_FAMILY_WINGULL +#define P_FAMILY_WINGULL TRUE +#undef P_FAMILY_RALTS +#define P_FAMILY_RALTS TRUE +#undef P_FAMILY_SURSKIT +#define P_FAMILY_SURSKIT TRUE +#undef P_FAMILY_SHROOMISH +#define P_FAMILY_SHROOMISH TRUE +#undef P_FAMILY_SLAKOTH +#define P_FAMILY_SLAKOTH TRUE +#undef P_FAMILY_NINCADA +#define P_FAMILY_NINCADA TRUE +#undef P_FAMILY_WHISMUR +#define P_FAMILY_WHISMUR TRUE +#undef P_FAMILY_MAKUHITA +#define P_FAMILY_MAKUHITA TRUE +#undef P_FAMILY_NOSEPASS +#define P_FAMILY_NOSEPASS TRUE +#undef P_FAMILY_SKITTY +#define P_FAMILY_SKITTY TRUE +#undef P_FAMILY_SABLEYE +#define P_FAMILY_SABLEYE TRUE +#undef P_FAMILY_MAWILE +#define P_FAMILY_MAWILE TRUE +#undef P_FAMILY_ARON +#define P_FAMILY_ARON TRUE +#undef P_FAMILY_MEDITITE +#define P_FAMILY_MEDITITE TRUE +#undef P_FAMILY_ELECTRIKE +#define P_FAMILY_ELECTRIKE TRUE +#undef P_FAMILY_PLUSLE +#define P_FAMILY_PLUSLE TRUE +#undef P_FAMILY_MINUN +#define P_FAMILY_MINUN TRUE +#undef P_FAMILY_VOLBEAT_ILLUMISE +#define P_FAMILY_VOLBEAT_ILLUMISE TRUE +#undef P_FAMILY_ROSELIA +#define P_FAMILY_ROSELIA TRUE +#undef P_FAMILY_GULPIN +#define P_FAMILY_GULPIN TRUE +#undef P_FAMILY_CARVANHA +#define P_FAMILY_CARVANHA TRUE +#undef P_FAMILY_WAILMER +#define P_FAMILY_WAILMER TRUE +#undef P_FAMILY_NUMEL +#define P_FAMILY_NUMEL TRUE +#undef P_FAMILY_TORKOAL +#define P_FAMILY_TORKOAL TRUE +#undef P_FAMILY_SPOINK +#define P_FAMILY_SPOINK TRUE +#undef P_FAMILY_SPINDA +#define P_FAMILY_SPINDA TRUE +#undef P_FAMILY_TRAPINCH +#define P_FAMILY_TRAPINCH TRUE +#undef P_FAMILY_CACNEA +#define P_FAMILY_CACNEA TRUE +#undef P_FAMILY_SWABLU +#define P_FAMILY_SWABLU TRUE +#undef P_FAMILY_ZANGOOSE +#define P_FAMILY_ZANGOOSE TRUE +#undef P_FAMILY_SEVIPER +#define P_FAMILY_SEVIPER TRUE +#undef P_FAMILY_LUNATONE +#define P_FAMILY_LUNATONE TRUE +#undef P_FAMILY_SOLROCK +#define P_FAMILY_SOLROCK TRUE +#undef P_FAMILY_BARBOACH +#define P_FAMILY_BARBOACH TRUE +#undef P_FAMILY_CORPHISH +#define P_FAMILY_CORPHISH TRUE +#undef P_FAMILY_BALTOY +#define P_FAMILY_BALTOY TRUE +#undef P_FAMILY_LILEEP +#define P_FAMILY_LILEEP TRUE +#undef P_FAMILY_ANORITH +#define P_FAMILY_ANORITH TRUE +#undef P_FAMILY_FEEBAS +#define P_FAMILY_FEEBAS TRUE +#undef P_FAMILY_CASTFORM +#define P_FAMILY_CASTFORM TRUE +#undef P_FAMILY_KECLEON +#define P_FAMILY_KECLEON TRUE +#undef P_FAMILY_SHUPPET +#define P_FAMILY_SHUPPET TRUE +#undef P_FAMILY_DUSKULL +#define P_FAMILY_DUSKULL TRUE +#undef P_FAMILY_TROPIUS +#define P_FAMILY_TROPIUS TRUE +#undef P_FAMILY_CHIMECHO +#define P_FAMILY_CHIMECHO TRUE +#undef P_FAMILY_ABSOL +#define P_FAMILY_ABSOL TRUE +#undef P_FAMILY_SNORUNT +#define P_FAMILY_SNORUNT TRUE +#undef P_FAMILY_SPHEAL +#define P_FAMILY_SPHEAL TRUE +#undef P_FAMILY_CLAMPERL +#define P_FAMILY_CLAMPERL TRUE +#undef P_FAMILY_RELICANTH +#define P_FAMILY_RELICANTH TRUE +#undef P_FAMILY_LUVDISC +#define P_FAMILY_LUVDISC TRUE +#undef P_FAMILY_BAGON +#define P_FAMILY_BAGON TRUE +#undef P_FAMILY_BELDUM +#define P_FAMILY_BELDUM TRUE +#undef P_FAMILY_REGIROCK +#define P_FAMILY_REGIROCK TRUE +#undef P_FAMILY_REGICE +#define P_FAMILY_REGICE TRUE +#undef P_FAMILY_REGISTEEL +#define P_FAMILY_REGISTEEL TRUE +#undef P_FAMILY_LATIAS +#define P_FAMILY_LATIAS TRUE +#undef P_FAMILY_LATIOS +#define P_FAMILY_LATIOS TRUE +#undef P_FAMILY_KYOGRE +#define P_FAMILY_KYOGRE TRUE +#undef P_FAMILY_GROUDON +#define P_FAMILY_GROUDON TRUE +#undef P_FAMILY_RAYQUAZA +#define P_FAMILY_RAYQUAZA TRUE +#undef P_FAMILY_JIRACHI +#define P_FAMILY_JIRACHI TRUE +#undef P_FAMILY_DEOXYS +#define P_FAMILY_DEOXYS TRUE + +#undef P_FAMILY_TURTWIG +#define P_FAMILY_TURTWIG TRUE +#undef P_FAMILY_CHIMCHAR +#define P_FAMILY_CHIMCHAR TRUE +#undef P_FAMILY_PIPLUP +#define P_FAMILY_PIPLUP TRUE +#undef P_FAMILY_STARLY +#define P_FAMILY_STARLY TRUE +#undef P_FAMILY_BIDOOF +#define P_FAMILY_BIDOOF TRUE +#undef P_FAMILY_KRICKETOT +#define P_FAMILY_KRICKETOT TRUE +#undef P_FAMILY_SHINX +#define P_FAMILY_SHINX TRUE +#undef P_FAMILY_CRANIDOS +#define P_FAMILY_CRANIDOS TRUE +#undef P_FAMILY_SHIELDON +#define P_FAMILY_SHIELDON TRUE +#undef P_FAMILY_BURMY +#define P_FAMILY_BURMY TRUE +#undef P_FAMILY_COMBEE +#define P_FAMILY_COMBEE TRUE +#undef P_FAMILY_PACHIRISU +#define P_FAMILY_PACHIRISU TRUE +#undef P_FAMILY_BUIZEL +#define P_FAMILY_BUIZEL TRUE +#undef P_FAMILY_CHERUBI +#define P_FAMILY_CHERUBI TRUE +#undef P_FAMILY_SHELLOS +#define P_FAMILY_SHELLOS TRUE +#undef P_FAMILY_DRIFLOON +#define P_FAMILY_DRIFLOON TRUE +#undef P_FAMILY_BUNEARY +#define P_FAMILY_BUNEARY TRUE +#undef P_FAMILY_GLAMEOW +#define P_FAMILY_GLAMEOW TRUE +#undef P_FAMILY_STUNKY +#define P_FAMILY_STUNKY TRUE +#undef P_FAMILY_BRONZOR +#define P_FAMILY_BRONZOR TRUE +#undef P_FAMILY_CHATOT +#define P_FAMILY_CHATOT TRUE +#undef P_FAMILY_SPIRITOMB +#define P_FAMILY_SPIRITOMB TRUE +#undef P_FAMILY_GIBLE +#define P_FAMILY_GIBLE TRUE +#undef P_FAMILY_RIOLU +#define P_FAMILY_RIOLU TRUE +#undef P_FAMILY_HIPPOPOTAS +#define P_FAMILY_HIPPOPOTAS TRUE +#undef P_FAMILY_SKORUPI +#define P_FAMILY_SKORUPI TRUE +#undef P_FAMILY_CROAGUNK +#define P_FAMILY_CROAGUNK TRUE +#undef P_FAMILY_CARNIVINE +#define P_FAMILY_CARNIVINE TRUE +#undef P_FAMILY_FINNEON +#define P_FAMILY_FINNEON TRUE +#undef P_FAMILY_SNOVER +#define P_FAMILY_SNOVER TRUE +#undef P_FAMILY_ROTOM +#define P_FAMILY_ROTOM TRUE +#undef P_FAMILY_UXIE +#define P_FAMILY_UXIE TRUE +#undef P_FAMILY_MESPRIT +#define P_FAMILY_MESPRIT TRUE +#undef P_FAMILY_AZELF +#define P_FAMILY_AZELF TRUE +#undef P_FAMILY_DIALGA +#define P_FAMILY_DIALGA TRUE +#undef P_FAMILY_PALKIA +#define P_FAMILY_PALKIA TRUE +#undef P_FAMILY_HEATRAN +#define P_FAMILY_HEATRAN TRUE +#undef P_FAMILY_REGIGIGAS +#define P_FAMILY_REGIGIGAS TRUE +#undef P_FAMILY_GIRATINA +#define P_FAMILY_GIRATINA TRUE +#undef P_FAMILY_CRESSELIA +#define P_FAMILY_CRESSELIA TRUE +#undef P_FAMILY_MANAPHY +#define P_FAMILY_MANAPHY TRUE +#undef P_FAMILY_DARKRAI +#define P_FAMILY_DARKRAI TRUE +#undef P_FAMILY_SHAYMIN +#define P_FAMILY_SHAYMIN TRUE +#undef P_FAMILY_ARCEUS +#define P_FAMILY_ARCEUS TRUE +#undef P_FAMILY_VICTINI +#define P_FAMILY_VICTINI TRUE +#undef P_FAMILY_SNIVY +#define P_FAMILY_SNIVY TRUE +#undef P_FAMILY_TEPIG +#define P_FAMILY_TEPIG TRUE +#undef P_FAMILY_OSHAWOTT +#define P_FAMILY_OSHAWOTT TRUE +#undef P_FAMILY_PATRAT +#define P_FAMILY_PATRAT TRUE +#undef P_FAMILY_LILLIPUP +#define P_FAMILY_LILLIPUP TRUE +#undef P_FAMILY_PURRLOIN +#define P_FAMILY_PURRLOIN TRUE +#undef P_FAMILY_PANSAGE +#define P_FAMILY_PANSAGE TRUE +#undef P_FAMILY_PANSEAR +#define P_FAMILY_PANSEAR TRUE +#undef P_FAMILY_PANPOUR +#define P_FAMILY_PANPOUR TRUE +#undef P_FAMILY_MUNNA +#define P_FAMILY_MUNNA TRUE +#undef P_FAMILY_PIDOVE +#define P_FAMILY_PIDOVE TRUE +#undef P_FAMILY_BLITZLE +#define P_FAMILY_BLITZLE TRUE +#undef P_FAMILY_ROGGENROLA +#define P_FAMILY_ROGGENROLA TRUE +#undef P_FAMILY_WOOBAT +#define P_FAMILY_WOOBAT TRUE +#undef P_FAMILY_DRILBUR +#define P_FAMILY_DRILBUR TRUE +#undef P_FAMILY_AUDINO +#define P_FAMILY_AUDINO TRUE +#undef P_FAMILY_TIMBURR +#define P_FAMILY_TIMBURR TRUE +#undef P_FAMILY_TYMPOLE +#define P_FAMILY_TYMPOLE TRUE +#undef P_FAMILY_THROH +#define P_FAMILY_THROH TRUE +#undef P_FAMILY_SAWK +#define P_FAMILY_SAWK TRUE +#undef P_FAMILY_SEWADDLE +#define P_FAMILY_SEWADDLE TRUE +#undef P_FAMILY_VENIPEDE +#define P_FAMILY_VENIPEDE TRUE +#undef P_FAMILY_COTTONEE +#define P_FAMILY_COTTONEE TRUE +#undef P_FAMILY_PETILIL +#define P_FAMILY_PETILIL TRUE +#undef P_FAMILY_BASCULIN +#define P_FAMILY_BASCULIN TRUE +#undef P_FAMILY_SANDILE +#define P_FAMILY_SANDILE TRUE +#undef P_FAMILY_DARUMAKA +#define P_FAMILY_DARUMAKA TRUE +#undef P_FAMILY_MARACTUS +#define P_FAMILY_MARACTUS TRUE +#undef P_FAMILY_DWEBBLE +#define P_FAMILY_DWEBBLE TRUE +#undef P_FAMILY_SCRAGGY +#define P_FAMILY_SCRAGGY TRUE +#undef P_FAMILY_SIGILYPH +#define P_FAMILY_SIGILYPH TRUE +#undef P_FAMILY_YAMASK +#define P_FAMILY_YAMASK TRUE +#undef P_FAMILY_TIRTOUGA +#define P_FAMILY_TIRTOUGA TRUE +#undef P_FAMILY_ARCHEN +#define P_FAMILY_ARCHEN TRUE +#undef P_FAMILY_TRUBBISH +#define P_FAMILY_TRUBBISH TRUE +#undef P_FAMILY_ZORUA +#define P_FAMILY_ZORUA TRUE +#undef P_FAMILY_MINCCINO +#define P_FAMILY_MINCCINO TRUE +#undef P_FAMILY_GOTHITA +#define P_FAMILY_GOTHITA TRUE +#undef P_FAMILY_SOLOSIS +#define P_FAMILY_SOLOSIS TRUE +#undef P_FAMILY_DUCKLETT +#define P_FAMILY_DUCKLETT TRUE +#undef P_FAMILY_VANILLITE +#define P_FAMILY_VANILLITE TRUE +#undef P_FAMILY_DEERLING +#define P_FAMILY_DEERLING TRUE +#undef P_FAMILY_EMOLGA +#define P_FAMILY_EMOLGA TRUE +#undef P_FAMILY_KARRABLAST +#define P_FAMILY_KARRABLAST TRUE +#undef P_FAMILY_FOONGUS +#define P_FAMILY_FOONGUS TRUE +#undef P_FAMILY_FRILLISH +#define P_FAMILY_FRILLISH TRUE +#undef P_FAMILY_ALOMOMOLA +#define P_FAMILY_ALOMOMOLA TRUE +#undef P_FAMILY_JOLTIK +#define P_FAMILY_JOLTIK TRUE +#undef P_FAMILY_FERROSEED +#define P_FAMILY_FERROSEED TRUE +#undef P_FAMILY_KLINK +#define P_FAMILY_KLINK TRUE +#undef P_FAMILY_TYNAMO +#define P_FAMILY_TYNAMO TRUE +#undef P_FAMILY_ELGYEM +#define P_FAMILY_ELGYEM TRUE +#undef P_FAMILY_LITWICK +#define P_FAMILY_LITWICK TRUE +#undef P_FAMILY_AXEW +#define P_FAMILY_AXEW TRUE +#undef P_FAMILY_CUBCHOO +#define P_FAMILY_CUBCHOO TRUE +#undef P_FAMILY_CRYOGONAL +#define P_FAMILY_CRYOGONAL TRUE +#undef P_FAMILY_SHELMET +#define P_FAMILY_SHELMET TRUE +#undef P_FAMILY_STUNFISK +#define P_FAMILY_STUNFISK TRUE +#undef P_FAMILY_MIENFOO +#define P_FAMILY_MIENFOO TRUE +#undef P_FAMILY_DRUDDIGON +#define P_FAMILY_DRUDDIGON TRUE +#undef P_FAMILY_GOLETT +#define P_FAMILY_GOLETT TRUE +#undef P_FAMILY_PAWNIARD +#define P_FAMILY_PAWNIARD TRUE +#undef P_FAMILY_BOUFFALANT +#define P_FAMILY_BOUFFALANT TRUE +#undef P_FAMILY_RUFFLET +#define P_FAMILY_RUFFLET TRUE +#undef P_FAMILY_VULLABY +#define P_FAMILY_VULLABY TRUE +#undef P_FAMILY_HEATMOR +#define P_FAMILY_HEATMOR TRUE +#undef P_FAMILY_DURANT +#define P_FAMILY_DURANT TRUE +#undef P_FAMILY_DEINO +#define P_FAMILY_DEINO TRUE +#undef P_FAMILY_LARVESTA +#define P_FAMILY_LARVESTA TRUE +#undef P_FAMILY_COBALION +#define P_FAMILY_COBALION TRUE +#undef P_FAMILY_TERRAKION +#define P_FAMILY_TERRAKION TRUE +#undef P_FAMILY_VIRIZION +#define P_FAMILY_VIRIZION TRUE +#undef P_FAMILY_TORNADUS +#define P_FAMILY_TORNADUS TRUE +#undef P_FAMILY_THUNDURUS +#define P_FAMILY_THUNDURUS TRUE +#undef P_FAMILY_RESHIRAM +#define P_FAMILY_RESHIRAM TRUE +#undef P_FAMILY_ZEKROM +#define P_FAMILY_ZEKROM TRUE +#undef P_FAMILY_LANDORUS +#define P_FAMILY_LANDORUS TRUE +#undef P_FAMILY_KYUREM +#define P_FAMILY_KYUREM TRUE +#undef P_FAMILY_KELDEO +#define P_FAMILY_KELDEO TRUE +#undef P_FAMILY_MELOETTA +#define P_FAMILY_MELOETTA TRUE +#undef P_FAMILY_GENESECT +#define P_FAMILY_GENESECT TRUE + +#undef P_FAMILY_CHESPIN +#define P_FAMILY_CHESPIN TRUE +#undef P_FAMILY_FENNEKIN +#define P_FAMILY_FENNEKIN TRUE +#undef P_FAMILY_FROAKIE +#define P_FAMILY_FROAKIE TRUE +#undef P_FAMILY_BUNNELBY +#define P_FAMILY_BUNNELBY TRUE +#undef P_FAMILY_FLETCHLING +#define P_FAMILY_FLETCHLING TRUE +#undef P_FAMILY_SCATTERBUG +#define P_FAMILY_SCATTERBUG TRUE +#undef P_FAMILY_LITLEO +#define P_FAMILY_LITLEO TRUE +#undef P_FAMILY_FLABEBE +#define P_FAMILY_FLABEBE TRUE +#undef P_FAMILY_SKIDDO +#define P_FAMILY_SKIDDO TRUE +#undef P_FAMILY_PANCHAM +#define P_FAMILY_PANCHAM TRUE +#undef P_FAMILY_FURFROU +#define P_FAMILY_FURFROU TRUE +#undef P_FAMILY_ESPURR +#define P_FAMILY_ESPURR TRUE +#undef P_FAMILY_HONEDGE +#define P_FAMILY_HONEDGE TRUE +#undef P_FAMILY_SPRITZEE +#define P_FAMILY_SPRITZEE TRUE +#undef P_FAMILY_SWIRLIX +#define P_FAMILY_SWIRLIX TRUE +#undef P_FAMILY_INKAY +#define P_FAMILY_INKAY TRUE +#undef P_FAMILY_BINACLE +#define P_FAMILY_BINACLE TRUE +#undef P_FAMILY_SKRELP +#define P_FAMILY_SKRELP TRUE +#undef P_FAMILY_CLAUNCHER +#define P_FAMILY_CLAUNCHER TRUE +#undef P_FAMILY_HELIOPTILE +#define P_FAMILY_HELIOPTILE TRUE +#undef P_FAMILY_TYRUNT +#define P_FAMILY_TYRUNT TRUE +#undef P_FAMILY_AMAURA +#define P_FAMILY_AMAURA TRUE +#undef P_FAMILY_HAWLUCHA +#define P_FAMILY_HAWLUCHA TRUE +#undef P_FAMILY_DEDENNE +#define P_FAMILY_DEDENNE TRUE +#undef P_FAMILY_CARBINK +#define P_FAMILY_CARBINK TRUE +#undef P_FAMILY_GOOMY +#define P_FAMILY_GOOMY TRUE +#undef P_FAMILY_KLEFKI +#define P_FAMILY_KLEFKI TRUE +#undef P_FAMILY_PHANTUMP +#define P_FAMILY_PHANTUMP TRUE +#undef P_FAMILY_PUMPKABOO +#define P_FAMILY_PUMPKABOO TRUE +#undef P_FAMILY_BERGMITE +#define P_FAMILY_BERGMITE TRUE +#undef P_FAMILY_NOIBAT +#define P_FAMILY_NOIBAT TRUE +#undef P_FAMILY_XERNEAS +#define P_FAMILY_XERNEAS TRUE +#undef P_FAMILY_YVELTAL +#define P_FAMILY_YVELTAL TRUE +#undef P_FAMILY_ZYGARDE +#define P_FAMILY_ZYGARDE TRUE +#undef P_FAMILY_DIANCIE +#define P_FAMILY_DIANCIE TRUE +#undef P_FAMILY_HOOPA +#define P_FAMILY_HOOPA TRUE +#undef P_FAMILY_VOLCANION +#define P_FAMILY_VOLCANION TRUE + +#undef P_FAMILY_ROWLET +#define P_FAMILY_ROWLET TRUE +#undef P_FAMILY_LITTEN +#define P_FAMILY_LITTEN TRUE +#undef P_FAMILY_POPPLIO +#define P_FAMILY_POPPLIO TRUE +#undef P_FAMILY_PIKIPEK +#define P_FAMILY_PIKIPEK TRUE +#undef P_FAMILY_YUNGOOS +#define P_FAMILY_YUNGOOS TRUE +#undef P_FAMILY_GRUBBIN +#define P_FAMILY_GRUBBIN TRUE +#undef P_FAMILY_CRABRAWLER +#define P_FAMILY_CRABRAWLER TRUE +#undef P_FAMILY_ORICORIO +#define P_FAMILY_ORICORIO TRUE +#undef P_FAMILY_CUTIEFLY +#define P_FAMILY_CUTIEFLY TRUE +#undef P_FAMILY_ROCKRUFF +#define P_FAMILY_ROCKRUFF TRUE +#undef P_FAMILY_WISHIWASHI +#define P_FAMILY_WISHIWASHI TRUE +#undef P_FAMILY_MAREANIE +#define P_FAMILY_MAREANIE TRUE +#undef P_FAMILY_MUDBRAY +#define P_FAMILY_MUDBRAY TRUE +#undef P_FAMILY_DEWPIDER +#define P_FAMILY_DEWPIDER TRUE +#undef P_FAMILY_FOMANTIS +#define P_FAMILY_FOMANTIS TRUE +#undef P_FAMILY_MORELULL +#define P_FAMILY_MORELULL TRUE +#undef P_FAMILY_SALANDIT +#define P_FAMILY_SALANDIT TRUE +#undef P_FAMILY_STUFFUL +#define P_FAMILY_STUFFUL TRUE +#undef P_FAMILY_BOUNSWEET +#define P_FAMILY_BOUNSWEET TRUE +#undef P_FAMILY_COMFEY +#define P_FAMILY_COMFEY TRUE +#undef P_FAMILY_ORANGURU +#define P_FAMILY_ORANGURU TRUE +#undef P_FAMILY_PASSIMIAN +#define P_FAMILY_PASSIMIAN TRUE +#undef P_FAMILY_WIMPOD +#define P_FAMILY_WIMPOD TRUE +#undef P_FAMILY_SANDYGAST +#define P_FAMILY_SANDYGAST TRUE +#undef P_FAMILY_PYUKUMUKU +#define P_FAMILY_PYUKUMUKU TRUE +#undef P_FAMILY_TYPE_NULL +#define P_FAMILY_TYPE_NULL TRUE +#undef P_FAMILY_MINIOR +#define P_FAMILY_MINIOR TRUE +#undef P_FAMILY_KOMALA +#define P_FAMILY_KOMALA TRUE +#undef P_FAMILY_TURTONATOR +#define P_FAMILY_TURTONATOR TRUE +#undef P_FAMILY_TOGEDEMARU +#define P_FAMILY_TOGEDEMARU TRUE +#undef P_FAMILY_MIMIKYU +#define P_FAMILY_MIMIKYU TRUE +#undef P_FAMILY_BRUXISH +#define P_FAMILY_BRUXISH TRUE +#undef P_FAMILY_DRAMPA +#define P_FAMILY_DRAMPA TRUE +#undef P_FAMILY_DHELMISE +#define P_FAMILY_DHELMISE TRUE +#undef P_FAMILY_JANGMO_O +#define P_FAMILY_JANGMO_O TRUE +#undef P_FAMILY_TAPU_KOKO +#define P_FAMILY_TAPU_KOKO TRUE +#undef P_FAMILY_TAPU_LELE +#define P_FAMILY_TAPU_LELE TRUE +#undef P_FAMILY_TAPU_BULU +#define P_FAMILY_TAPU_BULU TRUE +#undef P_FAMILY_TAPU_FINI +#define P_FAMILY_TAPU_FINI TRUE +#undef P_FAMILY_COSMOG +#define P_FAMILY_COSMOG TRUE +#undef P_FAMILY_NIHILEGO +#define P_FAMILY_NIHILEGO TRUE +#undef P_FAMILY_BUZZWOLE +#define P_FAMILY_BUZZWOLE TRUE +#undef P_FAMILY_PHEROMOSA +#define P_FAMILY_PHEROMOSA TRUE +#undef P_FAMILY_XURKITREE +#define P_FAMILY_XURKITREE TRUE +#undef P_FAMILY_CELESTEELA +#define P_FAMILY_CELESTEELA TRUE +#undef P_FAMILY_KARTANA +#define P_FAMILY_KARTANA TRUE +#undef P_FAMILY_GUZZLORD +#define P_FAMILY_GUZZLORD TRUE +#undef P_FAMILY_NECROZMA +#define P_FAMILY_NECROZMA TRUE +#undef P_FAMILY_MAGEARNA +#define P_FAMILY_MAGEARNA TRUE +#undef P_FAMILY_MARSHADOW +#define P_FAMILY_MARSHADOW TRUE +#undef P_FAMILY_POIPOLE +#define P_FAMILY_POIPOLE TRUE +#undef P_FAMILY_STAKATAKA +#define P_FAMILY_STAKATAKA TRUE +#undef P_FAMILY_BLACEPHALON +#define P_FAMILY_BLACEPHALON TRUE +#undef P_FAMILY_ZERAORA +#define P_FAMILY_ZERAORA TRUE +#undef P_FAMILY_MELTAN +#define P_FAMILY_MELTAN TRUE + +#undef P_FAMILY_GROOKEY +#define P_FAMILY_GROOKEY TRUE +#undef P_FAMILY_SCORBUNNY +#define P_FAMILY_SCORBUNNY TRUE +#undef P_FAMILY_SOBBLE +#define P_FAMILY_SOBBLE TRUE +#undef P_FAMILY_SKWOVET +#define P_FAMILY_SKWOVET TRUE +#undef P_FAMILY_ROOKIDEE +#define P_FAMILY_ROOKIDEE TRUE +#undef P_FAMILY_BLIPBUG +#define P_FAMILY_BLIPBUG TRUE +#undef P_FAMILY_NICKIT +#define P_FAMILY_NICKIT TRUE +#undef P_FAMILY_GOSSIFLEUR +#define P_FAMILY_GOSSIFLEUR TRUE +#undef P_FAMILY_WOOLOO +#define P_FAMILY_WOOLOO TRUE +#undef P_FAMILY_CHEWTLE +#define P_FAMILY_CHEWTLE TRUE +#undef P_FAMILY_YAMPER +#define P_FAMILY_YAMPER TRUE +#undef P_FAMILY_ROLYCOLY +#define P_FAMILY_ROLYCOLY TRUE +#undef P_FAMILY_APPLIN +#define P_FAMILY_APPLIN TRUE +#undef P_FAMILY_SILICOBRA +#define P_FAMILY_SILICOBRA TRUE +#undef P_FAMILY_CRAMORANT +#define P_FAMILY_CRAMORANT TRUE +#undef P_FAMILY_ARROKUDA +#define P_FAMILY_ARROKUDA TRUE +#undef P_FAMILY_TOXEL +#define P_FAMILY_TOXEL TRUE +#undef P_FAMILY_SIZZLIPEDE +#define P_FAMILY_SIZZLIPEDE TRUE +#undef P_FAMILY_CLOBBOPUS +#define P_FAMILY_CLOBBOPUS TRUE +#undef P_FAMILY_SINISTEA +#define P_FAMILY_SINISTEA TRUE +#undef P_FAMILY_HATENNA +#define P_FAMILY_HATENNA TRUE +#undef P_FAMILY_IMPIDIMP +#define P_FAMILY_IMPIDIMP TRUE +#undef P_FAMILY_MILCERY +#define P_FAMILY_MILCERY TRUE +#undef P_FAMILY_FALINKS +#define P_FAMILY_FALINKS TRUE +#undef P_FAMILY_PINCURCHIN +#define P_FAMILY_PINCURCHIN TRUE +#undef P_FAMILY_SNOM +#define P_FAMILY_SNOM TRUE +#undef P_FAMILY_STONJOURNER +#define P_FAMILY_STONJOURNER TRUE +#undef P_FAMILY_EISCUE +#define P_FAMILY_EISCUE TRUE +#undef P_FAMILY_INDEEDEE +#define P_FAMILY_INDEEDEE TRUE +#undef P_FAMILY_MORPEKO +#define P_FAMILY_MORPEKO TRUE +#undef P_FAMILY_CUFANT +#define P_FAMILY_CUFANT TRUE +#undef P_FAMILY_DRACOZOLT +#define P_FAMILY_DRACOZOLT TRUE +#undef P_FAMILY_ARCTOZOLT +#define P_FAMILY_ARCTOZOLT TRUE +#undef P_FAMILY_DRACOVISH +#define P_FAMILY_DRACOVISH TRUE +#undef P_FAMILY_ARCTOVISH +#define P_FAMILY_ARCTOVISH TRUE +#undef P_FAMILY_DURALUDON +#define P_FAMILY_DURALUDON TRUE +#undef P_FAMILY_DREEPY +#define P_FAMILY_DREEPY TRUE +#undef P_FAMILY_ZACIAN +#define P_FAMILY_ZACIAN TRUE +#undef P_FAMILY_ZAMAZENTA +#define P_FAMILY_ZAMAZENTA TRUE +#undef P_FAMILY_ETERNATUS +#define P_FAMILY_ETERNATUS TRUE +#undef P_FAMILY_KUBFU +#define P_FAMILY_KUBFU TRUE +#undef P_FAMILY_ZARUDE +#define P_FAMILY_ZARUDE TRUE +#undef P_FAMILY_REGIELEKI +#define P_FAMILY_REGIELEKI TRUE +#undef P_FAMILY_REGIDRAGO +#define P_FAMILY_REGIDRAGO TRUE +#undef P_FAMILY_GLASTRIER +#define P_FAMILY_GLASTRIER TRUE +#undef P_FAMILY_SPECTRIER +#define P_FAMILY_SPECTRIER TRUE +#undef P_FAMILY_CALYREX +#define P_FAMILY_CALYREX TRUE +#undef P_FAMILY_ENAMORUS +#define P_FAMILY_ENAMORUS TRUE + +#undef P_FAMILY_SPRIGATITO +#define P_FAMILY_SPRIGATITO TRUE +#undef P_FAMILY_FUECOCO +#define P_FAMILY_FUECOCO TRUE +#undef P_FAMILY_QUAXLY +#define P_FAMILY_QUAXLY TRUE +#undef P_FAMILY_LECHONK +#define P_FAMILY_LECHONK TRUE +#undef P_FAMILY_TAROUNTULA +#define P_FAMILY_TAROUNTULA TRUE +#undef P_FAMILY_NYMBLE +#define P_FAMILY_NYMBLE TRUE +#undef P_FAMILY_PAWMI +#define P_FAMILY_PAWMI TRUE +#undef P_FAMILY_TANDEMAUS +#define P_FAMILY_TANDEMAUS TRUE +#undef P_FAMILY_FIDOUGH +#define P_FAMILY_FIDOUGH TRUE +#undef P_FAMILY_SMOLIV +#define P_FAMILY_SMOLIV TRUE +#undef P_FAMILY_SQUAWKABILLY +#define P_FAMILY_SQUAWKABILLY TRUE +#undef P_FAMILY_NACLI +#define P_FAMILY_NACLI TRUE +#undef P_FAMILY_CHARCADET +#define P_FAMILY_CHARCADET TRUE +#undef P_FAMILY_TADBULB +#define P_FAMILY_TADBULB TRUE +#undef P_FAMILY_WATTREL +#define P_FAMILY_WATTREL TRUE +#undef P_FAMILY_MASCHIFF +#define P_FAMILY_MASCHIFF TRUE +#undef P_FAMILY_SHROODLE +#define P_FAMILY_SHROODLE TRUE +#undef P_FAMILY_BRAMBLIN +#define P_FAMILY_BRAMBLIN TRUE +#undef P_FAMILY_TOEDSCOOL +#define P_FAMILY_TOEDSCOOL TRUE +#undef P_FAMILY_KLAWF +#define P_FAMILY_KLAWF TRUE +#undef P_FAMILY_CAPSAKID +#define P_FAMILY_CAPSAKID TRUE +#undef P_FAMILY_RELLOR +#define P_FAMILY_RELLOR TRUE +#undef P_FAMILY_FLITTLE +#define P_FAMILY_FLITTLE TRUE +#undef P_FAMILY_TINKATINK +#define P_FAMILY_TINKATINK TRUE +#undef P_FAMILY_WIGLETT +#define P_FAMILY_WIGLETT TRUE +#undef P_FAMILY_BOMBIRDIER +#define P_FAMILY_BOMBIRDIER TRUE +#undef P_FAMILY_FINIZEN +#define P_FAMILY_FINIZEN TRUE +#undef P_FAMILY_VAROOM +#define P_FAMILY_VAROOM TRUE +#undef P_FAMILY_CYCLIZAR +#define P_FAMILY_CYCLIZAR TRUE +#undef P_FAMILY_ORTHWORM +#define P_FAMILY_ORTHWORM TRUE +#undef P_FAMILY_GLIMMET +#define P_FAMILY_GLIMMET TRUE +#undef P_FAMILY_GREAVARD +#define P_FAMILY_GREAVARD TRUE +#undef P_FAMILY_FLAMIGO +#define P_FAMILY_FLAMIGO TRUE +#undef P_FAMILY_CETODDLE +#define P_FAMILY_CETODDLE TRUE +#undef P_FAMILY_VELUZA +#define P_FAMILY_VELUZA TRUE +#undef P_FAMILY_DONDOZO +#define P_FAMILY_DONDOZO TRUE +#undef P_FAMILY_TATSUGIRI +#define P_FAMILY_TATSUGIRI TRUE +#undef P_FAMILY_GREAT_TUSK +#define P_FAMILY_GREAT_TUSK TRUE +#undef P_FAMILY_SCREAM_TAIL +#define P_FAMILY_SCREAM_TAIL TRUE +#undef P_FAMILY_BRUTE_BONNET +#define P_FAMILY_BRUTE_BONNET TRUE +#undef P_FAMILY_FLUTTER_MANE +#define P_FAMILY_FLUTTER_MANE TRUE +#undef P_FAMILY_SLITHER_WING +#define P_FAMILY_SLITHER_WING TRUE +#undef P_FAMILY_SANDY_SHOCKS +#define P_FAMILY_SANDY_SHOCKS TRUE +#undef P_FAMILY_IRON_TREADS +#define P_FAMILY_IRON_TREADS TRUE +#undef P_FAMILY_IRON_BUNDLE +#define P_FAMILY_IRON_BUNDLE TRUE +#undef P_FAMILY_IRON_HANDS +#define P_FAMILY_IRON_HANDS TRUE +#undef P_FAMILY_IRON_JUGULIS +#define P_FAMILY_IRON_JUGULIS TRUE +#undef P_FAMILY_IRON_MOTH +#define P_FAMILY_IRON_MOTH TRUE +#undef P_FAMILY_IRON_THORNS +#define P_FAMILY_IRON_THORNS TRUE +#undef P_FAMILY_FRIGIBAX +#define P_FAMILY_FRIGIBAX TRUE +#undef P_FAMILY_GIMMIGHOUL +#define P_FAMILY_GIMMIGHOUL TRUE +#undef P_FAMILY_WO_CHIEN +#define P_FAMILY_WO_CHIEN TRUE +#undef P_FAMILY_CHIEN_PAO +#define P_FAMILY_CHIEN_PAO TRUE +#undef P_FAMILY_TING_LU +#define P_FAMILY_TING_LU TRUE +#undef P_FAMILY_CHI_YU +#define P_FAMILY_CHI_YU TRUE +#undef P_FAMILY_ROARING_MOON +#define P_FAMILY_ROARING_MOON TRUE +#undef P_FAMILY_IRON_VALIANT +#define P_FAMILY_IRON_VALIANT TRUE +#undef P_FAMILY_KORAIDON +#define P_FAMILY_KORAIDON TRUE +#undef P_FAMILY_MIRAIDON +#define P_FAMILY_MIRAIDON TRUE +#undef P_FAMILY_WALKING_WAKE +#define P_FAMILY_WALKING_WAKE TRUE +#undef P_FAMILY_IRON_LEAVES +#define P_FAMILY_IRON_LEAVES TRUE +#undef P_FAMILY_POLTCHAGEIST +#define P_FAMILY_POLTCHAGEIST TRUE +#undef P_FAMILY_SINISTCHA +#define P_FAMILY_SINISTCHA TRUE +#undef P_FAMILY_OKIDOGI +#define P_FAMILY_OKIDOGI TRUE +#undef P_FAMILY_MUNKIDORI +#define P_FAMILY_MUNKIDORI TRUE +#undef P_FAMILY_FEZANDIPITI +#define P_FAMILY_FEZANDIPITI TRUE +#undef P_FAMILY_OGERPON +#define P_FAMILY_OGERPON TRUE +#undef P_FAMILY_GOUGING_FIRE +#define P_FAMILY_GOUGING_FIRE TRUE +#undef P_FAMILY_RAGING_BOLT +#define P_FAMILY_RAGING_BOLT TRUE +#undef P_FAMILY_IRON_BOULDER +#define P_FAMILY_IRON_BOULDER TRUE +#undef P_FAMILY_IRON_CROWN +#define P_FAMILY_IRON_CROWN TRUE +#undef P_FAMILY_TERAPAGOS +#define P_FAMILY_TERAPAGOS TRUE +#undef P_FAMILY_PECHARUNT +#define P_FAMILY_PECHARUNT TRUE + +#endif // GUARD_CONFIG_TEST_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 17606586afcb..1f11adbd5f4e 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -299,11 +299,14 @@ #define B_WEATHER_HAIL_PERMANENT (1 << 10) #define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT) #define B_WEATHER_STRONG_WINDS (1 << 11) -#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW) +#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW | B_WEATHER_FOG) #define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS) #define B_WEATHER_SNOW_TEMPORARY (1 << 12) #define B_WEATHER_SNOW_PERMANENT (1 << 13) #define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT) +#define B_WEATHER_FOG_TEMPORARY (1 << 14) +#define B_WEATHER_FOG_PERMANENT (1 << 15) +#define B_WEATHER_FOG (B_WEATHER_FOG_TEMPORARY | B_WEATHER_FOG_PERMANENT) // Battle Weather as enum #define ENUM_WEATHER_NONE 0 @@ -315,6 +318,7 @@ #define ENUM_WEATHER_RAIN_PRIMAL 6 #define ENUM_WEATHER_STRONG_WINDS 7 #define ENUM_WEATHER_SNOW 8 +#define ENUM_WEATHER_FOG 9 // Move Effects #define MOVE_EFFECT_SLEEP 1 @@ -376,28 +380,28 @@ #define MOVE_EFFECT_KNOCK_OFF 55 #define MOVE_EFFECT_DEF_SPDEF_DOWN 56 #define MOVE_EFFECT_CLEAR_SMOG 57 -#define MOVE_EFFECT_SP_ATK_TWO_DOWN 58 -#define MOVE_EFFECT_SMACK_DOWN 59 -#define MOVE_EFFECT_FLAME_BURST 60 -#define MOVE_EFFECT_FEINT 61 -#define MOVE_EFFECT_SPECTRAL_THIEF 62 -#define MOVE_EFFECT_V_CREATE 63 -#define MOVE_EFFECT_HAPPY_HOUR 64 -#define MOVE_EFFECT_CORE_ENFORCER 65 -#define MOVE_EFFECT_THROAT_CHOP 66 -#define MOVE_EFFECT_INCINERATE 67 -#define MOVE_EFFECT_BUG_BITE 68 -#define MOVE_EFFECT_RECOIL_HP_25 69 -#define MOVE_EFFECT_TRAP_BOTH 70 -#define MOVE_EFFECT_ROUND 71 -#define MOVE_EFFECT_STOCKPILE_WORE_OFF 72 -#define MOVE_EFFECT_DIRE_CLAW 73 -#define MOVE_EFFECT_STEALTH_ROCK 74 -#define MOVE_EFFECT_SPIKES 75 -#define MOVE_EFFECT_SYRUP_BOMB 76 -#define MOVE_EFFECT_FLORAL_HEALING 77 -#define MOVE_EFFECT_SECRET_POWER 78 -#define MOVE_EFFECT_PSYCHIC_NOISE 79 +#define MOVE_EFFECT_SMACK_DOWN 58 +#define MOVE_EFFECT_FLAME_BURST 59 +#define MOVE_EFFECT_FEINT 60 +#define MOVE_EFFECT_SPECTRAL_THIEF 61 +#define MOVE_EFFECT_V_CREATE 62 +#define MOVE_EFFECT_HAPPY_HOUR 63 +#define MOVE_EFFECT_CORE_ENFORCER 64 +#define MOVE_EFFECT_THROAT_CHOP 65 +#define MOVE_EFFECT_INCINERATE 66 +#define MOVE_EFFECT_BUG_BITE 67 +#define MOVE_EFFECT_RECOIL_HP_25 68 +#define MOVE_EFFECT_TRAP_BOTH 69 +#define MOVE_EFFECT_ROUND 70 +#define MOVE_EFFECT_STOCKPILE_WORE_OFF 71 +#define MOVE_EFFECT_DIRE_CLAW 72 +#define MOVE_EFFECT_STEALTH_ROCK 73 +#define MOVE_EFFECT_SPIKES 74 +#define MOVE_EFFECT_SYRUP_BOMB 75 +#define MOVE_EFFECT_FLORAL_HEALING 76 +#define MOVE_EFFECT_SECRET_POWER 77 +#define MOVE_EFFECT_PSYCHIC_NOISE 78 +#define MOVE_EFFECT_TERA_BLAST 79 #define NUM_MOVE_EFFECTS 80 @@ -473,6 +477,7 @@ #define B_WIN_VS_OUTCOME_DRAW 21 #define B_WIN_VS_OUTCOME_LEFT 22 #define B_WIN_VS_OUTCOME_RIGHT 23 +#define B_WIN_MOVE_DESCRIPTION 24 // The following are duplicate id values for windows that Battle Arena uses differently. #define ARENA_WIN_PLAYER_NAME 15 diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index e42403e16ace..38d058a8cb9b 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -32,24 +32,26 @@ #define AI_FLAG_RISKY (1 << 4) #define AI_FLAG_PREFER_STRONGEST_MOVE (1 << 5) #define AI_FLAG_PREFER_BATON_PASS (1 << 6) -#define AI_FLAG_DOUBLE_BATTLE (1 << 7) // removed, split between AI_FLAG_CHECK_BAD_MOVE & AI_FLAG_CHECK_GOOD_MOVE +#define AI_FLAG_DOUBLE_BATTLE (1 << 7) // Automatically set for double battles, handles AI behaviour with partner #define AI_FLAG_HP_AWARE (1 << 8) #define AI_FLAG_POWERFUL_STATUS (1 << 9) // AI prefers moves that set up field effects or side statuses, even if the user can faint the target // New, Trainer Handicap Flags #define AI_FLAG_NEGATE_UNAWARE (1 << 10) // AI is NOT aware of negating effects like wonder room, mold breaker, etc #define AI_FLAG_WILL_SUICIDE (1 << 11) // AI will use explosion / self destruct / final gambit / etc // New, Trainer Strategy Flags -#define AI_FLAG_HELP_PARTNER (1 << 12) // AI can try to help partner. If not set, will tend not to target partner -#define AI_FLAG_PREFER_STATUS_MOVES (1 << 13) // AI gets a score bonus for status moves. Should be combined with AI_FLAG_CHECK_BAD_MOVE to prevent using only status moves -#define AI_FLAG_STALL (1 << 14) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished -#define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks. Automatically includes AI_FLAG_SMART_MON_CHOICES. -#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has an Ace Pokemon. The last Pokemon in the party will not be used until it's the last one remaining. -#define AI_FLAG_OMNISCIENT (1 << 17) // AI has full knowledge of player moves, abilities, hold items -#define AI_FLAG_SMART_MON_CHOICES (1 << 18) // AI will make smarter decisions when choosing which mon to send out mid-battle and after a KO, which are separate decisions. Automatically included by AI_FLAG_SMART_SWITCHING. +#define AI_FLAG_PREFER_STATUS_MOVES (1 << 12) // AI gets a score bonus for status moves. Should be combined with AI_FLAG_CHECK_BAD_MOVE to prevent using only status moves +#define AI_FLAG_STALL (1 << 13) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished +#define AI_FLAG_SMART_SWITCHING (1 << 14) // AI includes a lot more switching checks. Automatically includes AI_FLAG_SMART_MON_CHOICES. +#define AI_FLAG_ACE_POKEMON (1 << 15) // 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 << 16) // AI has full knowledge of player moves, abilities, hold items +#define AI_FLAG_SMART_MON_CHOICES (1 << 17) // AI will make smarter decisions when choosing which mon to send out mid-battle and after a KO, which are separate decisions. Automatically included by AI_FLAG_SMART_SWITCHING. +#define AI_FLAG_CONSERVATIVE (1 << 18) // AI assumes all moves will low roll damage +#define AI_FLAG_SEQUENCE_SWITCHING (1 << 19) // AI switches in mons in exactly party order, and never switches mid-battle -#define AI_FLAG_COUNT 19 +#define AI_FLAG_COUNT 20 // 'other' ai logic flags +#define AI_FLAG_DYNAMIC_FUNC (1 << 28) // Create custom AI functions for specific battles via "setdynamicaifunc" cmd #define AI_FLAG_ROAMING (1 << 29) #define AI_FLAG_SAFARI (1 << 30) #define AI_FLAG_FIRST_BATTLE (1 << 31) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 8e225e2bc86f..389cd7e1271d 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -409,6 +409,9 @@ #define ANIM_TAG_IVY_CUDGEL_FIRE (ANIM_SPRITES_START + 395) #define ANIM_TAG_IVY_CUDGEL_ROCK (ANIM_SPRITES_START + 396) #define ANIM_TAG_IVY_CUDGEL_WATER (ANIM_SPRITES_START + 397) +#define ANIM_TAG_TERA_CRYSTAL (ANIM_SPRITES_START + 398) +#define ANIM_TAG_TERA_SHATTER (ANIM_SPRITES_START + 399) +#define ANIM_TAG_DREEPY_SHINY (ANIM_SPRITES_START + 400) // battlers #define ANIM_ATTACKER 0 @@ -571,6 +574,10 @@ #define B_ANIM_WONDER_ROOM 46 #define B_ANIM_MAGIC_ROOM 47 #define B_ANIM_TAILWIND 48 +#define B_ANIM_FOG_CONTINUES 49 +#define B_ANIM_TERA_CHARGE 50 +#define B_ANIM_TERA_ACTIVATE 51 +#define B_ANIM_SIMPLE_HEAL 52 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 @@ -619,6 +626,7 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 #define ANIM_WEATHER_SNOW 5 +#define ANIM_WEATHER_FOG 6 // horseshoe/fist frames #define ANIM_RIGHT_FIST 0 diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index e4a56b15d147..7b3c77cc8fc1 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -116,6 +116,7 @@ #define EXCHANGE_CORNER_VITAMIN_CLERK 2 #define EXCHANGE_CORNER_HOLD_ITEM_CLERK 3 +// unused #define F_EV_SPREAD_HP (1 << 0) #define F_EV_SPREAD_ATTACK (1 << 1) #define F_EV_SPREAD_DEFENSE (1 << 2) @@ -123,68 +124,7 @@ #define F_EV_SPREAD_SP_ATTACK (1 << 4) #define F_EV_SPREAD_SP_DEFENSE (1 << 5) -#define BATTLE_FRONTIER_ITEM_NONE 0 -#define BATTLE_FRONTIER_ITEM_KINGS_ROCK 1 -#define BATTLE_FRONTIER_ITEM_SITRUS_BERRY 2 -#define BATTLE_FRONTIER_ITEM_ORAN_BERRY 3 -#define BATTLE_FRONTIER_ITEM_CHESTO_BERRY 4 -#define BATTLE_FRONTIER_ITEM_HARD_STONE 5 -#define BATTLE_FRONTIER_ITEM_FOCUS_BAND 6 -#define BATTLE_FRONTIER_ITEM_PERSIM_BERRY 7 -#define BATTLE_FRONTIER_ITEM_MIRACLE_SEED 8 -#define BATTLE_FRONTIER_ITEM_BERRY_JUICE 9 -#define BATTLE_FRONTIER_ITEM_MACHO_BRACE 10 -#define BATTLE_FRONTIER_ITEM_SILVER_POWDER 11 -#define BATTLE_FRONTIER_ITEM_CHERI_BERRY 12 -#define BATTLE_FRONTIER_ITEM_BLACK_GLASSES 13 -#define BATTLE_FRONTIER_ITEM_BLACK_BELT 14 -#define BATTLE_FRONTIER_ITEM_SOUL_DEW 15 -#define BATTLE_FRONTIER_ITEM_CHOICE_BAND 16 -#define BATTLE_FRONTIER_ITEM_MAGNET 17 -#define BATTLE_FRONTIER_ITEM_SILK_SCARF 18 -#define BATTLE_FRONTIER_ITEM_WHITE_HERB 19 -#define BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE 20 -#define BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH 21 -#define BATTLE_FRONTIER_ITEM_MYSTIC_WATER 22 -#define BATTLE_FRONTIER_ITEM_SHARP_BEAK 23 -#define BATTLE_FRONTIER_ITEM_QUICK_CLAW 24 -#define BATTLE_FRONTIER_ITEM_LEFTOVERS 25 -#define BATTLE_FRONTIER_ITEM_RAWST_BERRY 26 -#define BATTLE_FRONTIER_ITEM_LIGHT_BALL 27 -#define BATTLE_FRONTIER_ITEM_POISON_BARB 28 -#define BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE 29 -#define BATTLE_FRONTIER_ITEM_ASPEAR_BERRY 30 -#define BATTLE_FRONTIER_ITEM_SPELL_TAG 31 -#define BATTLE_FRONTIER_ITEM_BRIGHT_POWDER 32 -#define BATTLE_FRONTIER_ITEM_LEPPA_BERRY 33 -#define BATTLE_FRONTIER_ITEM_SCOPE_LENS 34 -#define BATTLE_FRONTIER_ITEM_TWISTED_SPOON 35 -#define BATTLE_FRONTIER_ITEM_METAL_COAT 36 -#define BATTLE_FRONTIER_ITEM_MENTAL_HERB 37 -#define BATTLE_FRONTIER_ITEM_CHARCOAL 38 -#define BATTLE_FRONTIER_ITEM_PECHA_BERRY 39 -#define BATTLE_FRONTIER_ITEM_SOFT_SAND 40 -#define BATTLE_FRONTIER_ITEM_LUM_BERRY 41 -#define BATTLE_FRONTIER_ITEM_DRAGON_SCALE 42 -#define BATTLE_FRONTIER_ITEM_DRAGON_FANG 43 -#define BATTLE_FRONTIER_ITEM_IAPAPA_BERRY 44 -#define BATTLE_FRONTIER_ITEM_WIKI_BERRY 45 -#define BATTLE_FRONTIER_ITEM_SEA_INCENSE 46 -#define BATTLE_FRONTIER_ITEM_SHELL_BELL 47 -#define BATTLE_FRONTIER_ITEM_SALAC_BERRY 48 -#define BATTLE_FRONTIER_ITEM_LANSAT_BERRY 49 -#define BATTLE_FRONTIER_ITEM_APICOT_BERRY 50 -#define BATTLE_FRONTIER_ITEM_STARF_BERRY 51 -#define BATTLE_FRONTIER_ITEM_LIECHI_BERRY 52 -#define BATTLE_FRONTIER_ITEM_LEEK 53 -#define BATTLE_FRONTIER_ITEM_LAX_INCENSE 54 -#define BATTLE_FRONTIER_ITEM_AGUAV_BERRY 55 -#define BATTLE_FRONTIER_ITEM_FIGY_BERRY 56 -#define BATTLE_FRONTIER_ITEM_THICK_CLUB 57 -#define BATTLE_FRONTIER_ITEM_MAGO_BERRY 58 -#define BATTLE_FRONTIER_ITEM_METAL_POWDER 59 -#define BATTLE_FRONTIER_ITEM_PETAYA_BERRY 60 -#define BATTLE_FRONTIER_ITEM_LUCKY_PUNCH 61 -#define BATTLE_FRONTIER_ITEM_GANLON_BERRY 62 +// CreateFacilityMonFlags +#define FLAG_FRONTIER_MON_FACTORY (1 << 0) #endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 13a300f064fd..5da278110f2c 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -221,7 +221,7 @@ enum { EFFECT_HEAL_PULSE, EFFECT_QUASH, EFFECT_ION_DELUGE, - EFFECT_FREEZE_DRY, + EFFECT_SUPER_EFFECTIVE_ON_ARG, EFFECT_TOPSY_TURVY, EFFECT_MISTY_TERRAIN, EFFECT_GRASSY_TERRAIN, @@ -348,6 +348,12 @@ enum { EFFECT_DRAGON_CHEER, EFFECT_LAST_RESPECTS, EFFECT_TIDY_UP, + EFFECT_SPICY_EXTRACT, + EFFECT_TERA_BLAST, + EFFECT_TERA_STARSTORM, + EFFECT_DRAGON_DARTS, + EFFECT_GUARDIAN_OF_ALOLA, + EFFECT_SHELL_SIDE_ARM, NUM_BATTLE_MOVE_EFFECTS, }; diff --git a/include/constants/battle_palace.h b/include/constants/battle_palace.h index 1d8c2f2ddad5..a594fcd5e2e2 100644 --- a/include/constants/battle_palace.h +++ b/include/constants/battle_palace.h @@ -21,9 +21,4 @@ #define PALACE_MOVE_GROUP_DEFENSE 1 #define PALACE_MOVE_GROUP_SUPPORT 2 -// In palace doubles battles Pokémon have a target preference depending on nature -#define PALACE_TARGET_STRONGER 0 -#define PALACE_TARGET_WEAKER 1 -#define PALACE_TARGET_RANDOM 2 - #endif //GUARD_CONSTANTS_BATTLE_PALACE_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 10e7dfea5136..03173c43cf8b 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -118,124 +118,122 @@ #define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26 #define VARIOUS_STAT_TEXT_BUFFER 27 #define VARIOUS_SWITCHIN_ABILITIES 28 -#define VARIOUS_SAVE_TARGET 29 -#define VARIOUS_RESTORE_TARGET 30 -#define VARIOUS_INSTANT_HP_DROP 31 -#define VARIOUS_CLEAR_STATUS 32 -#define VARIOUS_RESTORE_PP 33 -#define VARIOUS_TRY_ACTIVATE_MOXIE 34 -#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35 -#define VARIOUS_PLAY_MOVE_ANIMATION 36 -#define VARIOUS_SET_LUCKY_CHANT 37 -#define VARIOUS_SUCKER_PUNCH_CHECK 38 -#define VARIOUS_SET_SIMPLE_BEAM 39 -#define VARIOUS_TRY_ENTRAINMENT 40 -#define VARIOUS_SET_LAST_USED_ABILITY 41 -#define VARIOUS_INVERT_STAT_STAGES 42 -#define VARIOUS_TRY_ME_FIRST 43 -#define VARIOUS_JUMP_IF_BATTLE_END 44 -#define VARIOUS_TRY_ELECTRIFY 45 -#define VARIOUS_TRY_REFLECT_TYPE 46 -#define VARIOUS_TRY_SOAK 47 -#define VARIOUS_HANDLE_MEGA_EVO 48 -#define VARIOUS_TRY_LAST_RESORT 49 -#define VARIOUS_SET_ARG_TO_BATTLE_DAMAGE 50 -#define VARIOUS_TRY_HIT_SWITCH_TARGET 51 -#define VARIOUS_TRY_AUTOTOMIZE 52 -#define VARIOUS_ABILITY_POPUP 53 -#define VARIOUS_JUMP_IF_TARGET_ALLY 54 -#define VARIOUS_TRY_SYNCHRONOISE 55 -#define VARIOUS_PSYCHO_SHIFT 56 -#define VARIOUS_CURE_STATUS 57 -#define VARIOUS_POWER_TRICK 58 -#define VARIOUS_AFTER_YOU 59 -#define VARIOUS_BESTOW 60 -#define VARIOUS_JUMP_IF_NOT_GROUNDED 61 -#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 62 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 63 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 64 -#define VARIOUS_SET_AURORA_VEIL 65 -#define VARIOUS_TRY_THIRD_TYPE 66 -#define VARIOUS_ACUPRESSURE 67 -#define VARIOUS_SET_POWDER 68 -#define VARIOUS_SPECTRAL_THIEF 69 -#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 70 -#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 71 -#define VARIOUS_JUMP_IF_ROAR_FAILS 72 -#define VARIOUS_TRY_INSTRUCT 73 -#define VARIOUS_JUMP_IF_NOT_BERRY 74 -#define VARIOUS_TRACE_ABILITY 75 -#define VARIOUS_UPDATE_NICK 76 -#define VARIOUS_TRY_ILLUSION_OFF 77 -#define VARIOUS_SET_SPRITEIGNORE0HP 78 -#define VARIOUS_HANDLE_FORM_CHANGE 79 -#define VARIOUS_GET_STAT_VALUE 80 -#define VARIOUS_JUMP_IF_FULL_HP 81 -#define VARIOUS_LOSE_TYPE 82 -#define VARIOUS_TRY_ACTIVATE_SOULHEART 83 -#define VARIOUS_TRY_ACTIVATE_RECEIVER 84 -#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 85 -#define VARIOUS_TRY_FRISK 86 -#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 87 -#define VARIOUS_TRY_FAIRY_LOCK 88 -#define VARIOUS_JUMP_IF_NO_ALLY 89 -#define VARIOUS_POISON_TYPE_IMMUNITY 90 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 91 -#define VARIOUS_INFATUATE_WITH_BATTLER 92 -#define VARIOUS_SET_LAST_USED_ITEM 93 -#define VARIOUS_PARALYZE_TYPE_IMMUNITY 94 -#define VARIOUS_JUMP_IF_ABSENT 95 -#define VARIOUS_DESTROY_ABILITY_POPUP 96 -#define VARIOUS_TOTEM_BOOST 97 -#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 98 -#define VARIOUS_MOVEEND_ITEM_EFFECTS 99 -#define VARIOUS_TERRAIN_SEED 100 -#define VARIOUS_MAKE_INVISIBLE 101 -#define VARIOUS_ROOM_SERVICE 102 -#define VARIOUS_EERIE_SPELL_PP_REDUCE 103 -#define VARIOUS_JUMP_IF_TEAM_HEALTHY 104 -#define VARIOUS_TRY_HEAL_QUARTER_HP 105 -#define VARIOUS_REMOVE_TERRAIN 106 -#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 107 -#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 108 -#define VARIOUS_GET_ROTOTILLER_TARGETS 109 -#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 110 -#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 111 -#define VARIOUS_CONSUME_BERRY 112 -#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 113 -#define VARIOUS_JUMP_IF_SPECIES 114 -#define VARIOUS_UPDATE_ABILITY_POPUP 115 -#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 116 -#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 117 -#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 118 -#define VARIOUS_TRY_NO_RETREAT 119 -#define VARIOUS_TRY_TAR_SHOT 120 -#define VARIOUS_CAN_TAR_SHOT_WORK 121 -#define VARIOUS_CHECK_POLTERGEIST 122 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 123 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 124 -#define VARIOUS_JUMP_IF_UNDER_200 125 -#define VARIOUS_SET_SKY_DROP 126 -#define VARIOUS_CLEAR_SKY_DROP 127 -#define VARIOUS_SKY_DROP_YAWN 128 -#define VARIOUS_CURE_CERTAIN_STATUSES 129 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 130 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 131 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 132 -#define VARIOUS_SAVE_BATTLER_ITEM 133 -#define VARIOUS_RESTORE_BATTLER_ITEM 134 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 135 -#define VARIOUS_SET_BEAK_BLAST 136 -#define VARIOUS_SWAP_SIDE_STATUSES 137 -#define VARIOUS_SWAP_STATS 138 -#define VARIOUS_TEATIME_INVUL 139 -#define VARIOUS_TEATIME_TARGETS 140 -#define VARIOUS_TRY_WIND_RIDER_POWER 141 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 142 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 143 -#define VARIOUS_STORE_HEALING_WISH 144 -#define VARIOUS_HIT_SWITCH_TARGET_FAILED 145 -#define VARIOUS_TRY_REVIVAL_BLESSING 146 +#define VARIOUS_INSTANT_HP_DROP 29 +#define VARIOUS_CLEAR_STATUS 30 +#define VARIOUS_RESTORE_PP 31 +#define VARIOUS_TRY_ACTIVATE_MOXIE 32 +#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 33 +#define VARIOUS_PLAY_MOVE_ANIMATION 34 +#define VARIOUS_SET_LUCKY_CHANT 35 +#define VARIOUS_SUCKER_PUNCH_CHECK 36 +#define VARIOUS_SET_SIMPLE_BEAM 37 +#define VARIOUS_TRY_ENTRAINMENT 38 +#define VARIOUS_SET_LAST_USED_ABILITY 39 +#define VARIOUS_INVERT_STAT_STAGES 40 +#define VARIOUS_TRY_ME_FIRST 41 +#define VARIOUS_JUMP_IF_BATTLE_END 42 +#define VARIOUS_TRY_ELECTRIFY 43 +#define VARIOUS_TRY_REFLECT_TYPE 44 +#define VARIOUS_TRY_SOAK 45 +#define VARIOUS_HANDLE_MEGA_EVO 46 +#define VARIOUS_TRY_LAST_RESORT 47 +#define VARIOUS_SET_ARG_TO_BATTLE_DAMAGE 48 +#define VARIOUS_TRY_HIT_SWITCH_TARGET 49 +#define VARIOUS_TRY_AUTOTOMIZE 50 +#define VARIOUS_ABILITY_POPUP 51 +#define VARIOUS_JUMP_IF_TARGET_ALLY 52 +#define VARIOUS_TRY_SYNCHRONOISE 53 +#define VARIOUS_PSYCHO_SHIFT 54 +#define VARIOUS_CURE_STATUS 55 +#define VARIOUS_POWER_TRICK 56 +#define VARIOUS_AFTER_YOU 57 +#define VARIOUS_BESTOW 58 +#define VARIOUS_JUMP_IF_NOT_GROUNDED 59 +#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 60 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 61 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 62 +#define VARIOUS_SET_AURORA_VEIL 63 +#define VARIOUS_TRY_THIRD_TYPE 64 +#define VARIOUS_ACUPRESSURE 65 +#define VARIOUS_SET_POWDER 66 +#define VARIOUS_SPECTRAL_THIEF 67 +#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 68 +#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 69 +#define VARIOUS_JUMP_IF_ROAR_FAILS 70 +#define VARIOUS_TRY_INSTRUCT 71 +#define VARIOUS_JUMP_IF_NOT_BERRY 72 +#define VARIOUS_TRACE_ABILITY 73 +#define VARIOUS_UPDATE_NICK 74 +#define VARIOUS_TRY_ILLUSION_OFF 75 +#define VARIOUS_SET_SPRITEIGNORE0HP 76 +#define VARIOUS_HANDLE_FORM_CHANGE 77 +#define VARIOUS_GET_STAT_VALUE 78 +#define VARIOUS_JUMP_IF_FULL_HP 79 +#define VARIOUS_LOSE_TYPE 80 +#define VARIOUS_TRY_ACTIVATE_SOULHEART 81 +#define VARIOUS_TRY_ACTIVATE_RECEIVER 82 +#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 83 +#define VARIOUS_TRY_FRISK 84 +#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 85 +#define VARIOUS_TRY_FAIRY_LOCK 86 +#define VARIOUS_JUMP_IF_NO_ALLY 87 +#define VARIOUS_POISON_TYPE_IMMUNITY 88 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 89 +#define VARIOUS_INFATUATE_WITH_BATTLER 90 +#define VARIOUS_SET_LAST_USED_ITEM 91 +#define VARIOUS_PARALYZE_TYPE_IMMUNITY 92 +#define VARIOUS_JUMP_IF_ABSENT 93 +#define VARIOUS_DESTROY_ABILITY_POPUP 94 +#define VARIOUS_TOTEM_BOOST 95 +#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 96 +#define VARIOUS_MOVEEND_ITEM_EFFECTS 97 +#define VARIOUS_TERRAIN_SEED 98 +#define VARIOUS_MAKE_INVISIBLE 99 +#define VARIOUS_ROOM_SERVICE 100 +#define VARIOUS_EERIE_SPELL_PP_REDUCE 101 +#define VARIOUS_JUMP_IF_TEAM_HEALTHY 102 +#define VARIOUS_TRY_HEAL_QUARTER_HP 103 +#define VARIOUS_REMOVE_TERRAIN 104 +#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 105 +#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 106 +#define VARIOUS_GET_ROTOTILLER_TARGETS 107 +#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 108 +#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 109 +#define VARIOUS_CONSUME_BERRY 110 +#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 111 +#define VARIOUS_JUMP_IF_SPECIES 112 +#define VARIOUS_UPDATE_ABILITY_POPUP 113 +#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 114 +#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 115 +#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 116 +#define VARIOUS_TRY_NO_RETREAT 117 +#define VARIOUS_TRY_TAR_SHOT 118 +#define VARIOUS_CAN_TAR_SHOT_WORK 119 +#define VARIOUS_CHECK_POLTERGEIST 120 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 121 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 122 +#define VARIOUS_JUMP_IF_UNDER_200 123 +#define VARIOUS_SET_SKY_DROP 124 +#define VARIOUS_CLEAR_SKY_DROP 125 +#define VARIOUS_SKY_DROP_YAWN 126 +#define VARIOUS_CURE_CERTAIN_STATUSES 127 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 128 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 129 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 130 +#define VARIOUS_SAVE_BATTLER_ITEM 131 +#define VARIOUS_RESTORE_BATTLER_ITEM 132 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 133 +#define VARIOUS_SET_BEAK_BLAST 134 +#define VARIOUS_SWAP_SIDE_STATUSES 135 +#define VARIOUS_SWAP_STATS 136 +#define VARIOUS_TEATIME_INVUL 137 +#define VARIOUS_TEATIME_TARGETS 138 +#define VARIOUS_TRY_WIND_RIDER_POWER 139 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 140 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 141 +#define VARIOUS_STORE_HEALING_WISH 142 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 143 +#define VARIOUS_TRY_REVIVAL_BLESSING 144 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 diff --git a/include/constants/battle_setup.h b/include/constants/battle_setup.h index d825c88bc314..bb7f9adefaf5 100644 --- a/include/constants/battle_setup.h +++ b/include/constants/battle_setup.h @@ -14,5 +14,6 @@ #define TRAINER_BATTLE_SET_TRAINER_A 10 #define TRAINER_BATTLE_SET_TRAINER_B 11 #define TRAINER_BATTLE_HILL 12 +#define TRAINER_BATTLE_TWO_TRAINERS_NO_INTRO 13 #endif // GUARD_CONSTANTS_BATTLE_SETUP_H diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 8d5cde7c2e57..1e6e2d86d750 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -706,8 +706,14 @@ #define STRINGID_BIZARREARENACREATED 704 #define STRINGID_BIZARREAREACREATED 705 #define STRINGID_TIDYINGUPCOMPLETE 706 +#define STRINGID_PKMNTERASTALLIZEDINTO 707 +#define STRINGID_BOOSTERENERGYACTIVATES 708 +#define STRINGID_FOGCREPTUP 709 +#define STRINGID_FOGISDEEP 710 +#define STRINGID_FOGLIFTED 711 +#define STRINGID_PKMNMADESHELLGLEAM 712 -#define BATTLESTRINGS_COUNT 707 +#define BATTLESTRINGS_COUNT 713 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -759,6 +765,17 @@ #define B_MSG_STARTED_SUNLIGHT 4 #define B_MSG_STARTED_HAIL 5 #define B_MSG_STARTED_SNOW 6 +#define B_MSG_STARTED_FOG 7 + +// gWeatherEndsStringIds +#define B_MSG_WEATHER_END_RAIN 0 +#define B_MSG_WEATHER_END_SANDSTORM 1 +#define B_MSG_WEATHER_END_SUN 2 +#define B_MSG_WEATHER_END_HAIL 3 +#define B_MSG_WEATHER_END_STRONG_WINDS 4 +#define B_MSG_WEATHER_END_SNOW 5 +#define B_MSG_WEATHER_END_FOG 6 +#define B_MSG_WEATHER_END_COUNT 7 // gRainContinuesStringIds #define B_MSG_RAIN_CONTINUES 0 diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index cd971efddfd4..e7641f982602 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -82,7 +82,8 @@ #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP 0x4E #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT 0x4F #define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT 0x50 -#define NUM_MOVEMENT_TYPES 0x51 +#define MOVEMENT_TYPE_FOLLOW_PLAYER 0x51 +#define NUM_MOVEMENT_TYPES 0x52 #define MOVEMENT_ACTION_FACE_DOWN 0x0 #define MOVEMENT_ACTION_FACE_UP 0x1 @@ -244,6 +245,8 @@ #define MOVEMENT_ACTION_FLY_DOWN 0x9D #define MOVEMENT_ACTION_EMOTE_X 0x9E #define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK 0x9F +#define MOVEMENT_ACTION_EXIT_POKEBALL 0xA0 +#define MOVEMENT_ACTION_ENTER_POKEBALL 0xA1 #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF @@ -275,6 +278,11 @@ #define ANIM_RUN_WEST (ANIM_STD_COUNT + 2) #define ANIM_RUN_EAST (ANIM_STD_COUNT + 3) +#define ANIM_EXIT_POKEBALL_FAST_SOUTH (ANIM_STD_COUNT + 0) +#define ANIM_EXIT_POKEBALL_FAST_NORTH (ANIM_STD_COUNT + 1) +#define ANIM_EXIT_POKEBALL_FAST_WEST (ANIM_STD_COUNT + 2) +#define ANIM_EXIT_POKEBALL_FAST_EAST (ANIM_STD_COUNT + 3) + #define ANIM_BUNNY_HOP_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 0) #define ANIM_BUNNY_HOP_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 1) #define ANIM_BUNNY_HOP_BACK_WHEEL_WEST (ANIM_STD_COUNT + 2) diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h index c8fa942655a6..e2ac7f792068 100644 --- a/include/constants/event_objects.h +++ b/include/constants/event_objects.h @@ -240,24 +240,20 @@ #define OBJ_EVENT_GFX_LINK_RS_MAY 236 #define OBJ_EVENT_GFX_LUGIA 237 #define OBJ_EVENT_GFX_HOOH 238 +#define OBJ_EVENT_GFX_POKE_BALL 239 +#define OBJ_EVENT_GFX_OW_MON 240 -// NOTE: By default, the max value for NUM_OBJ_EVENT_GFX is 239. -// -// Object event graphics ids are 1 byte in size (max value of 255), and the dynamic -// graphics ids that start after NUM_OBJ_EVENT_GFX reach this limit. No graphics id -// uses the value 239 itself, so removing the "+ 1" in OBJ_EVENT_GFX_VARS would -// allow increasing NUM_OBJ_EVENT_GFX to 240. There are also a handful of unused -// object graphics that can be removed. If more graphics are needed, anything that -// stores graphics ids will need to be increased in size. See wiki entry below: -// https://github.com/pret/pokeemerald/wiki/Feature-Branches#overworld-expansion -#define NUM_OBJ_EVENT_GFX 239 +// NOTE: The maximum amount of object events has been expanded from 255 to 65535. +// Since dynamic graphics ids still require at least 16 free values, the actual limit +// is 65519, but even considering follower Pokémon, this should be more than enough :) +#define NUM_OBJ_EVENT_GFX 241 // These are dynamic object gfx ids. // They correspond with the values of the VAR_OBJ_GFX_ID_X vars. // More info about them in include/constants/vars.h #define OBJ_EVENT_GFX_VARS (NUM_OBJ_EVENT_GFX + 1) -#define OBJ_EVENT_GFX_VAR_0 (OBJ_EVENT_GFX_VARS + 0x0) // 240 +#define OBJ_EVENT_GFX_VAR_0 (OBJ_EVENT_GFX_VARS + 0x0) #define OBJ_EVENT_GFX_VAR_1 (OBJ_EVENT_GFX_VARS + 0x1) #define OBJ_EVENT_GFX_VAR_2 (OBJ_EVENT_GFX_VARS + 0x2) #define OBJ_EVENT_GFX_VAR_3 (OBJ_EVENT_GFX_VARS + 0x3) @@ -272,12 +268,23 @@ #define OBJ_EVENT_GFX_VAR_C (OBJ_EVENT_GFX_VARS + 0xC) #define OBJ_EVENT_GFX_VAR_D (OBJ_EVENT_GFX_VARS + 0xD) #define OBJ_EVENT_GFX_VAR_E (OBJ_EVENT_GFX_VARS + 0xE) -#define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) // 255 +#define OBJ_EVENT_GFX_VAR_F (OBJ_EVENT_GFX_VARS + 0xF) -#define SHADOW_SIZE_S 0 -#define SHADOW_SIZE_M 1 -#define SHADOW_SIZE_L 2 -#define SHADOW_SIZE_XL 3 +#define OBJ_EVENT_GFX_MON_BASE 0x200 // 512 +#define OBJ_EVENT_GFX_SPECIES_BITS 11 +#define OBJ_EVENT_GFX_SPECIES_MASK ((1 << OBJ_EVENT_GFX_SPECIES_BITS) - 1) + +// Used to call a specific species' follower graphics. Useful for static encounters. +#define OBJ_EVENT_GFX_SPECIES(name) (SPECIES_##name + OBJ_EVENT_GFX_MON_BASE) +#define OBJ_EVENT_GFX_SPECIES_SHINY(name) (SPECIES_##name + OBJ_EVENT_GFX_MON_BASE + SPECIES_SHINY_TAG) + +#define OW_SPECIES(x) (((x)->graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE) +#define OW_FORM(x) ((x)->graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS) + +#define SHADOW_SIZE_S 0 +#define SHADOW_SIZE_M 1 +#define SHADOW_SIZE_L 2 +#define SHADOW_SIZE_NONE 3 // Originally SHADOW_SIZE_XL, which went unused due to shadowSize in ObjectEventGraphicsInfo being only 2 bits. #define F_INANIMATE (1 << 6) #define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7) @@ -285,6 +292,9 @@ #define TRACKS_NONE 0 #define TRACKS_FOOT 1 #define TRACKS_BIKE_TIRE 2 +#define TRACKS_SLITHER 3 +#define TRACKS_SPOT 4 +#define TRACKS_BUG 5 #define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL @@ -294,6 +304,7 @@ // Special object event local ids #define OBJ_EVENT_ID_PLAYER 0xFF #define OBJ_EVENT_ID_CAMERA 0x7F +#define OBJ_EVENT_ID_FOLLOWER 0xFE // Object event local ids referenced in C files #define LOCALID_ROUTE111_PLAYER_FALLING 45 @@ -325,4 +336,90 @@ #define LOCALID_BATTLE_FRONTIER_MART_CLERK 1 #define LOCALID_SLATEPORT_ENERGY_GURU 25 +// Moved from src/event_object_movement.c so that they're accesible from other files. +#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 +#define OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION 0x1101 +#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102 +#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103 +#define OBJ_EVENT_PAL_TAG_NPC_2 0x1104 +#define OBJ_EVENT_PAL_TAG_NPC_3 0x1105 +#define OBJ_EVENT_PAL_TAG_NPC_4 0x1106 +#define OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION 0x1107 +#define OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION 0x1108 +#define OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION 0x1109 +#define OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION 0x110A +#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP 0x110B +#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION 0x110C +#define OBJ_EVENT_PAL_TAG_TRUCK 0x110D +#define OBJ_EVENT_PAL_TAG_VIGOROTH 0x110E +#define OBJ_EVENT_PAL_TAG_ZIGZAGOON 0x110F +#define OBJ_EVENT_PAL_TAG_MAY 0x1110 +#define OBJ_EVENT_PAL_TAG_MAY_REFLECTION 0x1111 +#define OBJ_EVENT_PAL_TAG_MOVING_BOX 0x1112 +#define OBJ_EVENT_PAL_TAG_CABLE_CAR 0x1113 +#define OBJ_EVENT_PAL_TAG_SSTIDAL 0x1114 +#define OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER 0x1115 +#define OBJ_EVENT_PAL_TAG_KYOGRE 0x1116 +#define OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION 0x1117 +#define OBJ_EVENT_PAL_TAG_GROUDON 0x1118 +#define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119 +#define OBJ_EVENT_PAL_TAG_UNUSED 0x111A +#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B +#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C +#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D +#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E +#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F +#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120 +#define OBJ_EVENT_PAL_TAG_LUGIA 0x1121 +#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 +#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 +#define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1124 + +#if OW_FOLLOWERS_POKEBALLS +// Vanilla +#define OBJ_EVENT_PAL_TAG_BALL_MASTER 0x1150 +#define OBJ_EVENT_PAL_TAG_BALL_ULTRA 0x1151 +#define OBJ_EVENT_PAL_TAG_BALL_GREAT 0x1152 +#define OBJ_EVENT_PAL_TAG_BALL_SAFARI 0x1153 +#define OBJ_EVENT_PAL_TAG_BALL_NET 0x1154 +#define OBJ_EVENT_PAL_TAG_BALL_DIVE 0x1155 +#define OBJ_EVENT_PAL_TAG_BALL_NEST 0x1156 +#define OBJ_EVENT_PAL_TAG_BALL_REPEAT 0x1157 +#define OBJ_EVENT_PAL_TAG_BALL_TIMER 0x1158 +#define OBJ_EVENT_PAL_TAG_BALL_LUXURY 0x1159 +#define OBJ_EVENT_PAL_TAG_BALL_PREMIER 0x115A +// Gen IV/Sinnoh +#define OBJ_EVENT_PAL_TAG_BALL_DUSK 0x115B +#define OBJ_EVENT_PAL_TAG_BALL_HEAL 0x115C +#define OBJ_EVENT_PAL_TAG_BALL_QUICK 0x115D +#define OBJ_EVENT_PAL_TAG_BALL_CHERISH 0x115E +#define OBJ_EVENT_PAL_TAG_BALL_PARK 0x115F +// Gen II/Johto Apricorns +#define OBJ_EVENT_PAL_TAG_BALL_FAST 0x1160 +#define OBJ_EVENT_PAL_TAG_BALL_LEVEL 0x1161 +#define OBJ_EVENT_PAL_TAG_BALL_LURE 0x1162 +#define OBJ_EVENT_PAL_TAG_BALL_HEAVY 0x1163 +#define OBJ_EVENT_PAL_TAG_BALL_LOVE 0x1164 +#define OBJ_EVENT_PAL_TAG_BALL_FRIEND 0x1165 +#define OBJ_EVENT_PAL_TAG_BALL_MOON 0x1166 +#define OBJ_EVENT_PAL_TAG_BALL_SPORT 0x1167 +// Gen V +#define OBJ_EVENT_PAL_TAG_BALL_DREAM 0x1168 +// Gen VII +#define OBJ_EVENT_PAL_TAG_BALL_BEAST 0x1169 +// Gen VIII +#define OBJ_EVENT_PAL_TAG_BALL_STRANGE 0x116A +#endif //OW_FOLLOWERS_POKEBALLS +// Used as a placeholder follower graphic +#define OBJ_EVENT_PAL_TAG_SUBSTITUTE 0x7611 +#define OBJ_EVENT_PAL_TAG_EMOTES 0x8002 +// Not a real OW palette tag; used for the white flash applied to followers +#define OBJ_EVENT_PAL_TAG_WHITE (OBJ_EVENT_PAL_TAG_NONE - 1) +#define OBJ_EVENT_PAL_TAG_NONE 0x11FF + +// This + localId is used as the tileTag +// for compressed graphicsInfos +// '(C)ompressed (E)vent' +#define COMP_OW_TILE_TAG_BASE 0xCE00 + #endif // GUARD_CONSTANTS_EVENT_OBJECTS_H diff --git a/include/constants/expansion.h b/include/constants/expansion.h index cc9167500f0b..1a266bd8ed49 100644 --- a/include/constants/expansion.h +++ b/include/constants/expansion.h @@ -1,10 +1,10 @@ #ifndef GUARD_CONSTANTS_EXPANSION_H #define GUARD_CONSTANTS_EXPANSION_H -// 1.8.6 +// 1.9.0 #define EXPANSION_VERSION_MAJOR 1 -#define EXPANSION_VERSION_MINOR 8 -#define EXPANSION_VERSION_PATCH 6 +#define EXPANSION_VERSION_MINOR 9 +#define EXPANSION_VERSION_PATCH 0 // FALSE if this this version of Expansion is not a tagged commit, i.e. // it contains unreleased changes. diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index f8efeb9b81b8..f6e6106d90a3 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -35,6 +35,7 @@ #define FLDEFF_USE_FLY 31 #define FLDEFF_FLY_IN 32 #define FLDEFF_QUESTION_MARK_ICON 33 +#define FLDEFF_EMOTE 33 // shares a slot with FLDEFF_QUESTION_MARK_ICON #define FLDEFF_FEET_IN_FLOWING_WATER 34 #define FLDEFF_BIKE_TIRE_TRACKS 35 #define FLDEFF_SAND_DISGUISE 36 @@ -71,6 +72,9 @@ #define FLDEFF_USE_VS_SEEKER 67 #define FLDEFF_X_ICON 68 #define FLDEFF_DOUBLE_EXCL_MARK_ICON 69 +#define FLDEFF_TRACKS_SLITHER 70 +#define FLDEFF_TRACKS_SPOT 71 +#define FLDEFF_TRACKS_BUG 72 #define FLDEFFOBJ_SHADOW_S 0 #define FLDEFFOBJ_SHADOW_M 1 @@ -109,6 +113,9 @@ #define FLDEFFOBJ_BUBBLES 34 #define FLDEFFOBJ_SMALL_SPARKLE 35 #define FLDEFFOBJ_RAYQUAZA 36 +#define FLDEFFOBJ_TRACKS_SLITHER 37 +#define FLDEFFOBJ_TRACKS_SPOT 38 +#define FLDEFFOBJ_TRACKS_BUG 39 #define FLDEFF_PAL_TAG_CUT_GRASS 0x1000 #define FLDEFF_PAL_TAG_SECRET_POWER_TREE 0x1003 diff --git a/include/constants/flags.h b/include/constants/flags.h index 8d98e3aa0491..01e941d9f2fb 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -21,7 +21,7 @@ #define FLAG_TEMP_B (TEMP_FLAGS_START + 0xB) // Unused Flag #define FLAG_TEMP_C (TEMP_FLAGS_START + 0xC) // Unused Flag #define FLAG_TEMP_D (TEMP_FLAGS_START + 0xD) // Unused Flag -#define FLAG_TEMP_E (TEMP_FLAGS_START + 0xE) // Unused Flag +#define FLAG_TEMP_E (TEMP_FLAGS_START + 0xE) // When set, follower pokemon won't be spawned #define FLAG_TEMP_F (TEMP_FLAGS_START + 0xF) // Unused Flag #define FLAG_TEMP_10 (TEMP_FLAGS_START + 0x10) // Unused Flag #define FLAG_TEMP_11 (TEMP_FLAGS_START + 0x11) @@ -1643,6 +1643,7 @@ #define FLAG_ENABLE_MULTI_CORRIDOR_DOOR (SPECIAL_FLAGS_START + 0x2) #define FLAG_SPECIAL_FLAG_UNUSED_0x4003 (SPECIAL_FLAGS_START + 0x3) // Unused Flag #define FLAG_STORING_ITEMS_IN_PYRAMID_BAG (SPECIAL_FLAGS_START + 0x4) +#define FLAG_SAFE_FOLLOWER_MOVEMENT (SPECIAL_FLAGS_START + 0x5) // When set, applymovement does not put the follower inside a pokeball // FLAG_SPECIAL_FLAG_0x4005 - 0x407F also exist and are unused #define SPECIAL_FLAGS_END (SPECIAL_FLAGS_START + 0x7F) #define NUM_SPECIAL_FLAGS (SPECIAL_FLAGS_END - SPECIAL_FLAGS_START + 1) @@ -1651,6 +1652,7 @@ #define FLAG_TEMP_SKIP_GABBY_INTERVIEW FLAG_TEMP_1 #define FLAG_TEMP_REGICE_PUZZLE_STARTED FLAG_TEMP_2 #define FLAG_TEMP_REGICE_PUZZLE_FAILED FLAG_TEMP_3 +#define FLAG_TEMP_HIDE_FOLLOWER FLAG_TEMP_E #define FLAG_TEMP_HIDE_MIRAGE_ISLAND_BERRY_TREE FLAG_TEMP_11 #endif // GUARD_CONSTANTS_FLAGS_H diff --git a/include/constants/followers.h b/include/constants/followers.h new file mode 100644 index 000000000000..aef8161cf765 --- /dev/null +++ b/include/constants/followers.h @@ -0,0 +1,16 @@ +#ifndef GUARD_CONSTANTS_FOLLOWERS_H +#define GUARD_CONSTANTS_FOLLOWERS_H + +#define FOLLOWER_HAPPY_MESSAGE_COUNT 31 +#define FOLLOWER_NEUTRAL_MESSAGE_COUNT 14 +#define FOLLOWER_SAD_MESSAGE_COUNT 3 +#define FOLLOWER_UPSET_MESSAGE_COUNT 3 +#define FOLLOWER_ANGRY_MESSAGE_COUNT 5 +#define FOLLOWER_PENSIVE_MESSAGE_COUNT 20 +#define FOLLOWER_LOVE_MESSAGE_COUNT 10 +#define FOLLOWER_SURPRISE_MESSAGE_COUNT 20 +#define FOLLOWER_CURIOUS_MESSAGE_COUNT 7 +#define FOLLOWER_MUSIC_MESSAGE_COUNT 14 +#define FOLLOWER_POISONED_MESSAGE_COUNT 1 + +#endif //GUARD_CONSTANTS_FOLLOWERS_H diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index 94f97639f807..74bc16cf2f5c 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -63,7 +63,7 @@ #define FORM_CHANGE_END_BATTLE_TERRAIN 8 // Form change that activates when the Pokémon is switched out in battle. -// - No parameters. +// param1: ability to check, optional #define FORM_CHANGE_BATTLE_SWITCH 9 // Form change that activates when the Pokémon's HP % passes a certain threshold. @@ -123,6 +123,15 @@ #define FORM_CHANGE_STATUS 20 // Form change that activates after move is used. Currently only used for activating Gulp Missile. -#define FORM_CHANGE_HIT_BY_MOVE 21 +#define FORM_CHANGE_HIT_BY_MOVE 21 + +// Form change that activates when terastallized as as a specific type +// param1: tera type +#define FORM_CHANGE_BATTLE_TERASTALLIZATION 22 + +// Form change that activates at midnight after a certain amount of days has passed. +// Adding this form change will automatically make the countdown start as soon the Pokémon changes into a species other than the one specified for this form change. +// param1: amount of days +#define FORM_CHANGE_DAYS_PASSED 23 #endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/constants/global.h b/include/constants/global.h index b6d553f8c991..6d2fbe81c73a 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -1,6 +1,7 @@ #ifndef GUARD_CONSTANTS_GLOBAL_H #define GUARD_CONSTANTS_GLOBAL_H +#include "config/general.h" #include "config/battle.h" #include "config/debug.h" #include "config/item.h" @@ -74,6 +75,7 @@ #define GIFT_RIBBONS_COUNT 11 #define SAVED_TRENDS_COUNT 5 #define PYRAMID_BAG_ITEMS_COUNT 10 +#define ROAMER_COUNT 1 // Number of maximum concurrent active roamers // Number of facilities for Ranking Hall. // 7 facilities for single mode + tower double mode + tower multi mode. @@ -101,9 +103,10 @@ #define CONTEST_CATEGORIES_COUNT 5 // string lengths -#define ITEM_NAME_LENGTH 14 +#define ITEM_NAME_LENGTH ((I_EXPANDED_ITEM_NAMES == TRUE) ? 20 : 14) #define ITEM_NAME_PLURAL_LENGTH ITEM_NAME_LENGTH + 2 // 2 is used for the instance where a word's suffix becomes y->ies -#define POKEMON_NAME_LENGTH 10 +#define POKEMON_NAME_LENGTH 12 +#define VANILLA_POKEMON_NAME_LENGTH 10 #define POKEMON_NAME_BUFFER_SIZE max(20, POKEMON_NAME_LENGTH + 1) // Frequently used buffer size. Larger than necessary #define PLAYER_NAME_LENGTH 7 #define MAIL_WORDS_COUNT 9 @@ -115,7 +118,7 @@ #define WONDER_NEWS_TEXT_LENGTH 40 #define WONDER_CARD_BODY_TEXT_LINES 4 #define WONDER_NEWS_BODY_TEXT_LINES 10 -#define TYPE_NAME_LENGTH 6 +#define TYPE_NAME_LENGTH ((B_EXPANDED_TYPE_NAMES == TRUE) ? 8 : 6) #define ABILITY_NAME_LENGTH ((B_EXPANDED_ABILITY_NAMES == TRUE) ? 16 : 12) #define TRAINER_NAME_LENGTH 10 @@ -154,6 +157,11 @@ #define DIR_SOUTHEAST 6 #define DIR_NORTHWEST 7 #define DIR_NORTHEAST 8 +#define CARDINAL_DIRECTION_COUNT DIR_SOUTHWEST + +#define AXIS_X 0 +#define AXIS_Y 1 +#define AXIS_COUNT 2 #define CONNECTION_INVALID -1 #define CONNECTION_NONE 0 @@ -164,4 +172,8 @@ #define CONNECTION_DIVE 5 #define CONNECTION_EMERGE 6 +#if TESTING +#include "config/test.h" +#endif + #endif // GUARD_CONSTANTS_GLOBAL_H diff --git a/include/constants/moves.h b/include/constants/moves.h index a0c0eaf3b304..dc8bc59a3f94 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -935,6 +935,7 @@ // Signature Z Moves #define MOVE_CATASTROPIKA (MOVES_COUNT + 18) #define MOVE_10000000_VOLT_THUNDERBOLT (MOVES_COUNT + 19) +#define MOVE_10_000_000_VOLT_THUNDERBOLT MOVE_10000000_VOLT_THUNDERBOLT #define MOVE_STOKED_SPARKSURFER (MOVES_COUNT + 20) #define MOVE_EXTREME_EVOBOOST (MOVES_COUNT + 21) #define MOVE_PULVERIZING_PANCAKE (MOVES_COUNT + 22) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 424919cc440f..8095367c9779 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -2,27 +2,28 @@ #define GUARD_CONSTANTS_POKEMON_H // Pokémon types -#define TYPE_NONE 255 -#define TYPE_NORMAL 0 -#define TYPE_FIGHTING 1 -#define TYPE_FLYING 2 -#define TYPE_POISON 3 -#define TYPE_GROUND 4 -#define TYPE_ROCK 5 -#define TYPE_BUG 6 -#define TYPE_GHOST 7 -#define TYPE_STEEL 8 -#define TYPE_MYSTERY 9 -#define TYPE_FIRE 10 -#define TYPE_WATER 11 -#define TYPE_GRASS 12 -#define TYPE_ELECTRIC 13 -#define TYPE_PSYCHIC 14 -#define TYPE_ICE 15 -#define TYPE_DRAGON 16 -#define TYPE_DARK 17 -#define TYPE_FAIRY 18 -#define NUMBER_OF_MON_TYPES 19 +#define TYPE_NONE 0 +#define TYPE_NORMAL 1 +#define TYPE_FIGHTING 2 +#define TYPE_FLYING 3 +#define TYPE_POISON 4 +#define TYPE_GROUND 5 +#define TYPE_ROCK 6 +#define TYPE_BUG 7 +#define TYPE_GHOST 8 +#define TYPE_STEEL 9 +#define TYPE_MYSTERY 10 +#define TYPE_FIRE 11 +#define TYPE_WATER 12 +#define TYPE_GRASS 13 +#define TYPE_ELECTRIC 14 +#define TYPE_PSYCHIC 15 +#define TYPE_ICE 16 +#define TYPE_DRAGON 17 +#define TYPE_DARK 18 +#define TYPE_FAIRY 19 +#define TYPE_STELLAR 20 +#define NUMBER_OF_MON_TYPES 21 // Pokémon egg groups #define EGG_GROUP_NONE 0 @@ -291,18 +292,22 @@ #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 in battle with a personality value with a modulus of 0 #define EVO_LEVEL_FAMILY_OF_FOUR 46 // Pokémon reaches the specified level in battle with a personality value with a modulus of 1-99 -#define EVO_LEVEL_MOVE_TWENTY_TIMES 47 // Pokémon levels up after having used a move for at least 20 times -#define EVO_LEVEL_RECOIL_DAMAGE_MALE 48 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a male -#define EVO_LEVEL_RECOIL_DAMAGE_FEMALE 49 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a female +#define EVO_USE_MOVE_TWENTY_TIMES 47 // Pokémon levels up after having used a move for at least 20 times +#define EVO_RECOIL_DAMAGE_MALE 48 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a male +#define EVO_RECOIL_DAMAGE_FEMALE 49 // Pokémon levels up after having suffered specified amount of non-fainting recoil damage as a female +#define EVO_ITEM_COUNT_999 50 // Pokémon levels up after trainer has collected 999 of a specific item +#define EVO_DEFEAT_THREE_WITH_ITEM 51 // Pokémon levels up after having defeat 3 Pokémon of the same species holding the specified item +#define EVO_OVERWORLD_STEPS 52 // Pokémon levels up after having taken a specific amount of steps in the overworld (or as the party lead if OW_FOLLOWERS_ENABLED is FALSE) without switching // Evolution 'modes,' for GetEvolutionTargetSpecies #define EVO_MODE_NORMAL 0 -#define EVO_MODE_TRADE 1 -#define EVO_MODE_ITEM_USE 2 -#define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve -#define EVO_MODE_BATTLE_SPECIAL 4 -#define EVO_MODE_OVERWORLD_SPECIAL 5 -#define EVO_MODE_BATTLE_ONLY 6 // This mode is only used in battles to support Tandemaus' unique requirement +#define EVO_MODE_CANT_STOP 1 +#define EVO_MODE_TRADE 2 +#define EVO_MODE_ITEM_USE 3 +#define EVO_MODE_ITEM_CHECK 4 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve +#define EVO_MODE_BATTLE_SPECIAL 5 +#define EVO_MODE_OVERWORLD_SPECIAL 6 +#define EVO_MODE_BATTLE_ONLY 7 // This mode is only used in battles to support Tandemaus' unique requirement #define MON_PIC_WIDTH 64 #define MON_PIC_HEIGHT 64 diff --git a/include/constants/pokemon_debug.h b/include/constants/pokemon_sprite_visualizer.h similarity index 75% rename from include/constants/pokemon_debug.h rename to include/constants/pokemon_sprite_visualizer.h index c75392bf2202..36afdb5b87b4 100644 --- a/include/constants/pokemon_debug.h +++ b/include/constants/pokemon_sprite_visualizer.h @@ -1,13 +1,13 @@ -#ifndef GUARD_CONSTANTS_POKEMON_DEBUG_H -#define GUARD_CONSTANTS_POKEMON_DEBUG_H +#ifndef GUARD_CONSTANTS_POKEMON_SPRITE_VISUALIZER_H +#define GUARD_CONSTANTS_POKEMON_SPRITE_VISUALIZER_H //Defines -#define DEBUG_MON_BACK_X 62 -#define DEBUG_MON_BACK_Y 80 -#define DEBUG_ICON_X 220 -#define DEBUG_ICON_Y 140 -#define DEBUG_MON_SHINY 0 -#define DEBUG_MON_NORMAL 9 +#define VISUALIZER_MON_BACK_X 62 +#define VISUALIZER_MON_BACK_Y 80 +#define VISUALIZER_ICON_X 224 +#define VISUALIZER_ICON_Y 144 +#define VISUALIZER_FOLLOWER_X 176 +#define VISUALIZER_FOLLOWER_Y 128 #define MODIFY_DIGITS_MAX 4 #define MODIFY_DIGITS_ARROW_X 129 @@ -50,4 +50,4 @@ #define MAP_BATTLE_SCENE_KYOGRE 12 #define MAP_BATTLE_SCENE_RAYQUAZA 13 -#endif // GUARD_CONSTANTS_POKEMON_DEBUG_H \ No newline at end of file +#endif // GUARD_CONSTANTS_POKEMON_SPRITE_VISUALIZER_H diff --git a/include/constants/species.h b/include/constants/species.h index 73455131247f..895e444d51d2 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1633,4 +1633,144 @@ #define NUM_SPECIES SPECIES_EGG +#define SPECIES_SHINY_TAG 5000 + +// Competitive format aliases +#define SPECIES_ALCREMIE_GMAX SPECIES_ALCREMIE_GIGANTAMAX +#define SPECIES_APPLETUN_GMAX SPECIES_APPLETUN_GIGANTAMAX +#define SPECIES_ARCANINE_HISUI SPECIES_ARCANINE_HISUIAN +#define SPECIES_ARTICUNO_GALAR SPECIES_ARTICUNO_GALARIAN +#define SPECIES_AVALUGG_HISUI SPECIES_AVALUGG_HISUIAN +#define SPECIES_BLASTOISE_GMAX SPECIES_BLASTOISE_GIGANTAMAX +#define SPECIES_BRAVIARY_HISUI SPECIES_BRAVIARY_HISUIAN +#define SPECIES_BURMY_SANDY SPECIES_BURMY_SANDY_CLOAK +#define SPECIES_BURMY_TRASH SPECIES_BURMY_TRASH_CLOAK +#define SPECIES_BUTTERFREE_GMAX SPECIES_BUTTERFREE_GIGANTAMAX +#define SPECIES_CALYREX_ICE SPECIES_CALYREX_ICE_RIDER +#define SPECIES_CALYREX_SHADOW SPECIES_CALYREX_SHADOW_RIDER +#define SPECIES_CENTISKORCH_GMAX SPECIES_CENTISKORCH_GIGANTAMAX +#define SPECIES_CHARIZARD_GMAX SPECIES_CHARIZARD_GIGANTAMAX +#define SPECIES_CINDERACE_GMAX SPECIES_CINDERACE_GIGANTAMAX +#define SPECIES_COALOSSAL_GMAX SPECIES_COALOSSAL_GIGANTAMAX +#define SPECIES_COPPERAJAH_GMAX SPECIES_COPPERAJAH_GIGANTAMAX +#define SPECIES_CORSOLA_GALAR SPECIES_CORSOLA_GALARIAN +#define SPECIES_CORVIKNIGHT_GMAX SPECIES_CORVIKNIGHT_GIGANTAMAX +#define SPECIES_DARMANITAN_GALAR SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE +#define SPECIES_DARMANITAN_GALAR_ZEN SPECIES_DARMANITAN_GALARIAN_ZEN_MODE +#define SPECIES_DARMANITAN_ZEN SPECIES_DARMANITAN_ZEN_MODE +#define SPECIES_DARUMAKA_GALAR SPECIES_DARUMAKA_GALARIAN +#define SPECIES_DECIDUEYE_HISUI SPECIES_DECIDUEYE_HISUIAN +#define SPECIES_DIGLETT_ALOLA SPECIES_DIGLETT_ALOLAN +#define SPECIES_DREDNAW_GMAX SPECIES_DREDNAW_GIGANTAMAX +#define SPECIES_DUGTRIO_ALOLA SPECIES_DUGTRIO_ALOLAN +#define SPECIES_DURALUDON_GMAX SPECIES_DURALUDON_GIGANTAMAX +#define SPECIES_EEVEE_GMAX SPECIES_EEVEE_GIGANTAMAX +#define SPECIES_EEVEE_STARTER SPECIES_EEVEE_PARTNER +#define SPECIES_EISCUE_NOICE SPECIES_EISCUE_NOICE_FACE +#define SPECIES_ELECTRODE_HISUI SPECIES_ELECTRODE_HISUIAN +#define SPECIES_EXEGGUTOR_ALOLA SPECIES_EXEGGUTOR_ALOLAN +#define SPECIES_FARFETCHD_GALAR SPECIES_FARFETCHD_GALARIAN +#define SPECIES_FLAPPLE_GMAX SPECIES_FLAPPLE_GIGANTAMAX +#define SPECIES_FLOETTE_ETERNAL SPECIES_FLOETTE_ETERNAL_FLOWER +#define SPECIES_GARBODOR_GMAX SPECIES_GARBODOR_GIGANTAMAX +#define SPECIES_GASTRODON_EAST SPECIES_GASTRODON_EAST_SEA +#define SPECIES_GENESECT_BURN SPECIES_GENESECT_BURN_DRIVE +#define SPECIES_GENESECT_CHILL SPECIES_GENESECT_CHILL_DRIVE +#define SPECIES_GENESECT_DOUSE SPECIES_GENESECT_DOUSE_DRIVE +#define SPECIES_GENESECT_SHOCK SPECIES_GENESECT_SHOCK_DRIVE +#define SPECIES_GENGAR_GMAX SPECIES_GENGAR_GIGANTAMAX +#define SPECIES_GEODUDE_ALOLA SPECIES_GEODUDE_ALOLAN +#define SPECIES_GOLEM_ALOLA SPECIES_GOLEM_ALOLAN +#define SPECIES_GOODRA_HISUI SPECIES_GOODRA_HISUIAN +#define SPECIES_GRAVELER_ALOLA SPECIES_GRAVELER_ALOLAN +#define SPECIES_GRENINJA_BOND SPECIES_GRENINJA_BATTLE_BOND +#define SPECIES_GRIMER_ALOLA SPECIES_GRIMER_ALOLAN +#define SPECIES_GRIMMSNARL_GMAX SPECIES_GRIMMSNARL_GIGANTAMAX +#define SPECIES_GROWLITHE_HISUI SPECIES_GROWLITHE_HISUIAN +#define SPECIES_HATTERENE_GMAX SPECIES_HATTERENE_GIGANTAMAX +#define SPECIES_INTELEON_GMAX SPECIES_INTELEON_GIGANTAMAX +#define SPECIES_KINGLER_GMAX SPECIES_KINGLER_GIGANTAMAX +#define SPECIES_LAPRAS_GMAX SPECIES_LAPRAS_GIGANTAMAX +#define SPECIES_LILLIGANT_HISUI SPECIES_LILLIGANT_HISUIAN +#define SPECIES_LINOONE_GALAR SPECIES_LINOONE_GALARIAN +#define SPECIES_MACHAMP_GMAX SPECIES_MACHAMP_GIGANTAMAX +#define SPECIES_MAGEARNA_ORIGINAL SPECIES_MAGEARNA_ORIGINAL_COLOR +#define SPECIES_MAROWAK_ALOLA SPECIES_MAROWAK_ALOLAN +#define SPECIES_MAROWAK_ALOLA_TOTEM SPECIES_MAROWAK_ALOLAN_TOTEM +#define SPECIES_MAUSHOLD_FOUR SPECIES_MAUSHOLD_FAMILY_OF_FOUR +#define SPECIES_MELMETAL_GMAX SPECIES_MELMETAL_GIGANTAMAX +#define SPECIES_MEOWTH_ALOLA SPECIES_MEOWTH_ALOLAN +#define SPECIES_MEOWTH_GALAR SPECIES_MEOWTH_GALARIAN +#define SPECIES_MEOWTH_GMAX SPECIES_MEOWTH_GIGANTAMAX +#define SPECIES_MOLTRES_GALAR SPECIES_MOLTRES_GALARIAN +#define SPECIES_MR_MIME_GALAR SPECIES_MR_MIME_GALARIAN +#define SPECIES_MUK_ALOLA SPECIES_MUK_ALOLAN +#define SPECIES_NINETALES_ALOLA SPECIES_NINETALES_ALOLAN +#define SPECIES_OGERPON_TEAL SPECIES_OGERPON_TEAL_MASK +#define SPECIES_OGERPON_WELLSPRING SPECIES_OGERPON_WELLSPRING_MASK +#define SPECIES_OGERPON_HEARTHFLAME SPECIES_OGERPON_HEARTHFLAME_MASK +#define SPECIES_OGERPON_CORNERSTONE SPECIES_OGERPON_CORNERSTONE_MASK +#define SPECIES_ORBEETLE_GMAX SPECIES_ORBEETLE_GIGANTAMAX +#define SPECIES_PERSIAN_ALOLA SPECIES_PERSIAN_ALOLAN +#define SPECIES_PIKACHU_ALOLA SPECIES_PIKACHU_ALOLA_CAP +#define SPECIES_PIKACHU_GMAX SPECIES_PIKACHU_GIGANTAMAX +#define SPECIES_PIKACHU_HOENN SPECIES_PIKACHU_HOENN_CAP +#define SPECIES_PIKACHU_KALOS SPECIES_PIKACHU_KALOS_CAP +#define SPECIES_PIKACHU_ORIGINAL SPECIES_PIKACHU_ORIGINAL_CAP +//#define SPECIES_PIKACHU_PARTNER SPECIES_PIKACHU_PARTNER_CAP +#define SPECIES_PIKACHU_PHD SPECIES_PIKACHU_PH_D +#define SPECIES_PIKACHU_SINNOH SPECIES_PIKACHU_SINNOH_CAP +#define SPECIES_PIKACHU_STARTER SPECIES_PIKACHU_PARTNER +#define SPECIES_PIKACHU_UNOVA SPECIES_PIKACHU_UNOVA_CAP +#define SPECIES_PIKACHU_WORLD SPECIES_PIKACHU_WORLD_CAP +#define SPECIES_PONYTA_GALAR SPECIES_PONYTA_GALARIAN +#define SPECIES_QWILFISH_HISUI SPECIES_QWILFISH_HISUIAN +#define SPECIES_RAICHU_ALOLA SPECIES_RAICHU_ALOLAN +#define SPECIES_RAPIDASH_GALAR SPECIES_RAPIDASH_GALARIAN +#define SPECIES_RATICATE_ALOLA SPECIES_RATICATE_ALOLAN +#define SPECIES_RATICATE_ALOLA_TOTEM SPECIES_RATICATE_ALOLAN_TOTEM +#define SPECIES_RATTATA_ALOLA SPECIES_RATTATA_ALOLAN +#define SPECIES_RILLABOOM_GMAX SPECIES_RILLABOOM_GIGANTAMAX +#define SPECIES_SAMUROTT_HISUI SPECIES_SAMUROTT_HISUIAN +#define SPECIES_SANDACONDA_GMAX SPECIES_SANDACONDA_GIGANTAMAX +#define SPECIES_SANDSHREW_ALOLA SPECIES_SANDSHREW_ALOLAN +#define SPECIES_SANDSLASH_ALOLA SPECIES_SANDSLASH_ALOLAN +#define SPECIES_SHELLOS_EAST SPECIES_SHELLOS_EAST_SEA +#define SPECIES_SLIGGOO_HISUI SPECIES_SLIGGOO_HISUIAN +#define SPECIES_SLOWBRO_GALAR SPECIES_SLOWBRO_GALARIAN +#define SPECIES_SLOWKING_GALAR SPECIES_SLOWKING_GALARIAN +#define SPECIES_SLOWPOKE_GALAR SPECIES_SLOWPOKE_GALARIAN +#define SPECIES_SNEASEL_HISUI SPECIES_SNEASEL_HISUIAN +#define SPECIES_SNORLAX_GMAX SPECIES_SNORLAX_GIGANTAMAX +#define SPECIES_SQUAWKABILLY_BLUE SPECIES_SQUAWKABILLY_BLUE_PLUMAGE +#define SPECIES_SQUAWKABILLY_WHITE SPECIES_SQUAWKABILLY_WHITE_PLUMAGE +#define SPECIES_SQUAWKABILLY_YELLOW SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE +#define SPECIES_STUNFISK_GALAR SPECIES_STUNFISK_GALARIAN +#define SPECIES_TAUROS_PALDEA_AQUA SPECIES_TAUROS_PALDEAN_AQUA_BREED +#define SPECIES_TAUROS_PALDEA_BLAZE SPECIES_TAUROS_PALDEAN_BLAZE_BREED +#define SPECIES_TAUROS_PALDEA_COMBAT SPECIES_TAUROS_PALDEAN_COMBAT_BREED +#define SPECIES_TOXTRICITY_AMPED_GMAX SPECIES_TOXTRICITY_AMPED_GIGANTAMAX +#define SPECIES_TOXTRICITY_LOW_KEY_GMAX SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX +#define SPECIES_TYPHLOSION_HISUI SPECIES_TYPHLOSION_HISUIAN +#define SPECIES_UNOWN_EXCLAMATION SPECIES_UNOWN_EMARK +#define SPECIES_UNOWN_QUESTION SPECIES_UNOWN_QMARK +#define SPECIES_URSHIFU_GMAX SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX +#define SPECIES_URSHIFU_RAPID_STRIKE SPECIES_URSHIFU_RAPID_STRIKE_STYLE +#define SPECIES_URSHIFU_RAPID_STRIKE_GMAX SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX +#define SPECIES_VENUSAUR_GMAX SPECIES_VENUSAUR_GIGANTAMAX +#define SPECIES_VIVILLON_POKEBALL SPECIES_VIVILLON_POKE_BALL +#define SPECIES_VOLTORB_HISUI SPECIES_VOLTORB_HISUIAN +#define SPECIES_VULPIX_ALOLA SPECIES_VULPIX_ALOLAN +#define SPECIES_WEEZING_GALAR SPECIES_WEEZING_GALARIAN +#define SPECIES_WOOPER_PALDEA SPECIES_WOOPER_PALDEAN +#define SPECIES_WORMADAM_SANDY SPECIES_WORMADAM_SANDY_CLOAK +#define SPECIES_WORMADAM_TRASH SPECIES_WORMADAM_TRASH_CLOAK +#define SPECIES_YAMASK_GALAR SPECIES_YAMASK_GALARIAN +#define SPECIES_ZACIAN_CROWNED SPECIES_ZACIAN_CROWNED_SWORD +#define SPECIES_ZAMAZENTA_CROWNED SPECIES_ZAMAZENTA_CROWNED_SHIELD +#define SPECIES_ZAPDOS_GALAR SPECIES_ZAPDOS_GALARIAN +#define SPECIES_ZIGZAGOON_GALAR SPECIES_ZIGZAGOON_GALARIAN +#define SPECIES_ZOROARK_HISUI SPECIES_ZOROARK_HISUIAN +#define SPECIES_ZORUA_HISUI SPECIES_ZORUA_HISUIAN + #endif // GUARD_CONSTANTS_SPECIES_H diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 8ebfd49cab5f..ebfc18eef0d5 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -371,7 +371,8 @@ #define F_TRAINER_FEMALE (1 << 7) // Trainer party defines -#define TRAINER_MON_MALE 1 -#define TRAINER_MON_FEMALE 2 +#define TRAINER_MON_MALE 1 +#define TRAINER_MON_FEMALE 2 +#define TRAINER_MON_RANDOM_GENDER 3 #endif // GUARD_TRAINERS_H diff --git a/include/constants/wild_encounter.h b/include/constants/wild_encounter.h index a78cd126f33d..ae669a2c35a2 100644 --- a/include/constants/wild_encounter.h +++ b/include/constants/wild_encounter.h @@ -8,4 +8,7 @@ #define NUM_ALTERING_CAVE_TABLES 9 +#define FISHING_CHAIN_LENGTH_MAX 200 +#define FISHING_CHAIN_SHINY_STREAK_MAX 20 + #endif // GUARD_CONSTANTS_WILD_ENCOUNTER_H diff --git a/include/data.h b/include/data.h index 652f396c03fd..69c1a19a3c49 100644 --- a/include/data.h +++ b/include/data.h @@ -4,8 +4,6 @@ #include "constants/moves.h" #include "constants/trainers.h" -#define SPECIES_SHINY_TAG 5000 - #define MAX_TRAINER_ITEMS 4 #define TRAINER_PIC_WIDTH 64 @@ -53,6 +51,8 @@ struct TrainerBacksprite #define TRAINER_PARTY_IVS(hp, atk, def, speed, spatk, spdef) (hp | (atk << 5) | (def << 10) | (speed << 15) | (spatk << 20) | (spdef << 25)) #define TRAINER_PARTY_EVS(hp, atk, def, speed, spatk, spdef) ((const u8[6]){hp,atk,def,spatk,spdef,speed}) +// Shared by both trainer and frontier mons +// See CreateNPCTrainerPartyFromTrainer and CreateFacilityMon struct TrainerMon { const u8 *nickname; @@ -68,10 +68,12 @@ struct TrainerMon u8 nature:5; bool8 gender:2; bool8 isShiny:1; - u8 dynamaxLevel:4; + u8 teraType:5; bool8 gigantamaxFactor:1; - bool8 shouldDynamax:1; - bool8 shouldTerastal:1; + u8 shouldUseDynamax:1; + u8 padding1:1; + u8 dynamaxLevel:4; + u8 padding2:4; }; #define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray) @@ -106,6 +108,10 @@ struct TypeInfo u8 palette; u16 zMove; u16 maxMove; + u16 teraTypeRGBValue; // Most values pulled from the Tera type icon palette. + u16 damageCategory:2; // Used for B_PHYSICAL_SPECIAL_SPLIT <= GEN_3 + u16 padding:14; + const u32 *const paletteTMHM; //u16 enhanceItem; //u16 berry; //u16 gem; @@ -116,6 +122,19 @@ struct TypeInfo //u16 arceusForm; }; +struct FollowerMsgInfo +{ + const u8 *text; + const u8 *script; +}; + +struct FollowerMessagePool +{ + const struct FollowerMsgInfo *messages; + const u8 *script; + u16 length; +}; + extern const u16 gMinigameDigits_Pal[]; extern const u32 gMinigameDigits_Gfx[]; @@ -148,6 +167,19 @@ extern const struct Trainer gBattlePartners[]; extern const struct TrainerClass gTrainerClasses[TRAINER_CLASS_COUNT]; +// Follower text messages +extern const struct FollowerMsgInfo gFollowerHappyMessages[]; +extern const struct FollowerMsgInfo gFollowerNeutralMessages[]; +extern const struct FollowerMsgInfo gFollowerSadMessages[]; +extern const struct FollowerMsgInfo gFollowerUpsetMessages[]; +extern const struct FollowerMsgInfo gFollowerAngryMessages[]; +extern const struct FollowerMsgInfo gFollowerPensiveMessages[]; +extern const struct FollowerMsgInfo gFollowerLoveMessages[]; +extern const struct FollowerMsgInfo gFollowerSurpriseMessages[]; +extern const struct FollowerMsgInfo gFollowerCuriousMessages[]; +extern const struct FollowerMsgInfo gFollowerMusicMessages[]; +extern const struct FollowerMsgInfo gFollowerPoisonedMessages[]; + static inline u16 SanitizeTrainerId(u16 trainerId) { if (trainerId >= TRAINERS_COUNT) diff --git a/include/daycare.h b/include/daycare.h index 81e613b07c0d..4d5b470f8b3e 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -10,7 +10,7 @@ struct RecordMixingDaycareMail bool16 cantHoldItem[DAYCARE_MON_COUNT]; }; -u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest); +u8 *GetMonNicknameVanilla(struct Pokemon *mon, u8 *dest); u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest); u8 CountPokemonInDaycare(struct DayCare *daycare); void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *mixMail); diff --git a/include/decompress.h b/include/decompress.h index 9c99d09044ba..178ab9a6ebc3 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -8,7 +8,10 @@ extern u8 ALIGNED(4) gDecompressionBuffer[0x4000]; void LZDecompressWram(const u32 *src, void *dest); void LZDecompressVram(const u32 *src, void *dest); +u32 IsLZ77Data(const void *ptr, u32 minSize, u32 maxSize); + u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src); +u16 LoadCompressedSpriteSheetByTemplate(const struct SpriteTemplate *template, s32 offset); void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer); bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src); diff --git a/include/event_data.h b/include/event_data.h index 51875ec5a4a2..04287b7ed665 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -22,7 +22,7 @@ u16 *GetVarPointer(u16 id); u16 VarGet(u16 id); u16 VarGetIfExist(u16 id); bool8 VarSet(u16 id, u16 value); -u8 VarGetObjectEventGraphicsId(u8 id); +u16 VarGetObjectEventGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); u8 FlagToggle(u16 id); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index d2ae9bc0c59a..2906789b3754 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -3,6 +3,10 @@ #include "constants/event_object_movement.h" +#if OW_POKEMON_OBJECT_EVENTS == FALSE && OW_FOLLOWERS_ENABLED == TRUE +#error "OW_POKEMON_OBJECT_EVENTS needs to be TRUE in order for OW_FOLLOWERS_ENABLED to work." +#endif + // Palette slots for overworld NPCs. // The same standard set of palettes for overworld objects are normally always loaded at the same // time while walking around the overworld. The only exceptions are the palettes for the player and @@ -48,6 +52,14 @@ enum ReflectionTypes NUM_REFLECTION_TYPES }; +enum FollowerTransformTypes +{ + TRANSFORM_TYPE_NONE, + TRANSFORM_TYPE_PERMANENT, + TRANSFORM_TYPE_RANDOM_WILD, + TRANSFORM_TYPE_WEATHER, +}; + #define FIGURE_8_LENGTH 72 #define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0) @@ -97,6 +109,10 @@ struct LockedAnimObjectEvents extern const struct OamData gObjectEventBaseOam_32x8; extern const struct OamData gObjectEventBaseOam_32x32; +extern const struct OamData gObjectEventBaseOam_64x64; +extern const struct SubspriteTable sOamTables_32x32[]; +extern const struct SubspriteTable sOamTables_64x64[]; +extern const union AnimCmd *const sAnimTable_Following[]; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const u8 gReflectionEffectPaletteMap[]; @@ -111,7 +127,6 @@ u8 GetObjectEventIdByXY(s16 x, s16 y); void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction); u8 GetFirstInactiveObjectEventId(void); void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); -void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot); void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot); void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void PatchObjectPalette(u16 paletteTag, u8 paletteSlot); @@ -120,21 +135,29 @@ void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY); u8 GetFaceDirectionAnimNum(u8 direction); void SetSpritePosToOffsetMapCoords(s16 *x, s16 *y, s16 dx, s16 dy); +void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); +struct Pokemon *GetFirstLiveMon(void); +void UpdateFollowingPokemon(void); +void RemoveFollowingPokemon(void); +struct ObjectEvent *GetFollowerObject(void); void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); -u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); void CameraObjectReset(void); -void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); +u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *, struct Sprite *); +void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8 direction); void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction); -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId); +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId); void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible); void FreeAndReserveObjectSpritePalettes(void); +u8 LoadObjectEventPalette(u16 paletteTag); +u8 LoadPlayerObjectEventPalette(u8 gender); void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup); void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority); @@ -196,7 +219,7 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y); u8 GetWalkSlowMovementAction(u32); u8 GetJumpMovementAction(u32); u8 ElevationToPriority(u8 elevation); -void ObjectEventUpdateElevation(struct ObjectEvent *objEvent); +void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *); void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *, u8 subpriority); void UnfreezeObjectEvent(struct ObjectEvent *); u8 FindLockedObjectEventIndex(struct ObjectEvent *); @@ -276,9 +299,11 @@ void MovementType_JogInPlace(struct Sprite *); void MovementType_RunInPlace(struct Sprite *); void MovementType_Invisible(struct Sprite *); void MovementType_WalkSlowlyInPlace(struct Sprite *); +void MovementType_FollowPlayer(struct Sprite *); u8 GetSlideMovementAction(u32); u8 GetJumpMovementAction(u32); u8 GetJump2MovementAction(u32); +u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority); u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority); u8 MovementType_WanderAround_Step0(struct ObjectEvent *, struct Sprite *); @@ -425,6 +450,21 @@ bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *, struct Sprite *, u bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); + +u8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Active(struct ObjectEvent *, struct Sprite *); +u8 MovementType_FollowPlayer_Moving(struct ObjectEvent *, struct Sprite *); +void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum); + +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_FaceDirection(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Step(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_JumpInPlace(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); +bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)); u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Buried_Step0(struct ObjectEvent *, struct Sprite *); @@ -437,9 +477,9 @@ u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *); -u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction); +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction); void TurnVirtualObject(u8 virtualObjId, u8 direction); -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId); +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId); void SetVirtualObjectInvisibility(u8 virtualObjId, bool32 invisible); bool32 IsVirtualObjectInvisible(u8 virtualObjId); void SetVirtualObjectSpriteAnim(u8 virtualObjId, u8 animNum); diff --git a/include/event_scripts.h b/include/event_scripts.h index 8df303ca335c..fa0bfe5c6ecd 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -1,6 +1,33 @@ #ifndef GUARD_EVENT_SCRIPTS_H #define GUARD_EVENT_SCRIPTS_H +extern const u8 EventScript_Follower[]; +extern const u8 EventScript_FollowerEnd[]; +extern const u8 EventScript_FollowerGeneric[]; +extern const u8 EventScript_FollowerLovesYou[]; + +extern const u8 EventScript_FollowerIsShivering[]; +extern const u8 EventScript_FollowerNostalgia[]; +extern const u8 EventScript_FollowerHopping[]; +extern const u8 EventScript_FollowerJumpOnPlayer[]; +extern const u8 EventScript_FollowerCuddling[]; +extern const u8 EventScript_FollowerShiverCuddling[]; +extern const u8 EventScript_FollowerGetCloser[]; +extern const u8 EventScript_FollowerPokingPlayer[]; +extern const u8 EventScript_FollowerLookAround[]; +extern const u8 EventScript_FollowerLookAway[]; +extern const u8 EventScript_FollowerLookAwayBark[]; +extern const u8 EventScript_FollowerLookAwayPoke[]; +extern const u8 EventScript_FollowerPokeGround[]; +extern const u8 EventScript_FollowerStartled[]; +extern const u8 EventScript_FollowerFastHopping[]; +extern const u8 EventScript_FollowerDizzy[]; +extern const u8 EventScript_FollowerLookAroundScared[]; +extern const u8 EventScript_FollowerDance[]; +extern const u8 EventScript_FollowerFaceUp[]; +extern const u8 EventScript_FollowerFaceResult[]; +extern const u8 EnterPokeballMovement[]; + extern const u8 EventScript_TestSignpostMsg[]; extern const u8 EventScript_TryGetTrainerScript[]; extern const u8 EventScript_StartTrainerApproach[]; @@ -617,4 +644,7 @@ extern const u8 VSSeeker_Text_NoTrainersWithinRange[]; extern const u8 VSSeeker_Text_TrainersNotReady[]; extern const u8 EventScript_VsSeekerChargingDone[]; +extern const u8 Common_Movement_FollowerSafeStart[]; +extern const u8 Common_Movement_FollowerSafeEnd[]; + #endif // GUARD_EVENT_SCRIPTS_H diff --git a/include/fake_rtc.h b/include/fake_rtc.h new file mode 100644 index 000000000000..d74849614e9f --- /dev/null +++ b/include/fake_rtc.h @@ -0,0 +1,13 @@ +#ifndef GUARD_FAKE_RTC_UTIL_H +#define GUARD_FAKE_RTC_UTIL_H + +#include "siirtc.h" + +struct Time* FakeRtc_GetCurrentTime(void); +void FakeRtc_GetRawInfo(struct SiiRtcInfo *rtc); +void FakeRtc_AdvanceTimeBy(u32 hours, u32 minutes, u32 seconds); +void FakeRtc_ManuallySetTime(u32 hour, u32 minute, u32 second); +void FakeRtc_TickTimeForward(void); +u32 FakeRtc_GetSecondsRatio(void); + +#endif // GUARD_FAKE_RTC_UTIL_H diff --git a/include/field_effect.h b/include/field_effect.h index 4cde29e8a3a7..93a74f1ba274 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -13,6 +13,7 @@ u32 FieldEffectStart(u8); bool8 FieldEffectActiveListContains(u8 id); void FieldEffectActiveListClear(void); void ReturnToFieldFromFlyMapSelect(void); +void FieldCallback_UseFly(void); u8 AddNewGameBirchObject(s16, s16, u8); void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); @@ -24,6 +25,7 @@ void FieldEffectScript_LoadTiles(u8 **script); void FieldEffectScript_LoadFadedPalette(u8 **script); void FieldEffectScript_LoadPalette(u8 **script); void FieldEffectScript_CallNative(u8 **script, u32 *val); +void FieldEffectFreeGraphicsResources(struct Sprite *sprite); void FieldEffectFreeTilesIfUnused(u16 tileStart); void FieldEffectFreePaletteIfUnused(u8 paletteNum); bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val); diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 2ae5d79f7566..22dcb119a437 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -21,6 +21,7 @@ bool8 UpdateRevealDisguise(struct ObjectEvent *); void StartRevealDisguise(struct ObjectEvent *); void StartAshFieldEffect(s16, s16, u16, s16); void SetUpReflection(struct ObjectEvent *, struct Sprite *, u8); +void SetUpShadow(struct ObjectEvent *, struct Sprite *); u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent *); u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); void UpdateRayquazaSpotlightEffect(struct Sprite *); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 39fc886af8a4..caf28afb876a 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -3,8 +3,8 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys); void ClearPlayerAvatarInfo(void); -void SetPlayerAvatarExtraStateTransition(u8, u8); -u8 GetPlayerAvatarGenderByGraphicsId(u8); +void SetPlayerAvatarExtraStateTransition(u16, u8); +u8 GetPlayerAvatarGenderByGraphicsId(u16); bool8 TestPlayerAvatarFlags(u8); u8 GetPlayerAvatarSpriteId(void); void PlayerGetDestCoords(s16 *, s16 *); @@ -38,11 +38,11 @@ void PlayerFreeze(void); void StopPlayerAvatar(void); void SetSpinStartFacingDir(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender); +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender); void SetPlayerAvatarFieldMove(void); -u8 GetPlayerAvatarGraphicsIdByCurrentState(void); +u16 GetPlayerAvatarGraphicsIdByCurrentState(void); void SetPlayerAvatarStateMask(u8 flags); -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state); +u16 GetPlayerAvatarGraphicsIdByStateId(u8 state); u8 GetJumpSpecialMovementAction(u32); bool8 PartyHasMonWithSurf(void); bool8 IsPlayerFacingSurfableFishableWater(void); @@ -50,8 +50,8 @@ bool8 IsPlayerSurfingNorth(void); void SetPlayerAvatarWatering(u8 direction); u8 GetPlayerAvatarFlags(void); void UpdatePlayerAvatarTransitionState(void); -u8 GetFRLGAvatarGraphicsIdByGender(u8); -u8 GetRSAvatarGraphicsIdByGender(u8); +u16 GetFRLGAvatarGraphicsIdByGender(u8); +u16 GetRSAvatarGraphicsIdByGender(u8); void PlayerWheelieInPlace(u8 direction); void PlayerWheelieMove(u8 direction); void PlayerPopWheelieWhileMoving(u8 direction); diff --git a/include/field_weather.h b/include/field_weather.h index b354d500e306..9805dc491d35 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -170,6 +170,7 @@ void SetWeatherScreenFadeOut(void); void SetWeatherPalStateIdle(void); void PreservePaletteInWeather(u8 preservedPalIndex); void ResetPreservedPalettesInWeather(void); +bool32 IsWeatherAlphaBlend(void); // field_weather_effect.c void Clouds_InitVars(void); diff --git a/include/fldeff.h b/include/fldeff.h index bed235a1be8e..f676720edef7 100644 --- a/include/fldeff.h +++ b/include/fldeff.h @@ -46,7 +46,7 @@ bool8 SetUpFieldMove_Dig(void); bool8 FldEff_UseDig(void); // rock smash -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId); +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId); u8 CreateFieldMoveTask(void); bool8 SetUpFieldMove_RockSmash(void); bool8 FldEff_UseRockSmash(void); diff --git a/include/follower_helper.h b/include/follower_helper.h new file mode 100644 index 000000000000..27bf1f700ef4 --- /dev/null +++ b/include/follower_helper.h @@ -0,0 +1,120 @@ +#ifndef GUARD_FOLLOWER_HELPER_H +#define GUARD_FOLLOWER_HELPER_H + +enum { + FOLLOWER_EMOTION_HAPPY = 0, + FOLLOWER_EMOTION_NEUTRAL, // Also called "No emotion" + FOLLOWER_EMOTION_SAD, + FOLLOWER_EMOTION_UPSET, + FOLLOWER_EMOTION_ANGRY, + FOLLOWER_EMOTION_PENSIVE, + FOLLOWER_EMOTION_LOVE, + FOLLOWER_EMOTION_SURPRISE, + FOLLOWER_EMOTION_CURIOUS, + FOLLOWER_EMOTION_MUSIC, + FOLLOWER_EMOTION_POISONED, + FOLLOWER_EMOTION_LENGTH, +}; + +// Can be either 3 bytes, a u16 and a byte, or a 24-bit value +union __attribute__((packed)) MsgConditionData +{ + u8 bytes[3]; + struct __attribute__((packed)) + { + u16 hw; + u8 b; + } split; + u32 raw:24; +}; // size = 0x3 + +struct __attribute__((packed)) MsgCondition +{ + u32 type:8; + union MsgConditionData data; +}; // size = 0x4 + +struct FollowerMsgInfoExtended +{ + const u8 *text; + const u8 *script; + + u32 emotion:4; + u32 weight:3; + // if set, `text` is treated as an array of up to 4 texts instead + // which one is displayed is chosen at random + u32 textSpread:1; + u32 orFlag:1; // if set, *any* condition can match, rather than all + + struct MsgCondition conditions[5]; +}; // size = 8 + 4 + 5*4 = 32, 0x20 + +// Follower message conditions +#define MSG_COND_NONE 0 +#define MSG_COND_SPECIES 1 +#define MSG_COND_TYPE 2 +#define MSG_COND_STATUS 3 +#define MSG_COND_MAPSEC 4 +#define MSG_COND_MAP 5 +#define MSG_COND_ON_MB 6 +#define MSG_COND_WEATHER 7 +#define MSG_COND_MUSIC 8 +#define MSG_COND_TIME_OF_DAY 9 +#define MSG_COND_NEAR_MB 10 + +#define MATCH_U24(type, value) {type, {.raw = value}} +#define MATCH_U16(type, value1, value2) {type, {.split = {.hw = value1, .b = value2}}} +#define MATCH_U8(type, v1, v2, v3) {type, {.bytes = {v1, v2, v3}}} + +#define MATCH_SPECIES(species) MATCH_U24(MSG_COND_SPECIES, species) +#define MATCH_TYPES(type1, type2) MATCH_U8(MSG_COND_TYPE, type1, type2, 0) +// Checks that follower has *neither* of the two types +#define MATCH_NOT_TYPES(type1, type2) MATCH_U8(MSG_COND_TYPE, type1, type2, TYPE_NONE | 1) +#define MATCH_STATUS(status) MATCH_U24(MSG_COND_STATUS, status) +#define MATCH_MAPSEC(mapsec) MATCH_U24(MSG_COND_MAPSEC, mapsec) +#define MATCH_MAP_RAW(mapGroup, mapNum) MATCH_U8(MSG_COND_MAP, mapGroup, mapNum, 0) +#define MATCH_MAP(map) MATCH_U8(MSG_COND_MAP, MAP_GROUP(map), MAP_NUM(map), 0) +// Matches one of two metatile behaviors follower is standing on +#define MATCH_ON_MB(mb1, mb2) MATCH_U8(MSG_COND_ON_MB, mb1, mb2, 0) +#define MATCH_WEATHER(weather1, weather2) MATCH_U8(MSG_COND_WEATHER, weather1, weather2, 0) +#define MATCH_MUSIC(song) MATCH_U24(MSG_COND_MUSIC, song) +#define MATCH_TIME_OF_DAY(time) MATCH_U24(MSG_COND_TIME_OF_DAY, time) +// Matches metatile behavior within a '+' shape of size `distance` +#define MATCH_NEAR_MB(mb, distance) MATCH_U8(MSG_COND_NEAR_MB, mb, distance, 0) + +enum { + COND_MSG_CELEBI, + COND_MSG_FIRE, + COND_MSG_EVER_GRANDE, + COND_MSG_ROUTE_112, + COND_MSG_DAY_CARE, + COND_MSG_MART, + COND_MSG_VICTORY_ROAD, + COND_MSG_BIKE_SHOP, + COND_MSG_MACHINES, + COND_MSG_SAILING, + COND_MSG_PUDDLE, + COND_MSG_SAND, + COND_MSG_GRASS, + COND_MSG_FOOTPRINTS, + COND_MSG_ELEVATOR, + COND_MSG_ICE_ROOM, + COND_MSG_ROUTE_117, + COND_MSG_DRAGON_GROWL, + COND_MSG_FEAR, + COND_MSG_FIRE_RAIN, + COND_MSG_FROZEN, + COND_MSG_SEASIDE, + COND_MSG_WATERFALL, + COND_MSG_RAIN, + COND_MSG_REFLECTION, + COND_MSG_LEAVES, + COND_MSG_ICE, + COND_MSG_BURN, + COND_MSG_COUNT, +}; + +extern const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT]; +extern const struct FollowerMessagePool gFollowerBasicMessages[FOLLOWER_EMOTION_LENGTH]; + +#endif //GUARD_FOLLOWER_HELPER_H diff --git a/include/fonts.h b/include/fonts.h index c21c75942df5..a6be35db9820 100644 --- a/include/fonts.h +++ b/include/fonts.h @@ -15,5 +15,11 @@ extern const u16 gFontNarrowLatinGlyphs[]; extern const u8 gFontNarrowLatinGlyphWidths[]; extern const u16 gFontSmallNarrowLatinGlyphs[]; extern const u8 gFontSmallNarrowLatinGlyphWidths[]; +extern const u8 gFontNarrowerLatinGlyphWidths[]; +extern const u16 gFontNarrowerLatinGlyphs[]; +extern const u8 gFontSmallNarrowerLatinGlyphWidths[]; +extern const u16 gFontSmallNarrowerLatinGlyphs[]; +extern const u8 gFontShortNarrowLatinGlyphWidths[]; +extern const u16 gFontShortNarrowLatinGlyphs[]; #endif // GUARD_FONTS_H diff --git a/include/frontier_util.h b/include/frontier_util.h index f445949ef90c..637b7f91bb8e 100644 --- a/include/frontier_util.h +++ b/include/frontier_util.h @@ -25,6 +25,4 @@ u8 GetFrontierBrainMonNature(u8 monId); u8 GetFrontierBrainMonEvs(u8 monId, u8 evStatId); s32 GetFronterBrainSymbol(void); -extern const u16 gFrontierBannedSpecies[]; - #endif // GUARD_FRONTIER_UTIL_H diff --git a/include/gba/macro.h b/include/gba/macro.h index 5239cd4c8730..68dcd10d524e 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -40,6 +40,24 @@ #define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16) #define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32) +#define CpuSmartCopy16(src, dest, size) \ +{ \ + if ((((size) & 0x1f) == 0) && ((((u32)(src)) & 3) == 0) && ((((u32)(dest)) & 3) == 0)) { \ + CpuFastCopy((src), (dest), (size)); \ + } else { \ + CpuCopy16((src), (dest), (size)); \ + } \ +} + +#define CpuSmartCopy32(src, dest, size) \ +{ \ + if ((((size) & 0x1f) == 0) && ((((u32)(src)) & 3) == 0) && ((((u32)(dest)) & 3) == 0)) { \ + CpuFastCopy((src), (dest), (size)); \ + } else { \ + CpuCopy32((src), (dest), (size)); \ + } \ +} + #define CpuFastFill(value, dest, size) \ { \ vu32 tmp = (vu32)(value); \ @@ -52,6 +70,24 @@ #define CpuFastFill8(value, dest, size) CpuFastFill(((value) << 24) | ((value) << 16) | ((value) << 8) | (value), (dest), (size)) +#define CpuSmartFill(value, dest, size) \ +{ \ + if ((((size) & 0x1f) == 0) && ((((u32)(dest)) & 3) == 0)) { \ + CpuFastFill((value), (dest), (size)); \ + } else { \ + CpuFill32((value), (dest), (size)); \ + } \ +} + +#define CpuSmartFill16(value, dest, size) \ +{ \ + if ((((size) & 0x1f) == 0) && ((((u32)(dest)) & 3) == 0)) { \ + CpuFastFill16((value), (dest), (size)); \ + } else { \ + CpuFill16((value), (dest), (size)); \ + } \ +} + #define CpuFastCopy(src, dest, size) CpuFastSet(src, dest, ((size)/(32/8) & 0x1FFFFF)) #define DmaSetUnchecked(dmaNum, src, dest, control) \ diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index b5bf29ca88c8..c606eef8d304 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -63,25 +63,24 @@ struct BackupMapLayout u16 *map; }; -struct ObjectEventTemplate +struct __attribute__((packed, aligned(4))) ObjectEventTemplate { /*0x00*/ u8 localId; - /*0x01*/ u8 graphicsId; - /*0x02*/ u8 kind; // Always OBJ_KIND_NORMAL in Emerald. - /*0x03*/ //u8 padding1; + /*0x01*/ u16 graphicsId; + /*0x03*/ u8 kind; // Always OBJ_KIND_NORMAL in Emerald. /*0x04*/ s16 x; /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; /*0x0A*/ u16 movementRangeX:4; u16 movementRangeY:4; - //u16 padding2:8; + u16 unused:8; /*0x0C*/ u16 trainerType; /*0x0E*/ u16 trainerRange_berryTreeId; /*0x10*/ const u8 *script; /*0x14*/ u16 flagId; - /*0x16*/ //u8 padding3[2]; -}; + /*0x16*/ u16 filler; +}; // size = 0x18 struct WarpEvent { @@ -195,9 +194,9 @@ struct ObjectEvent u32 disableJumpLandingGroundEffect:1; u32 fixedPriority:1; u32 hideReflection:1; - //u32 padding:4; - /*0x04*/ u8 spriteId; - /*0x05*/ u8 graphicsId; + u32 shiny:1; // OW mon shininess + u32 padding:3; + /*0x04*/ u16 graphicsId; // 11 bits for species; high 5 bits for form /*0x06*/ u8 movementType; /*0x07*/ u8 trainerType; /*0x08*/ u8 localId; @@ -221,7 +220,7 @@ struct ObjectEvent /*0x20*/ u8 previousMovementDirection; /*0x21*/ u8 directionSequenceIndex; /*0x22*/ u8 playerCopyableMovement; // COPY_MOVE_* - /*0x23*/ //u8 padding2; + /*0x23*/ u8 spriteId; /*size = 0x24*/ }; @@ -236,7 +235,7 @@ struct ObjectEventGraphicsInfo /*0x0C*/ u8 paletteSlot:4; u8 shadowSize:2; u8 inanimate:1; - u8 disableReflectionPaletteLoad:1; + u8 compressed:1; /*0x0D*/ u8 tracks; /*0x10*/ const struct OamData *oam; /*0x14*/ const struct SubspriteTable *subspriteTables; @@ -266,6 +265,11 @@ enum { #define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6) #define PLAYER_AVATAR_FLAG_DASH (1 << 7) +#define PLAYER_AVATAR_FLAG_BIKE (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE) +// Player avatar flags for which follower Pokémon are hidden +#define FOLLOWER_INVISIBLE_FLAGS (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_UNDERWATER | \ + PLAYER_AVATAR_FLAG_BIKE | PLAYER_AVATAR_FLAG_FORCED_MOVE) + enum { ACRO_BIKE_NORMAL, diff --git a/include/global.h b/include/global.h index 027edc746bf6..f5ada78360d8 100644 --- a/include/global.h +++ b/include/global.h @@ -3,7 +3,7 @@ #include #include -#include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. +#include "config/general.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" #include "fpmath.h" #include "metaprogram.h" @@ -39,6 +39,7 @@ #define INCBIN_S8 INCBIN #define INCBIN_S16 INCBIN #define INCBIN_S32 INCBIN +#define INCBIN_COMP INCBIN #endif // IDE support #define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0])) @@ -69,6 +70,8 @@ #define SAFE_DIV(a, b) ((a) / (b)) #endif +#define IS_POW_OF_TWO(n) (((n) & ((n)-1)) == 0) + // The below macro does a%n, but (to match) will switch to a&(n-1) if n is a power of 2. // There are cases where GF does a&(n-1) where we would really like to have a%n, because // if n is changed to a value that isn't a power of 2 then a&(n-1) is unlikely to work as @@ -164,12 +167,6 @@ struct UCoords32 u32 y; }; -struct SaveBlock3 -{ -}; - -extern struct SaveBlock3 *gSaveBlock3Ptr; - struct Time { /*0x00*/ s16 days; @@ -178,6 +175,16 @@ struct Time /*0x04*/ s8 seconds; }; + +struct SaveBlock3 +{ +#if OW_USE_FAKE_RTC + struct Time fakeRTC; +#endif +}; + +extern struct SaveBlock3 *gSaveBlock3Ptr; + struct Pokedex { /*0x00*/ u8 order; @@ -282,7 +289,7 @@ struct BattleTowerPokemon u32 gap:1; u32 abilityNum:1; u32 personality; - u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 nickname[VANILLA_POKEMON_NAME_LENGTH + 1]; u8 friendship; }; @@ -307,7 +314,7 @@ struct BattleTowerInterview u16 playerSpecies; u16 opponentSpecies; u8 opponentName[PLAYER_NAME_LENGTH + 1]; - u8 opponentMonNickname[POKEMON_NAME_LENGTH + 1]; + u8 opponentMonNickname[VANILLA_POKEMON_NAME_LENGTH + 1]; u8 opponentLanguage; }; @@ -742,7 +749,7 @@ struct ContestWinner u32 trainerId; u16 species; u8 contestCategory; - u8 monName[POKEMON_NAME_LENGTH + 1]; + u8 monName[VANILLA_POKEMON_NAME_LENGTH + 1]; u8 trainerName[PLAYER_NAME_LENGTH + 1]; u8 contestRank:7; bool8 isShiny:1; @@ -762,7 +769,7 @@ struct DaycareMail { struct Mail message; u8 otName[PLAYER_NAME_LENGTH + 1]; - u8 monName[POKEMON_NAME_LENGTH + 1]; + u8 monName[VANILLA_POKEMON_NAME_LENGTH + 1]; u8 gameLanguage:4; u8 monLanguage:4; }; @@ -1055,7 +1062,7 @@ struct SaveBlock1 /*0x31A8*/ u8 giftRibbons[GIFT_RIBBONS_COUNT]; /*0x31B3*/ struct ExternalEventData externalEventData; /*0x31C7*/ struct ExternalEventFlags externalEventFlags; - /*0x31DC*/ struct Roamer roamer; + /*0x31DC*/ struct Roamer roamer[ROAMER_COUNT]; #if FREE_ENIGMA_BERRY == FALSE /*0x31F8*/ struct EnigmaBerry enigmaBerry; #endif //FREE_ENIGMA_BERRY diff --git a/include/global.tv.h b/include/global.tv.h index 9c3902e7cca4..6bc6d08f86f3 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -82,7 +82,7 @@ typedef union // size = 0x24 /*0x00*/ u8 kind; /*0x01*/ bool8 active; /*0x02*/ u16 species; - /*0x04*/ u8 pokemonName[POKEMON_NAME_LENGTH + 1]; + /*0x04*/ u8 pokemonName[VANILLA_POKEMON_NAME_LENGTH + 1]; /*0x0F*/ u8 trainerName[PLAYER_NAME_LENGTH + 1]; /*0x17*/ u8 unused[3]; /*0x1A*/ u8 random; @@ -98,7 +98,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u16 species; /*0x04*/ u16 words[2]; - /*0x08*/ u8 pokemonNickname[POKEMON_NAME_LENGTH + 1]; + /*0x08*/ u8 pokemonNickname[VANILLA_POKEMON_NAME_LENGTH + 1]; /*0x13*/ u8 contestCategory:3; u8 contestRank:2; u8 contestResult:2; @@ -196,7 +196,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; /*0x0A*/ u8 contestCategory; - /*0x0B*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0B*/ u8 nickname[VANILLA_POKEMON_NAME_LENGTH + 1]; /*0x16*/ u8 pokeblockState; /*0x17*/ u8 language; /*0x18*/ u8 pokemonNameLanguage; @@ -209,7 +209,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 language; /*0x03*/ u8 language2; - /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x04*/ u8 nickname[VANILLA_POKEMON_NAME_LENGTH + 1]; /*0x0F*/ u8 ball; /*0x10*/ u16 species; /*0x12*/ u8 nBallsUsed; @@ -409,7 +409,7 @@ typedef union // size = 0x24 /*0x01*/ bool8 active; /*0x02*/ u8 nRibbons; /*0x03*/ u8 selectedRibbon; - /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x04*/ u8 nickname[VANILLA_POKEMON_NAME_LENGTH + 1]; /*0x0F*/ u8 language; /*0x10*/ u8 pokemonNameLanguage; /*0x11*/ u8 filler_12[2]; diff --git a/include/graphics.h b/include/graphics.h index db91f253cc43..01de060b790d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -1983,6 +1983,8 @@ extern const u32 gSummaryMoveSelect_Gfx[]; extern const u32 gSummaryMoveSelect_Pal[]; extern const u32 gStatusGfx_Icons[]; extern const u32 gStatusPal_Icons[]; +extern const u16 gCategoryIcons_Pal[]; +extern const u32 gCategoryIcons_Gfx[]; extern const u32 gShopMenu_Gfx[]; extern const u32 gShopMenu_Tilemap[]; @@ -2701,6 +2703,10 @@ extern const u32 gBattleAnimSpriteGfx_Punishment[]; extern const u32 gBattleAnimSpritePal_Punishment[]; extern const u32 gBattleAnimSpriteGfx_QuickGuard[]; extern const u32 gBattleAnimSpritePal_QuickGuard[]; +extern const u32 gBattleAnimSpriteGfx_TeraCrystal[]; +extern const u32 gBattleAnimSpritePal_TeraCrystal[]; +extern const u32 gBattleAnimSpriteGfx_TeraShatter[]; +extern const u32 gBattleAnimSpritePal_TeraShatter[]; // New Battle Anim Particles extern const u32 gBattleAnimSpriteGfx_AlphaStone[]; @@ -2748,6 +2754,8 @@ extern const u32 gBattleAnimSpriteGfx_DragonPulseRing[]; extern const u32 gBattleAnimSpritePal_DragonPulseRing[]; extern const u32 gBattleAnimSpriteGfx_DreepyMissile[]; extern const u32 gBattleAnimSpritePal_DreepyMissile[]; +extern const u32 gBattleAnimSpriteGfx_DreepyMissileShiny[]; +extern const u32 gBattleAnimSpritePal_DreepyMissileShiny[]; extern const u32 gBattleAnimSpriteGfx_Drill[]; extern const u32 gBattleAnimSpritePal_Drill[]; extern const u32 gBattleAnimSpriteGfx_NewEmbers[]; diff --git a/include/item.h b/include/item.h index 53121d112781..dc1efc68a54f 100644 --- a/include/item.h +++ b/include/item.h @@ -23,6 +23,8 @@ struct Item u8 type; u8 battleUsage; u8 flingPower; + const u32 *iconPic; + const u32 *iconPalette; }; struct BagPocket @@ -37,11 +39,12 @@ extern struct BagPocket gBagPockets[]; void ApplyNewEncryptionKeyToBagItems(u32 newKey); void ApplyNewEncryptionKeyToBagItems_(u32 newKey); void SetBagItemsPointers(void); -void CopyItemName(u16 itemId, u8 *dst); -void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity); +u8 *CopyItemName(u16 itemId, u8 *dst); +u8 *CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 HasAtLeastOneBerry(void); +bool8 HasAtLeastOnePokeBall(void); bool8 CheckBagHasSpace(u16 itemId, u16 count); u32 GetFreeSpaceForItemInBag(u16 itemId); bool8 AddBagItem(u16 itemId, u16 count); diff --git a/include/item_icon.h b/include/item_icon.h index c93a519bb472..e64c2ad34a05 100644 --- a/include/item_icon.h +++ b/include/item_icon.h @@ -11,6 +11,7 @@ void FreeItemIconTemporaryBuffers(void); void CopyItemIconPicTo4x4Buffer(const void *src, void *dest); u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId); u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId); -const void *GetItemIconPicOrPalette(u16 itemId, u8 which); +const void *GetItemIconPic(u16 itemId); +const void *GetItemIconPalette(u16 itemId); #endif //GUARD_ITEM_ICON_H diff --git a/include/list_menu.h b/include/list_menu.h index 23caaf4b4c75..413b97822721 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -40,8 +40,9 @@ struct ListMenuTemplate const struct ListMenuItem *items; void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list); void (* itemPrintFunc)(u8 windowId, u32 itemId, u8 y); - u16 totalItems; - u16 maxShowed; + u32 totalItems:12; + u32 maxShowed:12; + u32 textNarrowWidth:8; u8 windowId; u8 header_X; u8 item_X; diff --git a/include/menu.h b/include/menu.h index 0b0a42423d74..fac4ef1b65a5 100644 --- a/include/menu.h +++ b/include/menu.h @@ -41,6 +41,7 @@ struct MenuAction }; extern const u16 gStandardMenuPalette[]; +extern EWRAM_DATA u8 gPopupTaskId; void FreeAllOverworldWindowBuffers(void); void InitStandardTextBoxWindows(void); @@ -124,5 +125,9 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP void EraseYesNoWindow(void); void PrintMenuActionTextsAtPos(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs); void Menu_LoadStdPal(void); +u8 AddSecondaryPopUpWindow(void); +u8 GetSecondaryPopUpWindowId(void); +void RemoveSecondaryPopUpWindow(void); +void HBlankCB_DoublePopupWindow(void); #endif // GUARD_MENU_H diff --git a/include/metaprogram.h b/include/metaprogram.h index 4bcc306b6f72..67736cfbc0a2 100644 --- a/include/metaprogram.h +++ b/include/metaprogram.h @@ -26,6 +26,9 @@ #define STR(...) STR_(__VA_ARGS__) #define STR_(...) #__VA_ARGS__ +/* You'll never guess what this one does */ +#define APPEND_SEMICOLON(a) a; + /* Converts a string to a compound literal, essentially making it a pointer to const u8 */ #define COMPOUND_STRING(str) (const u8[]) _(str) diff --git a/include/money.h b/include/money.h index 211f9caa2ec6..5cffb9424268 100644 --- a/include/money.h +++ b/include/money.h @@ -1,7 +1,17 @@ #ifndef GUARD_MONEY_H #define GUARD_MONEY_H -#define MAX_MONEY 999999 +#define MAX_MONEY 999999 // Can be increased to INT_MAX + +#define MAX_MONEY_DIGITS ((MAX_MONEY > 999999999) ? 10 : \ + (MAX_MONEY > 99999999) ? 9 : \ + (MAX_MONEY > 9999999) ? 8 : \ + (MAX_MONEY > 999999) ? 7 : \ + (MAX_MONEY > 99999) ? 6 : \ + (MAX_MONEY > 9999) ? 5 : \ + (MAX_MONEY > 999) ? 4 : \ + (MAX_MONEY > 99) ? 3 : \ + (MAX_MONEY > 9) ? 2 : 1) u32 GetMoney(u32 *moneyPtr); void SetMoney(u32 *moneyPtr, u32 newValue); @@ -18,5 +28,6 @@ void DrawMoneyBox(int amount, u8 x, u8 y); void HideMoneyBox(void); void AddMoneyLabelObject(u16 x, u16 y); void RemoveMoneyLabelObject(void); +u32 CalculateMoneyTextHorizontalPosition(u32 amount); #endif // GUARD_MONEY_H diff --git a/include/party_menu.h b/include/party_menu.h index 9027dd65e938..a34f06cec6bb 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -43,6 +43,7 @@ u8 GetAilmentFromStatus(u32 status); u8 GetMonAilment(struct Pokemon *mon); void DisplayPartyMenuStdMessage(u32 stringId); bool8 FieldCallback_PrepareFadeInFromMenu(void); +bool8 FieldCallback_PrepareFadeInForTeleport(void); void CB2_ReturnToPartyMenuFromFlyMap(void); void LoadHeldItemIcons(void); void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); diff --git a/include/pokeball.h b/include/pokeball.h index 498fa4dd1c70..01d995a458e3 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -47,6 +47,7 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; #define POKEBALL_PLAYER_SENDOUT 0xFF #define POKEBALL_OPPONENT_SENDOUT 0xFE +#define POKEBALL_PLAYER_SLIDEIN 0xFD u8 DoPokeballSendOutAnimation(u32 battler, s16 pan, u8 kindOfThrow); void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, u16 species); diff --git a/include/pokemon.h b/include/pokemon.h index a4a7ad47a006..b299ab7d61e5 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -26,8 +26,10 @@ enum { MON_DATA_IS_SHINY, MON_DATA_HIDDEN_NATURE, MON_DATA_HP_LOST, + MON_DATA_DAYS_SINCE_FORM_CHANGE, MON_DATA_ENCRYPT_SEPARATOR, MON_DATA_NICKNAME, + MON_DATA_NICKNAME10, MON_DATA_SPECIES, MON_DATA_HELD_ITEM, MON_DATA_MOVE1, @@ -137,8 +139,7 @@ struct PokemonSubstruct1 u16 move1:11; // 2047 moves. u16 evolutionTracker1:5; u16 move2:11; // 2047 moves. - u16 evolutionTracker2:4; - u16 unused_02:1; + u16 evolutionTracker2:5; u16 move3:11; // 2047 moves. u16 unused_04:5; u16 move4:11; // 2047 moves. @@ -246,7 +247,8 @@ struct BoxPokemon u8 hasSpecies:1; u8 isEgg:1; u8 blockBoxRS:1; // Unused, but Pokémon Box Ruby & Sapphire will refuse to deposit a Pokémon with this flag set. - u8 unused_13:4; + u8 daysSinceFormChange:3; // 7 days. + u8 unused_13:1; u8 otName[PLAYER_NAME_LENGTH]; u8 markings:4; u8 compressedStatus:4; @@ -349,7 +351,7 @@ struct Evolution u16 targetSpecies; }; -struct SpeciesInfo /*0x8C*/ +struct SpeciesInfo /*0xC4*/ { /* 0x00 */ u8 baseHP; /* 0x01 */ u8 baseAttack; @@ -359,7 +361,7 @@ struct SpeciesInfo /*0x8C*/ /* 0x05 */ u8 baseSpDefense; /* 0x06 */ u8 types[2]; /* 0x08 */ u8 catchRate; - /* 0x09 */ u8 padding1; + /* 0x09 */ u8 forceTeraType; /* 0x0A */ u16 expYield; // expYield was changed from u8 to u16 for the new Exp System. /* 0x0C */ u16 evYield_HP:2; u16 evYield_Attack:2; @@ -377,6 +379,7 @@ struct SpeciesInfo /*0x8C*/ /* 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; + // Pokédex data /* 0x1F */ u8 categoryName[13]; /* 0x1F */ u8 speciesName[POKEMON_NAME_LENGTH + 1]; @@ -424,12 +427,13 @@ struct SpeciesInfo /*0x8C*/ /* 0x7A */ u32 isLegendary:1; u32 isMythical:1; u32 isUltraBeast:1; + u32 isParadox:1; u32 isTotem:1; - u32 isParadoxForm:1; u32 isMegaEvolution:1; u32 isPrimalReversion:1; u32 isUltraBurst:1; u32 isGigantamax:1; + u32 isTeraForm:1; u32 isAlolanForm:1; u32 isGalarianForm:1; u32 isHisuianForm:1; @@ -437,14 +441,23 @@ struct SpeciesInfo /*0x8C*/ u32 cannotBeTraded:1; u32 allPerfectIVs:1; u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set. - u32 tmIlliterate:1; // This species will be unable to learn the universal moves. - u32 padding4:15; + u32 tmIlliterate:1; // This species will be unable to learn the universal moves. + u32 isFrontierBanned:1; // This species is not allowed to participate in Battle Frontier facilities. + u32 padding4:14; // 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; + /* 0x88 */ const u16 *eggMoveLearnset; + /* 0x8C */ const struct Evolution *evolutions; + /* 0x90 */ const u16 *formSpeciesIdTable; + /* 0x94 */ const struct FormChange *formChangeTable; +#if OW_POKEMON_OBJECT_EVENTS + /* 0x98 */ struct ObjectEventGraphicsInfo overworldData; +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + /* 0xBC */ const void* overworldPalette; + /* 0xC0 */ const void* overworldShinyPalette; +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS }; struct MoveInfo @@ -526,6 +539,7 @@ struct MoveInfo u8 contestCategory:3; u8 contestComboStarterId; u8 contestComboMoves[MAX_COMBO_MOVES]; + const u8 *battleAnimScript; }; #define EFFECTS_ARR(...) (const struct AdditionalEffect[]) {__VA_ARGS__} @@ -557,6 +571,66 @@ struct Ability u8 failsOnImposter:1; // doesn't work on an Imposter mon; when can we actually use this? }; +enum { + AFFINE_NONE, + AFFINE_TURN_UP, + AFFINE_TURN_UP_AND_DOWN, + AFFINE_TURN_DOWN, + AFFINE_TURN_DOWN_SLOW, + AFFINE_TURN_DOWN_SLIGHT, + AFFINE_TURN_UP_HIGH, + AFFINE_UNUSED_1, + AFFINE_UNUSED_2, + AFFINE_UNUSED_3, + NUM_MON_AFFINES, +}; + +// The animation the Pokémon does during the feeding scene depends on their nature. +// The below values are offsets into sMonPokeblockAnims of the animation data for that nature. +#define ANIM_HARDY 0 +#define ANIM_LONELY (ANIM_HARDY + 3) +#define ANIM_BRAVE (ANIM_LONELY + 1) +#define ANIM_ADAMANT (ANIM_BRAVE + 1) +#define ANIM_NAUGHTY (ANIM_ADAMANT + 5) +#define ANIM_BOLD (ANIM_NAUGHTY + 3) +#define ANIM_DOCILE (ANIM_BOLD + 2) +#define ANIM_RELAXED (ANIM_DOCILE + 1) +#define ANIM_IMPISH (ANIM_RELAXED + 2) +#define ANIM_LAX (ANIM_IMPISH + 1) +#define ANIM_TIMID (ANIM_LAX + 1) +#define ANIM_HASTY (ANIM_TIMID + 5) +#define ANIM_SERIOUS (ANIM_HASTY + 2) +#define ANIM_JOLLY (ANIM_SERIOUS + 1) +#define ANIM_NAIVE (ANIM_JOLLY + 1) +#define ANIM_MODEST (ANIM_NAIVE + 4) +#define ANIM_MILD (ANIM_MODEST + 3) +#define ANIM_QUIET (ANIM_MILD + 1) +#define ANIM_BASHFUL (ANIM_QUIET + 2) +#define ANIM_RASH (ANIM_BASHFUL + 3) +#define ANIM_CALM (ANIM_RASH + 3) +#define ANIM_GENTLE (ANIM_CALM + 1) +#define ANIM_SASSY (ANIM_GENTLE + 1) +#define ANIM_CAREFUL (ANIM_SASSY + 1) +#define ANIM_QUIRKY (ANIM_CAREFUL + 5) + +// In palace double battles, Pokémon have a target preference depending on nature +#define PALACE_TARGET_STRONGER 0 +#define PALACE_TARGET_WEAKER 1 +#define PALACE_TARGET_RANDOM 2 + +struct NatureInfo +{ + const u8 *name; + u8 statUp; + u8 statDown; + u8 backAnim; + u8 pokeBlockAnim[2]; + u8 battlePalacePercents[4]; + u8 battlePalaceFlavorText; + u8 battlePalaceSmokescreen; + const u8 *natureGirlMessage; +}; + #define SPINDA_SPOT_WIDTH 16 #define SPINDA_SPOT_HEIGHT 16 @@ -610,6 +684,7 @@ extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern u8 gEnemyPartyCount; extern struct Pokemon gEnemyParty[PARTY_SIZE]; extern struct SpriteTemplate gMultiuseSpriteTemplate; +extern u16 gFollowerSteps; extern const struct MoveInfo gMovesInfo[]; extern const u8 gFacilityClassToPicIndex[]; @@ -622,9 +697,9 @@ extern const u8 gPPUpAddValues[]; 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 u32 sExpCandyExperienceTable[]; extern const struct Ability gAbilitiesInfo[]; +extern const struct NatureInfo gNaturesInfo[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -658,8 +733,6 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot); void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot); void GiveMonInitialMoveset(struct Pokemon *mon); void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon); -void GiveMonInitialMoveset_Fast(struct Pokemon *mon); -void GiveBoxMonInitialMoveset_Fast(struct BoxPokemon *boxMon); u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove); void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move); void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); @@ -709,6 +782,7 @@ u16 GetSpeciesHeight(u16 species); u16 GetSpeciesWeight(u16 species); const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species); const u16 *GetSpeciesTeachableLearnset(u16 species); +const u16 *GetSpeciesEggMoves(u16 species); const struct Evolution *GetSpeciesEvolutions(u16 species); const u16 *GetSpeciesFormTable(u16 species); const struct FormChange *GetSpeciesFormChanges(u16 species); @@ -759,6 +833,7 @@ void PlayMapChosenOrBattleBGM(u16 songId); void CreateTask_PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality); +const u32 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale); bool8 IsMoveHM(u16 move); bool8 IsMonSpriteNotFlipped(u16 species); s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor); @@ -804,5 +879,8 @@ u16 GetSpeciesPreEvolution(u16 species); void HealPokemon(struct Pokemon *mon); void HealBoxPokemon(struct BoxPokemon *boxMon); const u8 *GetMoveName(u16 moveId); +const u8 *GetMoveAnimationScript(u16 moveId); +void UpdateDaysPassedSinceFormChange(u16 days); +void TrySetDayLimitToFormChange(struct Pokemon *mon); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_debug.h b/include/pokemon_sprite_visualizer.h similarity index 62% rename from include/pokemon_debug.h rename to include/pokemon_sprite_visualizer.h index e69b4a7c6b4f..946c2f37f625 100644 --- a/include/pokemon_debug.h +++ b/include/pokemon_sprite_visualizer.h @@ -1,10 +1,10 @@ -#ifndef GUARD_POKEMON_DEBUG_H -#define GUARD_POKEMON_DEBUG_H +#ifndef GUARD_POKEMON_SPRITE_VISUALIZER_H +#define GUARD_POKEMON_SPRITE_VISUALIZER_H -#include "constants/pokemon_debug.h" +#include "constants/pokemon_sprite_visualizer.h" //Structs -struct PokemonDebugModifyArrows +struct PokemonSpriteVisualizerModifyArrows { u8 arrowSpriteId[2]; u16 minValue; @@ -17,13 +17,13 @@ struct PokemonDebugModifyArrows u8 typeOfVal; }; -struct PokemonDebugOptionArrows +struct PokemonSpriteVisualizerOptionArrows { u8 arrowSpriteId[1]; u8 currentDigit; }; -struct PokemonDebugYPosModifiyArrows +struct PokemonSpriteVisualizerYPosModifiyArrows { u8 arrowSpriteId[1]; u8 currentDigit; @@ -43,7 +43,7 @@ struct PokemonSpriteOffsets s8 offset_front_elevation; }; -struct PokemonDebugMenu +struct PokemonSpriteVisualizer { u16 currentmonId; u8 currentmonWindowId; @@ -51,12 +51,13 @@ struct PokemonDebugMenu u8 frontspriteId; u8 backspriteId; u8 iconspriteId; + u8 followerspriteId; u8 frontShadowSpriteId; bool8 isShiny; bool8 isFemale; - struct PokemonDebugModifyArrows modifyArrows; - struct PokemonDebugOptionArrows optionArrows; - struct PokemonDebugYPosModifiyArrows yPosModifyArrows; + struct PokemonSpriteVisualizerModifyArrows modifyArrows; + struct PokemonSpriteVisualizerOptionArrows optionArrows; + struct PokemonSpriteVisualizerYPosModifiyArrows yPosModifyArrows; struct PokemonSpriteConstValues constSpriteValues; struct PokemonSpriteOffsets offsetsSpriteValues; u8 animIdBack; @@ -67,7 +68,7 @@ struct PokemonDebugMenu u8 submenuYpos[3]; }; -void CB2_Debug_Pokemon(void); +void CB2_Pokemon_Sprite_Visualizer(void); -#endif // GUARD_POKEMON_DEBUG_H \ No newline at end of file +#endif // GUARD_POKEMON_SPRITE_VISUALIZER_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 5ab1b4cb8f3e..c2825bf7797d 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -75,5 +75,6 @@ void SetWaldaPhrase(const u8 *src); bool32 IsWaldaPhraseEmpty(void); void EnterPokeStorage(u8 boxOption); +u32 CountPartyNonEggMons(void); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index f56c3aca64e5..924702baf920 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -5,11 +5,12 @@ 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; +extern const struct CompressedSpriteSheet gSpriteSheet_CategoryIcons; +extern const struct SpritePalette gSpritePal_CategoryIcons; +extern const struct SpriteTemplate gSpriteTemplate_CategoryIcons; 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 1503814c0ec0..cb4e636e14d5 100644 --- a/include/random.h +++ b/include/random.h @@ -144,13 +144,16 @@ static inline void Shuffle(void *data, size_t n, size_t size) * probability. The array must be known at compile-time (e.g. a global * const array). * - * RandomPercentage(tag, t) returns FALSE with probability (1-t)/100, + * RandomPercentage(tag, t) returns FALSE with probability 1-t/100, * and TRUE with probability t/100. * * RandomWeighted(tag, w0, w1, ... wN) returns a number from 0 to N * inclusive. The return value is proportional to the weights, e.g. * RandomWeighted(..., 1, 1) returns 50% 0s and 50% 1s. - * RandomWeighted(..., 2, 1) returns 2/3 0s and 1/3 1s. */ + * RandomWeighted(..., 2, 1) returns 2/3 0s and 1/3 1s. + * + * RandomChance(tag, successes, total) returns FALSE with probability + * 1-successes/total, and TRUE with probability successes/total. */ enum RandomTag { @@ -162,6 +165,7 @@ enum RandomTag RNG_CUTE_CHARM, RNG_DAMAGE_MODIFIER, RNG_DIRE_CLAW, + RNG_EFFECT_SPORE, RNG_FLAME_BODY, RNG_FORCE_RANDOM_SWITCH, RNG_FROZEN, @@ -181,10 +185,12 @@ enum RandomTag RNG_SECONDARY_EFFECT, RNG_SECONDARY_EFFECT_2, RNG_SECONDARY_EFFECT_3, + RNG_SHED_SKIN, RNG_SLEEP_TURNS, RNG_SPEED_TIE, RNG_STATIC, RNG_STENCH, + RNG_TOXIC_CHAIN, RNG_TRI_ATTACK, RNG_QUICK_DRAW, RNG_QUICK_CLAW, @@ -203,6 +209,8 @@ enum RandomTag RandomWeightedArray(tag, sum, ARRAY_COUNT(weights), weights); \ }) +#define RandomChance(tag, successes, total) (RandomWeighted(tag, total - successes, successes)) + #define RandomPercentage(tag, t) \ ({ \ u32 r; \ @@ -237,4 +245,6 @@ u32 RandomUniformExceptDefault(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)( u32 RandomWeightedArrayDefault(enum RandomTag, u32 sum, u32 n, const u8 *weights); const void *RandomElementArrayDefault(enum RandomTag, const void *array, size_t size, size_t count); +u8 RandomWeightedIndex(u8 *weights, u8 length); + #endif // GUARD_RANDOM_H diff --git a/include/roamer.h b/include/roamer.h index ba1b09b54dac..36e9f1400012 100644 --- a/include/roamer.h +++ b/include/roamer.h @@ -1,17 +1,21 @@ #ifndef GUARD_ROAMER_H #define GUARD_ROAMER_H -void ClearRoamerData(void); -void ClearRoamerLocationData(void); +void DeactivateAllRoamers(void); void InitRoamer(void); void UpdateLocationHistoryForRoamer(void); -void RoamerMoveToOtherLocationSet(void); -void RoamerMove(void); -bool8 IsRoamerAt(u8 mapGroup, u8 mapNum); -void CreateRoamerMonInstance(void); +void RoamerMoveToOtherLocationSet(u32 roamerIndex); +void RoamerMove(u32 roamerIndex); +bool8 IsRoamerAt(u32 roamerIndex, u8 mapGroup, u8 mapNum); +void CreateRoamerMonInstance(u32 roamerIndex); u8 TryStartRoamerEncounter(void); void UpdateRoamerHPStatus(struct Pokemon *mon); -void SetRoamerInactive(void); -void GetRoamerLocation(u8 *mapGroup, u8 *mapNum); +void SetRoamerInactive(u32 roamerIndex); +void GetRoamerLocation(u32 roamerIndex, u8 *mapGroup, u8 *mapNum); +bool8 TryAddRoamer(u16 species, u8 level); +void MoveAllRoamersToOtherLocationSets(void); +void MoveAllRoamers(void); + +extern u8 gEncounteredRoamerIndex; #endif // GUARD_ROAMER_H diff --git a/include/rtc.h b/include/rtc.h index 9882d702b6fb..bf8ff9aa936d 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -118,5 +118,6 @@ void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds); void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2); u32 RtcGetMinuteCount(void); u32 RtcGetLocalDayCount(void); +void FormatDecimalTimeWithoutSeconds(u8 *dest, s8 hour, s8 minute, bool32 is24Hour); #endif // GUARD_RTC_UTIL_H diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h index 2f7c2f5bd5ff..6508295a2dcd 100644 --- a/include/script_pokemon_util.h +++ b/include/script_pokemon_util.h @@ -2,7 +2,6 @@ #define GUARD_SCRIPT_POKEMON_UTIL_H u32 ScriptGiveMon(u16, u8, u16); -u32 ScriptGiveMonParameterized(u16, u8, u16, u8, u8, u8, u8, u8 *, u8 *, u16 *, bool8, bool8, u8); u8 ScriptGiveEgg(u16); void CreateScriptedWildMon(u16, u8, u16); void CreateScriptedDoubleWildMon(u16, u8, u16, u16, u8, u16); diff --git a/include/strings.h b/include/strings.h index af0ee0bbba14..2963eb96d15c 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2950,25 +2950,6 @@ extern const u8 gText_NeatnessRankings[]; extern const u8 gText_CoopRankings[]; extern const u8 gText_PressingPowerRankings[]; -// Lilycove Lady -extern const u8 gText_ContestLady_Handsome[]; -extern const u8 gText_ContestLady_Vinny[]; -extern const u8 gText_ContestLady_Moreme[]; -extern const u8 gText_ContestLady_Ironhard[]; -extern const u8 gText_ContestLady_Muscle[]; -extern const u8 gText_ContestLady_Coolness[]; -extern const u8 gText_ContestLady_Beauty[]; -extern const u8 gText_ContestLady_Cuteness[]; -extern const u8 gText_ContestLady_Smartness[]; -extern const u8 gText_ContestLady_Toughness[]; -extern const u8 gText_QuizLady_Lady[]; -extern const u8 gText_FavorLady_Slippery[]; -extern const u8 gText_FavorLady_Roundish[]; -extern const u8 gText_FavorLady_Whamish[]; -extern const u8 gText_FavorLady_Shiny[]; -extern const u8 gText_FavorLady_Sticky[]; -extern const u8 gText_FavorLady_Pointy[]; - extern const u8 gText_CoolnessContest[]; extern const u8 gText_BeautyContest[]; extern const u8 gText_CutenessContest[]; @@ -3061,4 +3042,8 @@ extern const u8 gText_BasePointsResetToZero[]; extern const u8 gText_Fertilize[]; extern const u8 gText_PlantBerry[]; +// Map name pop-up +extern const u8 gText_AM[]; +extern const u8 gText_PM[]; + #endif // GUARD_STRINGS_H diff --git a/include/test/battle.h b/include/test/battle.h index 24998b8fa506..a44e813f822e 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -326,14 +326,14 @@ * The inference process is naive, if your test contains anything that * modifies the speed of a battler you should specify them explicitly. * - * MOVE(battler, move | moveSlot:, [megaEvolve:], [hit:], [criticalHit:], [target:], [allowed:], [WITH_RNG(tag, value]) + * MOVE(battler, move | moveSlot:, [gimmick:], [hit:], [criticalHit:], [target:], [allowed:], [WITH_RNG(tag, value]) * Used when the battler chooses Fight. Either the move ID or move slot - * must be specified. megaEvolve: TRUE causes the battler to Mega Evolve - * if able, hit: FALSE causes the move to miss, criticalHit: TRUE causes - * the move to land a critical hit, target: is used in double battles to - * choose the target (when necessary), and allowed: FALSE is used to - * reject an illegal move e.g. a Disabled one. WITH_RNG allows the move - * to specify an explicit outcome for an RNG tag. + * must be specified. gimmick: GIMMICK_MEGA causes the battler to Mega + * Evolve if able, hit: FALSE causes the move to miss, criticalHit: TRUE + * causes the move to land a critical hit, target: is used in double + * battles to choose the target (when necessary), and allowed: FALSE is + * used to reject an illegal move e.g. a Disabled one. WITH_RNG allows + * the move to specify an explicit outcome for an RNG tag. * MOVE(playerLeft, MOVE_TACKLE, target: opponentRight); * If the battler does not have an explicit Moves specified the moveset * will be populated based on the MOVEs it uses. @@ -507,7 +507,7 @@ // or loop. #define BATTLE_TEST_STACK_SIZE 1024 #define MAX_TURNS 16 -#define MAX_QUEUED_EVENTS 25 +#define MAX_QUEUED_EVENTS 30 #define MAX_EXPECTED_ACTIONS 10 enum { BATTLE_TEST_SINGLES, BATTLE_TEST_DOUBLES, BATTLE_TEST_WILD, BATTLE_TEST_AI_SINGLES, BATTLE_TEST_AI_DOUBLES }; @@ -661,6 +661,7 @@ struct BattleTestData u8 gender; u8 nature; u16 forcedAbilities[NUM_BATTLE_SIDES][PARTY_SIZE]; + u8 chosenGimmick[NUM_BATTLE_SIDES][PARTY_SIZE]; u8 currentMonIndexes[MAX_BATTLERS_COUNT]; u8 turnState; @@ -723,27 +724,8 @@ struct BattleTestRunnerState extern const struct TestRunner gBattleTestRunner; extern struct BattleTestRunnerState *const gBattleTestRunnerState; -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - -#define APPEND_TRUE(...) VARARG_8(APPEND_TRUE_, __VA_ARGS__) -#define APPEND_TRUE_0() -#define APPEND_TRUE_1(a) a, TRUE -#define APPEND_TRUE_2(a, b) a, TRUE, b, TRUE -#define APPEND_TRUE_3(a, b, c) a, TRUE, b, TRUE, c, TRUE -#define APPEND_TRUE_4(a, b, c, d) a, TRUE, b, TRUE, c, TRUE, d, TRUE -#define APPEND_TRUE_5(a, b, c, d, e) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE -#define APPEND_TRUE_6(a, b, c, d, e, f) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE -#define APPEND_TRUE_7(a, b, c, d, e, f, g) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE -#define APPEND_TRUE_8(a, b, c, d, e, f, g, h) a, TRUE, b, TRUE, c, TRUE, d, TRUE, e, TRUE, f, TRUE, g, TRUE, h, TRUE +#define APPEND_COMMA_TRUE(a) , a, TRUE +#define R_APPEND_TRUE(...) __VA_OPT__(FIRST(__VA_ARGS__), TRUE RECURSIVELY(R_FOR_EACH(APPEND_COMMA_TRUE, EXCEPT_1(__VA_ARGS__)))) /* Test */ @@ -754,7 +736,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; } #define BATTLE_TEST_ARGS_SINGLE(_name, _type, ...) \ - struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + struct CAT(Result, __LINE__) { RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, const u32, struct BattlePokemon *, struct BattlePokemon *); \ __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ { \ @@ -772,7 +754,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *results, const u32 i, struct BattlePokemon *player, struct BattlePokemon *opponent) #define BATTLE_TEST_ARGS_DOUBLE(_name, _type, ...) \ - struct CAT(Result, __LINE__) { MEMBERS(__VA_ARGS__) }; \ + struct CAT(Result, __LINE__) { RECURSIVELY(R_FOR_EACH(APPEND_SEMICOLON, __VA_ARGS__)) }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *, const u32, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *); \ __attribute__((section(".tests"))) static const struct Test CAT(sTest, __LINE__) = \ { \ @@ -843,6 +825,12 @@ struct moveWithPP { #define SpAttack(spAttack) SpAttack_(__LINE__, spAttack) #define SpDefense(spDefense) SpDefense_(__LINE__, spDefense) #define Speed(speed) Speed_(__LINE__, speed) +#define HPIV(hpIV) HPIV_(__LINE__, hpIV) +#define AttackIV(attackIV) AttackIV_(__LINE__, attackIV) +#define DefenseIV(defenseIV) DefenseIV_(__LINE__, defenseIV) +#define SpAttackIV(spAttackIV) SpAttackIV_(__LINE__, spAttackIV) +#define SpDefenseIV(spDefenseIV) SpDefenseIV_(__LINE__, spDefenseIV) +#define SpeedIV(speedIV) SpeedIV_(__LINE__, speedIV) #define Item(item) Item_(__LINE__, item) #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__}) @@ -873,6 +861,12 @@ void Defense_(u32 sourceLine, u32 defense); void SpAttack_(u32 sourceLine, u32 spAttack); void SpDefense_(u32 sourceLine, u32 spDefense); void Speed_(u32 sourceLine, u32 speed); +void HPIV_(u32 sourceLine, u32 hpIV); +void AttackIV_(u32 sourceLine, u32 attackIV); +void DefenseIV_(u32 sourceLine, u32 defenseIV); +void SpAttackIV_(u32 sourceLine, u32 spAttackIV); +void SpDefenseIV_(u32 sourceLine, u32 spDefenseIV); +void SpeedIV_(u32 sourceLine, u32 speedIV); void Item_(u32 sourceLine, u32 item); void Moves_(u32 sourceLine, u16 moves[MAX_MON_MOVES]); void MovesWithPP_(u32 sourceLine, struct moveWithPP moveWithPP[MAX_MON_MOVES]); @@ -911,28 +905,28 @@ enum { TURN_CLOSED, TURN_OPEN, TURN_CLOSING }; #define TURN for (OpenTurn(__LINE__); gBattleTestRunnerState->data.turnState == TURN_OPEN; CloseTurn(__LINE__)) -#define MOVE(battler, ...) Move(__LINE__, battler, (struct MoveContext) { APPEND_TRUE(__VA_ARGS__) }) +#define MOVE(battler, ...) Move(__LINE__, battler, (struct MoveContext) { R_APPEND_TRUE(__VA_ARGS__) }) -#define EXPECT_MOVE(battler, ...) ExpectMove(__LINE__, battler, (struct MoveContext) { APPEND_TRUE(__VA_ARGS__) }) +#define EXPECT_MOVE(battler, ...) ExpectMove(__LINE__, battler, (struct MoveContext) { R_APPEND_TRUE(__VA_ARGS__) }) #define NOT_EXPECT_MOVE(battler, _move) ExpectMove(__LINE__, battler, (struct MoveContext) { .move = _move, .explicitMove = TRUE, .notExpected = TRUE, .explicitNotExpected = TRUE, }) #define EXPECT_MOVES(battler, ...) ExpectMoves(__LINE__, battler, FALSE, (struct FourMoves) {{ __VA_ARGS__ }}) #define NOT_EXPECT_MOVES(battler, ...) ExpectMoves(__LINE__, battler, TRUE, (struct FourMoves) {{ __VA_ARGS__ }}) #define EXPECT_SEND_OUT(battler, partyIndex) ExpectSendOut(__LINE__, battler, partyIndex) #define EXPECT_SWITCH(battler, partyIndex) ExpectSwitch(__LINE__, battler, partyIndex) -#define SCORE_EQ(battler, ...) Score(__LINE__, battler, CMP_EQUAL, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_NE(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_GT(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_LT(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, FALSE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_EQ_VAL(battler, ...) Score(__LINE__, battler, CMP_EQUAL, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_NE_VAL(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_GT_VAL(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) -#define SCORE_LT_VAL(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, TRUE, (struct TestAIScoreStruct) { APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_EQ(battler, ...) Score(__LINE__, battler, CMP_EQUAL, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_NE(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_GT(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_LT(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, FALSE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_EQ_VAL(battler, ...) Score(__LINE__, battler, CMP_EQUAL, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_NE_VAL(battler, ...) Score(__LINE__, battler, CMP_NOT_EQUAL, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_GT_VAL(battler, ...) Score(__LINE__, battler, CMP_GREATER_THAN, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) +#define SCORE_LT_VAL(battler, ...) Score(__LINE__, battler, CMP_LESS_THAN, TRUE, (struct TestAIScoreStruct) { R_APPEND_TRUE(__VA_ARGS__) } ) #define FORCED_MOVE(battler) ForcedMove(__LINE__, battler) #define SWITCH(battler, partyIndex) Switch(__LINE__, battler, partyIndex) #define SKIP_TURN(battler) SkipTurn(__LINE__, battler) #define SEND_OUT(battler, partyIndex) SendOut(__LINE__, battler, partyIndex) -#define USE_ITEM(battler, ...) UseItem(__LINE__, battler, (struct ItemContext) { APPEND_TRUE(__VA_ARGS__) }) +#define USE_ITEM(battler, ...) UseItem(__LINE__, battler, (struct ItemContext) { R_APPEND_TRUE(__VA_ARGS__) }) #define WITH_RNG(tag, value) rng: ((struct TurnRNG) { tag, value }) struct MoveContext @@ -947,13 +941,8 @@ struct MoveContext u16 explicitCriticalHit:1; u16 secondaryEffect:1; u16 explicitSecondaryEffect:1; - u16 megaEvolve:1; - u16 explicitMegaEvolve:1; - u16 ultraBurst:1; - u16 explicitUltraBurst:1; - // TODO: u8 zMove:1; - u16 dynamax:1; - u16 explicitDynamax:1; + u16 gimmick:4; + u16 explicitGimmick:1; u16 allowed:1; u16 explicitAllowed:1; u16 notExpected:1; // Has effect only with EXPECT_MOVE @@ -1000,14 +989,28 @@ void SendOut(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); #define ABILITY_POPUP(battler, ...) QueueAbility(__LINE__, battler, (struct AbilityEventContext) { __VA_ARGS__ }) #define ANIMATION(type, id, ...) QueueAnimation(__LINE__, type, id, (struct AnimationEventContext) { __VA_ARGS__ }) -#define HP_BAR(battler, ...) QueueHP(__LINE__, battler, (struct HPEventContext) { APPEND_TRUE(__VA_ARGS__) }) -#define EXPERIENCE_BAR(battler, ...) QueueExp(__LINE__, battler, (struct ExpEventContext) { APPEND_TRUE(__VA_ARGS__) }) +#define HP_BAR(battler, ...) QueueHP(__LINE__, battler, (struct HPEventContext) { R_APPEND_TRUE(__VA_ARGS__) }) +#define EXPERIENCE_BAR(battler, ...) QueueExp(__LINE__, battler, (struct ExpEventContext) { R_APPEND_TRUE(__VA_ARGS__) }) // Static const is needed to make the modern compiler put the pattern variable in the .rodata section, instead of putting it on stack(which can break the game). #define MESSAGE(pattern) do {static const u8 msg[] = _(pattern); QueueMessage(__LINE__, msg);} while (0) #define STATUS_ICON(battler, status) QueueStatus(__LINE__, battler, (struct StatusEventContext) { status }) #define FREEZE_OR_FROSTBURN_STATUS(battler, isFrostbite) \ (B_USE_FROSTBITE ? STATUS_ICON(battler, frostbite: isFrostbite) : STATUS_ICON(battler, freeze: isFrostbite)) +#define SWITCH_OUT_MESSAGE(name) ONE_OF { \ + MESSAGE(name ", that's enough! Come back!"); \ + MESSAGE(name ", come back!"); \ + MESSAGE(name ", OK! Come back!"); \ + MESSAGE(name ", good! Come back!"); \ + } + +#define SEND_IN_MESSAGE(name) ONE_OF { \ + MESSAGE("Go! " name "!"); \ + MESSAGE("Do it! " name "!"); \ + MESSAGE("Go for it, " name "!"); \ + MESSAGE("Your foe's weak! Get 'em, " name "!"); \ + } + enum QueueGroupType { QUEUE_GROUP_NONE, diff --git a/include/test/test.h b/include/test/test.h index 437b0b6b40db..401c65ce9ef7 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -79,7 +79,7 @@ void Test_ExitWithResult(enum TestResult, u32 stopLine, const char *fmt, ...); u32 SourceLine(u32 sourceLineOffset); u32 SourceLineOffset(u32 sourceLine); -s32 MgbaPrintf_(const char *fmt, ...); +s32 Test_MgbaPrintf(const char *fmt, ...); #define TEST(_name) \ static void CAT(Test, __LINE__)(void); \ @@ -199,7 +199,7 @@ static inline struct Benchmark BenchmarkStop(void) do \ { \ u32 a_ = (a).ticks; u32 b_ = (b).ticks; \ - MgbaPrintf_(#a ": %d ticks, " #b ": %d ticks", a_, b_); \ + Test_MgbaPrintf(#a ": %d ticks, " #b ": %d ticks", a_, b_); \ if (((a_ - BENCHMARK_ABS) * BENCHMARK_REL) >= (b_ * 100)) \ Test_ExitWithResult(TEST_RESULT_FAIL, __LINE__, ":L%s:%d: EXPECT_FASTER(" #a ", " #b ") failed", gTestRunnerState.test->filename, __LINE__); \ } while (0) @@ -208,7 +208,7 @@ static inline struct Benchmark BenchmarkStop(void) do \ { \ u32 a_ = (a).ticks; u32 b_ = (b).ticks; \ - MgbaPrintf_(#a ": %d ticks, " #b ": %d ticks", a_, b_); \ + Test_MgbaPrintf(#a ": %d ticks, " #b ": %d ticks", a_, b_); \ if ((a_ * 100) <= ((b_ - BENCHMARK_ABS) * BENCHMARK_REL)) \ Test_ExitWithResult(TEST_RESULT_FAIL, __LINE__, ":L%s:%d: EXPECT_SLOWER(" #a ", " #b ") failed", gTestRunnerState.test->filename, __LINE__); \ } while (0) @@ -221,6 +221,8 @@ static inline struct Benchmark BenchmarkStop(void) #define PARAMETRIZE if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter) +#define PARAMETRIZE_LABEL(f, label) if (gFunctionTestRunnerState->parameters++ == gFunctionTestRunnerState->runParameter && (Test_MgbaPrintf(":N%s: " f " (%d/%d)", gTestRunnerState.test->name, label, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters), 1)) + #define TO_DO \ do { \ Test_ExpectedResult(TEST_RESULT_TODO); \ diff --git a/include/test_runner.h b/include/test_runner.h index 248a0463e549..f61f26b66ea0 100644 --- a/include/test_runner.h +++ b/include/test_runner.h @@ -24,6 +24,7 @@ void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex); void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex); +u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex); #else @@ -45,6 +46,8 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex); #define TestRunner_Battle_GetForcedAbility(...) (u32)0 +#define TestRunner_Battle_GetChosenGimmick(...) (u32)0 + #endif #endif diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 7c83ca62eeb1..619fa91e7039 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -11,6 +11,7 @@ bool16 ResetAllPicSprites(void); u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyMonPicSprite(u16 spriteId); +u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyTrainerPicSprite(u16 spriteId); u16 CreateTrainerCardTrainerPicSprite(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId); diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 13e760068463..63289f081ccc 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -29,6 +29,7 @@ struct WildPokemonHeader extern const struct WildPokemonHeader gWildMonHeaders[]; extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; +extern u8 gChainFishingDexNavStreak; void DisableWildEncounters(bool8 disabled); u8 PickWildMonNature(void); @@ -41,5 +42,6 @@ u16 GetLocalWaterMon(void); bool8 UpdateRepelCounter(void); bool8 TryDoDoubleWildBattle(void); bool8 StandardWildEncounter_Debug(void); +u32 CalculateChainFishingShinyRolls(void); #endif // GUARD_WILD_ENCOUNTER_H diff --git a/ld_script.ld b/ld_script.ld index e9cbae895769..a0c069c96574 100644 --- a/ld_script.ld +++ b/ld_script.ld @@ -137,6 +137,7 @@ SECTIONS { src/field_door.o(.text); src/field_player_avatar.o(.text); src/event_object_movement.o(.text); + src/follower_helper.o(.text); src/field_message_box.o(.text); src/event_object_lock.o(.text); src/text_window.o(.text); @@ -357,7 +358,7 @@ SECTIONS { src/gym_leader_rematch.o(.text); src/battle_transition_frontier.o(.text); src/international_string_util.o(.text); - src/pokemon_debug.o(.text); + src/pokemon_sprite_visualizer.o(.text); src/expansion_intro.o(.text); } > ROM =0 @@ -527,6 +528,7 @@ SECTIONS { src/field_door.o(.rodata); src/field_player_avatar.o(.rodata); src/event_object_movement.o(.rodata); + src/follower_helper.o(.rodata); src/text_window.o(.rodata); src/scrcmd.o(.rodata); src/field_control_avatar.o(.rodata); @@ -724,7 +726,7 @@ SECTIONS { data/mystery_gift.o(.rodata); src/m4a_tables.o(.rodata); data/sound_data.o(.rodata); - src/pokemon_debug.o(.rodata); + src/pokemon_sprite_visualizer.o(.rodata); src/expansion_intro.o(.rodata); } > ROM =0 diff --git a/map_data_rules.mk b/map_data_rules.mk index 626cd4724080..a045d1d42061 100755 --- a/map_data_rules.mk +++ b/map_data_rules.mk @@ -23,6 +23,7 @@ $(MAPS_DIR)/groups.inc: $(MAPS_DIR)/map_groups.json $(MAPS_DIR)/connections.inc: $(MAPS_DIR)/groups.inc ; $(MAPS_DIR)/events.inc: $(MAPS_DIR)/connections.inc ; $(MAPS_DIR)/headers.inc: $(MAPS_DIR)/events.inc ; +$(DATA_SRC_SUBDIR)/map_group_count.h: $(MAPS_DIR)/headers.inc ; include/constants/map_groups.h: $(MAPS_DIR)/headers.inc ; $(LAYOUTS_DIR)/layouts.inc: $(LAYOUTS_DIR)/layouts.json diff --git a/migration_scripts/item_ball_refactor.py b/migration_scripts/1.8/item_ball_refactor.py similarity index 100% rename from migration_scripts/item_ball_refactor.py rename to migration_scripts/1.8/item_ball_refactor.py diff --git a/migration_scripts/1.9/battle_anim_moves_refactor.py b/migration_scripts/1.9/battle_anim_moves_refactor.py new file mode 100644 index 000000000000..116d3964c0e2 --- /dev/null +++ b/migration_scripts/1.9/battle_anim_moves_refactor.py @@ -0,0 +1,63 @@ +import re + +def IsCommaMissing(line: str): + sanitized_line = line.removesuffix('\n').strip() + if sanitized_line.endswith('{') or sanitized_line.endswith('(') or sanitized_line.endswith(','): + return False + if not re.search(r'\.[A-Za-z0-9_]+', sanitized_line): + return False + return True + +input_file = open('./src/data/moves_info.h', 'r') +lines = input_file.readlines() +input_file.close() + + +battle_anim_lines = [] +moves_info_lines = [] + +move = None +bracketCount = 0 +for line in lines: + m = re.search(r'\[MOVE_([A-Za-z0-9_]+)\] =', line) + if m: + move = m.group(1) + bracketCount = 0 + battle_anim_lines.append('extern const u8 Move_' + move + '[];\n') + + if move and re.search(r'\{', line): + bracketCount = bracketCount + 1 + + if move and re.search(r'\}', line): + if (bracketCount == 1): + moves_info_lines.append(8 * ' ' + '.battleAnimScript = Move_' + move + ',\n') + move = None + bracketCount = bracketCount - 1 + + comment_split = line.split('//') + if move and IsCommaMissing(comment_split[0]): + line = comment_split[0].removesuffix('\n') + ',' + line[len(comment_split[0]):-1] + '\n' + + + moves_info_lines.append(line) + +output_file_mi = open('./src/data/moves_info.h', 'w') +output_file_mi.writelines(moves_info_lines) +output_file_mi.close() + +output_file_bas = open('./include/battle_anim_scripts.h', 'w') +output_file_bas.writelines('#ifndef GUARD_BATTLE_ANIM_SCRIPTS_H\n') +output_file_bas.writelines('#define GUARD_BATTLE_ANIM_SCRIPTS_H\n\n') +output_file_bas.writelines(battle_anim_lines) +output_file_bas.writelines('\n#endif // GUARD_BATTLE_ANIM_SCRIPTS_H\n') +output_file_bas.close() + +b_anim_scripts_s = open('./data/battle_anim_scripts.s', 'r') +lines = b_anim_scripts_s.read() +b_anim_scripts_s.close() + +lines = re.sub(r'(Move_[A-Za-z0-9_]*)([:]+)', r'\1::', lines) + +b_anim_scripts_s = open('./data/battle_anim_scripts.s', 'w') +b_anim_scripts_s.write(lines) +b_anim_scripts_s.close() diff --git a/migration_scripts/1.9/battle_frontier_convert_parties.py b/migration_scripts/1.9/battle_frontier_convert_parties.py new file mode 100644 index 000000000000..83982bbe465d --- /dev/null +++ b/migration_scripts/1.9/battle_frontier_convert_parties.py @@ -0,0 +1,62 @@ +import re + +def battle_frontier_mons(data): + data = re.sub(re.escape(".itemTableId = BATTLE_FRONTIER_"), ".heldItem = ", data) + data = re.sub(re.escape("FacilityMon"), "TrainerMon", data) + data = re.sub(re.escape(".evSpread = 0,"), ".ev = NULL,", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 102, 102, 102, 0, 102),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 0, 128, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(84, 84, 84, 84, 84, 84),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 128, 128, 128, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE,"), ".ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP,"), ".ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0),", data) + data = re.sub(re.escape(".evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK,"), ".ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0),", data) + + return data + +with open('src/data/battle_frontier/battle_frontier_mons.h', 'r') as file: + data = file.read() +with open('src/data/battle_frontier/battle_frontier_mons.h', 'w') as file: + file.write(battle_frontier_mons(data)) + +with open('src/data/battle_frontier/battle_tent.h', 'r') as file: + data = file.read() +with open('src/data/battle_frontier/battle_tent.h', 'w') as file: + file.write(battle_frontier_mons(data)) diff --git a/migration_scripts/1.9/convert_item_icons.py b/migration_scripts/1.9/convert_item_icons.py new file mode 100644 index 000000000000..abd2070fd177 --- /dev/null +++ b/migration_scripts/1.9/convert_item_icons.py @@ -0,0 +1,45 @@ +import glob +import re +import os + +if not os.path.exists("Makefile"): + print("Please run this script from your root folder.") + quit() + +# Read item_icon_table.h and extract the icon and palette information +for file in glob.glob('./src/data/item_icon_table.h'): + with open(file, 'r') as f: + icon_table_content = f.read() + +# Extract item icon and palette data from item_icon_table.h +icon_table_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([^,]+),\s*([^}]+)\}', re.MULTILINE) +icon_table_data = {} +for match in icon_table_pattern.findall(icon_table_content): + if len(match) == 3: + item_name, icon_pic, icon_palette = match + icon_table_data[item_name] = (icon_pic, icon_palette) + +# Read items.h content +for file in glob.glob('./src/data/items.h'): + with open(file, 'r') as f: + items_content = f.read() + +# Modify items.h content +def add_icon_data(match): + item_name = match.group(1) + item_content = match.group(2) + if item_name in icon_table_data: + icon_pic, icon_palette = icon_table_data[item_name] + print(f"Updating {item_name}: adding iconPic = {icon_pic}, iconPalette = {icon_palette}") + return f'[{item_name}] =\n {{{item_content} .iconPic = {icon_pic},\n .iconPalette = {icon_palette},\n }},' + else: + return match.group(0) + +item_pattern = re.compile(r'\[(ITEM_[A-Z_0-9]+)\]\s*=\s*\{([\s\S]*?)\},', re.DOTALL) +modified_items_content = item_pattern.sub(add_icon_data, items_content) + +# Write the modified content back to items.h +for file in glob.glob('./src/data/items.h'): + with open(file, 'w') as f: + f.write(modified_items_content) + print("items.h has been updated") diff --git a/migration_scripts/1.9/convert_partner_parties.py b/migration_scripts/1.9/convert_partner_parties.py new file mode 100644 index 000000000000..e726dcc7234d --- /dev/null +++ b/migration_scripts/1.9/convert_partner_parties.py @@ -0,0 +1,319 @@ +# If you have extra members in 'TrainerMon': +# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). +# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. +# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. +# 4. Update 'trainerproc.c' to parse the new key. + +import re +import sys + +is_blank = re.compile(r'^[ \t]*(//.*)?$') + +begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') +end_party_definition = re.compile(r'^};') +begin_pokemon_definition = re.compile(r'^ { *$') +end_pokemon_definition = re.compile(r'^ },? *$') +level_definition = re.compile(r'\.lvl = (\d+)') +species_definition = re.compile(r'\.species = SPECIES_(\w+)') +gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') +nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') +item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') +ball_definition = re.compile(r'\.ball = ITEM_(\w+)') +ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') +friendship_definition = re.compile(r'\.friendship = (\d+)') +shiny_definition = re.compile(r'\.isShiny = (\w+)') +ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +moves_definition = re.compile(r'\.moves = \{([^}]+)\}') +move_definition = re.compile(r'MOVE_(\w+)') +nature_definition = re.compile(r'\.nature = NATURE_(\w+)') + +# NOTE: These are just for aesthetics, the Pokemon would still compile +# without them. +species_replacements = { + "CHIEN_PAO": "Chien-Pao", + "CHI_YU": "Chi-Yu", + "HAKAMO_O": "Hakamo-o", + "HO_OH": "Ho-Oh", + "JANGMO_O": "Jangmo-o", + "KOMMO_O": "Kommo-o", + "PORYGON_Z": "Porygon-Z", + "ROTOM_": "Rotom-", + "TING_LU": "Ting-Lu", + "TYPE_NULL": "Type: Null", + "WO_CHIEN": "Wo-Chien", + + "_ALOLAN": "-Alola", + "_AQUA_BREED": "-Aqua", + "_BATTLE_BOND": "-Bond", + "_BLAZE_BREED": "-Blaze", + "_CAP": "", + "_CLOAK": "", + "_COMBAT_BREED": "-Combat", + "_CROWED_SHIELD": "-Crowned", + "_CROWED_SWORD": "-Crowned", + "_DRIVE": "", + "_EAST_SEA": "-East", + "_FAMILY_OF_FOUR": "-Four", + "_FEMALE": "-F", + "_FLOWER": "", + "_GALARIAN": "-Galar", + "_GIGANTAMAX": "-Gmax", + "_HISUIAN": "-Hisui", + "_ICE_RIDER": "-Ice", + "_NOICE_FACE": "-Noice", + "_ORIGIN": "-Origin", + "_ORIGINAL_COLOR": "-Original", + "_PALDEAN": "-Paldea", + "_PLUMAGE": "", + "_POKE_BALL": "-Pokeball", + "_SHADOW_RIDER": "-Shadow", + "_STRIKE_STYLE": "-Style", + "_TOTEM": "-Totem", + "_ZEN_MODE": "-Zen", +} + +pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] + +class Pokemon: + def __init__(self): + self.nickname = None + self.species = None + self.gender = None + self.item = None + self.nature = None + self.attributes = {} + self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" + self.moves = [] + +def convert_parties(in_path, in_h): + party_identifier = None + party = None + pokemon = None + parties = {} + + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_party_definition.search(line): + if party: + raise Exception(f"unexpected start of party") + [identifier] = m.groups() + party_identifier = identifier + party = [] + elif end_party_definition.search(line): + if not party: + raise Exception(f"unexpected end of party") + parties[party_identifier] = party + party = None + elif begin_pokemon_definition.search(line): + if pokemon: + raise Exception(f"unexpected start of Pokemon") + pokemon = Pokemon() + elif end_pokemon_definition.search(line): + if not pokemon: + raise Exception(f"unexpected end of Pokemon") + else: + party.append(pokemon) + pokemon = None + elif m := level_definition.search(line): + [level] = m.groups() + pokemon.attributes['Level'] = level + elif m := species_definition.search(line): + [species_] = m.groups() + for match, replacement in species_replacements.items(): + species_ = species_.replace(match, replacement) + pokemon.species = species_.replace("_", " ").title() + elif m := gender_definition.search(line): + [gender_] = m.groups() + if gender_ == 'MALE': + pokemon.gender = 'M' + elif gender_ == 'FEMALE': + pokemon.gender = 'F' + else: + raise Exception(f"unknown gender: '{gender_}'") + elif m := nickname_definition.search(line): + [nickname] = m.groups() + pokemon.nickname = nickname + elif m := item_definition.search(line): + [item_] = m.groups() + pokemon.item = item_.replace("_", " ").title() + elif m := ball_definition.search(line): + [ball] = m.groups() + pokemon.attributes['Ball'] = ball.replace("_", " ").title() + elif m := ability_definition.search(line): + [ability] = m.groups() + pokemon.attributes['Ability'] = ability.replace("_", " ").title() + elif m := friendship_definition.search(line): + [friendship] = m.groups() + pokemon.attributes['Happiness'] = friendship + elif m := shiny_definition.search(line): + [shiny] = m.groups() + if shiny == 'TRUE': + pokemon.attributes['Shiny'] = 'Yes' + elif shiny == 'FALSE': + pokemon.attributes['Shiny'] = 'No' + else: + raise Exception(f"unknown isShiny: '{shiny}'") + elif m := ivs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) + elif m := evs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') + elif m := moves_definition.search(line): + [moves_] = m.groups() + pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] + elif m := nature_definition.search(line): + [nature_] = m.groups() + pokemon.nature = nature_.replace("_", " ").title() + elif is_blank.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + return parties + +is_trainer_skip = re.compile(r'(const struct Trainer gBattlePartners\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') + +begin_trainer_definition = re.compile(r' \[(PARTNER_\w+)\] =') +end_trainer_definition = re.compile(r' }') +trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') +encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') +trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_BACK_PIC_(\w+)') +trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') +trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') +trainer_item_definition = re.compile(r'ITEM_(\w+)') +trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') +trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') +trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') +trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') +trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') + +class_fixups = { + "Rs": "RS", +} + +pic_fixups = { + "Rs": "RS", +} + +class Trainer: + def __init__(self, id_): + self.id = id_ + self.class_ = None + self.encounter_music = None + self.gender = None + self.pic = None + self.name = None + self.items = [] + self.ai_flags = None + self.mugshot = None + self.starting_status = None + self.party = None + +def convert_trainers(in_path, in_h, parties, out_party): + newlines = 0 + trainer = None + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_trainer_definition.search(line): + if trainer: + raise Exception(f"unexpected start of trainer") + [id_] = m.groups() + trainer = Trainer(id_) + elif m := trainer_class_definition.search(line): + [class_] = m.groups() + class_ = class_.replace("_", " ").title() + for match, replacement in class_fixups.items(): + class_ = class_.replace(match, replacement) + trainer.class_ = class_ + elif m := encounter_music_gender_definition.search(line): + [is_female, music] = m.groups() + trainer.gender = 'Female' if is_female else 'Male' + trainer.encounter_music = music.replace("_", " ").title() + elif m := trainer_pic_definition.search(line): + [pic] = m.groups() + pic = pic.replace("_", " ").title() + for match, replacement in pic_fixups.items(): + pic = pic.replace(match, replacement) + trainer.pic = pic + elif m := trainer_name_definition.search(line): + [name] = m.groups() + trainer.name = name + elif m := trainer_items_definition.search(line): + [items] = m.groups() + trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") + elif m := trainer_ai_flags_definition.search(line): + [ai_flags] = m.groups() + trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) + elif m := trainer_mugshot_definition.search(line): + [color] = m.groups() + trainer.mugshot = color.title() + elif m := trainer_starting_status_definition.search(line): + [starting_status] = m.groups() + trainer.starting_status = starting_status.replace("_", " ").title() + elif m := trainer_party_definition.search(line): + [party] = m.groups() + trainer.party = parties[party] + elif end_trainer_definition.search(line): + if not trainer: + raise Exception(f"unexpected end of trainer") + while newlines > 0: + out_party.write(f"\n") + newlines -= 1 + newlines = 1 + out_party.write(f"=== {trainer.id} ===\n") + out_party.write(f"Name: {trainer.name}\n") + out_party.write(f"Class: {trainer.class_}\n") + out_party.write(f"Pic: {trainer.pic}\n") + out_party.write(f"Gender: {trainer.gender}\n") + out_party.write(f"Music: {trainer.encounter_music}\n") + if trainer.items: + out_party.write(f"Items: {trainer.items}\n") + if trainer.ai_flags: + out_party.write(f"AI: {trainer.ai_flags}\n") + if trainer.mugshot: + out_party.write(f"Mugshot: {trainer.mugshot}\n") + if trainer.starting_status: + out_party.write(f"Starting Status: {trainer.starting_status}\n") + if trainer.party: + for i, pokemon in enumerate(trainer.party): + out_party.write(f"\n") + if pokemon.nickname: + out_party.write(f"{pokemon.nickname} ({pokemon.species})") + else: + out_party.write(f"{pokemon.species}") + if pokemon.gender: + out_party.write(f" ({pokemon.gender})") + if pokemon.item and pokemon.item != 'None': + out_party.write(f" @ {pokemon.item}") + out_party.write(f"\n") + if pokemon.nature: + out_party.write(f"{pokemon.nature} Nature\n") + for key in pokemon_attribute_order: + if key in pokemon.attributes: + out_party.write(f"{key}: {pokemon.attributes[key]}\n") + for move in pokemon.moves: + out_party.write(f"- {move}\n") + trainer = None + elif is_blank.search(line) or is_trainer_skip.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + +if __name__ == '__main__': + try: + [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv + except: + print(f"usage: python3 {sys.argv[0]} ") + else: + with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: + parties = convert_parties(parties_in_path, parties_in_h) + trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) diff --git a/migration_scripts/1.9/convert_trainer_parties.py b/migration_scripts/1.9/convert_trainer_parties.py new file mode 100644 index 000000000000..463816c021b1 --- /dev/null +++ b/migration_scripts/1.9/convert_trainer_parties.py @@ -0,0 +1,330 @@ +# If you have extra members in 'TrainerMon': +# 1. Add a regular expression which matches that member (e.g. 'shadow_definition'). +# 2. Match that regular expression in 'convert' and write into 'attributes' with the key that 'trainerproc' should parse. +# 3. Add the key used in 'attributes' to 'pokemon_attribute_order'. +# 4. Update 'trainerproc.c' to parse the new key. + +import re +import sys + +is_blank = re.compile(r'^[ \t]*(//.*)?$') + +begin_party_definition = re.compile(r'struct TrainerMon (\w+)\[\] =') +end_party_definition = re.compile(r'^};') +begin_pokemon_definition = re.compile(r'^ { *$') +end_pokemon_definition = re.compile(r'^ },? *$') +level_definition = re.compile(r'\.lvl = (\d+)') +species_definition = re.compile(r'\.species = SPECIES_(\w+)') +gender_definition = re.compile(r'\.gender = TRAINER_MON_(\w+)') +nickname_definition = re.compile(r'\.nickname = COMPOUND_STRING\("([^"]+)"\)') +item_definition = re.compile(r'\.heldItem = ITEM_(\w+)') +ball_definition = re.compile(r'\.ball = ITEM_(\w+)') +ability_definition = re.compile(r'\.ability = ABILITY_(\w+)') +friendship_definition = re.compile(r'\.friendship = (\d+)') +shiny_definition = re.compile(r'\.isShiny = (\w+)') +ivs_definition = re.compile(r'\.iv = TRAINER_PARTY_IVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +evs_definition = re.compile(r'\.ev = TRAINER_PARTY_EVS\(([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+),([0-9 ]+)\)') +moves_definition = re.compile(r'\.moves = \{([^}]+)\}') +move_definition = re.compile(r'MOVE_(\w+)') +nature_definition = re.compile(r'\.nature = NATURE_(\w+)') + +# NOTE: These are just for aesthetics, the Pokemon would still compile +# without them. +species_replacements = { + "CHIEN_PAO": "Chien-Pao", + "CHI_YU": "Chi-Yu", + "HAKAMO_O": "Hakamo-o", + "HO_OH": "Ho-Oh", + "JANGMO_O": "Jangmo-o", + "KOMMO_O": "Kommo-o", + "PORYGON_Z": "Porygon-Z", + "ROTOM_": "Rotom-", + "TING_LU": "Ting-Lu", + "TYPE_NULL": "Type: Null", + "WO_CHIEN": "Wo-Chien", + + "_ALOLAN": "-Alola", + "_AQUA_BREED": "-Aqua", + "_BATTLE_BOND": "-Bond", + "_BLAZE_BREED": "-Blaze", + "_CAP": "", + "_CLOAK": "", + "_COMBAT_BREED": "-Combat", + "_CROWED_SHIELD": "-Crowned", + "_CROWED_SWORD": "-Crowned", + "_DRIVE": "", + "_EAST_SEA": "-East", + "_FAMILY_OF_FOUR": "-Four", + "_FEMALE": "-F", + "_FLOWER": "", + "_GALARIAN": "-Galar", + "_GIGANTAMAX": "-Gmax", + "_HISUIAN": "-Hisui", + "_ICE_RIDER": "-Ice", + "_NOICE_FACE": "-Noice", + "_ORIGIN": "-Origin", + "_ORIGINAL_COLOR": "-Original", + "_PALDEAN": "-Paldea", + "_PLUMAGE": "", + "_POKE_BALL": "-Pokeball", + "_SHADOW_RIDER": "-Shadow", + "_STRIKE_STYLE": "-Style", + "_TOTEM": "-Totem", + "_ZEN_MODE": "-Zen", +} + +pokemon_attribute_order = ['Level', 'Ability', 'IVs', 'EVs', 'Happiness', 'Shiny', 'Ball'] + +class Pokemon: + def __init__(self): + self.nickname = None + self.species = None + self.gender = None + self.item = None + self.nature = None + self.attributes = {} + self.attributes['IVs'] = "0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe" + self.moves = [] + +def convert_parties(in_path, in_h): + party_identifier = None + party = None + pokemon = None + parties = {} + + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_party_definition.search(line): + if party: + raise Exception(f"unexpected start of party") + [identifier] = m.groups() + party_identifier = identifier + party = [] + elif end_party_definition.search(line): + if not party: + raise Exception(f"unexpected end of party") + parties[party_identifier] = party + party = None + elif begin_pokemon_definition.search(line): + if pokemon: + raise Exception(f"unexpected start of Pokemon") + pokemon = Pokemon() + elif end_pokemon_definition.search(line): + if not pokemon: + raise Exception(f"unexpected end of Pokemon") + else: + party.append(pokemon) + pokemon = None + elif m := level_definition.search(line): + [level] = m.groups() + pokemon.attributes['Level'] = level + elif m := species_definition.search(line): + [species_] = m.groups() + for match, replacement in species_replacements.items(): + species_ = species_.replace(match, replacement) + pokemon.species = species_.replace("_", " ").title() + elif m := gender_definition.search(line): + [gender_] = m.groups() + if gender_ == 'MALE': + pokemon.gender = 'M' + elif gender_ == 'FEMALE': + pokemon.gender = 'F' + else: + raise Exception(f"unknown gender: '{gender_}'") + elif m := nickname_definition.search(line): + [nickname] = m.groups() + pokemon.nickname = nickname + elif m := item_definition.search(line): + [item_] = m.groups() + pokemon.item = item_.replace("_", " ").title() + elif m := ball_definition.search(line): + [ball] = m.groups() + pokemon.attributes['Ball'] = ball.replace("_", " ").title() + elif m := ability_definition.search(line): + [ability] = m.groups() + pokemon.attributes['Ability'] = ability.replace("_", " ").title() + elif m := friendship_definition.search(line): + [friendship] = m.groups() + pokemon.attributes['Happiness'] = friendship + elif m := shiny_definition.search(line): + [shiny] = m.groups() + if shiny == 'TRUE': + pokemon.attributes['Shiny'] = 'Yes' + elif shiny == 'FALSE': + pokemon.attributes['Shiny'] = 'No' + else: + raise Exception(f"unknown isShiny: '{shiny}'") + elif m := ivs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['IVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items()) + elif m := evs_definition.search(line): + [hp, attack, defense, speed, special_attack, special_defense] = [stat.strip() for stat in m.groups()] + stats = {"HP": hp, "Atk": attack, "Def": defense, "SpA": special_attack, "SpD": special_defense, "Spe": speed} + pokemon.attributes['EVs'] = ' / '.join(f"{value} {key}" for key, value in stats.items() if value != '0') + elif m := moves_definition.search(line): + [moves_] = m.groups() + pokemon.moves = [move.replace("_", " ").title() for move in move_definition.findall(moves_) if move != "NONE"] + elif m := nature_definition.search(line): + [nature_] = m.groups() + pokemon.nature = nature_.replace("_", " ").title() + elif is_blank.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + return parties + +is_trainer_skip = re.compile(r'(const struct Trainer gTrainers\[\] = \{)|(^ \{$)|(\.partySize =)|(\.party = NULL)|(\.mugshotEnabled = TRUE)|(\};)') + +begin_trainer_definition = re.compile(r' \[(TRAINER_\w+)\] =') +end_trainer_definition = re.compile(r' }') +trainer_class_definition = re.compile(r'\.trainerClass = TRAINER_CLASS_(\w+)') +encounter_music_gender_definition = re.compile(r'\.encounterMusic_gender = (F_TRAINER_FEMALE \| )?TRAINER_ENCOUNTER_MUSIC_(\w+)') +trainer_pic_definition = re.compile(r'\.trainerPic = TRAINER_PIC_(\w+)') +trainer_name_definition = re.compile(r'\.trainerName = _\("([^"]*)"\)') +trainer_items_definition = re.compile(r'\.items = \{([^}]*)\}') +trainer_item_definition = re.compile(r'ITEM_(\w+)') +trainer_double_battle_definition = re.compile(r'\.doubleBattle = (\w+)') +trainer_ai_flags_definition = re.compile(r'\.aiFlags = (.*)') +trainer_ai_flag_definition = re.compile(r'AI_FLAG_(\w+)') +trainer_party_definition = re.compile(r'\.party = TRAINER_PARTY\((\w+)\)') +trainer_mugshot_definition = re.compile(r'\.mugshotColor = MUGSHOT_COLOR_(\w+)') +trainer_starting_status_definition = re.compile(r'\.startingStatus = STARTING_STATUS_(\w+)') + +class_fixups = { + "Rs": "RS", +} + +pic_fixups = { + "Rs": "RS", +} + +class Trainer: + def __init__(self, id_): + self.id = id_ + self.class_ = None + self.encounter_music = None + self.gender = None + self.pic = None + self.name = None + self.items = [] + self.double_battle = None + self.ai_flags = None + self.mugshot = None + self.starting_status = None + self.party = None + +def convert_trainers(in_path, in_h, parties, out_party): + newlines = 0 + trainer = None + for line_no, line in enumerate(in_h, 1): + try: + line = line[:-1] + if m := begin_trainer_definition.search(line): + if trainer: + raise Exception(f"unexpected start of trainer") + [id_] = m.groups() + trainer = Trainer(id_) + elif m := trainer_class_definition.search(line): + [class_] = m.groups() + class_ = class_.replace("_", " ").title() + for match, replacement in class_fixups.items(): + class_ = class_.replace(match, replacement) + trainer.class_ = class_ + elif m := encounter_music_gender_definition.search(line): + [is_female, music] = m.groups() + trainer.gender = 'Female' if is_female else 'Male' + trainer.encounter_music = music.replace("_", " ").title() + elif m := trainer_pic_definition.search(line): + [pic] = m.groups() + pic = pic.replace("_", " ").title() + for match, replacement in pic_fixups.items(): + pic = pic.replace(match, replacement) + trainer.pic = pic + elif m := trainer_name_definition.search(line): + [name] = m.groups() + trainer.name = name + elif m := trainer_items_definition.search(line): + [items] = m.groups() + trainer.items = " / ".join(item.replace("_", " ").title() for item in trainer_item_definition.findall(items) if item != "NONE") + elif m := trainer_double_battle_definition.search(line): + [double_battle] = m.groups() + if double_battle == 'TRUE': + trainer.double_battle = "Yes" + elif double_battle == 'FALSE': + trainer.double_battle = "No" + else: + raise Exception(f"unknown doubleBattle: '{double_battle}'") + elif m := trainer_ai_flags_definition.search(line): + [ai_flags] = m.groups() + trainer.ai_flags = " / ".join(ai_flag.replace("_", " ").title() for ai_flag in trainer_ai_flag_definition.findall(ai_flags)) + elif m := trainer_mugshot_definition.search(line): + [color] = m.groups() + trainer.mugshot = color.title() + elif m := trainer_starting_status_definition.search(line): + [starting_status] = m.groups() + trainer.starting_status = starting_status.replace("_", " ").title() + elif m := trainer_party_definition.search(line): + [party] = m.groups() + trainer.party = parties[party] + elif end_trainer_definition.search(line): + if not trainer: + raise Exception(f"unexpected end of trainer") + while newlines > 0: + out_party.write(f"\n") + newlines -= 1 + newlines = 1 + out_party.write(f"=== {trainer.id} ===\n") + out_party.write(f"Name: {trainer.name}\n") + out_party.write(f"Class: {trainer.class_}\n") + out_party.write(f"Pic: {trainer.pic}\n") + out_party.write(f"Gender: {trainer.gender}\n") + out_party.write(f"Music: {trainer.encounter_music}\n") + if trainer.items: + out_party.write(f"Items: {trainer.items}\n") + out_party.write(f"Double Battle: {trainer.double_battle}\n") + if trainer.ai_flags: + out_party.write(f"AI: {trainer.ai_flags}\n") + if trainer.mugshot: + out_party.write(f"Mugshot: {trainer.mugshot}\n") + if trainer.starting_status: + out_party.write(f"Starting Status: {trainer.starting_status}\n") + if trainer.party: + for i, pokemon in enumerate(trainer.party): + out_party.write(f"\n") + if pokemon.nickname: + out_party.write(f"{pokemon.nickname} ({pokemon.species})") + else: + out_party.write(f"{pokemon.species}") + if pokemon.gender: + out_party.write(f" ({pokemon.gender})") + if pokemon.item and pokemon.item != 'None': + out_party.write(f" @ {pokemon.item}") + out_party.write(f"\n") + if pokemon.nature: + out_party.write(f"{pokemon.nature} Nature\n") + for key in pokemon_attribute_order: + if key in pokemon.attributes: + out_party.write(f"{key}: {pokemon.attributes[key]}\n") + for move in pokemon.moves: + out_party.write(f"- {move}\n") + trainer = None + elif is_blank.search(line) or is_trainer_skip.search(line): + pass + else: + raise Exception(f"could not parse '{line.strip()}'") + except Exception as e: + print(f"{in_path}:{line_no}: {e}") + +if __name__ == '__main__': + try: + [argv0, trainers_in_path, parties_in_path, out_path] = sys.argv + except: + print(f"usage: python3 {sys.argv[0]} ") + else: + with open(trainers_in_path, "r") as trainers_in_h, open(parties_in_path, "r") as parties_in_h, open(out_path, "w") as out_party: + parties = convert_parties(parties_in_path, parties_in_h) + trainers = convert_trainers(trainers_in_path, trainers_in_h, parties, out_party) diff --git a/migration_scripts/1.9/egg_move_refactor.py b/migration_scripts/1.9/egg_move_refactor.py new file mode 100644 index 000000000000..498fa5da61e7 --- /dev/null +++ b/migration_scripts/1.9/egg_move_refactor.py @@ -0,0 +1,51 @@ +import re +import glob + +eggMoveSpecies = [] + +exceptions = [ # the following exceptions are hardcoded to streamline the process. you may need to manually check what happens in case you have added forms that work similar to these below + ["ShellosWestSea", "Shellos"], + ["OricorioBaile", "Oricorio"] +] + +# convert egg_moves.h to the new format +with open("src/data/pokemon/egg_moves.h", "r") as f: + data = f.read() + +data = re.sub(r"#define(.|\n)*const u16 gEggMoves\[\] = {", "static const u16 sNoneEggMoveLearnset[] = {\n MOVE_UNAVAILABLE,\n};\n", data) # remove and replace header +data = re.sub(r"\n EGG_MOVES_TERMINATOR\n};\n\n", "", data) # remove footer + +for mon in re.findall(r"egg_moves\((.*),", data): + monname = re.sub(r"_", " ", mon).title().replace(" ", "") + for x in exceptions: + if monname == x[0]: + monname = x[1] + # add it to the list for later + eggMoveSpecies.append(monname) + # regex the egg_moves.h file + data = re.sub(r" egg_moves\(" + mon + r",", "static const u16 s%sEggMoveLearnset[] = {" % monname, data) + +data = re.sub(r"\),\n", ",\n MOVE_UNAVAILABLE,\n};\n", data) # add terminator to each old macro + +data = re.sub(r" MOVE_", " MOVE_", data) # fix indentation + +with open("src/data/pokemon/egg_moves.h", "w") as f: + f.write(data) + +# update gBaseStats + +for file in glob.glob('./src/data/pokemon/species_info/gen_*_families.h'): + with open(file, "r") as f: + data = f.read() + + # go through all Pokemon with teachable learnsets that are also in the list, then assign egg moves to them + for mon in eggMoveSpecies: + # first do the plain replacements outside of macros + data = re.sub(r"\.teachableLearnset = s" + mon + r"sTeachableLearnset,\n", ".teachableLearnset = s%sTeachableLearnset,\n .eggMoveLearnset = s%sEggMoveLearnset,\n" % (mon, mon), data) + # check for macros (since they require \ at the end of the line and do those manually) + macrocheck = re.findall(r"\.teachableLearnset = s" + mon + r"TeachableLearnset,( *)\\\\", data) + if len(macrocheck) > 0: + data = re.sub(r"\.teachableLearnset = s" + mon + r"TeachableLearnset," + macrocheck[0] + r"\\\\", ".teachableLearnset = s%sTeachableLearnset,%s\\\\\n .eggMoveLearnset = s%sEggMoveLearnset,%s\\\\" % (mon, macrocheck[0], mon, " " * (len(macrocheck[0]) + 4)), data) + + with open(file, "w") as f: + f.write(data) diff --git a/migration_scripts/README.md b/migration_scripts/README.md index 5845348cdfa1..5ae26c1c0afc 100644 --- a/migration_scripts/README.md +++ b/migration_scripts/README.md @@ -17,9 +17,293 @@ python3 migration_scripts/*.py ; #run the migration script `*` will need to be replaced with the name of the appropriate script. +## 1.8.x to 1.9.x+ + +### Battle Anim Moves + +* Filepath [`migration_scripts/1.9/battle_anim_moves_refactor.py`](1.9/battle_anim_moves_refactor.py) +* Introduced in [Refactor move animations #4683](https://github.com/rh-hideout/pokeemerald-expansion/pull/4683) + +Refactors all battle animation move scripts, removing the list from `data/battle_anim_scripts.s` and linking them to the moves in `gMovesInfo` for easier maintaining. Only necessary if new moves have been added. + +#### [data/battle_anim_scripts.h](../data/battle_anim_scripts.s) +```diff +- .4byte Move_POUND +``` + +#### [include/battle_anim_scripts.h](../include/battle_anim_scripts.h) +```diff ++ extern const u8 Move_POUND[]; +``` + +#### [src/data/moves_info.h](../src/data/moves_info.h) +```diff + [MOVE_POUND] = + { + .name = COMPOUND_STRING("Pound"), + .description = COMPOUND_STRING( + "Pounds the foe with\n" + "forelegs or tail."), + .effect = EFFECT_HIT, + .power = 40, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 35, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .category = DAMAGE_CATEGORY_PHYSICAL, + .makesContact = TRUE, + .ignoresKingsRock = B_UPDATED_MOVE_FLAGS == GEN_4, + .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, + .contestCategory = CONTEST_CATEGORY_TOUGH, + .contestComboStarterId = COMBO_STARTER_POUND, +- .contestComboMoves = {0} ++ .contestComboMoves = {0}, ++ .battleAnimScript = Move_POUND, + }, +``` + +### Item Icons + +* Filepath [`migration_scripts/1.9/convert_item_icons.py`](1.9/convert_item_icons.py) +* Introduced in [Get rid of gItemIconTable #4579](https://github.com/rh-hideout/pokeemerald-expansion/pull/4579) + +Moves all information from `gItemIconTable` to `gItemsInfo`. + +#### [src/data/item_icon_table.h](..src/data/item_icon_table.h) +```diff +- [ITEM_POKE_BALL] = {gItemIcon_PokeBall, gItemIconPalette_PokeBall}, +``` + +#### [src/data/items.h](..src/data/items.h) +```diff + [ITEM_POKE_BALL] = + { + .name = _("Poké Ball"), + .price = 200, + .description = COMPOUND_STRING( + "A tool used for\n" + "catching wild\n" + "Pokémon."), + .pocket = POCKET_POKE_BALLS, + .type = ITEM_USE_BAG_MENU, + .battleUsage = EFFECT_ITEM_THROW_BALL, + .secondaryId = ITEM_POKE_BALL - FIRST_BALL, ++ .iconSprite = gItemIcon_PokeBall, ++ .iconPalette = gItemIconPalette_PokeBall, + }, +``` + +### Partner & Trainer Parties + +* Filepaths [`migration_scripts/1.9/convert_trainer_parties.py`](1.9/convert_trainer_parties.py) and [`migration_scripts/1.9/convert_partner_parties.py`](1.9/convert_trainer_parties.py) +* Introduced in [Competitive-formatted parties #3545](https://github.com/rh-hideout/pokeemerald-expansion/pull/3545) and [Make trainerproc compatible with partners #4421](https://github.com/rh-hideout/pokeemerald-expansion/pull/4421) + +Converts trainer data (for `convert_trainer_parties.py`) and partner data (for `convert_partner_data.py`) to the new `.party` format. Not necessary if `COMPETITIVE_PARTY_SYNTAX` is turned off. + +#### [src/data/trainer_parties.h](..src/data/trainer_parties.h) +```diff +-static const struct TrainerMon sParty_Sawyer1[] = { +- { +- .lvl = 21, +- .species = SPECIES_GEODUDE, +- } +-}; +``` + +#### [src/data/trainers.party](..src/data/trainers.party) +```diff ++=== TRAINER_SAWYER_1 === ++Name: SAWYER ++Class: Hiker ++Pic: Hiker ++Gender: Male ++Music: Hiker ++Double Battle: No ++AI: Check Bad Move / Try To Faint / Check Viability ++ ++Geodude ++Level: 21 ++IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +``` + +#### [src/data/partner_parties.h](..src/data/partner_parties.h) +```diff +-static const struct TrainerMon sParty_StevenPartner[] = { +- { +- .species = SPECIES_METANG, +- .lvl = 42, +- .nature = NATURE_BRAVE, +- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +- .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 6, 0), +- .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW}, +- }, +- { +- .species = SPECIES_SKARMORY, +- .lvl = 43, +- .nature = NATURE_IMPISH, +- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +- .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 6, 252), +- .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING}, +- }, +- { +- .species = SPECIES_AGGRON, +- .lvl = 44, +- .nature = NATURE_ADAMANT, +- .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +- .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 6), +- .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW}, +- } +-}; +``` + +#### [src/data/battle_partners.party](..src/data/battle_partners.party) +```diff ++=== PARTNER_STEVEN === ++Name: STEVEN ++Class: Rival ++Pic: Steven ++Gender: Male ++Music: Male ++ ++Metang ++Brave Nature ++Level: 42 ++IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe ++EVs: 252 Atk / 252 Def / 6 SpA ++- Light Screen ++- Psychic ++- Reflect ++- Metal Claw ++ ++Skarmory ++Impish Nature ++Level: 43 ++IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe ++EVs: 252 HP / 6 SpA / 252 SpD ++- Toxic ++- Aerial Ace ++- Protect ++- Steel Wing ++ ++Aggron ++Adamant Nature ++Level: 44 ++IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe ++EVs: 252 Atk / 252 SpA / 6 SpD ++- Thunder ++- Protect ++- Solar Beam ++- Dragon Claw +``` + +### Egg Move Refactor + +* Filepaths [`migration_scripts/1.9/egg_move_refactor.py`](1.9/egg_move_refactor.py) +* Introduced in [Egg Move Refactor #4534](https://github.com/rh-hideout/pokeemerald-expansion/pull/4534) + +Updates egg moves to the refactored format. Only necessary if new species have been added or if egg moves of an existing species was altered. + +#### [src/data/pokemon/egg_moves.h](..src/data/pokemon/egg_moves.h) +```diff +- egg_moves(BULBASAUR, +- MOVE_SKULL_BASH, +- MOVE_CHARM, +- MOVE_PETAL_DANCE, +- MOVE_MAGICAL_LEAF, +- MOVE_GRASS_WHISTLE, +- MOVE_CURSE, +- MOVE_INGRAIN, +- MOVE_NATURE_POWER, +- MOVE_AMNESIA, +- MOVE_LEAF_STORM, +- MOVE_POWER_WHIP, +- MOVE_SLUDGE, +- MOVE_ENDURE, +- MOVE_GIGA_DRAIN, +- MOVE_GRASSY_TERRAIN), ++static const u16 sBulbasaurEggMoveLearnset[] = { ++ MOVE_SKULL_BASH, ++ MOVE_CHARM, ++ MOVE_PETAL_DANCE, ++ MOVE_MAGICAL_LEAF, ++ MOVE_GRASS_WHISTLE, ++ MOVE_CURSE, ++ MOVE_INGRAIN, ++ MOVE_NATURE_POWER, ++ MOVE_AMNESIA, ++ MOVE_LEAF_STORM, ++ MOVE_POWER_WHIP, ++ MOVE_SLUDGE, ++ MOVE_ENDURE, ++ MOVE_GIGA_DRAIN, ++ MOVE_GRASSY_TERRAIN, ++ MOVE_UNAVAILABLE, +}; +``` + +#### [src/data/pokemon/species_info/gen_1_families.h](..src/data/pokemon/species_info/gen_1_families.h) +```diff + [SPECIES_BULBASAUR] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 49, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = MON_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 = MON_EGG_GROUPS(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, + .frontPic = gMonFrontPic_Bulbasaur, + .frontPicSize = MON_COORDS_SIZE(40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Bulbasaur, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + .backPic = gMonBackPic_Bulbasaur, + .backPicSize = MON_COORDS_SIZE(56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + .palette = gMonPalette_Bulbasaur, + .shinyPalette = gMonShinyPalette_Bulbasaur, + .iconSprite = gMonIcon_Bulbasaur, + .iconPalIndex = 4, + FOOTPRINT(Bulbasaur) + .levelUpLearnset = sBulbasaurLevelUpLearnset, + .teachableLearnset = sBulbasaurTeachableLearnset, ++ .eggMoveLearnset = sBulbasaurEggMoveLearnset, + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), + }, +``` + +## 1.7.x to 1.8.x+ + ### Item Balls -* Filepath [`migration_scripts/item_ball_refactor.py`](item_ball_refactor.py) +* Filepath [`migration_scripts/1.8/item_ball_refactor.py`](1.8/item_ball_refactor.py) * Introduced in [Item Ball refactor / Pluralize item names for giveitem and finditem #3942](https://github.com/rh-hideout/pokeemerald-expansion/pull/3942) Modifies all item ball scripts defined using to original Game Freak method to the new refactored method. @@ -52,3 +336,24 @@ Modifies all item ball scripts defined using to original Game Freak method to th "flag": "FLAG_ITEM_ROUTE_102_POTION" }, ``` + +### Facility Mons + +* Filepath [`migration_scripts/1.9/battle_frontier_convert_parties.py`](1.8/battle_frontier_convert_parties.py) +* Introduced in [Adds battle frontier conversion script #5040](https://github.com/rh-hideout/pokeemerald-expansion/pull/5040) +* Original refactor in [Customizable FrontierMon Sets #4313](https://github.com/rh-hideout/pokeemerald-expansion/pull/4313) + +Replaces itemTableId with heldItem and evSpread with ev. + +#### [src/data/battle_frontier/battle_frontier_mons.h](../src/data/battle_frontier/battle_frontier_mons.h) +```diff + [FRONTIER_MON_SUNKERN] = { + .species = SPECIES_SUNKERN, + .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN}, +- .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, ++ .heldItem = ITEM_LAX_INCENSE, +- .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, ++ .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), + .nature = NATURE_RELAXED + }, +``` \ No newline at end of file diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index 13cb51f53c6b..a6533157ff49 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -1,5 +1,6 @@ .align 2 gCryTable:: +.if P_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE cry Cry_Bulbasaur cry Cry_Ivysaur @@ -2423,9 +2424,11 @@ gCryTable:: .if P_FAMILY_PECHARUNT == TRUE cry Cry_Pecharunt .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED .align 2 gCryTable_Reverse:: +.if P_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE cry_reverse Cry_Bulbasaur cry_reverse Cry_Ivysaur @@ -4849,3 +4852,4 @@ gCryTable_Reverse:: .if P_FAMILY_PECHARUNT == TRUE cry_reverse Cry_Pecharunt .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index cfe5a3b9bb2d..b1cf174150ae 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_CRIES_ENABLED == TRUE .if P_FAMILY_BULBASAUR == TRUE .align 2 Cry_Bulbasaur:: @@ -6153,6 +6154,7 @@ Cry_Terapagos:: Cry_Pecharunt:: .incbin "sound/direct_sound_samples/cries/pecharunt.bin" .endif @ P_FAMILY_PECHARUNT +.endif @ P_CRIES_ENABLED .align 2 DirectSoundWaveData_register_noise:: diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk index c89d6e81cded..a50f48c70762 100644 --- a/spritesheet_rules.mk +++ b/spritesheet_rules.mk @@ -1,5 +1,7 @@ +POKEMONGFXDIR := graphics/pokemon OBJEVENTGFXDIR := graphics/object_events/pics FLDEFFGFXDIR := graphics/field_effects/pics +MISCGFXDIR := graphics/misc $(OBJEVENTGFXDIR)/people/brendan/walking.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -405,70 +407,71 @@ $(OBJEVENTGFXDIR)/people/youngster.4bpp: %.4bpp: %.png -$(OBJEVENTGFXDIR)/pokemon/azumarill.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/azumarill.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/azurill.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/azurill.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/deoxys.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/deoxys.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/dusclops.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/dusclops.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/enemy_zigzagoon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/enemy_zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/groudon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/groudon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/ho_oh.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/ho_oh.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/kecleon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/kecleon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/kirlia.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/kirlia.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/kyogre.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/kyogre.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/latias_latios.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/latias_latios.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/lugia.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/lugia.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/mew.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/mew.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/pikachu.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/pikachu.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/poochyena.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/poochyena.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/rayquaza.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/rayquaza_cutscene.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 8 -mheight 8 -$(OBJEVENTGFXDIR)/pokemon/skitty.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/skitty.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/sudowoodo.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/sudowoodo_tree.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/vigoroth.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/vigoroth_mover.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 4 -$(OBJEVENTGFXDIR)/pokemon/wingull.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/wingull.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 -$(OBJEVENTGFXDIR)/pokemon/zigzagoon.4bpp: %.4bpp: %.png +$(OBJEVENTGFXDIR)/pokemon_old/zigzagoon.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 - +$(OBJEVENTGFXDIR)/misc/ball_poke.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 4 $(OBJEVENTGFXDIR)/berry_trees/aguav.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -641,6 +644,16 @@ $(FLDEFFGFXDIR)/jump_tall_grass.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/bike_tire_tracks.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/slither_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/bug_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(FLDEFFGFXDIR)/spot_tracks.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + $(FLDEFFGFXDIR)/bubbles.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 @@ -718,6 +731,3273 @@ $(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png $(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 4 -mheight 1 + +$(POKEMONGFXDIR)/question_mark/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bulbasaur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ivysaur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/venusaur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/charmander/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/charmeleon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/charizard/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/squirtle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wartortle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blastoise/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/caterpie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/metapod/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/butterfree/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/weedle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kakuna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/beedrill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pidgey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pidgeotto/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pidgeot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rattata/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raticate/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spearow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fearow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ekans/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arbok/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pikachu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raichu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandshrew/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandslash/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidoran_f/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidorina/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidoqueen/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidoran_m/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidorino/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nidoking/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clefairy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clefable/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vulpix/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ninetales/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jigglypuff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wigglytuff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zubat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golbat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/oddish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gloom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vileplume/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/paras/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/parasect/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/venonat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/venomoth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/diglett/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dugtrio/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meowth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/persian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/psyduck/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golduck/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mankey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/primeape/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/growlithe/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arcanine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/poliwag/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/poliwhirl/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/poliwrath/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/abra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kadabra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/alakazam/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/machop/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/machoke/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/machamp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bellsprout/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/weepinbell/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/victreebel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tentacool/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tentacruel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/geodude/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/graveler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ponyta/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rapidash/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowpoke/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowbro/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magnemite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magneton/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/farfetchd/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/doduo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dodrio/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dewgong/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grimer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/muk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shellder/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cloyster/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gastly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/haunter/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gengar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/onix/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drowzee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hypno/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/krabby/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kingler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/voltorb/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/electrode/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/exeggcute/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/exeggutor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cubone/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/marowak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hitmonlee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hitmonchan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lickitung/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/koffing/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/weezing/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rhyhorn/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rhydon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chansey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tangela/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kangaskhan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/horsea/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seadra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/goldeen/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seaking/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/staryu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/starmie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mr_mime/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scyther/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jynx/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/electabuzz/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magmar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pinsir/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tauros/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magikarp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gyarados/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lapras/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ditto/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eevee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vaporeon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jolteon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flareon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/porygon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/omanyte/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/omastar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kabuto/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kabutops/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aerodactyl/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/snorlax/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/articuno/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zapdos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/moltres/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dratini/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dragonair/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dragonite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mewtwo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mew/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chikorita/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bayleef/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meganium/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cyndaquil/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/quilava/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/typhlosion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/totodile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/croconaw/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/feraligatr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sentret/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furret/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hoothoot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/noctowl/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ledyba/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ledian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spinarak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ariados/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/crobat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chinchou/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lanturn/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pichu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cleffa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/igglybuff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/togepi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/togetic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/natu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/xatu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mareep/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flaaffy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ampharos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bellossom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/marill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/azumarill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sudowoodo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/politoed/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hoppip/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skiploom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jumpluff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aipom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sunkern/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sunflora/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yanma/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wooper/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/quagsire/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/espeon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/umbreon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/murkrow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowking/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/misdreavus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/b/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/c/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/d/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/e/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/f/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/g/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/h/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/i/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/j/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/k/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/l/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/m/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/n/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/o/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/p/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/q/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/r/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/s/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/t/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/u/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/v/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/w/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/x/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/y/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/z/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/exclamation_mark/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unown/question_mark/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wobbuffet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/girafarig/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pineco/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/forretress/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dunsparce/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gligar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/steelix/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/snubbull/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/granbull/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/qwilfish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scizor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shuckle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/heracross/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sneasel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/teddiursa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ursaring/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slugma/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magcargo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swinub/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/piloswine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/corsola/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/remoraid/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/octillery/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/delibird/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mantine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skarmory/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/houndour/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/houndoom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kingdra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/phanpy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/donphan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/porygon2/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stantler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/smeargle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tyrogue/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hitmontop/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/smoochum/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/elekid/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magby/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/miltank/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blissey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raikou/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/entei/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/suicune/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/larvitar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pupitar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tyranitar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lugia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/ho_oh/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/celebi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/treecko/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grovyle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sceptile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/torchic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/combusken/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blaziken/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mudkip/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/marshtomp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swampert/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/poochyena/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mightyena/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zigzagoon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/linoone/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wurmple/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/silcoon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/beautifly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cascoon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dustox/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lotad/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lombre/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ludicolo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seedot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nuzleaf/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shiftry/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/taillow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swellow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wingull/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pelipper/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ralts/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kirlia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gardevoir/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/surskit/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/masquerain/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shroomish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/breloom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slakoth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vigoroth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slaking/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nincada/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ninjask/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shedinja/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/whismur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/loudred/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/exploud/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/makuhita/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hariyama/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/azurill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nosepass/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skitty/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/delcatty/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sableye/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mawile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aron/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lairon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aggron/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meditite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/medicham/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/electrike/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/manectric/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/plusle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/minun/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/volbeat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/illumise/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/roselia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gulpin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swalot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/carvanha/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sharpedo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wailmer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wailord/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/numel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/camerupt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/torkoal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spoink/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grumpig/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spinda/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/trapinch/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vibrava/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flygon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cacnea/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cacturne/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swablu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/altaria/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zangoose/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seviper/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lunatone/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/solrock/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/barboach/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/whiscash/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/corphish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/crawdaunt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/baltoy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/claydol/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lileep/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cradily/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/anorith/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/armaldo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/feebas/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/milotic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/castform/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/castform/sunny/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/castform/rainy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/castform/snowy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kecleon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shuppet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/banette/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/duskull/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dusclops/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tropius/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chimecho/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/absol/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wynaut/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/snorunt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/glalie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spheal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sealeo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/walrein/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clamperl/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/huntail/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gorebyss/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/relicanth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/luvdisc/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bagon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shelgon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/salamence/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/beldum/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/metang/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/metagross/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/regirock/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/regice/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/registeel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/latias/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/latios/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kyogre/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/groudon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/rayquaza/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/jirachi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deoxys/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/turtwig/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grotle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/torterra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chimchar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/monferno/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/infernape/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/piplup/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/prinplup/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/empoleon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/starly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/staravia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/staraptor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bidoof/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bibarel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kricketot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kricketune/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shinx/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/luxio/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/luxray/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/budew/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/roserade/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cranidos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rampardos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shieldon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bastiodon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/burmy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wormadam/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mothim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/combee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vespiquen/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pachirisu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/buizel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floatzel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cherubi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cherrim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shellos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gastrodon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ambipom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drifloon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drifblim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/buneary/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lopunny/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mismagius/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/honchkrow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/glameow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/purugly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chingling/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stunky/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skuntank/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bronzor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bronzong/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bonsly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mime_jr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/happiny/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chatot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spiritomb/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gible/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gabite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/garchomp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/munchlax/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/riolu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lucario/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hippopotas/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hippowdon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skorupi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drapion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/croagunk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toxicroak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/carnivine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/finneon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lumineon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mantyke/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/snover/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/abomasnow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/weavile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magnezone/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lickilicky/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rhyperior/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tangrowth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/electivire/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magmortar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/togekiss/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yanmega/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/leafeon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/glaceon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gliscor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mamoswine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/porygon_z/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gallade/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/probopass/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dusknoir/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/froslass/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/uxie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mesprit/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/azelf/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dialga/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/palkia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/heatran/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/regigigas/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/giratina/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/cresselia/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/phione/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/manaphy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/darkrai/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shaymin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arceus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/victini/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/snivy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/servine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/serperior/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tepig/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pignite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/emboar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/oshawott/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dewott/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/samurott/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/patrat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/watchog/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lillipup/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/herdier/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stoutland/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/purrloin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/liepard/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pansage/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/simisage/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pansear/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/simisear/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/panpour/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/simipour/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/munna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/musharna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pidove/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tranquill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/unfezant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blitzle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zebstrika/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/roggenrola/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/boldore/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gigalith/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/woobat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swoobat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drilbur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/excadrill/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/audino/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/timburr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gurdurr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/conkeldurr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tympole/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/palpitoad/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/seismitoad/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/throh/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sawk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sewaddle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swadloon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/leavanny/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/venipede/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/whirlipede/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scolipede/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cottonee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/whimsicott/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/petilil/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lilligant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/basculin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/krokorok/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/krookodile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/darumaka/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/darmanitan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/maractus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dwebble/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/crustle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scraggy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scrafty/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sigilyph/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yamask/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cofagrigus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tirtouga/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/carracosta/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/archen/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/archeops/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/trubbish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/garbodor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zorua/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zoroark/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/minccino/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cinccino/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gothita/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gothorita/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gothitelle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/solosis/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/duosion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/reuniclus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ducklett/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swanna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vanillite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vanillish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vanilluxe/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deerling/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sawsbuck/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/emolga/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/karrablast/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/escavalier/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/foongus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/amoonguss/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/frillish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jellicent/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/alomomola/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/joltik/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/galvantula/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ferroseed/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ferrothorn/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/klink/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/klang/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/klinklang/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tynamo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eelektrik/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eelektross/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/elgyem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/beheeyem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/litwick/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lampent/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chandelure/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/axew/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fraxure/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/haxorus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cubchoo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/beartic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cryogonal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shelmet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/accelgor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stunfisk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mienfoo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mienshao/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/druddigon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golett/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golurk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pawniard/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bisharp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bouffalant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rufflet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/braviary/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vullaby/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mandibuzz/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/heatmor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/durant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deino/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zweilous/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hydreigon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/larvesta/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/volcarona/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cobalion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/terrakion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/virizion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tornadus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/thundurus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/reshiram/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/zekrom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/landorus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kyurem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/keldeo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meloetta/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/genesect/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chespin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/quilladin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chesnaught/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fennekin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/braixen/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/delphox/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/froakie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/frogadier/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/greninja/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bunnelby/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/diggersby/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fletchling/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fletchinder/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/talonflame/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scatterbug/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spewpa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/litleo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pyroar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flabebe/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/florges/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skiddo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gogoat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pancham/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pangoro/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/espurr/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meowstic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meowstic/female/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/honedge/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/doublade/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aegislash/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spritzee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aromatisse/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/swirlix/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slurpuff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/inkay/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/malamar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/binacle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/barbaracle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skrelp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dragalge/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clauncher/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clawitzer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/helioptile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/heliolisk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tyrunt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tyrantrum/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/amaura/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/aurorus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sylveon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hawlucha/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dedenne/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/carbink/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/goomy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sliggoo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/goodra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/klefki/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/phantump/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/trevenant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pumpkaboo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gourgeist/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bergmite/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/avalugg/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/noibat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/noivern/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/xerneas/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/yveltal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/zygarde/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/diancie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hoopa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/volcanion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rowlet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dartrix/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/decidueye/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/litten/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/torracat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/incineroar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/popplio/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/brionne/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/primarina/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pikipek/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/trumbeak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toucannon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yungoos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gumshoos/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grubbin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/charjabug/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vikavolt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/crabrawler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/crabominable/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/oricorio/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cutiefly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ribombee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rockruff/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lycanroc/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lycanroc/dusk/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lycanroc/midnight/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wishiwashi/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mareanie/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toxapex/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mudbray/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mudsdale/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dewpider/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/araquanid/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/fomantis/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lurantis/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/morelull/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shiinotic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/salandit/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/salazzle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stufful/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bewear/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bounsweet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/steenee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tsareena/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/comfey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/oranguru/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/passimian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wimpod/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golisopod/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandygast/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/palossand/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pyukumuku/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/type_null/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/silvally/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/minior/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/komala/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/turtonator/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/togedemaru/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mimikyu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/bruxish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drampa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dhelmise/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/jangmo_o/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hakamo_o/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kommo_o/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tapu_koko/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tapu_lele/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tapu_bulu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/tapu_fini/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cosmog/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cosmoem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/solgaleo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lunala/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nihilego/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/buzzwole/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pheromosa/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/xurkitree/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/celesteela/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kartana/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/guzzlord/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/necrozma/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/necrozma/dawn_wings/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/necrozma/dusk_mane/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/magearna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/marshadow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/poipole/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/naganadel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stakataka/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blacephalon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zeraora/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meltan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/melmetal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grookey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/thwackey/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rillaboom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/scorbunny/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raboot/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cinderace/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sobble/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drizzile/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/inteleon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/skwovet/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/greedent/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rookidee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/corvisquire/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/corviknight/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/blipbug/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dottler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/orbeetle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/nickit/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/thievul/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gossifleur/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eldegoss/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wooloo/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dubwool/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/chewtle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drednaw/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yamper/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/boltund/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rolycoly/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/carkol/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/coalossal/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/applin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flapple/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/appletun/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/silicobra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandaconda/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cramorant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arrokuda/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/barraskewda/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toxel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toxtricity/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/toxtricity/low_key/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sizzlipede/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/centiskorch/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/clobbopus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grapploct/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sinistea/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/polteageist/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hatenna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hattrem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hatterene/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/impidimp/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/morgrem/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grimmsnarl/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/obstagoon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/perrserker/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cursola/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sirfetchd/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mr_rime/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/runerigus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/milcery/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/alcremie/strawberry/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/falinks/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/pincurchin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/snom/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/frosmoth/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stonjourner/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eiscue/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/indeedee/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/morpeko/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/cufant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/copperajah/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dracozolt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arctozolt/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dracovish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arctovish/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/duraludon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dreepy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/drakloak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dragapult/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zacian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zacian/crowned_sword/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zamazenta/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zamazenta/crowned_shield/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/eternatus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kubfu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/urshifu/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zarude/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/regieleki/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/regidrago/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/glastrier/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/spectrier/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/calyrex/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/calyrex/shadow_rider/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/calyrex/ice_rider/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zapdos/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meowth/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ponyta/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rapidash/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowpoke/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowbro/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/farfetchd/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/weezing/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/mr_mime/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/articuno/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/moltres/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/slowking/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/corsola/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zigzagoon/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/linoone/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/darumaka/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/darmanitan/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/yamask/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/stunfisk/galarian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/growlithe/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/arcanine/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/voltorb/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/electrode/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/braviary/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/qwilfish/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sneasel/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zorua/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/zoroark/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/samurott/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/lilligant/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sliggoo/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/goodra/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/avalugg/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/decidueye/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/typhlosion/hisuian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dialga/origin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/palkia/origin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/wyrdeer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/kleavor/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/basculin/white_striped/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/basculegion/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/basculegion/female/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ursaluna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sneasler/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/overqwil/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/enamorus/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/enamorus/therian/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/pichu/spiky_eared/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deoxys/attack/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deoxys/defense/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deoxys/speed/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/burmy/sandy_cloak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/burmy/trash_cloak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wormadam/sandy_cloak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/wormadam/trash_cloak/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/shellos/east_sea/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/gastrodon/east_sea/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/heat/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/wash/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/frost/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/fan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/rotom/mow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/giratina/origin/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/fighting/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/flying/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/poison/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/ground/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/rock/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/bug/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/ghost/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/steel/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/fire/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/water/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/grass/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/electric/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/psychic/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/ice/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/dragon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/dark/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/arceus/fairy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/basculin/blue_striped/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deerling/autumn/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deerling/summer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/deerling/winter/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sawsbuck/autumn/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sawsbuck/summer/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sawsbuck/winter/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meloetta/pirouette/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/polar/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/tundra/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/continental/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/garden/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/elegant/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/modern/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/marine/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/archipelago/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/high_plains/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/sandstorm/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/river/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/monsoon/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/savanna/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/sun/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/ocean/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/jungle/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/fancy/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/poke_ball/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vivillon/meadow/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flabebe/yellow_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flabebe/blue_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flabebe/orange_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/flabebe/white_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/yellow_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/blue_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/orange_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/white_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/floette/eternal_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/florges/yellow_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/florges/blue_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/florges/orange_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/florges/white_flower/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/heart_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/star_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/diamond_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/debutante_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/matron_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/dandy_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/la_reine_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/kabuki_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/furfrou/pharaoh_trim/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/hoopa/unbound/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/rattata/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raticate/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/raichu/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandshrew/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/sandslash/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/vulpix/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/ninetales/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/diglett/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/dugtrio/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/meowth/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/persian/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/geodude/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/graveler/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/golem/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/grimer/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/muk/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(POKEMONGFXDIR)/exeggutor/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 8 -mheight 8 + +$(POKEMONGFXDIR)/marowak/alolan/overworld.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 4 -mheight 4 + +$(MISCGFXDIR)/emotes.4bpp: %.4bpp: %.png + $(GFX) $< $@ -mwidth 2 -mheight 2 + +# All pokeballs are 16x32 +$(OBJEVENTGFXDIR)/misc/ball_%.4bpp: $(OBJEVENTGFXDIR)/misc/ball_%.png ; $(GFX) $< $@ -mwidth 2 -mheight 4 graphics/door_anims/battle_tower_multi_corridor.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 4 diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 7c445cd7fb7e..08b8e4335cec 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -9,6 +9,7 @@ #include "battle_factory.h" #include "battle_setup.h" #include "battle_z_move.h" +#include "battle_terastal.h" #include "data.h" #include "debug.h" #include "event_data.h" @@ -17,6 +18,7 @@ #include "random.h" #include "recorded_battle.h" #include "util.h" +#include "script.h" #include "constants/abilities.h" #include "constants/battle_ai.h" #include "constants/battle_move_effects.h" @@ -38,6 +40,7 @@ static bool32 IsPinchBerryItemEffect(u32 holdEffect); // ewram EWRAM_DATA const u8 *gAIScriptPtr = NULL; // Still used in contests EWRAM_DATA u8 sBattler_AI = 0; +EWRAM_DATA AiScoreFunc sDynamicAiFunc = NULL; // const rom data static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); @@ -53,6 +56,7 @@ static s32 AI_Safari(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); static s32 AI_FirstBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); +static s32 AI_DynamicFunc(u32 battlerAtk, u32 battlerDef, u32 move, s32 score); static s32 (*const sBattleAiFuncTable[])(u32, u32, u32, s32) = @@ -69,7 +73,7 @@ static s32 (*const sBattleAiFuncTable[])(u32, u32, u32, s32) = [9] = AI_PowerfulStatus, // AI_FLAG_POWERFUL_STATUS [10] = NULL, // AI_FLAG_NEGATE_UNAWARE [11] = NULL, // AI_FLAG_WILL_SUICIDE - [12] = NULL, // AI_FLAG_HELP_PARTNER + [12] = NULL, // Unused [13] = NULL, // Unused [14] = NULL, // Unused [15] = NULL, // Unused @@ -85,7 +89,7 @@ static s32 (*const sBattleAiFuncTable[])(u32, u32, u32, s32) = [25] = NULL, // Unused [26] = NULL, // Unused [27] = NULL, // Unused - [28] = NULL, // Unused + [28] = AI_DynamicFunc, // AI_FLAG_DYNAMIC_FUNC [29] = AI_Roaming, // AI_FLAG_ROAMING [30] = AI_Safari, // AI_FLAG_SAFARI [31] = AI_FirstBattle, // AI_FLAG_FIRST_BATTLE @@ -179,6 +183,9 @@ static u32 GetAiFlags(u16 trainerId) if (flags & AI_FLAG_SMART_SWITCHING) flags |= AI_FLAG_SMART_MON_CHOICES; + if (sDynamicAiFunc != NULL) + flags |= AI_FLAG_DYNAMIC_FUNC; + return flags; } @@ -420,6 +427,8 @@ static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u3 moves = GetMovesArray(battlerAtk); weather = AI_GetWeather(aiData); + SetBattlerData(battlerAtk); + // Simulate dmg for both ai controlled mons and for player controlled mons. for (battlerDef = 0; battlerDef < battlersCount; battlerDef++) { @@ -427,9 +436,10 @@ static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u3 continue; SaveBattlerData(battlerDef); + SetBattlerData(battlerDef); for (i = 0; i < MAX_MON_MOVES; i++) { - s32 dmg = 0; + struct SimulatedDamage dmg = {0}; u8 effectiveness = AI_EFFECTIVENESS_x0; u32 move = moves[i]; @@ -438,13 +448,20 @@ static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u3 //&& gMovesInfo[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); + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY) + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather, DMG_ROLL_HIGHEST); + else if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_CONSERVATIVE) + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather, DMG_ROLL_LOWEST); + else + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather, DMG_ROLL_DEFAULT); aiData->moveAccuracy[battlerAtk][battlerDef][i] = Ai_SetMoveAccuracy(aiData, battlerAtk, battlerDef, move); } aiData->simulatedDmg[battlerAtk][battlerDef][i] = dmg; aiData->effectiveness[battlerAtk][battlerDef][i] = effectiveness; } + RestoreBattlerData(battlerDef); } + RestoreBattlerData(battlerAtk); } void SetAiLogicDataForTurn(struct AiLogicData *aiData) @@ -508,7 +525,8 @@ static bool32 AI_ShouldSwitchIfBadMoves(u32 battler, bool32 doubleBattle) if (CountUsablePartyMons(battler) > 0 && !IsBattlerTrapped(battler, TRUE) && !(gBattleTypeFlags & (BATTLE_TYPE_ARENA | BATTLE_TYPE_PALACE)) - && AI_THINKING_STRUCT->aiFlags[battler] & (AI_FLAG_CHECK_VIABILITY | AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_PREFER_BATON_PASS)) + && AI_THINKING_STRUCT->aiFlags[battler] & (AI_FLAG_CHECK_VIABILITY | AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_PREFER_BATON_PASS) + && !(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SEQUENCE_SWITCHING)) { // Consider switching if all moves are worthless to use. if (GetTotalBaseStat(gBattleMons[battler].species) >= 310 // Mon is not weak. @@ -549,7 +567,7 @@ static bool32 AI_ShouldSwitchIfBadMoves(u32 battler, bool32 doubleBattle) // Consider switching if your mon with truant is bodied by Protect spam. // Or is using a double turn semi invulnerable move(such as Fly) and is faster. - if (GetBattlerAbility(battler) == ABILITY_TRUANT + if (AI_DATA->abilities[battler] == ABILITY_TRUANT && IsTruantMonVulnerable(battler, gBattlerTarget) && gDisableStructs[battler].truantCounter && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 @@ -813,7 +831,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (gMovesInfo[move].powderMove && !IsAffectedByPowder(battlerDef, aiData->abilities[battlerDef], aiData->holdEffects[battlerDef])) RETURN_SCORE_MINUS(10); - if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_IsFaster(battlerAtk, battlerDef, move)) RETURN_SCORE_MINUS(10); if (IsTwoTurnNotSemiInvulnerableMove(battlerAtk, move) && CanTargetFaintAi(battlerDef, battlerAtk)) @@ -1084,7 +1102,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (moveEffect) { case EFFECT_HIT: // only applies to Vital Throw - if (gMovesInfo[move].priority < 0 && AI_STRIKES_FIRST(battlerAtk, battlerDef, move) && aiData->hpPercents[battlerAtk] < 40) + if (gMovesInfo[move].priority < 0 && AI_IsFaster(battlerAtk, battlerDef, move) && aiData->hpPercents[battlerAtk] < 40) ADJUST_SCORE(-2); // don't want to move last break; default: @@ -1377,9 +1395,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_EVASION_DOWN: case EFFECT_EVASION_DOWN_2: - if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_EVASION)) - ADJUST_SCORE(-10); - break; case EFFECT_TICKLE: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) ADJUST_SCORE(-10); @@ -1442,8 +1457,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_MIRROR_COAT: if (IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) || gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION)) ADJUST_SCORE(-1); - if (predictedMove == MOVE_NONE || GetBattleMoveCategory(predictedMove) == DAMAGE_CATEGORY_STATUS + if ((predictedMove == MOVE_NONE || GetBattleMoveCategory(predictedMove) == DAMAGE_CATEGORY_STATUS || DoesSubstituteBlockMove(battlerAtk, BATTLE_PARTNER(battlerDef), predictedMove)) + && !(predictedMove == MOVE_NONE && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY))) // Let Risky AI predict blindly based on stats ADJUST_SCORE(-10); break; @@ -1452,7 +1468,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_SUCTION_CUPS) ADJUST_SCORE(-10); - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); break; case EFFECT_TOXIC_THREAD: @@ -1485,7 +1501,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) return 0; if (!ShouldTryOHKO(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move)) ADJUST_SCORE(-10); - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); break; case EFFECT_MIST: @@ -1524,13 +1540,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-3); break; case EFFECT_DISABLE: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); else if (gDisableStructs[battlerDef].disableTimer == 0 && (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 (AI_IsFaster(battlerAtk, battlerDef, move)) // Attacker should go first { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) ADJUST_SCORE(-10); // no anticipated move to disable @@ -1546,13 +1562,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_ENCORE: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); else if (gDisableStructs[battlerDef].encoreTimer == 0 && (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 (AI_IsFaster(battlerAtk, battlerDef, move)) // Attacker should go first { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) ADJUST_SCORE(-10); // no anticipated move to encore @@ -1762,7 +1778,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_TORMENT: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); else if (gBattleMons[battlerDef].status2 & STATUS2_TORMENT || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) @@ -1901,7 +1917,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_MORNING_SUN: case EFFECT_SYNTHESIS: case EFFECT_MOONLIGHT: - if ((AI_GetWeather(aiData) & (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_HAIL))) + if ((AI_GetWeather(aiData) & (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_HAIL | B_WEATHER_SNOW | B_WEATHER_FOG))) ADJUST_SCORE(-3); else if (AtMaxHp(battlerAtk)) ADJUST_SCORE(-10); @@ -1919,7 +1935,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-8); //No point in healing, but should at least do it if nothing better break; case EFFECT_RECOIL_IF_MISS: - if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] < 75) + if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] < 75 + && !(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY)) ADJUST_SCORE(-6); break; case EFFECT_TRANSFORM: @@ -1929,7 +1946,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_SPITE: case EFFECT_MIMIC: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first + if (AI_IsFaster(battlerAtk, battlerDef, move)) // Attacker should go first { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) @@ -1967,7 +1984,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_DESTINY_BOND: if (gBattleMons[battlerDef].status2 & STATUS2_DESTINY_BOND) ADJUST_SCORE(-10); - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); break; case EFFECT_HEAL_BELL: @@ -2074,7 +2091,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (isDoubleBattle) { if (IsHazardMoveEffect(gMovesInfo[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 + && AI_IsFaster(BATTLE_PARTNER(battlerAtk), battlerAtk, aiData->partnerMove)) // partner is going to set up before the potential Defog { ADJUST_SCORE(-10); break; // Don't use Defog if partner is going to set up hazards @@ -2102,7 +2119,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_SEMI_INVULNERABLE: if (predictedMove != MOVE_NONE - && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER + && AI_IsSlower(battlerAtk, battlerDef, move) && gMovesInfo[predictedMove].effect == EFFECT_SEMI_INVULNERABLE) ADJUST_SCORE(-10); // Don't Fly/dig/etc if opponent is going to fly/dig/etc after you @@ -2121,7 +2138,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_NATURE_POWER: - return AI_CheckBadMove(battlerAtk, battlerDef, GetNaturePowerMove(), score); + return AI_CheckBadMove(battlerAtk, battlerDef, GetNaturePowerMove(battlerAtk), score); case EFFECT_TAUNT: if (gDisableStructs[battlerDef].tauntTimer > 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) @@ -2165,7 +2182,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || gAbilitiesInfo[aiData->abilities[battlerDef]].cantBeSwapped || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); break; case EFFECT_WORRY_SEED: @@ -2185,7 +2202,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || gAbilitiesInfo[aiData->abilities[battlerDef]].cantBeOverwritten || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); break; case EFFECT_SIMPLE_BEAM: @@ -2286,7 +2303,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ME_FIRST: if (predictedMove != MOVE_NONE) { - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) + if (AI_IsSlower(battlerAtk, battlerDef, move)) ADJUST_SCORE(-10); // Target is predicted to go first, Me First will fail else return AI_CheckBadMove(battlerAtk, battlerDef, predictedMove, score); @@ -2432,20 +2449,20 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) 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)) + || (GetBattlerType(battlerDef, 0, FALSE) == TYPE_WATER + && GetBattlerType(battlerDef, 1, FALSE) == TYPE_WATER + && GetBattlerType(battlerDef, 2, FALSE) == TYPE_MYSTERY)) 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)) + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove) || GetActiveGimmick(battlerDef) == GIMMICK_TERA) ADJUST_SCORE(-10); break; case MOVE_FORESTS_CURSE: - if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove) || GetActiveGimmick(battlerDef) == GIMMICK_TERA) ADJUST_SCORE(-10); break; } @@ -2469,7 +2486,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_ELECTRIFY: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER + if (AI_IsSlower(battlerAtk, battlerDef, move) //|| GetMoveTypeSpecial(battlerDef, predictedMove) == TYPE_ELECTRIC // Move will already be electric type || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); @@ -2498,7 +2515,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_INSTRUCT: { u16 instructedMove; - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) + if (AI_IsSlower(battlerAtk, battlerDef, move)) instructedMove = predictedMove; else instructedMove = gLastMoves[battlerDef]; @@ -2513,7 +2530,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { ADJUST_SCORE(-10); } - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) ADJUST_SCORE(-10); else if (isDoubleBattle) { @@ -2537,21 +2554,21 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_QUASH: if (!isDoubleBattle - || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER + || AI_IsSlower(battlerAtk, battlerDef, move) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) ADJUST_SCORE(-10); break; case EFFECT_AFTER_YOU: if (!IS_TARGETING_PARTNER(battlerAtk, battlerDef) || !isDoubleBattle - || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER + || AI_IsSlower(battlerAtk, battlerDef, move) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) 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 + if (IS_MOVE_STATUS(predictedMove) || AI_IsSlower(battlerAtk, battlerDef, move)) // Opponent going first ADJUST_SCORE(-10); } break; @@ -2581,9 +2598,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_SYNCHRONOISE: //Check holding ring target or is of same type if (aiData->holdEffects[battlerDef] == HOLD_EFFECT_RING_TARGET - || IS_BATTLER_OF_TYPE(battlerDef, GetBattlerType(battlerAtk, 0)) - || IS_BATTLER_OF_TYPE(battlerDef, GetBattlerType(battlerAtk, 1)) - || IS_BATTLER_OF_TYPE(battlerDef, GetBattlerType(battlerAtk, 2))) + || DoBattlersShareType(battlerAtk, battlerDef)) break; else ADJUST_SCORE(-10); @@ -2595,8 +2610,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-1); break; case EFFECT_FLAIL: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER // Opponent should go first - || aiData->hpPercents[battlerAtk] > 50) + if (AI_IsSlower(battlerAtk, battlerDef, move) // Opponent should go first + || aiData->hpPercents[battlerAtk] > 50) ADJUST_SCORE(-4); break; //TODO @@ -2632,7 +2647,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) else if (CanAIFaintTarget(battlerAtk, battlerDef, 0)) ADJUST_SCORE(-10); else if (CanTargetFaintAi(battlerDef, battlerAtk) - && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) + && AI_IsSlower(battlerAtk, battlerDef, move)) ADJUST_SCORE(-10); break; case EFFECT_JUNGLE_HEALING: @@ -2651,14 +2666,38 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) ADJUST_SCORE(-10); break; + case EFFECT_SPICY_EXTRACT: + if (battlerAtk != BATTLE_PARTNER(battlerDef) + && (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL) + || aiData->abilities[battlerDef] == ABILITY_CLEAR_BODY + || aiData->abilities[battlerDef] == ABILITY_GOOD_AS_GOLD + || aiData->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET)) + ADJUST_SCORE(-10); + break; case EFFECT_UPPER_HAND: - if (predictedMove == MOVE_NONE || IS_MOVE_STATUS(predictedMove) || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER || GetMovePriority(battlerDef, predictedMove) < 1 || GetMovePriority(battlerDef, predictedMove) > 3) // Opponent going first or not using priority move + if (predictedMove == MOVE_NONE || IS_MOVE_STATUS(predictedMove) || AI_IsSlower(battlerAtk, battlerDef, move) || GetMovePriority(battlerDef, predictedMove) < 1 || GetMovePriority(battlerDef, predictedMove) > 3) // Opponent going first or not using priority move ADJUST_SCORE(-10); break; case EFFECT_PLACEHOLDER: return 0; // cannot even select } // move effect checks + // Choice items + if (HOLD_EFFECT_CHOICE(aiData->holdEffects[battlerAtk]) && gBattleMons[battlerAtk].ability != ABILITY_KLUTZ) + { + // Don't use user-target moves ie. Swords Dance, with exceptions + if ((moveTarget & MOVE_TARGET_USER) + && moveEffect != EFFECT_DESTINY_BOND && moveEffect != EFFECT_WISH && moveEffect != EFFECT_HEALING_WISH + && !(moveEffect == EFFECT_AURORA_VEIL && (AI_GetWeather(aiData) & (B_WEATHER_SNOW | B_WEATHER_HAIL)))) + ADJUST_SCORE(-30); + // Don't use a status move if the mon is the last one in the party, has no good switchin, or is trapped + else if (GetBattleMoveCategory(move) == DAMAGE_CATEGORY_STATUS + && (CountUsablePartyMons(battlerAtk) < 1 + || AI_DATA->mostSuitableMonId[battlerAtk] == PARTY_SIZE + || IsBattlerTrapped(battlerAtk, TRUE))) + ADJUST_SCORE(-30); + } + if (score < 0) score = 0; @@ -2677,7 +2716,7 @@ static s32 AI_TryToFaint(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, 0) && gMovesInfo[move].effect != EFFECT_EXPLOSION) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) + if (AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE(FAST_KILL); else ADJUST_SCORE(SLOW_KILL); @@ -2743,7 +2782,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // Adjust for always crit moves if (gMovesInfo[aiData->partnerMove].alwaysCriticalHit && aiData->abilities[battlerAtk] == ABILITY_ANGER_POINT) { - if (AI_WhoStrikesFirst(battlerAtk, battlerAtkPartner, move) == AI_IS_SLOWER) // Partner moving first + if (AI_IsSlower(battlerAtk, battlerAtkPartner, move)) // Partner moving first { // discourage raising our attack since it's about to be maxed out if (IsAttackBoostMoveEffect(effect)) @@ -2781,6 +2820,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || gMovesInfo[aiData->partnerMove].criticalHitStage > 0 || HasMoveWithCriticalHitChance(battlerAtkPartner)) ADJUST_SCORE(GOOD_EFFECT); + break; } // our effect relative to partner // consider global move effects @@ -2922,6 +2962,12 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { switch (effect) { + case EFFECT_SPICY_EXTRACT: + if (AI_ShouldSpicyExtract(battlerAtk, battlerAtkPartner, move, aiData)) + { + RETURN_SCORE_PLUS(GOOD_EFFECT); + } + break; case EFFECT_PURIFY: if (gBattleMons[battlerAtkPartner].status1 & STATUS1_ANY) { @@ -2995,9 +3041,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_SOAK: if (atkPartnerAbility == ABILITY_WONDER_GUARD - && (GetBattlerType(battlerAtkPartner, 0) != TYPE_WATER - || GetBattlerType(battlerAtkPartner, 1) != TYPE_WATER - || GetBattlerType(battlerAtkPartner, 2) != TYPE_WATER)) + && !IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_WATER) + && GetActiveGimmick(battlerAtkPartner) != GIMMICK_TERA) { RETURN_SCORE_PLUS(WEAK_EFFECT); } @@ -3005,7 +3050,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_INSTRUCT: { u16 instructedMove; - if (AI_WhoStrikesFirst(battlerAtk, battlerAtkPartner, move) == AI_IS_FASTER) + if (AI_IsFaster(battlerAtk, battlerAtkPartner, move)) instructedMove = aiData->partnerMove; else instructedMove = gLastMoves[battlerAtkPartner]; @@ -3019,8 +3064,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } break; case EFFECT_AFTER_YOU: - if (AI_WhoStrikesFirst(battlerAtkPartner, FOE(battlerAtkPartner), aiData->partnerMove) == AI_IS_SLOWER // Opponent mon 1 goes before partner - || AI_WhoStrikesFirst(battlerAtkPartner, BATTLE_PARTNER(FOE(battlerAtkPartner)), aiData->partnerMove) == AI_IS_SLOWER) // Opponent mon 2 goes before partner + if (AI_IsSlower(battlerAtkPartner, FOE(battlerAtkPartner), aiData->partnerMove) // Opponent mon 1 goes before partner + || AI_IsSlower(battlerAtkPartner, BATTLE_PARTNER(FOE(battlerAtkPartner)), aiData->partnerMove)) // Opponent mon 2 goes before partner { if (gMovesInfo[aiData->partnerMove].effect == EFFECT_COUNTER || gMovesInfo[aiData->partnerMove].effect == EFFECT_MIRROR_COAT) break; // These moves need to go last @@ -3029,9 +3074,9 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_HEAL_PULSE: case EFFECT_HIT_ENEMY_HEAL_ALLY: - if (AI_WhoStrikesFirst(battlerAtk, FOE(battlerAtk), move) == AI_IS_FASTER - && AI_WhoStrikesFirst(battlerAtk, BATTLE_PARTNER(FOE(battlerAtk)), move) == AI_IS_FASTER - && gBattleMons[battlerAtkPartner].hp < gBattleMons[battlerAtkPartner].maxHP / 2) + if (AI_IsFaster(battlerAtk, FOE(battlerAtk), move) + && AI_IsFaster(battlerAtk, BATTLE_PARTNER(FOE(battlerAtk)), move) + && gBattleMons[battlerAtkPartner].hp < gBattleMons[battlerAtkPartner].maxHP / 2) RETURN_SCORE_PLUS(WEAK_EFFECT); break; } // attacker move effects @@ -3138,7 +3183,7 @@ static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) isTwoTurnNotSemiInvulnerableMove[i] = FALSE; } /* - MgbaPrintf_("%S: required hits: %d Dmg: %d", gMoveNames[moves[i]], noOfHits[i], AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]); + Test_MgbaPrintf("%S: required hits: %d Dmg: %d", gMoveNames[moves[i]], noOfHits[i], AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]); */ } @@ -3219,7 +3264,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) u32 i; // The AI should understand that while Dynamaxed, status moves function like Protect. - if (IsDynamaxed(battlerAtk) && gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) + if (GetActiveGimmick(battlerAtk) == GIMMICK_DYNAMAX && gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) moveEffect = EFFECT_PROTECT; // check status move preference @@ -3256,50 +3301,54 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); } break; + case EFFECT_FINAL_GAMBIT: + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE) + ADJUST_SCORE(DECENT_EFFECT); + break; case EFFECT_MIRROR_MOVE: if (predictedMove != MOVE_NONE) return AI_CheckViability(battlerAtk, battlerDef, gLastMoves[battlerDef], score); break; case EFFECT_ATTACK_UP: case EFFECT_ATTACK_UP_USER_ALLY: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); break; case EFFECT_ATTACK_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK_2, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK_2)); break; case EFFECT_DEFENSE_UP: case EFFECT_DEFENSE_UP_3: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case EFFECT_DEFENSE_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF_2, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF_2)); break; case EFFECT_SPEED_UP: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); break; case EFFECT_SPEED_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED_2, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED_2)); break; case EFFECT_SPECIAL_ATTACK_UP: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK)); break; case EFFECT_SPECIAL_ATTACK_UP_2: case EFFECT_SPECIAL_ATTACK_UP_3: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK_2, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK_2)); break; case EFFECT_SPECIAL_DEFENSE_UP: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_SPECIAL_DEFENSE_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF_2, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF_2)); break; case EFFECT_ACCURACY_UP: case EFFECT_ACCURACY_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC)); break; case EFFECT_EVASION_UP: case EFFECT_EVASION_UP_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_EVASION, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_EVASION)); break; case EFFECT_ATTACK_DOWN: case EFFECT_ATTACK_DOWN_2: @@ -3325,7 +3374,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_SPEED_DOWN: case EFFECT_SPEED_DOWN_2: - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) + if (AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE(-3); else if (!AI_RandLessThan(70)) ADJUST_SCORE(DECENT_EFFECT); @@ -3387,19 +3436,22 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (gBattleMons[battlerDef].statStages[STAT_EVASION] < 7 || aiData->abilities[battlerAtk] == ABILITY_NO_GUARD) ADJUST_SCORE(-2); break; + case EFFECT_SPICY_EXTRACT: + // TODO: Make IncreaseStatDownScore function, just like IncreaseStatUpScore + break; case EFFECT_BIDE: if (aiData->hpPercents[battlerAtk] < 90) ADJUST_SCORE(-2); // Should be either removed or turned into increasing score case EFFECT_ACUPRESSURE: break; case EFFECT_ATTACK_ACCURACY_UP: // hone claws - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC)); break; case EFFECT_GROWTH: case EFFECT_ATTACK_SPATK_UP: // work up - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK)); break; case EFFECT_HAZE: if (AnyStatIsRaised(BATTLE_PARTNER(battlerAtk)) @@ -3411,7 +3463,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if ((gMovesInfo[move].soundMove && aiData->abilities[battlerDef] == ABILITY_SOUNDPROOF) || aiData->abilities[battlerDef] == ABILITY_SUCTION_CUPS) break; - else if (IsDynamaxed(battlerDef)) + else if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; score += AI_TryToClearStats(battlerAtk, battlerDef, isDoubleBattle); break; @@ -3496,7 +3548,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_OHKO: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; else if (gStatuses3[battlerAtk] & STATUS3_ALWAYS_HITS) ADJUST_SCORE(BEST_EFFECT); @@ -3520,11 +3572,17 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_SUBSTITUTE: - ADJUST_SCORE(GOOD_EFFECT); + if (HasAnyKnownMove(battlerDef) && GetBestDmgFromBattler(battlerDef, battlerAtk) < gBattleMons[battlerAtk].maxHP / 4) + ADJUST_SCORE(GOOD_EFFECT); if (gStatuses3[battlerDef] & STATUS3_PERISH_SONG) ADJUST_SCORE(GOOD_EFFECT); - if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_FROSTBITE)) + if (gBattleMons[battlerDef].status1 & STATUS1_SLEEP) + ADJUST_SCORE(GOOD_EFFECT); + else if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_FROSTBITE)) ADJUST_SCORE(DECENT_EFFECT); + // TODO: + // if (IsPredictedToSwitch(battlerDef, battlerAtk) + // ADJUST_SCORE(DECENT_EFFECT); if (HasMoveEffect(battlerDef, EFFECT_SLEEP) || HasMoveEffect(battlerDef, EFFECT_TOXIC) || HasMoveEffect(battlerDef, EFFECT_POISON) @@ -3537,7 +3595,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(WEAK_EFFECT); break; case EFFECT_MIMIC: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (AI_IsFaster(battlerAtk, battlerDef, move)) { if (gLastMoves[battlerDef] != MOVE_NONE && gLastMoves[battlerDef] != 0xFFFF) return AI_CheckViability(battlerAtk, battlerDef, gLastMoves[battlerDef], score); @@ -3593,20 +3651,20 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_DISABLE: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; else if (gDisableStructs[battlerDef].disableTimer == 0 && (gLastMoves[battlerDef] != MOVE_NONE) && (gLastMoves[battlerDef] != 0xFFFF) && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) - && (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER)) + && (AI_IsFaster(battlerAtk, battlerDef, move))) { if (CanTargetMoveFaintAi(gLastMoves[battlerDef], battlerDef, battlerAtk, 1)) ADJUST_SCORE(GOOD_EFFECT); // Disable move that can kill attacker } break; case EFFECT_ENCORE: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; else if (gDisableStructs[battlerDef].encoreTimer == 0 && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) @@ -3625,9 +3683,9 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_DESTINY_BOND: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; - else if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER && CanTargetFaintAi(battlerDef, battlerAtk)) + else if (AI_IsFaster(battlerAtk, battlerDef, move) && CanTargetFaintAi(battlerDef, battlerAtk)) ADJUST_SCORE(GOOD_EFFECT); break; case EFFECT_SPITE: @@ -3648,8 +3706,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } else { - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); } break; case EFFECT_PROTECT: @@ -3827,7 +3885,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_SEMI_INVULNERABLE: if (predictedMove != MOVE_NONE && !isDoubleBattle) { - if ((AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if ((AI_IsFaster(battlerAtk, battlerDef, move)) && (gMovesInfo[predictedMove].effect == EFFECT_EXPLOSION || gMovesInfo[predictedMove].effect == EFFECT_PROTECT)) ADJUST_SCORE(GOOD_EFFECT); else if (gMovesInfo[predictedMove].effect == EFFECT_SEMI_INVULNERABLE && !(gStatuses3[battlerDef] & STATUS3_SEMI_INVULNERABLE)) @@ -3837,7 +3895,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case EFFECT_DEFENSE_CURL: if (HasMoveEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL)) ADJUST_SCORE(DECENT_EFFECT); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case EFFECT_FIRST_TURN_ONLY: if (ShouldFakeOut(battlerAtk, battlerDef, move) && MoveHasAdditionalEffectWithChance(move, MOVE_EFFECT_FLINCH, 100)) @@ -3850,8 +3908,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; if (HasMoveEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveEffect(battlerAtk, EFFECT_SPIT_UP)) ADJUST_SCORE(DECENT_EFFECT); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_SWAGGER: case EFFECT_FLATTER: @@ -3869,7 +3927,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) break; case EFFECT_ATTRACT: if (!isDoubleBattle - && (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) + && (AI_IsSlower(battlerAtk, battlerDef, move)) && BattlerWillFaintFromSecondaryDamage(battlerDef, aiData->abilities[battlerDef])) break; // Don't use if the attract won't have a change to activate if (gBattleMons[battlerDef].status1 & STATUS1_ANY @@ -3903,7 +3961,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (isDoubleBattle) { if (IsHazardMoveEffect(gMovesInfo[aiData->partnerMove].effect) // Partner is going to set up hazards - && AI_WhoStrikesFirst(battlerAtk, BATTLE_PARTNER(battlerAtk), move) == AI_IS_SLOWER) // Partner going first + && AI_IsSlower(battlerAtk, BATTLE_PARTNER(battlerAtk), move)) // Partner going first break; // Don't use Defog if partner is going to set up hazards } if (ShouldLowerEvasion(battlerAtk, battlerDef, aiData->abilities[battlerDef])) @@ -3931,7 +3989,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (HasDamagingMoveOfType(battlerAtk, TYPE_ELECTRIC)) ADJUST_SCORE(DECENT_EFFECT); if (B_CHARGE_SPDEF_RAISE >= GEN_5) - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_TAUNT: if (IS_MOVE_STATUS(predictedMove)) @@ -3992,7 +4050,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case HOLD_EFFECT_EJECT_BUTTON: - //if (!IsRaidBattle() && IsDynamaxed(battlerDef) && gNewBS->dynamaxData.timer[battlerDef] > 1 && + //if (!IsRaidBattle() && GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX && gNewBS->dynamaxData.timer[battlerDef] > 1 && if (HasDamagingMove(battlerAtk) || (isDoubleBattle && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && HasDamagingMove(BATTLE_PARTNER(battlerAtk)))) ADJUST_SCORE(DECENT_EFFECT); // Force 'em out next turn @@ -4074,7 +4132,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_SKILL_SWAP: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; else if (gAbilitiesInfo[aiData->abilities[battlerDef]].aiRating > gAbilitiesInfo[aiData->abilities[battlerAtk]].aiRating) ADJUST_SCORE(DECENT_EFFECT); @@ -4086,7 +4144,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_ENTRAINMENT: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) break; else if ((IsAbilityOfRating(aiData->abilities[battlerDef], 5) || gAbilitiesInfo[aiData->abilities[battlerAtk]].aiRating <= 0) && (aiData->abilities[battlerDef] != aiData->abilities[battlerAtk] && !(gStatuses3[battlerDef] & STATUS3_GASTRO_ACID))) @@ -4142,44 +4200,44 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_COSMIC_POWER: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_BULK_UP: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case EFFECT_CALM_MIND: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_GEOMANCY: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB) ADJUST_SCORE(GOOD_EFFECT); case EFFECT_QUIVER_DANCE: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case EFFECT_VICTORY_DANCE: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case EFFECT_SHELL_SMASH: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) ADJUST_SCORE(WEAK_EFFECT); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); break; case EFFECT_TIDY_UP: IncreaseTidyUpScore(battlerAtk, battlerDef, move, &score); case EFFECT_DRAGON_DANCE: case EFFECT_SHIFT_GEAR: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK)); break; case EFFECT_GUARD_SWAP: if (gBattleMons[battlerDef].statStages[STAT_DEF] > gBattleMons[battlerAtk].statStages[STAT_DEF] @@ -4330,14 +4388,14 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_HEAL_BLOCK: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER && predictedMove != MOVE_NONE && IsHealingMove(predictedMove)) + if (AI_IsFaster(battlerAtk, battlerDef, move) && predictedMove != MOVE_NONE && IsHealingMove(predictedMove)) ADJUST_SCORE(DECENT_EFFECT); // 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))) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_SOAK: - if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || HasMoveEffect(battlerAtk, EFFECT_FREEZE_DRY)) + if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && gMovesInfo[move].argument == TYPE_WATER) ) ADJUST_SCORE(DECENT_EFFECT); // Get some super effective moves break; case EFFECT_THIRD_TYPE: @@ -4362,7 +4420,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) ADJUST_SCORE(BEST_EFFECT); break; case EFFECT_QUASH: - if (isDoubleBattle && AI_WhoStrikesFirst(BATTLE_PARTNER(battlerAtk), battlerDef, aiData->partnerMove) == AI_IS_SLOWER) + if (isDoubleBattle && AI_IsSlower(BATTLE_PARTNER(battlerAtk), battlerDef, aiData->partnerMove)) ADJUST_SCORE(DECENT_EFFECT); // Attacker partner wouldn't go before target break; case EFFECT_TAILWIND: @@ -4377,7 +4435,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) if (IsBattlerGrounded(battlerAtk) && HasDamagingMoveOfType(battlerDef, TYPE_ELECTRIC) && !(AI_GetTypeEffectiveness(MOVE_EARTHQUAKE, battlerDef, battlerAtk) == AI_EFFECTIVENESS_x0)) // Doesn't resist ground move { - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker goes first + if (AI_IsFaster(battlerAtk, battlerDef, move)) // Attacker goes first { if (gMovesInfo[predictedMove].type == TYPE_GROUND) ADJUST_SCORE(GOOD_EFFECT); // Cause the enemy's move to fail @@ -4392,13 +4450,13 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } break; case EFFECT_CAMOUFLAGE: - if (predictedMove != MOVE_NONE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER // Attacker goes first + if (predictedMove != MOVE_NONE && AI_IsFaster(battlerAtk, battlerDef, move) // Attacker goes first && !IS_MOVE_STATUS(move) && AI_GetTypeEffectiveness(predictedMove, battlerDef, battlerAtk) != AI_EFFECTIVENESS_x0) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_TOXIC_THREAD: IncreasePoisonScore(battlerAtk, battlerDef, move, &score); - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); break; case EFFECT_COUNTER: if ((!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && predictedMove != MOVE_NONE) @@ -4418,17 +4476,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) else if (ShouldRecover(battlerAtk, battlerDef, move, 50)) ADJUST_SCORE(DECENT_EFFECT); break; - case EFFECT_FOCUS_PUNCH: - if (!isDoubleBattle && effectiveness > AI_EFFECTIVENESS_x0_5) - { - if (IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef])) - ADJUST_SCORE(DECENT_EFFECT); - if (gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION)) - ADJUST_SCORE(DECENT_EFFECT); - } - break; case EFFECT_ENDEAVOR: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER && !CanTargetFaintAi(battlerDef, battlerAtk)) + if (AI_IsSlower(battlerAtk, battlerDef, move) && !CanTargetFaintAi(battlerDef, battlerAtk)) ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_REVIVAL_BLESSING: @@ -4478,7 +4527,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case MOVE_EFFECT_SP_ATK_PLUS_1: case MOVE_EFFECT_SP_DEF_PLUS_1: StageStatId = STAT_CHANGE_ATK + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - IncreaseStatUpScore(battlerAtk, battlerDef, StageStatId, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, StageStatId)); break; case MOVE_EFFECT_ATK_PLUS_2: case MOVE_EFFECT_DEF_PLUS_2: @@ -4486,15 +4535,15 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case MOVE_EFFECT_SP_ATK_PLUS_2: case MOVE_EFFECT_SP_DEF_PLUS_2: StageStatId = STAT_CHANGE_ATK_2 + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_PLUS_1; - IncreaseStatUpScore(battlerAtk, battlerDef, StageStatId, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, StageStatId)); break; case MOVE_EFFECT_ACC_PLUS_1: case MOVE_EFFECT_ACC_PLUS_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC)); break; case MOVE_EFFECT_EVS_PLUS_1: case MOVE_EFFECT_EVS_PLUS_2: - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_EVASION, &score); + ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_EVASION)); break; case MOVE_EFFECT_RAPID_SPIN: if ((gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_HAZARDS_ANY && CountUsablePartyMons(battlerAtk) != 0) @@ -4513,7 +4562,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case MOVE_EFFECT_SP_ATK_MINUS_1: case MOVE_EFFECT_SP_DEF_MINUS_1: StageStatId = STAT_CHANGE_ATK + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_1; - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, StageStatId, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, StageStatId)); break; case MOVE_EFFECT_ATK_MINUS_2: case MOVE_EFFECT_DEF_MINUS_2: @@ -4521,31 +4570,28 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case MOVE_EFFECT_SP_ATK_MINUS_2: case MOVE_EFFECT_SP_DEF_MINUS_2: StageStatId = STAT_CHANGE_ATK + gMovesInfo[move].additionalEffects[i].moveEffect - MOVE_EFFECT_ATK_MINUS_2; - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, StageStatId, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, StageStatId)); break; case MOVE_EFFECT_ACC_MINUS_1: case MOVE_EFFECT_ACC_MINUS_2: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_ACC, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_ACC)); break; case MOVE_EFFECT_EVS_MINUS_1: case MOVE_EFFECT_EVS_MINUS_2: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_EVASION, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_EVASION)); break; case MOVE_EFFECT_DEF_SPDEF_DOWN: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF)); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; case MOVE_EFFECT_ATK_DEF_DOWN: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_ATK, &score); - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); - break; - case MOVE_EFFECT_SP_ATK_TWO_DOWN: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPATK_2, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_ATK)); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF)); break; case MOVE_EFFECT_V_CREATE: - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF, &score); - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPEED, &score); - IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPDEF, &score); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_DEF)); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPEED)); + ADJUST_SCORE(IncreaseStatUpScoreContrary(battlerAtk, battlerDef, STAT_CHANGE_SPDEF)); break; } } @@ -4691,7 +4737,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) case MOVE_EFFECT_THROAT_CHOP: if (gMovesInfo[GetBestDmgMoveFromBattler(battlerDef, battlerAtk)].soundMove) { - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE(GOOD_EFFECT); else ADJUST_SCORE(DECENT_EFFECT); @@ -4705,14 +4751,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move) } } - if (score <= 1) - return NOT_GOOD_ENOUGH; - else if (score <= 3) - return GOOD_MOVE_EFFECTS; - else if (score <= 5) - return PREFERRED_MOVE_EFFECTS; - else - return BEST_MOVE_EFFECTS; + return score; } // AI_FLAG_CHECK_VIABILITY - Chooses best possible move to hit player @@ -4725,12 +4764,17 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (gMovesInfo[move].power) { if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 0) - ADJUST_SCORE(-20); + ADJUST_AND_RETURN_SCORE(NO_DAMAGE_OR_FAILS); // No point in checking the move further so return early else - score += AI_CompareDamagingMoves(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex); + { + if ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_RISKY) && GetBestDmgMoveFromBattler(battlerAtk, battlerDef) == move) + ADJUST_SCORE(BEST_DAMAGE_MOVE); + else + ADJUST_SCORE(AI_CompareDamagingMoves(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex)); + } } - score += AI_CalcMoveEffectScore(battlerAtk, battlerDef, move); + ADJUST_SCORE(AI_CalcMoveEffectScore(battlerAtk, battlerDef, move)); return score; } @@ -4744,7 +4788,7 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score return score; if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING - && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER + && AI_IsSlower(battlerAtk, battlerDef, move) && CanTargetFaintAi(battlerDef, battlerAtk) && GetMovePriority(battlerAtk, move) == 0) { @@ -4867,33 +4911,49 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { u8 i; + struct AiLogicData *aiData = AI_DATA; + if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; if (gMovesInfo[move].criticalHitStage > 0) ADJUST_SCORE(DECENT_EFFECT); + // +3 Score switch (gMovesInfo[move].effect) { - case EFFECT_SLEEP: - case EFFECT_EXPLOSION: - case EFFECT_MIRROR_MOVE: - case EFFECT_OHKO: - case EFFECT_CONFUSE: - case EFFECT_METRONOME: - case EFFECT_PSYWAVE: case EFFECT_COUNTER: - case EFFECT_DESTINY_BOND: - case EFFECT_SWAGGER: - case EFFECT_ATTRACT: - case EFFECT_PRESENT: - case EFFECT_BELLY_DRUM: + if (gSpeciesInfo[gBattleMons[battlerDef].species].baseAttack >= gSpeciesInfo[gBattleMons[battlerDef].species].baseSpAttack + 10) + ADJUST_SCORE(STRONG_RISKY_EFFECT); + break; case EFFECT_MIRROR_COAT: - case EFFECT_FOCUS_PUNCH: + if (gSpeciesInfo[gBattleMons[battlerDef].species].baseSpAttack >= gSpeciesInfo[gBattleMons[battlerDef].species].baseAttack + 10) + ADJUST_SCORE(STRONG_RISKY_EFFECT); + break; + case EFFECT_EXPLOSION: + ADJUST_SCORE(STRONG_RISKY_EFFECT); + break; + + // +2 Score + case EFFECT_MEMENTO: + if (aiData->hpPercents[battlerAtk] < 50 && AI_RandLessThan(128)) + ADJUST_SCORE(AVERAGE_RISKY_EFFECT); + break; case EFFECT_REVENGE: - case EFFECT_FILLET_AWAY: - if (Random() & 1) - ADJUST_SCORE(DECENT_EFFECT); + if (gSpeciesInfo[gBattleMons[battlerDef].species].baseSpeed >= gSpeciesInfo[gBattleMons[battlerAtk].species].baseSpeed + 10) + ADJUST_SCORE(AVERAGE_RISKY_EFFECT); + break; + case EFFECT_BELLY_DRUM: + if (aiData->hpPercents[battlerAtk] >= 90) + ADJUST_SCORE(AVERAGE_RISKY_EFFECT); + break; + case EFFECT_MAX_HP_50_RECOIL: + case EFFECT_MIND_BLOWN: + case EFFECT_SWAGGER: + case EFFECT_FLATTER: + case EFFECT_ATTRACT: + case EFFECT_OHKO: + ADJUST_SCORE(AVERAGE_RISKY_EFFECT); break; case EFFECT_HIT: { @@ -4905,7 +4965,7 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { case MOVE_EFFECT_ALL_STATS_UP: if (Random() & 1) - ADJUST_SCORE(DECENT_EFFECT); + ADJUST_SCORE(AVERAGE_RISKY_EFFECT); break; default: break; @@ -4971,11 +5031,11 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor ADJUST_SCORE(DECENT_EFFECT); break; case EFFECT_BATON_PASS: - // TODO: Increase Score based on current stats. if (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING)) ADJUST_SCORE(DECENT_EFFECT); if (gStatuses3[battlerAtk] & STATUS3_LEECHSEED) ADJUST_SCORE(-3); + ADJUST_SCORE(CountPositiveStatStages(battlerAtk) - CountNegativeStatStages(battlerAtk)); break; default: break; @@ -5050,6 +5110,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_BIDE: case EFFECT_CONVERSION: case EFFECT_LIGHT_SCREEN: + case EFFECT_REFLECT: case EFFECT_MIST: case EFFECT_FOCUS_ENERGY: case EFFECT_CONVERSION_2: @@ -5075,7 +5136,6 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_CONVERSION: case EFFECT_REFLECT: case EFFECT_LIGHT_SCREEN: - case EFFECT_AURORA_VEIL: case EFFECT_MIST: case EFFECT_FOCUS_ENERGY: case EFFECT_RAGE: @@ -5307,3 +5367,47 @@ static s32 AI_FirstBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) return score; } + + +// Dynamic AI Functions +// For specific battle scenarios + +// Example - prefer attacking opposite foe in a tag battle +s32 AI_TagBattlePreferFoe(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)) + { + /* not a partner battle */ + return score; + } + else if (!IsBattlerAlive(BATTLE_OPPOSITE(battlerAtk)) || !IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(battlerAtk)))) + { + /* partner is defeated so attack normally */ + return score; + } + else if (battlerDef == BATTLE_OPPOSITE(battlerAtk)) + { + /* attacking along the diagonal */ + ADJUST_SCORE(-20); + } + + return score; +} + +static s32 AI_DynamicFunc(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) +{ + if (sDynamicAiFunc != NULL) + score = sDynamicAiFunc(battlerAtk, battlerDef, move, score); + return score; +} + +void ScriptSetDynamicAiFunc(struct ScriptContext *ctx) +{ + AiScoreFunc func = (AiScoreFunc)ScriptReadWord(ctx); + sDynamicAiFunc = func; +} + +void ResetDynamicAiFunc(void) +{ + sDynamicAiFunc = NULL; +} diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 50aef125e07c..a0a44cb98d46 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -29,6 +29,7 @@ static bool32 AiExpectsToFaintPlayer(u32 battler); static bool32 AI_ShouldHeal(u32 battler, u32 healAmount); static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount); static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon); +static bool32 CanAbilityTrapOpponent(u16 ability, u32 opponent); static void InitializeSwitchinCandidate(struct Pokemon *mon) { @@ -72,7 +73,7 @@ static bool32 HasBadOdds(u32 battler, bool32 emitResult) //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); + u32 aiMove, playerMove, aiBestMove = MOVE_NONE, aiAbility = AI_DATA->abilities[battler], opposingBattler, weather = AI_GetWeather(AI_DATA); bool32 getsOneShot = FALSE, hasStatusMove = FALSE, hasSuperEffectiveMove = FALSE; u16 typeEffectiveness = UQ_4_12(1.0), aiMoveEffect; //baseline typing damage @@ -119,7 +120,7 @@ static bool32 HasBadOdds(u32 battler, bool32 emitResult) hasSuperEffectiveMove = TRUE; // Get maximum damage mon can deal - damageDealt = AI_DATA->simulatedDmg[battler][opposingBattler][i]; + damageDealt = AI_DATA->simulatedDmg[battler][opposingBattler][i].expected; if(damageDealt > maxDamageDealt) { maxDamageDealt = damageDealt; @@ -147,8 +148,8 @@ static bool32 HasBadOdds(u32 battler, bool32 emitResult) playerMove = gBattleMons[opposingBattler].moves[i]; if (playerMove != MOVE_NONE && gMovesInfo[playerMove].power != 0) { - damageTaken = AI_CalcDamage(playerMove, opposingBattler, battler, &effectiveness, FALSE, weather); - if (damageTaken > maxDamageTaken) + struct SimulatedDamage dmg = AI_CalcDamage(playerMove, opposingBattler, battler, &effectiveness, FALSE, weather, DMG_ROLL_HIGHEST); + if (dmg.expected > maxDamageTaken) maxDamageTaken = damageTaken; } } @@ -162,7 +163,7 @@ static bool32 HasBadOdds(u32 battler, bool32 emitResult) // 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) + if (AI_IsFaster(battler, opposingBattler, aiBestMove)) return FALSE; } @@ -246,7 +247,7 @@ static bool32 ShouldSwitchIfWonderGuard(u32 battler, bool32 emitResult) opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); - if (GetBattlerAbility(GetBattlerAtPosition(opposingPosition)) != ABILITY_WONDER_GUARD) + if (AI_DATA->abilities[GetBattlerAtPosition(opposingPosition)] != ABILITY_WONDER_GUARD) return FALSE; // Check if Pokémon has a super effective move. @@ -411,6 +412,48 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler, bool32 emitResult) return FALSE; } +static bool32 FindMonThatTrapsOpponent(u32 battler, bool32 emitResult) +{ + s32 firstId; + s32 lastId; + struct Pokemon *party; + s32 i; + u16 monAbility; + s32 opposingBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(battler))); + + // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer + if (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING)) + return FALSE; + + // Check if current mon has an ability that traps opponent + if (CanAbilityTrapOpponent(gBattleMons[battler].ability, opposingBattler)) + return FALSE; + + // Check party for mon with ability that traps opponent + GetAIPartyIndexes(battler, &firstId, &lastId); + + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = firstId; i < lastId; i++) + { + monAbility = GetMonAbility(&party[i]); + if (CanAbilityTrapOpponent(monAbility, opposingBattler)) + { + if (i == AI_DATA->mostSuitableMonId[battler]) // If mon in slot i is the most suitable switchin candidate, then it's a trapper than wins 1v1 + { + gBattleStruct->AI_monToSwitchIntoId[battler] = i; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + } + return FALSE; +} + static bool32 ShouldSwitchIfGameStatePrompt(u32 battler, bool32 emitResult) { bool32 switchMon = FALSE; @@ -566,7 +609,7 @@ static bool32 ShouldSwitchIfGameStatePrompt(u32 battler, bool32 emitResult) && AnyStatIsRaised(battler)) switchMon = FALSE; if (AiExpectsToFaintPlayer(battler) - && !AI_STRIKES_FIRST(battler, opposingBattler, 0) + && AI_IsSlower(battler, opposingBattler, 0) && !AI_OpponentCanFaintAiWithMod(battler, 0)) switchMon = FALSE; } @@ -791,7 +834,7 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) { u32 battlerIn1, battlerIn2; u32 hazardDamage = 0, battlerHp = gBattleMons[battler].hp; - u32 ability = GetBattlerAbility(battler), aiMove; + u32 ability = AI_DATA->abilities[battler], aiMove; s32 firstId, lastId, i, j; struct Pokemon *party; @@ -873,6 +916,24 @@ static bool32 ShouldSwitchIfEncored(u32 battler, bool32 emitResult) return FALSE; } +static bool32 ShouldSwitchIfBadChoiceLock(u32 battler, bool32 emitResult) +{ + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + + if (HOLD_EFFECT_CHOICE(holdEffect) && gBattleMons[battler].ability != ABILITY_KLUTZ) + { + if (gMovesInfo[gLastUsedMove].category == DAMAGE_CATEGORY_STATUS) + { + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + 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 bool32 AreAttackingStatsLowered(u32 battler, bool32 emitResult) { @@ -895,7 +956,8 @@ static bool32 AreAttackingStatsLowered(u32 battler, bool32 emitResult) if (AI_DATA->mostSuitableMonId[battler] != PARTY_SIZE && (Random() & 1)) { gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } } @@ -903,7 +965,8 @@ static bool32 AreAttackingStatsLowered(u32 battler, bool32 emitResult) else if (attackingStage < DEFAULT_STAT_STAGE - 2) { gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } } @@ -954,6 +1017,10 @@ bool32 ShouldSwitch(u32 battler, bool32 emitResult) if (gBattleTypeFlags & BATTLE_TYPE_ARENA) return FALSE; + // Sequence Switching AI never switches mid-battle + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SEQUENCE_SWITCHING) + return FALSE; + availableToSwitch = 0; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -1014,6 +1081,8 @@ bool32 ShouldSwitch(u32 battler, bool32 emitResult) return TRUE; if (ShouldSwitchIfGameStatePrompt(battler, emitResult)) return TRUE; + if (FindMonThatTrapsOpponent(battler, emitResult)) + return TRUE; if (FindMonThatAbsorbsOpponentsMove(battler, emitResult)) return TRUE; @@ -1028,6 +1097,8 @@ bool32 ShouldSwitch(u32 battler, bool32 emitResult) return TRUE; if (ShouldSwitchIfEncored(battler, emitResult)) return TRUE; + if (ShouldSwitchIfBadChoiceLock(battler, emitResult)) + return TRUE; if (AreAttackingStatsLowered(battler, emitResult)) return TRUE; @@ -1231,7 +1302,10 @@ static u32 GetBestMonDmg(struct Pokemon *party, int firstId, int lastId, u8 inva if (aiMove != MOVE_NONE && gMovesInfo[aiMove].power != 0) { aiMove = GetMonData(&party[i], MON_DATA_MOVE1 + j); - dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE); + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_CONSERVATIVE) + dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_LOWEST); + else + dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_DEFAULT); if (bestDmg < dmg) { bestDmg = dmg; @@ -1264,7 +1338,7 @@ static bool32 IsMonGrounded(u16 heldItemEffect, u32 ability, u8 type1, u8 type2) static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon) { u8 defType1 = battleMon->type1, defType2 = battleMon->type2, tSpikesLayers; - u16 heldItemEffect = gItemsInfo[battleMon->item].holdEffect; + u16 heldItemEffect = ItemId_GetHoldEffect(battleMon->item); 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); @@ -1322,7 +1396,7 @@ static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon static s32 GetSwitchinWeatherImpact(void) { s32 weatherImpact = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = gItemsInfo[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u32 holdEffect = ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item); if (WEATHER_HAS_EFFECT) { @@ -1386,7 +1460,7 @@ static s32 GetSwitchinWeatherImpact(void) static u32 GetSwitchinRecurringHealing(void) { u32 recurringHealing = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = gItemsInfo[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u32 holdEffect = ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item); // Items if (ability != ABILITY_KLUTZ) @@ -1420,7 +1494,7 @@ static u32 GetSwitchinRecurringHealing(void) static u32 GetSwitchinRecurringDamage(void) { u32 passiveDamage = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; - u32 holdEffect = gItemsInfo[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u32 holdEffect = ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item); // Items if (ability != ABILITY_MAGIC_GUARD && ability != ABILITY_KLUTZ) @@ -1452,7 +1526,7 @@ 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 = gItemsInfo[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u16 heldItemEffect = ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item); u32 status = AI_DATA->switchinCandidate.battleMon.status1, ability = AI_DATA->switchinCandidate.battleMon.ability, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP; u32 statusDamage = 0; @@ -1530,8 +1604,8 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) 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 = gItemsInfo[item].holdEffect; - u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = gItemsInfo[item].holdEffectParam; + u16 maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, item = AI_DATA->switchinCandidate.battleMon.item, heldItemEffect = ItemId_GetHoldEffect(item); + u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = ItemId_GetHoldEffectParam(item); u32 opposingBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(battler))); u32 opposingAbility = gBattleMons[opposingBattler].ability; bool32 usedSingleUseHealingItem = FALSE; @@ -1678,7 +1752,7 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle playerMove = gBattleMons[opposingBattler].moves[i]; if (playerMove != MOVE_NONE && gMovesInfo[playerMove].power != 0) { - damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, FALSE); + damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, FALSE, DMG_ROLL_HIGHEST); if (damageTaken > maxDamageTaken) maxDamageTaken = damageTaken; } @@ -1686,6 +1760,25 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle return maxDamageTaken; } +static bool32 CanAbilityTrapOpponent(u16 ability, u32 opponent) +{ + if ((B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(opponent, TYPE_GHOST))) + return FALSE; + else if (ability == ABILITY_SHADOW_TAG) + { + if (B_SHADOW_TAG_ESCAPE >= GEN_4 && AI_DATA->abilities[opponent] == ABILITY_SHADOW_TAG) // Check if ability exists in species + return FALSE; + else + return TRUE; + } + else if (ability == ABILITY_ARENA_TRAP && IsBattlerGrounded(opponent)) + return TRUE; + else if (ability == ABILITY_MAGNET_PULL && IS_BATTLER_OF_TYPE(opponent, TYPE_STEEL)) + return TRUE; + else + return FALSE; +} + // 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) @@ -1696,20 +1789,20 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle // 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, bool32 isSwitchAfterKO) +static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, u32 battler, u32 opposingBattler, u32 battlerIn1, u32 battlerIn2, bool32 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 batonPassId = PARTY_SIZE, typeMatchupId = PARTY_SIZE, typeMatchupEffectiveId = PARTY_SIZE, defensiveMonId = PARTY_SIZE, aceMonId = PARTY_SIZE, trapperId = 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; + u32 aiMove, hitsToKOAI, hitsToKOPlayer, hitsToKOAIThreshold, maxHitsToKO = 0; + s32 playerMonSpeed = gBattleMons[opposingBattler].speed, playerMonHP = gBattleMons[opposingBattler].hp, aiMonSpeed, aiMovePriority = 0, 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 + hitsToKOAIThreshold = 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 + hitsToKOAIThreshold = 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++) @@ -1734,17 +1827,17 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, InitializeSwitchinCandidate(&party[i]); - // While not really invalid per say, not really wise to switch into this mon + // While not really invalid per se, 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); + hitsToKOAI = GetSwitchinHitsToKO(GetMaxDamagePlayerCouldDealToSwitchin(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon), battler); // Track max hits to KO and set GetBestMonDefensive if applicable - if(hitsToKO > maxHitsToKO) + if(hitsToKOAI > maxHitsToKO) { - maxHitsToKO = hitsToKO; + maxHitsToKO = hitsToKOAI; if(maxHitsToKO > defensiveMonHitKOThreshold) defensiveMonId = i; } @@ -1754,7 +1847,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // 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 + if ((hitsToKOAI > hitsToKOAIThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed) || hitsToKOAI > hitsToKOAIThreshold + 1) // Need to take an extra hit if slower { bestResist = typeMatchup; typeMatchupId = i; @@ -1767,13 +1860,19 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, for (j = 0; j < MAX_MON_MOVES; j++) { aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; + aiMovePriority = gMovesInfo[aiMove].priority; // Only do damage calc if switching after KO, don't need it otherwise and saves ~0.02s per turn if (isSwitchAfterKO && aiMove != MOVE_NONE && gMovesInfo[aiMove].power != 0) - damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE); + { + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_CONSERVATIVE) + damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_LOWEST); + else + damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE, DMG_ROLL_DEFAULT); + } // 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))) + if (aiMove == MOVE_BATON_PASS && ((hitsToKOAI > hitsToKOAIThreshold + 1 && AI_DATA->switchinCandidate.battleMon.speed < playerMonSpeed) || (hitsToKOAI > hitsToKOAIThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed))) bits |= gBitTable[i]; // Check for mon with resistance and super effective move for GetBestMonTypeMatchup @@ -1784,7 +1883,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, 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) + if (hitsToKOAI > hitsToKOAIThreshold) { bestResistEffective = typeMatchup; typeMatchupEffectiveId = i; @@ -1799,7 +1898,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // Check that mon isn't one shot and set GetBestMonDmg if applicable if (damageDealt > maxDamageDealt) { - if(hitsToKO > hitsToKOThreshold) + if(hitsToKOAI > hitsToKOAIThreshold) { maxDamageDealt = damageDealt; damageMonId = i; @@ -1810,18 +1909,21 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // If AI mon can one shot if (damageDealt > playerMonHP) { - // If AI mon is faster and doesn't die to hazards - if ((aiMonSpeed > playerMonSpeed || gMovesInfo[aiMove].priority > 0) && AI_DATA->switchinCandidate.battleMon.hp > GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon)) + // If AI mon outspeeds and doesn't die to hazards + if ((((aiMonSpeed > playerMonSpeed && !(gFieldStatuses & STATUS_FIELD_TRICK_ROOM)) || aiMovePriority > 0) // Outspeed if not Trick Room + || ((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) // Trick Room + && (aiMonSpeed < playerMonSpeed || (ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item) == HOLD_EFFECT_ROOM_SERVICE && aiMonSpeed * 2 / 3 < playerMonSpeed)))) // Trick Room speeds + && AI_DATA->switchinCandidate.battleMon.hp > GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon)) // Hazards { // We have a revenge killer revengeKillerId = i; } - // If AI mon is slower + // If AI mon is outsped else { // If AI mon can't be OHKO'd - if (hitsToKO > hitsToKOThreshold) + if (hitsToKOAI > hitsToKOAIThreshold) { // We have a slow revenge killer slowRevengeKillerId = i; @@ -1832,27 +1934,41 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // If AI mon can two shot if (damageDealt > playerMonHP / 2) { - // If AI mon is faster - if (aiMonSpeed > playerMonSpeed || gMovesInfo[aiMove].priority > 0) + // If AI mon outspeeds + if (((aiMonSpeed > playerMonSpeed && !(gFieldStatuses & STATUS_FIELD_TRICK_ROOM)) || aiMovePriority > 0) // Outspeed if not Trick Room + || (((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && gFieldTimers.trickRoomTimer > 1) // Trick Room has at least 2 turns left + && (aiMonSpeed < playerMonSpeed || (ItemId_GetHoldEffect(AI_DATA->switchinCandidate.battleMon.item) == HOLD_EFFECT_ROOM_SERVICE && aiMonSpeed * 2/ 3 < playerMonSpeed)))) // Trick Room speeds { // If AI mon can't be OHKO'd - if (hitsToKO > hitsToKOThreshold) + if (hitsToKOAI > hitsToKOAIThreshold) { // We have a fast threaten fastThreatenId = i; } } - // If AI mon is slower + // If AI mon is outsped else { // If AI mon can't be 2HKO'd - if (hitsToKO > hitsToKOThreshold + 1) + if (hitsToKOAI > hitsToKOAIThreshold + 1) { // We have a slow threaten slowThreatenId = i; } } } + + // If mon can trap + if (CanAbilityTrapOpponent(AI_DATA->switchinCandidate.battleMon.ability, opposingBattler)) + { + hitsToKOPlayer = GetNoOfHitsToKOBattlerDmg(damageDealt, opposingBattler); + if (CountUsablePartyMons(opposingBattler) > 0 + && (((hitsToKOAI > hitsToKOPlayer && isSwitchAfterKO) // If can 1v1 after a KO + || (hitsToKOAI == hitsToKOPlayer && isSwitchAfterKO && (aiMonSpeed > playerMonSpeed || aiMovePriority > 0))) + || ((hitsToKOAI > hitsToKOPlayer + 1 && !isSwitchAfterKO) // If can 1v1 after mid battle + || (hitsToKOAI == hitsToKOPlayer + 1 && !isSwitchAfterKO && (aiMonSpeed > playerMonSpeed || aiMovePriority > 0))))) + trapperId = i; + } } } } @@ -1862,58 +1978,59 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // 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; + // Return Trapper > Revenge Killer > Type Matchup > Baton Pass > Best Damage + if (trapperId != PARTY_SIZE) return trapperId; + else 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; + // Return Trapper > Type Matchup > Best Defensive > Baton Pass + if (trapperId != PARTY_SIZE) return trapperId; + else 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. - if (aceMonId != PARTY_SIZE && (gMovesInfo[gLastUsedMove].effect == EFFECT_HIT_ESCAPE || gMovesInfo[gLastUsedMove].effect == EFFECT_PARTING_SHOT)) + if (aceMonId != PARTY_SIZE + && (gMovesInfo[gLastUsedMove].effect == EFFECT_HIT_ESCAPE || gMovesInfo[gLastUsedMove].effect == EFFECT_PARTING_SHOT || gMovesInfo[gLastUsedMove].effect == EFFECT_BATON_PASS)) return aceMonId; return PARTY_SIZE; } -u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) +static u32 GetNextMonInParty(struct Pokemon *party, int firstId, int lastId, u32 battlerIn1, u32 battlerIn2) +{ + u32 i; + // 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; + } + return i; + } + return PARTY_SIZE; +} + +u32 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) { u32 opposingBattler = 0; u32 bestMonId = PARTY_SIZE; - u8 battlerIn1 = 0, battlerIn2 = 0; + u32 battlerIn1 = 0, battlerIn2 = 0; s32 firstId = 0; s32 lastId = 0; // + 1 struct Pokemon *party; @@ -1949,6 +2066,12 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) else party = gEnemyParty; + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SEQUENCE_SWITCHING) + { + bestMonId = GetNextMonInParty(party, firstId, lastId, battlerIn1, battlerIn2); + return bestMonId; + } + // Split ideal mon decision between after previous mon KO'd (prioritize offensive options) and after switching active mon out (prioritize defensive options), and expand the scope of both. // Only use better mon selection if AI_FLAG_SMART_MON_CHOICES is set for the trainer. if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_MON_CHOICES && !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) // Double Battles aren't included in AI_FLAG_SMART_MON_CHOICE. Defaults to regular switch in logic @@ -1970,7 +2093,7 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) || 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.) + || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per se, not really wise to switch into this mon.) { invalidMons |= gBitTable[i]; } @@ -2013,7 +2136,7 @@ static bool32 AiExpectsToFaintPlayer(u32 battler) if (GetBattlerSide(target) != GetBattlerSide(battler) && CanIndexMoveFaintTarget(battler, target, gBattleStruct->aiMoveOrAction[battler], 0) - && AI_WhoStrikesFirst(battler, target, GetAIChosenMove(battler)) == AI_IS_FASTER) + && AI_IsFaster(battler, target, GetAIChosenMove(battler))) { // We expect to faint the target and move first -> dont use an item return TRUE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 1498d8936ce4..5505bbed183d 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -35,6 +35,16 @@ static u32 AI_GetEffectiveness(uq4_12_t multiplier); // Functions +bool32 AI_IsFaster(u32 battlerAi, u32 battlerDef, u32 move) +{ + return (AI_WhoStrikesFirst(battlerAi, battlerDef, move) == AI_IS_FASTER); +} + +bool32 AI_IsSlower(u32 battlerAi, u32 battlerDef, u32 move) +{ + return (AI_WhoStrikesFirst(battlerAi, battlerDef, move) == AI_IS_SLOWER); +} + u32 GetAIChosenMove(u32 battlerId) { return (gBattleMons[battlerId].moves[gBattleStruct->aiMoveOrAction[battlerId]]); @@ -143,10 +153,11 @@ void ClearBattlerItemEffectHistory(u32 battlerId) void SaveBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId)) + if (!BattlerHasAi(battlerId) && !AI_THINKING_STRUCT->saved[battlerId].saved) { u32 i; + AI_THINKING_STRUCT->saved[battlerId].saved = TRUE; AI_THINKING_STRUCT->saved[battlerId].ability = gBattleMons[battlerId].ability; AI_THINKING_STRUCT->saved[battlerId].heldItem = gBattleMons[battlerId].item; AI_THINKING_STRUCT->saved[battlerId].species = gBattleMons[battlerId].species; @@ -196,7 +207,7 @@ static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) void SetBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId)) + if (!BattlerHasAi(battlerId) && AI_THINKING_STRUCT->saved[battlerId].saved) { u32 i, species, illusionSpecies, side; side = GetBattlerSide(battlerId); @@ -240,10 +251,11 @@ void SetBattlerData(u32 battlerId) void RestoreBattlerData(u32 battlerId) { - if (!BattlerHasAi(battlerId)) + if (!BattlerHasAi(battlerId) && AI_THINKING_STRUCT->saved[battlerId].saved) { u32 i; + AI_THINKING_STRUCT->saved[battlerId].saved = FALSE; gBattleMons[battlerId].ability = AI_THINKING_STRUCT->saved[battlerId].ability; gBattleMons[battlerId].item = AI_THINKING_STRUCT->saved[battlerId].heldItem; gBattleMons[battlerId].species = AI_THINKING_STRUCT->saved[battlerId].species; @@ -274,7 +286,7 @@ bool32 IsBattlerTrapped(u32 battler, bool32 checkSwitch) return FALSE; if (checkSwitch && holdEffect == HOLD_EFFECT_SHED_SHELL) return FALSE; - else if (!checkSwitch && GetBattlerAbility(battler) == ABILITY_RUN_AWAY) + else if (!checkSwitch && AI_DATA->abilities[battler] == ABILITY_RUN_AWAY) return FALSE; else if (!checkSwitch && holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) return FALSE; @@ -309,7 +321,7 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) u32 move = gBattleResources->battleHistory->usedMoves[opposingBattler][i]; if (gMovesInfo[move].effect == EFFECT_PROTECT && move != MOVE_ENDURE) return TRUE; - if (gMovesInfo[move].effect == EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAI, opposingBattler, GetAIChosenMove(battlerAI)) == AI_IS_SLOWER) + if (gMovesInfo[move].effect == EFFECT_SEMI_INVULNERABLE && AI_IsSlower(battlerAI, opposingBattler, GetAIChosenMove(battlerAI))) return TRUE; } return FALSE; @@ -352,16 +364,36 @@ bool32 MovesWithCategoryUnusable(u32 attacker, u32 target, u32 category) } // To save computation time this function has 2 variants. One saves, sets and restores battlers, while the other doesn't. -s32 AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower) +struct SimulatedDamage AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, enum DamageRollType rollType) { + struct SimulatedDamage dmg; SaveBattlerData(battlerAtk); SaveBattlerData(battlerDef); - return AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather(AI_DATA)); + SetBattlerData(battlerAtk); + SetBattlerData(battlerDef); + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather(AI_DATA), rollType); + RestoreBattlerData(battlerAtk); + RestoreBattlerData(battlerDef); + return dmg; } static inline s32 LowestRollDmg(s32 dmg) { - dmg *= 100 - 15; + dmg *= MIN_ROLL_PERCENTAGE; + dmg /= 100; + return dmg; +} + +static inline s32 HighestRollDmg(s32 dmg) +{ + dmg *= MAX_ROLL_PERCENTAGE; + dmg /= 100; + return dmg; +} + +static inline s32 DmgRoll(s32 dmg) +{ + dmg *= DMG_ROLL_PERCENTAGE; dmg /= 100; return dmg; } @@ -439,7 +471,7 @@ bool32 IsDamageMoveUnusable(u32 move, u32 battlerAtk, u32 battlerDef) break; case EFFECT_LOW_KICK: case EFFECT_HEAT_CRASH: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) return TRUE; break; case EFFECT_FAIL_IF_NOT_ARG_TYPE: @@ -458,33 +490,59 @@ bool32 IsDamageMoveUnusable(u32 move, u32 battlerAtk, u32 battlerDef) if (!gDisableStructs[battlerAtk].isFirstTurn) return TRUE; break; + case EFFECT_FOCUS_PUNCH: + if (HasDamagingMove(battlerDef) && !((gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE) + || IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) + || gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION))) + // TODO: || IsPredictedToSwitch(battlerDef, battlerAtk) + return TRUE; + // If AI could Sub and doesn't have a Sub, don't Punch yet + if (HasMoveEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE)) + return TRUE; + break; } return FALSE; } -s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather) +static inline s32 GetDamageByRollType(s32 dmg, enum DamageRollType rollType) { - s32 dmg, moveType; + if (rollType == DMG_ROLL_LOWEST) + return LowestRollDmg(dmg); + else if (rollType == DMG_ROLL_HIGHEST) + return HighestRollDmg(dmg); + else + return DmgRoll(dmg); +} + +struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather, enum DamageRollType rollType) +{ + struct SimulatedDamage simDamage; + s32 moveType; uq4_12_t effectivenessMultiplier; bool32 isDamageMoveUnusable = FALSE; + bool32 toggledGimmick = FALSE; struct AiLogicData *aiData = AI_DATA; + gBattleStruct->aiCalcInProgress = TRUE; - SetBattlerData(battlerAtk); - SetBattlerData(battlerDef); - - if (considerZPower && IsViableZMove(battlerAtk, move)) + // Temporarily enable gimmicks for damage calcs if planned + if (gBattleStruct->gimmick.usableGimmick[battlerAtk] && GetActiveGimmick(battlerAtk) == GIMMICK_NONE + && !(gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_Z_MOVE && !considerZPower)) { - //temporarily enable z moves for damage calcs - gBattleStruct->zmove.baseMoves[battlerAtk] = move; - gBattleStruct->zmove.active = TRUE; + // Set Z-Move variables if needed + if (gBattleStruct->gimmick.usableGimmick[battlerAtk] == GIMMICK_Z_MOVE && IsViableZMove(battlerAtk, move)) + gBattleStruct->zmove.baseMoves[battlerAtk] = move; + + toggledGimmick = TRUE; + SetActiveGimmick(battlerAtk, gBattleStruct->gimmick.usableGimmick[battlerAtk]); } - else if (gMovesInfo[move].effect == EFFECT_PHOTON_GEYSER) - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) == DAMAGE_CATEGORY_PHYSICAL); - else if (move == MOVE_SHELL_SIDE_ARM && gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] == DAMAGE_CATEGORY_PHYSICAL) - gBattleStruct->swapDamageCategory = TRUE; + + if (gMovesInfo[move].effect == EFFECT_PHOTON_GEYSER) + gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != gMovesInfo[gCurrentMove].category); + else if (gMovesInfo[move].effect == EFFECT_SHELL_SIDE_ARM) + gBattleStruct->swapDamageCategory = (gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] != gMovesInfo[gCurrentMove].category); else if (gMovesInfo[move].effect == EFFECT_NATURE_POWER) - move = GetNaturePowerMove(); + move = GetNaturePowerMove(battlerAtk); gBattleStruct->dynamicMoveType = 0; @@ -497,7 +555,7 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes if (gMovesInfo[move].power && !isDamageMoveUnusable) { - s32 critChanceIndex, normalDmg, fixedBasePower, n; + s32 critChanceIndex, fixedBasePower, n; ProteanTryChangeType(battlerAtk, aiData->abilities[battlerAtk], move, moveType); // Certain moves like Rollout calculate damage based on values which change during the move execution, but before calling dmg calc. @@ -514,63 +572,97 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes fixedBasePower = 0; break; } - normalDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower, - effectivenessMultiplier, weather, FALSE, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); critChanceIndex = CalcCritChanceStageArgs(battlerAtk, battlerDef, move, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk]); if (critChanceIndex > 1) // Consider crit damage only if a move has at least +2 crit chance { + s32 nonCritDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower, + effectivenessMultiplier, weather, FALSE, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); s32 critDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower, - effectivenessMultiplier, weather, TRUE, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - u32 critOdds = GetCritHitOdds(critChanceIndex); // Crit chance is 1/critOdds + effectivenessMultiplier, weather, TRUE, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + u32 critOdds = GetCritHitOdds(critChanceIndex); // With critOdds getting closer to 1, dmg gets closer to critDmg. - dmg = LowestRollDmg((critDmg + normalDmg * (critOdds - 1)) / (critOdds)); + simDamage.expected = GetDamageByRollType((critDmg + nonCritDmg * (critOdds - 1)) / critOdds, rollType); + if (critOdds == 1) + simDamage.minimum = LowestRollDmg(critDmg); + else + simDamage.minimum = LowestRollDmg(nonCritDmg); } else if (critChanceIndex == -2) // Guaranteed critical { s32 critDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower, - effectivenessMultiplier, weather, TRUE, - aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], - aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); - dmg = LowestRollDmg(critDmg); + effectivenessMultiplier, weather, TRUE, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + simDamage.expected = GetDamageByRollType(critDmg, rollType); + simDamage.minimum = LowestRollDmg(critDmg); } else { - dmg = LowestRollDmg(normalDmg); + s32 nonCritDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower, + effectivenessMultiplier, weather, FALSE, + aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef], + aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); + + simDamage.expected = GetDamageByRollType(nonCritDmg, rollType); + simDamage.minimum = LowestRollDmg(nonCritDmg); } - if (!gBattleStruct->zmove.active) + if (GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE) { // Handle dynamic move damage switch (gMovesInfo[move].effect) { case EFFECT_LEVEL_DAMAGE: + simDamage.expected = simDamage.minimum = gBattleMons[battlerAtk].level * (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + break; case EFFECT_PSYWAVE: - dmg = gBattleMons[battlerAtk].level * (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + simDamage.expected = gBattleMons[battlerAtk].level * (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + simDamage.minimum = simDamage.expected / 2; break; case EFFECT_FIXED_DAMAGE_ARG: - dmg = gMovesInfo[move].argument * (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); + simDamage.expected = simDamage.minimum = gMovesInfo[move].argument * (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? 2 : 1); break; case EFFECT_MULTI_HIT: - dmg *= (aiData->abilities[battlerAtk] == ABILITY_SKILL_LINK - && !(move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH) - ? 5 : 3); + if (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH) + { + simDamage.expected *= 3; + simDamage.minimum *= 3; + } + else if (aiData->abilities[battlerAtk] == ABILITY_SKILL_LINK) + { + simDamage.expected *= 5; + simDamage.minimum *= 5; + } + else if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_LOADED_DICE) + { + simDamage.expected *= 9; + simDamage.expected /= 2; + simDamage.minimum *= 4; + } + else + { + simDamage.expected *= 3; + simDamage.minimum *= 2; + } break; case EFFECT_ENDEAVOR: // If target has less HP than user, Endeavor does no damage - dmg = max(0, gBattleMons[battlerDef].hp - gBattleMons[battlerAtk].hp); + simDamage.expected = simDamage.minimum = max(0, gBattleMons[battlerDef].hp - gBattleMons[battlerAtk].hp); break; case EFFECT_SUPER_FANG: - dmg = (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND + simDamage.expected = simDamage.minimum = (aiData->abilities[battlerAtk] == ABILITY_PARENTAL_BOND ? max(2, gBattleMons[battlerDef].hp * 3 / 4) : max(1, gBattleMons[battlerDef].hp / 2)); break; case EFFECT_FINAL_GAMBIT: - dmg = gBattleMons[battlerAtk].hp; + simDamage.expected = simDamage.minimum = gBattleMons[battlerAtk].hp; break; case EFFECT_BEAT_UP: if (B_BEAT_UP >= GEN_5) @@ -578,11 +670,12 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes u32 partyCount = CalculatePartyCount(GetBattlerParty(battlerAtk)); u32 i; gBattleStruct->beatUpSlot = 0; - dmg = 0; + simDamage.expected = 0; for (i = 0; i < partyCount; i++) { - dmg += CalculateMoveDamage(move, battlerAtk, battlerDef, moveType, 0, FALSE, FALSE, FALSE); + simDamage.expected += CalculateMoveDamage(move, battlerAtk, battlerDef, moveType, 0, FALSE, FALSE, FALSE); } + simDamage.minimum = simDamage.expected; gBattleStruct->beatUpSlot = 0; } break; @@ -590,28 +683,34 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes // Handle other multi-strike moves if (gMovesInfo[move].strikeCount > 1 && gMovesInfo[move].effect != EFFECT_TRIPLE_KICK) - dmg *= gMovesInfo[move].strikeCount; + { + simDamage.expected *= gMovesInfo[move].strikeCount; + simDamage.minimum *= gMovesInfo[move].strikeCount; + } - if (dmg == 0) - dmg = 1; + if (simDamage.expected == 0) + simDamage.expected = 1; + if (simDamage.minimum == 0) + simDamage.minimum = 1; } } else { - dmg = 0; + simDamage.expected = 0; + simDamage.minimum = 0; } - RestoreBattlerData(battlerAtk); - RestoreBattlerData(battlerDef); - // convert multiper to AI_EFFECTIVENESS_xX *typeEffectiveness = AI_GetEffectiveness(effectivenessMultiplier); + // Undo temporary settings + gBattleStruct->aiCalcInProgress = FALSE; gBattleStruct->swapDamageCategory = FALSE; - gBattleStruct->zmove.active = FALSE; gBattleStruct->zmove.baseMoves[battlerAtk] = MOVE_NONE; + if (toggledGimmick) + SetActiveGimmick(battlerAtk, GIMMICK_NONE); - return dmg; + return simDamage; } bool32 AI_IsDamagedByRecoil(u32 battler) @@ -758,6 +857,8 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s { case EFFECT_MAX_HP_50_RECOIL: case EFFECT_MIND_BLOWN: + case EFFECT_EXPLOSION: + case EFFECT_FINAL_GAMBIT: return TRUE; case EFFECT_RECOIL_IF_MISS: if (AI_IsDamagedByRecoil(battlerAtk)) @@ -783,7 +884,6 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s case MOVE_EFFECT_SP_DEF_MINUS_2: case MOVE_EFFECT_EVS_MINUS_2: case MOVE_EFFECT_ACC_MINUS_2: - case MOVE_EFFECT_SP_ATK_TWO_DOWN: case MOVE_EFFECT_V_CREATE: case MOVE_EFFECT_ATK_DEF_DOWN: case MOVE_EFFECT_DEF_SPDEF_DOWN: @@ -870,12 +970,12 @@ u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef) u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex) { - return GetNoOfHitsToKOBattlerDmg(AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex], battlerDef); + return GetNoOfHitsToKOBattlerDmg(AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex].expected, battlerDef); } u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef) { - int bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + int bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex].expected; return (bestDmg * 100) / gBattleMons[battlerDef].maxHP; } @@ -933,27 +1033,55 @@ static u32 AI_GetEffectiveness(uq4_12_t multiplier) } /* Checks to see if AI will move ahead of another battler + * The function uses a stripped down version of the checks from GetWhichBattlerFasterArgs * Output: * AI_IS_FASTER: is user(ai) faster * AI_IS_SLOWER: is target faster */ -s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered) +s32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler, u32 moveConsidered) { - s8 prioAI = 0; - s8 prioBattler2 = 0; - prioAI = GetMovePriority(battlerAI, moveConsidered); + u32 speedBattlerAI, speedBattler; + u32 holdEffectAI = AI_DATA->holdEffects[battlerAI]; + u32 holdEffectPlayer = AI_DATA->holdEffects[battler]; + u32 abilityAI = AI_DATA->abilities[battlerAI]; + u32 abilityPlayer = AI_DATA->abilities[battler]; - if (prioAI > prioBattler2) + if (GetMovePriority(battlerAI, moveConsidered) > 0) return AI_IS_FASTER; - if (GetWhichBattlerFasterArgs(battlerAI, battler2, TRUE, - AI_DATA->abilities[battlerAI], AI_DATA->abilities[battler2], - AI_DATA->holdEffects[battlerAI], AI_DATA->holdEffects[battler2], - AI_DATA->speedStats[battlerAI], AI_DATA->speedStats[battler2], - prioAI, prioBattler2) == 1) + speedBattlerAI = GetBattlerTotalSpeedStatArgs(battlerAI, abilityAI, holdEffectAI); + speedBattler = GetBattlerTotalSpeedStatArgs(battler, abilityPlayer, holdEffectPlayer); + + if (holdEffectAI == HOLD_EFFECT_LAGGING_TAIL && holdEffectPlayer != HOLD_EFFECT_LAGGING_TAIL) + return AI_IS_SLOWER; + else if (holdEffectAI != HOLD_EFFECT_LAGGING_TAIL && holdEffectPlayer == HOLD_EFFECT_LAGGING_TAIL) return AI_IS_FASTER; - else + + if (abilityAI == ABILITY_STALL && abilityPlayer != ABILITY_STALL) return AI_IS_SLOWER; + else if (abilityAI != ABILITY_STALL && abilityPlayer == ABILITY_STALL) + return AI_IS_FASTER; + + if (speedBattlerAI > speedBattler) + { + if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM) + return AI_IS_SLOWER; + else + return AI_IS_FASTER; + } + else if (speedBattlerAI == speedBattler) + { + return AI_IS_FASTER; + } + else + { + if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM) + return AI_IS_FASTER; + else + return AI_IS_SLOWER; + } + + return AI_IS_SLOWER; } // Check if target has means to faint ai mon. @@ -966,7 +1094,7 @@ bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk) for (i = 0; i < MAX_MON_MOVES; i++) { if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & gBitTable[i]) - && AI_DATA->simulatedDmg[battlerDef][battlerAtk][i] >= gBattleMons[battlerAtk].hp) + && AI_DATA->simulatedDmg[battlerDef][battlerAtk][i].expected >= gBattleMons[battlerAtk].hp) { return TRUE; } @@ -1004,15 +1132,36 @@ u32 GetBestDmgMoveFromBattler(u32 battlerAtk, u32 battlerDef) for (i = 0; i < MAX_MON_MOVES; i++) { if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(unusable & gBitTable[i]) - && bestDmg < AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]) + && bestDmg < AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected) { - bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]; + bestDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; move = moves[i]; } } return move; } +u32 GetBestDmgFromBattler(u32 battler, u32 battlerTarget) +{ + u32 i; + u32 bestDmg = 0; + u32 unusable = AI_DATA->moveLimitations[battler]; + u16 *moves = GetMovesArray(battler); + + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i] != MOVE_NONE + && moves[i] != MOVE_UNAVAILABLE + && !(unusable & gBitTable[i]) + && bestDmg < AI_DATA->simulatedDmg[battler][battlerTarget][i].expected) + { + bestDmg = AI_DATA->simulatedDmg[battler][battlerTarget][i].expected; + } + } + + return bestDmg; +} + // Check if AI mon has the means to faint the target with any of its moves. // If numHits > 1, check if the target will be KO'ed by that number of hits (ignoring healing effects) bool32 CanAIFaintTarget(u32 battlerAtk, u32 battlerDef, u32 numHits) @@ -1026,7 +1175,7 @@ bool32 CanAIFaintTarget(u32 battlerAtk, u32 battlerDef, u32 numHits) if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && !(moveLimitations & gBitTable[i])) { // Use the pre-calculated value in simulatedDmg instead of re-calculating it - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]; + dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; if (numHits) dmg *= numHits; @@ -1044,7 +1193,7 @@ bool32 CanTargetMoveFaintAi(u32 move, u32 battlerDef, u32 battlerAtk, u32 nHits) u32 indexSlot = GetMoveSlot(GetMovesArray(battlerDef), move); if (indexSlot < MAX_MON_MOVES) { - if (GetNoOfHitsToKO(AI_DATA->simulatedDmg[battlerDef][battlerAtk][indexSlot], gBattleMons[battlerAtk].hp) <= nHits) + if (GetNoOfHitsToKO(AI_DATA->simulatedDmg[battlerDef][battlerAtk][indexSlot].expected, gBattleMons[battlerAtk].hp) <= nHits) return TRUE; } return FALSE; @@ -1064,7 +1213,7 @@ bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dm for (i = 0; i < MAX_MON_MOVES; i++) { - dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]; + dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i].expected; if (dmgMod) dmg *= dmgMod; @@ -1087,12 +1236,28 @@ bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability) return FALSE; } +u32 AI_GetBattlerAbility(u32 battler) +{ + if (gAbilitiesInfo[gBattleMons[battler].ability].cantBeSuppressed) + return gBattleMons[battler].ability; + + if (gStatuses3[battler] & STATUS3_GASTRO_ACID) + return ABILITY_NONE; + + if (IsNeutralizingGasOnField() + && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS + && GetBattlerHoldEffectIgnoreAbility(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD) + return ABILITY_NONE; + + return gBattleMons[battler].ability; +} + // does NOT include ability suppression checks s32 AI_DecideKnownAbilityForTurn(u32 battlerId) { u32 validAbilities[NUM_ABILITY_SLOTS]; u8 i, numValidAbilities = 0; - u32 knownAbility = GetBattlerAbility(battlerId); + u32 knownAbility = AI_GetBattlerAbility(battlerId); // We've had ability overwritten by e.g. Worry Seed. It is not part of AI_PARTY in case of switching if (gBattleStruct->overwrittenAbilities[battlerId]) @@ -1544,7 +1709,7 @@ bool32 ShouldLowerStat(u32 battler, u32 battlerAbility, u32 stat) return !(battlerAbility == ABILITY_BIG_PECKS); case STAT_SPEED: // If AI is faster and doesn't have any mons left, lowering speed doesn't give any - return !(AI_WhoStrikesFirst(sBattler_AI, battler, AI_THINKING_STRUCT->moveConsidered) == AI_IS_FASTER + return !(AI_IsFaster(sBattler_AI, battler, AI_THINKING_STRUCT->moveConsidered) && CountUsablePartyMons(sBattler_AI) == 0 && !HasMoveEffect(sBattler_AI, EFFECT_ELECTRO_BALL)); case STAT_ACC: @@ -1613,7 +1778,7 @@ u32 CountNegativeStatStages(u32 battlerId) bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1632,7 +1797,7 @@ bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerDefense(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1658,12 +1823,12 @@ bool32 ShouldLowerSpeed(u32 battlerAtk, u32 battlerDef, u32 defAbility) || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CLEAR_AMULET) return FALSE; - return (!AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered)); + return (AI_IsSlower(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered)); } bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1681,7 +1846,7 @@ bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1699,7 +1864,7 @@ bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1718,7 +1883,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + if (AI_IsFaster(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. @@ -1735,10 +1900,12 @@ bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 CanIndexMoveFaintTarget(u32 battlerAtk, u32 battlerDef, u32 index, u32 numHits) { - s32 dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][index]; + s32 dmg; if (numHits) - dmg *= numHits; + dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][index].expected * numHits; + else + dmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][index].minimum; if (gBattleMons[battlerDef].hp <= dmg) return TRUE; @@ -1887,6 +2054,20 @@ bool32 HasMove(u32 battlerId, u32 move) return FALSE; } +bool32 HasAnyKnownMove(u32 battlerId) +{ + s32 i; + u16 *moves = GetMovesArray(battlerId); + + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i] != MOVE_NONE) + return TRUE; + } + + return FALSE; +} + bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool32 ignoreStatus, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect) { s32 i; @@ -2439,7 +2620,7 @@ bool32 ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 /*if (IsPredictedToSwitch(battlerDef, battlerAtk) && !hasStatBoost) return PIVOT; // Try pivoting so you can switch to a better matchup to counter your new opponent*/ - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker goes first + if (AI_IsFaster(battlerAtk, battlerDef, move)) // Attacker goes first { if (!CanAIFaintTarget(battlerAtk, battlerDef, 0)) // Can't KO foe otherwise { @@ -2769,7 +2950,7 @@ u32 ShouldTryToFlinch(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbi if (((!IsMoldBreakerTypeAbility(battlerAtk, AI_DATA->abilities[battlerAtk]) && (defAbility == ABILITY_SHIELD_DUST || defAbility == ABILITY_INNER_FOCUS)) || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_COVERT_CLOAK || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) - || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER)) // Opponent goes first + || AI_IsSlower(battlerAtk, battlerDef, move))) // Opponent goes first { return 0; } @@ -2777,7 +2958,7 @@ u32 ShouldTryToFlinch(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbi || gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS || gBattleMons[battlerDef].status2 & STATUS2_INFATUATION || gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) - || ((AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) && CanTargetFaintAi(battlerDef, battlerAtk))) + || ((AI_IsFaster(battlerAtk, battlerDef, move)) && CanTargetFaintAi(battlerDef, battlerAtk))) { return 2; // good idea to flinch } @@ -2839,18 +3020,41 @@ bool32 IsWakeupTurn(u32 battler) bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof) { struct Pokemon *party; - u32 i; + u32 i, battlerOnField1, battlerOnField2; if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) party = gPlayerParty; else party = gEnemyParty; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerOnField1 = gBattlerPartyIndexes[battlerId]; + battlerOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(battlerId)))]; + // Check partner's status + if ((B_HEAL_BELL_SOUNDPROOF == GEN_5 || AI_DATA->abilities[BATTLE_PARTNER(battlerId)] != ABILITY_SOUNDPROOF || !checkSoundproof) + && GetMonData(&party[battlerOnField2], MON_DATA_STATUS) != STATUS1_NONE) + return TRUE; + } + else // In singles there's only one battlerId by side. + { + battlerOnField1 = gBattlerPartyIndexes[battlerId]; + battlerOnField2 = gBattlerPartyIndexes[battlerId]; + } + + // Check attacker's status + if ((B_HEAL_BELL_SOUNDPROOF == GEN_5 || B_HEAL_BELL_SOUNDPROOF >= GEN_8 + || AI_DATA->abilities[battlerId] != ABILITY_SOUNDPROOF || !checkSoundproof) + && GetMonData(&party[battlerOnField1], MON_DATA_STATUS) != STATUS1_NONE) + return TRUE; + + // Check inactive party mons' status for (i = 0; i < PARTY_SIZE; i++) { - if (checkSoundproof && GetMonAbility(&party[i]) == ABILITY_SOUNDPROOF) + if (i == battlerOnField1 || i == battlerOnField2) + continue; + if (B_HEAL_BELL_SOUNDPROOF < GEN_5 && checkSoundproof && GetMonAbility(&party[i]) == ABILITY_SOUNDPROOF) continue; - if (GetMonData(&party[i], MON_DATA_STATUS) != STATUS1_NONE) return TRUE; } @@ -2895,7 +3099,7 @@ bool32 ShouldUseRecoilMove(u32 battlerAtk, u32 battlerDef, u32 recoilDmg, u32 mo bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage) { - if (move == 0xFFFF || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (move == 0xFFFF || AI_IsFaster(battlerAtk, battlerDef, move)) { // using item or user goes first u32 healPercent = (gMovesInfo[move].argument == 0) ? 50 : gMovesInfo[move].argument; @@ -2922,10 +3126,10 @@ bool32 ShouldAbsorb(u32 battlerAtk, u32 battlerDef, u32 move, s32 damage) bool32 ShouldRecover(u32 battlerAtk, u32 battlerDef, u32 move, u32 healPercent) { - if (move == 0xFFFF || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) + if (move == 0xFFFF || AI_IsFaster(battlerAtk, battlerDef, move)) { // using item or user going first - s32 damage = AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + s32 damage = AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex].expected; s32 healAmount = (healPercent * damage) / 100; if (gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) healAmount = 0; @@ -3104,7 +3308,7 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) u32 i; s32 firstId, lastId; struct Pokemon* party; - bool32 hasStatus = FALSE; + bool32 hasStatus = AnyPartyMemberStatused(battlerAtk, gMovesInfo[move].soundMove); bool32 needHealing = FALSE; GetAIPartyIndexes(battlerAtk, &firstId, &lastId); @@ -3130,12 +3334,6 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) { needHealing = TRUE; } - - if (GetMonData(&party[i], MON_DATA_STATUS, NULL) != STATUS1_NONE) - { - if (move != MOVE_HEAL_BELL || GetMonAbility(&party[i]) != ABILITY_SOUNDPROOF) - hasStatus = TRUE; - } } } @@ -3183,18 +3381,31 @@ void FreeRestoreBattleMons(struct BattlePokemon *savedBattleMons) } // party logic -s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool8 isPartyMonAttacker) +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool32 isPartyMonAttacker, enum DamageRollType rollType) { - s32 dmg; + struct SimulatedDamage dmg; u8 effectiveness; struct BattlePokemon *savedBattleMons = AllocSaveBattleMons(); - if(isPartyMonAttacker) + + if (isPartyMonAttacker) + { gBattleMons[battlerAtk] = switchinCandidate; + AI_THINKING_STRUCT->saved[battlerDef].saved = TRUE; + SetBattlerData(battlerDef); // set known opposing battler data + AI_THINKING_STRUCT->saved[battlerDef].saved = FALSE; + } else + { gBattleMons[battlerDef] = switchinCandidate; - dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, FALSE, AI_GetWeather(AI_DATA)); + AI_THINKING_STRUCT->saved[battlerAtk].saved = TRUE; + SetBattlerData(battlerAtk); // set known opposing battler data + AI_THINKING_STRUCT->saved[battlerAtk].saved = FALSE; + } + + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, FALSE, AI_GetWeather(AI_DATA), rollType); + // restores original gBattleMon struct FreeRestoreBattleMons(savedBattleMons); - return dmg; + return dmg.expected; } s32 CountUsablePartyMons(u32 battlerId) @@ -3367,114 +3578,117 @@ bool32 IsRecycleEncouragedItem(u32 item) return FALSE; } -static void IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score, bool32 considerContrary) +static u32 IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef, u32 statId, bool32 considerContrary) { + u32 tempScore = NO_INCREASE; u32 noOfHitsToFaint = NoOfHitsForTargetToFaintAI(battlerDef, battlerAtk); - u32 aiIsFaster = GetWhichBattlerFaster(battlerAtk, battlerDef, TRUE) == AI_IS_FASTER; + u32 aiIsFaster = AI_IsFaster(battlerAtk, battlerDef, TRUE); u32 shouldSetUp = ((noOfHitsToFaint >= 2 && aiIsFaster) || (noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS); if (considerContrary && AI_DATA->abilities[battlerAtk] == ABILITY_CONTRARY) - return; + return NO_INCREASE; // Don't increase stat if AI is at +4 if (gBattleMons[battlerAtk].statStages[statId] >= MAX_STAT_STAGE - 2) - return; + return NO_INCREASE; // Don't increase stat if AI has less then 70% HP and number of hits isn't known if (AI_DATA->hpPercents[battlerAtk] < 70 && noOfHitsToFaint == UNKNOWN_NO_OF_HITS) - return; + return NO_INCREASE; // Don't set up if AI is dead to residual damage from weather if (GetBattlerSecondaryDamage(battlerAtk) >= gBattleMons[battlerAtk].hp) - return; + return NO_INCREASE; // Don't increase stats if opposing battler has Opportunist if (AI_DATA->abilities[battlerDef] == ABILITY_OPPORTUNIST) - return; + return NO_INCREASE; switch (statId) { case STAT_CHANGE_ATK: if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_PHYSICAL) && shouldSetUp) - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; break; case STAT_CHANGE_DEF: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)) { if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; else - ADJUST_SCORE_PTR(WEAK_EFFECT); + tempScore += WEAK_EFFECT; } break; case STAT_CHANGE_SPEED: if ((noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS) - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; break; case STAT_CHANGE_SPATK: if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL) && shouldSetUp) - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; break; case STAT_CHANGE_SPDEF: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)) { if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; else - ADJUST_SCORE_PTR(WEAK_EFFECT); + tempScore += WEAK_EFFECT; } break; case STAT_CHANGE_ATK_2: if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_PHYSICAL) && shouldSetUp) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; break; case STAT_CHANGE_DEF_2: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL)) { if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; else - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; } break; case STAT_CHANGE_SPEED_2: if ((noOfHitsToFaint >= 3 && !aiIsFaster) || noOfHitsToFaint == UNKNOWN_NO_OF_HITS) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; break; case STAT_CHANGE_SPATK_2: if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL) && shouldSetUp) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; break; case STAT_CHANGE_SPDEF_2: if (HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL) || !HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_PHYSICAL)) { if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; else - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; } break; case STAT_CHANGE_ACC: if (gBattleMons[battlerAtk].statStages[STAT_ACC] <= 3) // Increase only if necessary - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; break; case STAT_CHANGE_EVASION: if (noOfHitsToFaint > 3 || noOfHitsToFaint == UNKNOWN_NO_OF_HITS) - ADJUST_SCORE_PTR(GOOD_EFFECT); + tempScore += GOOD_EFFECT; else - ADJUST_SCORE_PTR(DECENT_EFFECT); + tempScore += DECENT_EFFECT; break; } + + return tempScore; } -void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) +u32 IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId) { - IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, score, TRUE); + return IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, TRUE); } -void IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) +u32 IncreaseStatUpScoreContrary(u32 battlerAtk, u32 battlerDef, u32 statId) { - IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, score, FALSE); + return IncreaseStatUpScoreInternal(battlerAtk, battlerDef, statId, FALSE); } void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) @@ -3616,26 +3830,33 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) { // simple logic. just upgrades chosen move to z move if possible, unless regular move would kill opponent if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && battlerDef == BATTLE_PARTNER(battlerAtk)) - return FALSE; //don't use z move on partner - if (gBattleStruct->zmove.used[battlerAtk]) - return FALSE; //cant use z move twice + return FALSE; // don't use z move on partner + if (HasTrainerUsedGimmick(battlerAtk, GIMMICK_Z_MOVE)) + return FALSE; // can't use z move twice if (IsViableZMove(battlerAtk, chosenMove)) { u8 effectiveness; + u32 zMove = GetUsableZMove(battlerAtk, chosenMove); + struct SimulatedDamage dmg; if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE + && !gMovesInfo[zMove].ignoresTargetAbility && (gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].species == SPECIES_MIMIKYU_TOTEM_DISGUISED)) return FALSE; // Don't waste a Z-Move busting disguise - if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) + if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE + && !gMovesInfo[zMove].ignoresTargetAbility + && 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)) + if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(zMove)) return FALSE; - else if (!IS_MOVE_STATUS(chosenMove) && IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) + else if (!IS_MOVE_STATUS(chosenMove) && IS_MOVE_STATUS(zMove)) return FALSE; - if (!IS_MOVE_STATUS(chosenMove) && AI_CalcDamageSaveBattlers(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE) >= gBattleMons[battlerDef].hp) + dmg = AI_CalcDamageSaveBattlers(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE, DMG_ROLL_DEFAULT); + + if (!IS_MOVE_STATUS(chosenMove) && dmg.minimum >= gBattleMons[battlerDef].hp) return FALSE; // don't waste damaging z move if can otherwise faint target return TRUE; @@ -3704,7 +3925,7 @@ void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_HAZARDS_ANY && CountUsablePartyMons(battlerDef) != 0) ADJUST_SCORE_PTR(-2); - if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE && AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) + if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE && AI_IsFaster(battlerAtk, battlerDef, move)) ADJUST_SCORE_PTR(-10); if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE) ADJUST_SCORE_PTR(GOOD_EFFECT); @@ -3714,3 +3935,42 @@ void IncreaseTidyUpScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) if (gStatuses3[battlerDef] & STATUS3_LEECHSEED) ADJUST_SCORE_PTR(-2); } + +bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, struct AiLogicData *aiData) +{ + u32 preventsStatLoss; + u32 partnerAbility; + u32 partnerHoldEffect = aiData->holdEffects[battlerAtkPartner]; + + if (DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) + partnerAbility = ABILITY_NONE; + else + partnerAbility = aiData->abilities[battlerAtkPartner]; + + if (gBattleMons[battlerAtkPartner].statStages[STAT_ATK] == MAX_STAT_STAGE + || partnerAbility == ABILITY_CONTRARY + || partnerAbility == ABILITY_GOOD_AS_GOLD + || HasMoveEffect(BATTLE_OPPOSITE(battlerAtk), EFFECT_FOUL_PLAY) + || HasMoveEffect(BATTLE_OPPOSITE(battlerAtkPartner), EFFECT_FOUL_PLAY)) + return FALSE; + + preventsStatLoss = (partnerAbility == ABILITY_CLEAR_BODY + || partnerAbility == ABILITY_FULL_METAL_BODY + || partnerAbility == ABILITY_WHITE_SMOKE + || partnerHoldEffect == HOLD_EFFECT_CLEAR_AMULET); + + switch (gMovesInfo[aiData->partnerMove].effect) + { + case EFFECT_DEFENSE_UP: + case EFFECT_DEFENSE_UP_2: + case EFFECT_DEFENSE_UP_3: + case EFFECT_BULK_UP: + case EFFECT_STOCKPILE: + if (!preventsStatLoss) + return FALSE; + } + + return (preventsStatLoss + && AI_IsFaster(battlerAtk, battlerAtkPartner, TRUE) + && HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL)); +} diff --git a/src/battle_anim.c b/src/battle_anim.c index f869dc1eae6a..71813ddf46bf 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -31,7 +31,6 @@ extern const u16 gMovesWithQuietBGM[]; extern const u8 *const gBattleAnims_General[]; -extern const u8 *const gBattleAnims_Moves[]; extern const u8 *const gBattleAnims_Special[]; extern const u8 *const gBattleAnims_StatusConditions[]; @@ -87,6 +86,7 @@ static void Cmd_createvisualtaskontargets(void); static void Cmd_createspriteontargets(void); static void Cmd_createspriteontargets_onpos(void); static void Cmd_jumpifmovetypeequal(void); +static void Cmd_createdragondartsprite(void); static void RunAnimScriptCommand(void); static void Task_UpdateMonBg(u8 taskId); static void FlipBattlerBgTiles(void); @@ -178,7 +178,8 @@ static void (* const sScriptCmdTable[])(void) = Cmd_createvisualtaskontargets, // 0x30 Cmd_createspriteontargets, // 0x31 Cmd_createspriteontargets_onpos, // 0x32 - Cmd_jumpifmovetypeequal, // 0x33 + Cmd_jumpifmovetypeequal, // 0x33 + Cmd_createdragondartsprite, // 0x34 }; void ClearBattleAnimationVars(void) @@ -235,7 +236,6 @@ static void Nop(void) void LaunchBattleAnimation(u32 animType, u32 animId) { s32 i; - const u8 *const *animsTable; if (gTestRunnerEnabled) { @@ -253,23 +253,6 @@ void LaunchBattleAnimation(u32 animType, u32 animId) } } - switch (animType) - { - case ANIM_TYPE_GENERAL: - default: - animsTable = gBattleAnims_General; - break; - case ANIM_TYPE_MOVE: - animsTable = gBattleAnims_Moves; - break; - case ANIM_TYPE_STATUS: - animsTable = gBattleAnims_StatusConditions; - break; - case ANIM_TYPE_SPECIAL: - animsTable = gBattleAnims_Special; - break; - } - sAnimHideHpBoxes = !(animType == ANIM_TYPE_MOVE && animId == MOVE_TRANSFORM); if (animType != ANIM_TYPE_MOVE) { @@ -289,6 +272,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) case B_ANIM_RAINBOW: case B_ANIM_SEA_OF_FIRE: case B_ANIM_SWAMP: + case B_ANIM_TERA_CHARGE: sAnimHideHpBoxes = TRUE; break; default: @@ -325,7 +309,23 @@ void LaunchBattleAnimation(u32 animType, u32 animId) sMonAnimTaskIdArray[0] = TASK_NONE; sMonAnimTaskIdArray[1] = TASK_NONE; - sBattleAnimScriptPtr = animsTable[animId]; + + switch (animType) + { + case ANIM_TYPE_GENERAL: + default: + sBattleAnimScriptPtr = gBattleAnims_General[animId]; + break; + case ANIM_TYPE_MOVE: + sBattleAnimScriptPtr = GetMoveAnimationScript(animId); + break; + case ANIM_TYPE_STATUS: + sBattleAnimScriptPtr = gBattleAnims_StatusConditions[animId]; + break; + case ANIM_TYPE_SPECIAL: + sBattleAnimScriptPtr = gBattleAnims_Special[animId]; + break; + } gAnimScriptActive = TRUE; sAnimFramesToWait = 0; gAnimScriptCallback = RunAnimScriptCommand; @@ -795,6 +795,10 @@ static void Cmd_end(void) if (!continuousAnim) // May have been used for debug? { + // Debugging - ensure no hanging mon bg tasks + if (FuncIsActiveTask(Task_UpdateMonBg)) + DebugPrintf("Move %d animation still has Task_UpdateMonBg active at the end!", gAnimMoveIndex); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256); if (!IsContest()) { @@ -2151,3 +2155,62 @@ static void Cmd_jumpifmovetypeequal(void) else sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); } + +static void Cmd_createdragondartsprite(void) +{ + s32 i; + struct SpriteTemplate template; + u8 argVar; + u8 argsCount; + s16 subpriority; + struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + + sBattleAnimScriptPtr++; + + argVar = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + argsCount = sBattleAnimScriptPtr[0]; + sBattleAnimScriptPtr++; + + for (i = 0; i < argsCount; i++) + { + gBattleAnimArgs[i] = T1_READ_16(sBattleAnimScriptPtr); + sBattleAnimScriptPtr += 2; + } + + subpriority = GetSubpriorityForMoveAnim(argVar); + + if (GetMonData(&party[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES) == SPECIES_DRAGAPULT) + { + template.tileTag = ANIM_TAG_DREEPY; + if (IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]) == TRUE) + template.paletteTag = ANIM_TAG_DREEPY_SHINY; + else + template.paletteTag = ANIM_TAG_DREEPY; + template.oam = &gOamData_AffineOff_ObjNormal_32x32; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + template.anims = gAnims_DreepyMissileOpponent; + else + template.anims = gAnims_DreepyMissilePlayer; + } + else + { + template.tileTag = ANIM_TAG_AIR_WAVE; + template.paletteTag = ANIM_TAG_DREEPY; + template.oam = &gOamData_AffineOff_ObjNormal_32x16; + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + template.anims = gAnims_DreepyMissileOpponentNotDrag; + else + template.anims = gAnims_DreepyMissilePlayer; + } + + template.images = NULL; + template.affineAnims = gDummySpriteAffineAnimTable; + template.callback = AnimShadowBall; + + if (CreateSpriteAndAnimate(&template, + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2), + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET), + subpriority) != MAX_SPRITES) // Don't increment the task count if the sprite couldn't be created(i.e. there are too many created sprites atm). + gAnimVisualTaskCount++; +} diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c index 1398d899b3b8..4191c425855e 100644 --- a/src/battle_anim_dragon.c +++ b/src/battle_anim_dragon.c @@ -42,6 +42,39 @@ const struct SpriteTemplate gOutrageFlameSpriteTemplate = .callback = AnimOutrageFlame, }; +static const union AnimCmd sAnim_DreepyMissileOpponent_0[] = +{ + ANIMCMD_FRAME(0, 0, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gAnims_DreepyMissileOpponent[] = +{ + sAnim_DreepyMissileOpponent_0, +}; + +static const union AnimCmd sAnim_DreepyMissilePlayer_0[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +const union AnimCmd *const gAnims_DreepyMissilePlayer[] = +{ + sAnim_DreepyMissilePlayer_0, +}; + +static const union AnimCmd sAnim_DreepyMissileNotDrag_0[] = +{ + ANIMCMD_FRAME(0, 0, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gAnims_DreepyMissileOpponentNotDrag[] = +{ + sAnim_DreepyMissileNotDrag_0, +}; + static const union AnimCmd sAnim_DragonBreathFire_0[] = { ANIMCMD_FRAME(16, 3), diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index f3cb387dd2a2..b917cdc9a57a 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -6567,6 +6567,11 @@ void PrepareDoubleTeamAnim(u32 taskId, u32 animBattler, bool32 forAllySwitch) gSprites[spriteId].sBattlerFlank = (animBattler != ANIM_ATTACKER); else gSprites[spriteId].sBattlerFlank = (animBattler == ANIM_ATTACKER); + + // correct direction on opponent side + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) + gSprites[spriteId].sBattlerFlank ^= 1; + gSprites[spriteId].callback = AnimDoubleTeam; task->tBlendSpritesCount++; } @@ -6592,11 +6597,21 @@ static inline void SwapStructData(void *s1, void *s2, void *data, u32 size) static void ReloadBattlerSprites(u32 battler, struct Pokemon *party) { - BattleLoadMonSpriteGfx(&party[gBattlerPartyIndexes[battler]], battler); + struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]]; + BattleLoadMonSpriteGfx(mon, battler); CreateBattlerSprite(battler); - UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &party[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL); - // If battler is mega evolved / primal reversed, hide the sprite until the move animation finishes. - MegaIndicator_SetVisibilities(gHealthboxSpriteIds[battler], TRUE); + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); + // If battler has an indicator for a gimmick, hide the sprite until the move animation finishes. + UpdateIndicatorVisibilityAndType(gHealthboxSpriteIds[battler], TRUE); + + // Try to recreate shadow sprite + if (gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId < MAX_SPRITES) + { + DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId]); + gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId = MAX_SPRITES; + CreateEnemyShadowSprite(battler); + SetBattlerShadowSpriteCallback(battler, GetMonData(mon, MON_DATA_SPECIES)); + } } static void AnimTask_AllySwitchDataSwap(u8 taskId) diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index ffba3429eb4b..ed2e7457f62e 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -112,6 +112,8 @@ static void AnimTask_OdorSleuthMovementWaitFinish(u8); static void MoveOdorSleuthClone(struct Sprite *); static void AnimTask_TeeterDanceMovement_Step(u8); static void AnimTask_SlackOffSquish_Step(u8); +static void AnimTask_TeraCrystalShatter(struct Sprite *); +static void AnimTask_TeraCrystalShatter_Step(struct Sprite *); const union AnimCmd gScratchAnimCmds[] = { @@ -1257,6 +1259,57 @@ const struct SpriteTemplate gOmegaSymbolSpriteTemplate = .callback = AnimGhostStatusSprite, }; +const struct SpriteTemplate gTeraCrystalSpriteTemplate = +{ + .tileTag = ANIM_TAG_TERA_CRYSTAL, + .paletteTag = ANIM_TAG_TERA_CRYSTAL, + .oam = &gOamData_AffineDouble_ObjBlend_64x64, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gAffineAnims_LusterPurgeCircle, + .callback = AnimSpriteOnMonPos, +}; + +const struct SpriteTemplate gTeraCrystalSpreadSpriteTemplate = +{ + .tileTag = ANIM_TAG_TERA_SHATTER, + .paletteTag = ANIM_TAG_TERA_SHATTER, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTask_TeraCrystalShatter, +}; + +// Task data for AnimTask_TeraCrystalShatter +#define tCounter data[0] +#define tDX data[6] +#define tDY data[7] + +static void AnimTask_TeraCrystalShatter(struct Sprite *sprite) +{ + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); + sprite->oam.tileNum += gBattleAnimArgs[0] * 4; + + sprite->tCounter = 0; + sprite->tDX = gBattleAnimArgs[1]; + sprite->tDY = gBattleAnimArgs[2]; + + sprite->callback = AnimTask_TeraCrystalShatter_Step; +} + +static void AnimTask_TeraCrystalShatter_Step(struct Sprite *sprite) +{ + sprite->x += sprite->tDX; + sprite->y += sprite->tDY; + + if (++sprite->tCounter > 15) + DestroyAnimSprite(sprite); +} + +#undef tCounter + void AnimBlackSmoke(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -5580,6 +5633,8 @@ void AnimTask_GetWeather(u8 taskId) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; else if (gWeatherMoveAnim & B_WEATHER_SNOW) gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SNOW; + else if (gWeatherMoveAnim & B_WEATHER_FOG) + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_FOG; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index a4dce6aa0d59..f023859b5940 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -3720,12 +3720,42 @@ const struct SpriteTemplate gMagicPowderBluePowderTemplate = }; //dreepy missile -const struct SpriteTemplate gDreepyMissileTemplate = +const struct SpriteTemplate gDreepyMissilePlayerTemplate = { .tileTag = ANIM_TAG_DREEPY, .paletteTag = ANIM_TAG_DREEPY, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gDummySpriteAnimTable, + .anims = gAnims_DreepyMissilePlayer, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; +const struct SpriteTemplate gDreepyMissileOpponentTemplate = +{ + .tileTag = ANIM_TAG_DREEPY, + .paletteTag = ANIM_TAG_DREEPY, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DreepyMissileOpponent, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; +const struct SpriteTemplate gDreepyMissilePlayerShinyTemplate = +{ + .tileTag = ANIM_TAG_DREEPY, + .paletteTag = ANIM_TAG_DREEPY_SHINY, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DreepyMissilePlayer, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimShadowBall +}; +const struct SpriteTemplate gDreepyMissileOpponentShinyTemplate = +{ + .tileTag = ANIM_TAG_DREEPY, + .paletteTag = ANIM_TAG_DREEPY_SHINY, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_DreepyMissileOpponent, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimShadowBall diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index e395be5f8411..3b05ef6280b9 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -17,35 +17,6 @@ static void SpriteCB_SmokescreenImpact(struct Sprite *); // The below data for smokescreen starts and ends with some data that belongs to battle_gfx_sfx_util.c -const u8 gBattlePalaceNatureToMoveTarget[NUM_NATURES] = -{ - [NATURE_HARDY] = PALACE_TARGET_STRONGER, - [NATURE_LONELY] = PALACE_TARGET_STRONGER, - [NATURE_BRAVE] = PALACE_TARGET_WEAKER, - [NATURE_ADAMANT] = PALACE_TARGET_STRONGER, - [NATURE_NAUGHTY] = PALACE_TARGET_WEAKER, - [NATURE_BOLD] = PALACE_TARGET_WEAKER, - [NATURE_DOCILE] = PALACE_TARGET_RANDOM, - [NATURE_RELAXED] = PALACE_TARGET_STRONGER, - [NATURE_IMPISH] = PALACE_TARGET_STRONGER, - [NATURE_LAX] = PALACE_TARGET_STRONGER, - [NATURE_TIMID] = PALACE_TARGET_WEAKER, - [NATURE_HASTY] = PALACE_TARGET_WEAKER, - [NATURE_SERIOUS] = PALACE_TARGET_WEAKER, - [NATURE_JOLLY] = PALACE_TARGET_STRONGER, - [NATURE_NAIVE] = PALACE_TARGET_RANDOM, - [NATURE_MODEST] = PALACE_TARGET_WEAKER, - [NATURE_MILD] = PALACE_TARGET_STRONGER, - [NATURE_QUIET] = PALACE_TARGET_WEAKER, - [NATURE_BASHFUL] = PALACE_TARGET_WEAKER, - [NATURE_RASH] = PALACE_TARGET_STRONGER, - [NATURE_CALM] = PALACE_TARGET_STRONGER, - [NATURE_GENTLE] = PALACE_TARGET_STRONGER, - [NATURE_SASSY] = PALACE_TARGET_WEAKER, - [NATURE_CAREFUL] = PALACE_TARGET_WEAKER, - [NATURE_QUIRKY] = PALACE_TARGET_STRONGER, -}; - static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = { .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN diff --git a/src/battle_bg.c b/src/battle_bg.c index 0f802d52de77..328f990653e0 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -371,6 +371,15 @@ static const struct WindowTemplate sStandardBattleWindowTemplates[] = .paletteNum = 0, .baseBlock = 0x00b0, }, + [B_WIN_MOVE_DESCRIPTION] = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 47, + .width = 18, + .height = 6, + .paletteNum = 5, + .baseBlock = 0x0350, + }, DUMMY_WIN_TEMPLATE }; @@ -583,6 +592,15 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] = .paletteNum = 7, .baseBlock = 0x0090, }, + [B_WIN_MOVE_DESCRIPTION] = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 47, + .width = 18, + .height = 6, + .paletteNum = 5, + .baseBlock = 0x0350, + }, DUMMY_WIN_TEMPLATE }; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 597d0b7c5f43..a5dc6f3af137 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -544,13 +544,6 @@ static void OpponentHandleChooseMove(u32 battler) default: { u16 chosenMove = moveInfo->moves[chosenMoveId]; - bool32 isSecondTrainer = (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT) && (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !BATTLE_TWO_VS_ONE_OPPONENT; - u16 trainerId = isSecondTrainer ? gTrainerBattleOpponent_B : gTrainerBattleOpponent_A; - const struct TrainerMon *party = GetTrainerPartyFromId(trainerId); - bool32 shouldDynamax = FALSE; - if (party != NULL) - shouldDynamax = party[isSecondTrainer ? gBattlerPartyIndexes[battler] - MULTI_PARTY_SIZE : gBattlerPartyIndexes[battler]].shouldDynamax; - if (GetBattlerMoveTargetType(battler, chosenMove) & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) gBattlerTarget = battler; if (GetBattlerMoveTargetType(battler, chosenMove) & MOVE_TARGET_BOTH) @@ -559,19 +552,17 @@ static void OpponentHandleChooseMove(u32 battler) if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); } - if (ShouldUseZMove(battler, gBattlerTarget, chosenMove)) - QueueZMove(battler, chosenMove); - // 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 allowed in the partydata, do it. - else if (CanDynamax(battler) && shouldDynamax) - BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); + // If opponent can and should use a gimmick (considering trainer data), do it + if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_NONE + && !(gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_Z_MOVE + && !ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveId]))) + { + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_GIMMICK) | (gBattlerTarget << 8)); + } else + { BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); + } } break; } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index eeca1899b172..6dcea9eb98c1 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -9,6 +9,7 @@ #include "battle_setup.h" #include "battle_tv.h" #include "battle_z_move.h" +#include "battle_gimmick.h" #include "bg.h" #include "data.h" #include "item.h" @@ -31,6 +32,7 @@ #include "util.h" #include "window.h" #include "constants/battle_anim.h" +#include "constants/battle_move_effects.h" #include "constants/battle_partner.h" #include "constants/hold_effects.h" #include "constants/items.h" @@ -40,6 +42,8 @@ #include "constants/trainers.h" #include "constants/rgb.h" #include "level_caps.h" +#include "menu.h" +#include "pokemon_summary_screen.h" static void PlayerBufferExecCompleted(u32 battler); static void PlayerHandleLoadMonSprite(u32 battler); @@ -83,6 +87,7 @@ static void MoveSelectionDisplayPpNumber(u32 battler); static void MoveSelectionDisplayPpString(u32 battler); static void MoveSelectionDisplayMoveType(u32 battler); static void MoveSelectionDisplayMoveNames(u32 battler); +static void MoveSelectionDisplayMoveDescription(u32 battler); static void HandleMoveSwitching(u32 battler); static void SwitchIn_HandleSoundAndEnd(u32 battler); static void WaitForMonSelection(u32 battler); @@ -158,9 +163,6 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) = [CONTROLLER_TERMINATOR_NOP] = BtlController_TerminatorNop }; -static EWRAM_DATA bool8 sAckBallUseBtn = FALSE; -static EWRAM_DATA bool8 sBallSwapped = FALSE; - void SetControllerToPlayer(u32 battler) { gBattlerControllerEndFuncs[battler] = PlayerBufferExecCompleted; @@ -258,61 +260,63 @@ static void HandleInputChooseAction(u32 battler) else gPlayerDpadHoldFrames = 0; -#if B_LAST_USED_BALL == TRUE && B_LAST_USED_BALL_CYCLE == TRUE - if (!gLastUsedBallMenuPresent) - { - sAckBallUseBtn = FALSE; - } - else if (JOY_NEW(B_LAST_USED_BALL_BUTTON)) + if (B_LAST_USED_BALL == TRUE && B_LAST_USED_BALL_CYCLE == TRUE) { - sAckBallUseBtn = TRUE; - sBallSwapped = FALSE; - ArrowsChangeColorLastBallCycle(TRUE); - } - if (sAckBallUseBtn) - { - if (JOY_HELD(B_LAST_USED_BALL_BUTTON) && (JOY_NEW(DPAD_DOWN) || JOY_NEW(DPAD_RIGHT))) - { - bool8 sameBall = FALSE; - u16 nextBall = GetNextBall(gBallToDisplay); - sBallSwapped = TRUE; - if (gBallToDisplay == nextBall) - sameBall = TRUE; - else - gBallToDisplay = nextBall; - SwapBallToDisplay(sameBall); - PlaySE(SE_SELECT); - } - else if (JOY_HELD(B_LAST_USED_BALL_BUTTON) && (JOY_NEW(DPAD_UP) || JOY_NEW(DPAD_LEFT))) + if (!gLastUsedBallMenuPresent) { - bool8 sameBall = FALSE; - u16 prevBall = GetPrevBall(gBallToDisplay); - sBallSwapped = TRUE; - if (gBallToDisplay == prevBall) - sameBall = TRUE; - else - gBallToDisplay = prevBall; - SwapBallToDisplay(sameBall); - PlaySE(SE_SELECT); + gBattleStruct->ackBallUseBtn = FALSE; } - else if (JOY_NEW(B_BUTTON) || (!JOY_HELD(B_LAST_USED_BALL_BUTTON) && sBallSwapped)) + else if (JOY_NEW(B_LAST_USED_BALL_BUTTON)) { - sAckBallUseBtn = FALSE; - sBallSwapped = FALSE; - ArrowsChangeColorLastBallCycle(FALSE); + gBattleStruct->ackBallUseBtn = TRUE; + gBattleStruct->ballSwapped = FALSE; + ArrowsChangeColorLastBallCycle(TRUE); } - else if (!JOY_HELD(B_LAST_USED_BALL_BUTTON) && CanThrowLastUsedBall()) + + if (gBattleStruct->ackBallUseBtn) { - sAckBallUseBtn = FALSE; - PlaySE(SE_SELECT); - ArrowsChangeColorLastBallCycle(FALSE); - TryHideLastUsedBall(); - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_THROW_BALL, 0); - PlayerBufferExecCompleted(battler); + if (JOY_HELD(B_LAST_USED_BALL_BUTTON) && (JOY_NEW(DPAD_DOWN) || JOY_NEW(DPAD_RIGHT))) + { + bool32 sameBall = FALSE; + u32 nextBall = GetNextBall(gBallToDisplay); + gBattleStruct->ballSwapped = TRUE; + if (gBallToDisplay == nextBall) + sameBall = TRUE; + else + gBallToDisplay = nextBall; + SwapBallToDisplay(sameBall); + PlaySE(SE_SELECT); + } + else if (JOY_HELD(B_LAST_USED_BALL_BUTTON) && (JOY_NEW(DPAD_UP) || JOY_NEW(DPAD_LEFT))) + { + bool32 sameBall = FALSE; + u32 prevBall = GetPrevBall(gBallToDisplay); + gBattleStruct->ballSwapped = TRUE; + if (gBallToDisplay == prevBall) + sameBall = TRUE; + else + gBallToDisplay = prevBall; + SwapBallToDisplay(sameBall); + PlaySE(SE_SELECT); + } + else if (JOY_NEW(B_BUTTON) || (!JOY_HELD(B_LAST_USED_BALL_BUTTON) && gBattleStruct->ballSwapped)) + { + gBattleStruct->ackBallUseBtn = FALSE; + gBattleStruct->ballSwapped = FALSE; + ArrowsChangeColorLastBallCycle(FALSE); + } + else if (!JOY_HELD(B_LAST_USED_BALL_BUTTON) && CanThrowLastUsedBall()) + { + gBattleStruct->ackBallUseBtn = FALSE; + PlaySE(SE_SELECT); + ArrowsChangeColorLastBallCycle(FALSE); + TryHideLastUsedBall(); + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_THROW_BALL, 0); + PlayerBufferExecCompleted(battler); + } + return; } - return; } -#endif if (JOY_NEW(A_BUTTON)) { @@ -407,22 +411,19 @@ static void HandleInputChooseAction(u32 battler) { SwapHpBarsWithHpText(); } -#if DEBUG_BATTLE_MENU == TRUE - else if (JOY_NEW(SELECT_BUTTON)) + else if (DEBUG_BATTLE_MENU == TRUE && JOY_NEW(SELECT_BUTTON)) { BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_DEBUG, 0); PlayerBufferExecCompleted(battler); } -#endif -#if B_LAST_USED_BALL == TRUE && B_LAST_USED_BALL_CYCLE == FALSE - else if (JOY_NEW(B_LAST_USED_BALL_BUTTON) && CanThrowLastUsedBall()) + else if (B_LAST_USED_BALL == TRUE && B_LAST_USED_BALL_CYCLE == FALSE + && JOY_NEW(B_LAST_USED_BALL_BUTTON) && CanThrowLastUsedBall()) { PlaySE(SE_SELECT); TryHideLastUsedBall(); BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_THROW_BALL, 0); PlayerBufferExecCompleted(battler); } -#endif } static void HandleInputChooseTarget(u32 battler) @@ -448,17 +449,13 @@ static void HandleInputChooseTarget(u32 battler) { PlaySE(SE_SELECT); gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; - if (gBattleStruct->mega.playerSelect) - 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)); + if (gBattleStruct->gimmick.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); TryHideLastUsedBall(); - HideTriggerSprites(); + HideGimmickTriggerSprite(); PlayerBufferExecCompleted(battler); } else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) @@ -610,15 +607,11 @@ static void HandleInputShowEntireFieldTargets(u32 battler) { PlaySE(SE_SELECT); HideAllTargets(); - if (gBattleStruct->mega.playerSelect) - 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)); + if (gBattleStruct->gimmick.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); - HideTriggerSprites(); + HideGimmickTriggerSprite(); PlayerBufferExecCompleted(battler); } else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) @@ -642,15 +635,11 @@ static void HandleInputShowTargets(u32 battler) { PlaySE(SE_SELECT); HideShownTargets(battler); - if (gBattleStruct->mega.playerSelect) - 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)); + if (gBattleStruct->gimmick.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); - HideTriggerSprites(); + HideGimmickTriggerSprite(); TryHideLastUsedBall(); PlayerBufferExecCompleted(battler); } @@ -684,33 +673,21 @@ static void HandleInputChooseMove(u32 battler) else gPlayerDpadHoldFrames = 0; - if (JOY_NEW(A_BUTTON)) + if (JOY_NEW(A_BUTTON) && !gBattleStruct->descriptionSubmenu) { PlaySE(SE_SELECT); - if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_CURSE) - { - if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST && moveInfo->monType3 != TYPE_GHOST) - moveTarget = MOVE_TARGET_USER; - else - moveTarget = MOVE_TARGET_SELECTED; - } - else - { - moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[gMoveSelectionCursor[battler]]); - } + + moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[gMoveSelectionCursor[battler]]); if (gBattleStruct->zmove.viewing) { - u16 chosenMove = moveInfo->moves[gMoveSelectionCursor[battler]]; - - QueueZMove(battler, chosenMove); gBattleStruct->zmove.viewing = FALSE; if (gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].category != DAMAGE_CATEGORY_STATUS) 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)) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX || IsGimmickSelected(battler, GIMMICK_DYNAMAX)) moveTarget = gMovesInfo[GetMaxMove(battler, moveInfo->moves[gMoveSelectionCursor[battler]])].target; if (moveTarget & MOVE_TARGET_USER) @@ -766,15 +743,11 @@ static void HandleInputChooseMove(u32 battler) { case 0: default: - if (gBattleStruct->mega.playerSelect) - 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)); + if (gBattleStruct->gimmick.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_GIMMICK | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); - HideTriggerSprites(); + HideGimmickTriggerSprite(); TryHideLastUsedBall(); PlayerBufferExecCompleted(battler); break; @@ -798,21 +771,18 @@ static void HandleInputChooseMove(u32 battler) break; } } - else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) + else if ((JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) && !gBattleStruct->descriptionSubmenu) { PlaySE(SE_SELECT); + gBattleStruct->gimmick.playerSelect = FALSE; if (gBattleStruct->zmove.viewing) { ReloadMoveNames(battler); } else { - gBattleStruct->mega.playerSelect = FALSE; - gBattleStruct->burst.playerSelect = FALSE; - gBattleStruct->dynamax.playerSelect = FALSE; - gBattleStruct->zmove.viable = FALSE; BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, 0xFFFF); - HideTriggerSprites(); + HideGimmickTriggerSprite(); PlayerBufferExecCompleted(battler); } } @@ -826,7 +796,9 @@ static void HandleInputChooseMove(u32 battler) MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); - TryChangeZIndicator(battler, gMoveSelectionCursor[battler]); + if (gBattleStruct->descriptionSubmenu) + MoveSelectionDisplayMoveDescription(battler); + TryChangeZTrigger(battler, gMoveSelectionCursor[battler]); } } else if (JOY_NEW(DPAD_RIGHT) && !gBattleStruct->zmove.viewing) @@ -840,7 +812,9 @@ static void HandleInputChooseMove(u32 battler) MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); - TryChangeZIndicator(battler, gMoveSelectionCursor[battler]); + if (gBattleStruct->descriptionSubmenu) + MoveSelectionDisplayMoveDescription(battler); + TryChangeZTrigger(battler, gMoveSelectionCursor[battler]); } } else if (JOY_NEW(DPAD_UP) && !gBattleStruct->zmove.viewing) @@ -853,7 +827,9 @@ static void HandleInputChooseMove(u32 battler) MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); - TryChangeZIndicator(battler, gMoveSelectionCursor[battler]); + if (gBattleStruct->descriptionSubmenu) + MoveSelectionDisplayMoveDescription(battler); + TryChangeZTrigger(battler, gMoveSelectionCursor[battler]); } } else if (JOY_NEW(DPAD_DOWN) && !gBattleStruct->zmove.viewing) @@ -867,10 +843,12 @@ static void HandleInputChooseMove(u32 battler) MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); - TryChangeZIndicator(battler, gMoveSelectionCursor[battler]); + if (gBattleStruct->descriptionSubmenu) + MoveSelectionDisplayMoveDescription(battler); + TryChangeZTrigger(battler, gMoveSelectionCursor[battler]); } } - else if (JOY_NEW(SELECT_BUTTON) && !gBattleStruct->zmove.viewing) + else if (JOY_NEW(SELECT_BUTTON) && !gBattleStruct->zmove.viewing && !gBattleStruct->descriptionSubmenu) { if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { @@ -886,36 +864,37 @@ static void HandleInputChooseMove(u32 battler) gBattlerControllerFuncs[battler] = HandleMoveSwitching; } } - else if (JOY_NEW(START_BUTTON)) + else if (gBattleStruct->descriptionSubmenu) { - if (CanMegaEvolve(battler)) + if (JOY_NEW(B_MOVE_DESCRIPTION_BUTTON) || JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { - gBattleStruct->mega.playerSelect ^= 1; - ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, gBattleStruct->mega.playerSelect); - PlaySE(SE_SELECT); - } - else if (CanUltraBurst(battler)) - { - gBattleStruct->burst.playerSelect ^= 1; - ChangeBurstTriggerSprite(gBattleStruct->burst.triggerSpriteId, gBattleStruct->burst.playerSelect); - PlaySE(SE_SELECT); - } - else if (gBattleStruct->zmove.viable) - { - // show z move name / info - //TODO: brighten z move symbol + gBattleStruct->descriptionSubmenu = FALSE; + if (gCategoryIconSpriteId != 0xFF) + { + DestroySprite(&gSprites[gCategoryIconSpriteId]); + gCategoryIconSpriteId = 0xFF; + } + + FillWindowPixelBuffer(B_WIN_MOVE_DESCRIPTION, PIXEL_FILL(0)); + ClearStdWindowAndFrame(B_WIN_MOVE_DESCRIPTION, FALSE); + CopyWindowToVram(B_WIN_MOVE_DESCRIPTION, COPYWIN_GFX); PlaySE(SE_SELECT); - if (!gBattleStruct->zmove.viewing) - MoveSelectionDisplayZMove(gBattleStruct->zmove.chosenZMove, battler); - else - ReloadMoveNames(battler); + MoveSelectionDisplayPpNumber(battler); + MoveSelectionDisplayMoveType(battler); } - else if (CanDynamax(battler)) + } + else if (JOY_NEW(B_MOVE_DESCRIPTION_BUTTON) && B_MOVE_DESCRIPTION_BUTTON != B_LAST_USED_BALL_BUTTON) + { + gBattleStruct->descriptionSubmenu = TRUE; + MoveSelectionDisplayMoveDescription(battler); + } + else if (JOY_NEW(START_BUTTON)) + { + if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_NONE) { - gBattleStruct->dynamax.playerSelect ^= 1; - MoveSelectionDisplayMoveNames(battler); - MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); - ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, gBattleStruct->dynamax.playerSelect); + gBattleStruct->gimmick.playerSelect ^= 1; + ReloadMoveNames(battler); + ChangeGimmickTriggerSprite(gBattleStruct->gimmick.triggerSpriteId, gBattleStruct->gimmick.playerSelect); PlaySE(SE_SELECT); } } @@ -923,15 +902,20 @@ static void HandleInputChooseMove(u32 battler) 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); - MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); - MoveSelectionDisplayPpNumber(battler); - MoveSelectionDisplayMoveType(battler); + if (gBattleStruct->zmove.viable && !gBattleStruct->zmove.viewing) + { + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); + MoveSelectionDisplayZMove(GetUsableZMove(battler, moveInfo->moves[gMoveSelectionCursor[battler]]), battler); + } + else + { + gBattleStruct->zmove.viewing = FALSE; + MoveSelectionDestroyCursorAt(battler); + MoveSelectionDisplayMoveNames(battler); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + MoveSelectionDisplayPpNumber(battler); + MoveSelectionDisplayMoveType(battler); + } } static u32 UNUSED HandleMoveInputUnused(u32 battler) @@ -1084,7 +1068,7 @@ static void HandleMoveSwitching(u32 battler) MoveSelectionDisplayPpString(battler); MoveSelectionDisplayPpNumber(battler); MoveSelectionDisplayMoveType(battler); - GetUsableZMoves(battler, moveInfo->moves); + AssignUsableZMoves(battler, moveInfo->moves); } else if (JOY_NEW(B_BUTTON | SELECT_BUTTON)) { @@ -1455,7 +1439,7 @@ static void Task_GiveExpToMon(u8 taskId) CalculateMonStats(mon); // Reapply Dynamax HP multiplier after stats are recalculated. - if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && monId == gBattlerPartyIndexes[battler]) { ApplyDynamaxHPMultiplier(battler, mon); gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; @@ -1539,7 +1523,7 @@ static void Task_GiveExpWithExpBar(u8 taskId) CalculateMonStats(&gPlayerParty[monId]); // Reapply Dynamax HP multiplier after stats are recalculated. - if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && monId == gBattlerPartyIndexes[battler]) { ApplyDynamaxHPMultiplier(battler, &gPlayerParty[monId]); gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; @@ -1692,8 +1676,7 @@ static void MoveSelectionDisplayMoveNames(u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); - if ((gBattleStruct->dynamax.playerSelect && CanDynamax(battler)) - || IsDynamaxed(battler)) + if (IsGimmickSelected(battler, GIMMICK_DYNAMAX) || GetActiveGimmick(battler) == GIMMICK_DYNAMAX) StringCopy(gDisplayedStringBattle, GetMoveName(GetMaxMove(battler, moveInfo->moves[i]))); else StringCopy(gDisplayedStringBattle, GetMoveName(moveInfo->moves[i])); @@ -1729,36 +1712,95 @@ static void MoveSelectionDisplayPpNumber(u32 battler) static void MoveSelectionDisplayMoveType(u32 battler) { - u8 *txtPtr; + u8 *txtPtr, *end; u8 type; u32 speciesId; - struct Pokemon *mon; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); - *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; - *(txtPtr)++ = EXT_CTRL_CODE_FONT; - *(txtPtr)++ = FONT_NORMAL; - if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_IVY_CUDGEL) + type = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].type; + + if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_TERA_BLAST) + { + if (IsGimmickSelected(battler, GIMMICK_TERA) || GetActiveGimmick(battler) == GIMMICK_TERA) + type = GetBattlerTeraType(battler); + } + else if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_IVY_CUDGEL) { - mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; - speciesId = GetMonData(mon, MON_DATA_SPECIES); + speciesId = gBattleMons[battler].species; if (speciesId == SPECIES_OGERPON_WELLSPRING_MASK || speciesId == SPECIES_OGERPON_WELLSPRING_MASK_TERA || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK_TERA || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK_TERA) type = gBattleMons[battler].type2; - else - type = gMovesInfo[MOVE_IVY_CUDGEL].type; } - else - type = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].type; + // Max Guard is a Normal-type move + else if (gMovesInfo[moveInfo->moves[gMoveSelectionCursor[battler]]].category == DAMAGE_CATEGORY_STATUS + && (GetActiveGimmick(battler) == GIMMICK_DYNAMAX || IsGimmickSelected(battler, GIMMICK_DYNAMAX))) + { + type = TYPE_NORMAL; + } + else if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_TERA_STARSTORM) + { + if (gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR + || (IsGimmickSelected(battler, GIMMICK_TERA) && gBattleMons[battler].species == SPECIES_TERAPAGOS_TERASTAL)) + type = TYPE_STELLAR; + } - StringCopy(txtPtr, gTypesInfo[type].name); + end = StringCopy(txtPtr, gTypesInfo[type].name); + PrependFontIdToFit(txtPtr, end, FONT_NORMAL, WindowWidthPx(B_WIN_MOVE_TYPE) - 25); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } +static void MoveSelectionDisplayMoveDescription(u32 battler) +{ + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleResources->bufferA[battler][4]); + u16 move = moveInfo->moves[gMoveSelectionCursor[battler]]; + u16 pwr = gMovesInfo[move].power; + u16 acc = gMovesInfo[move].accuracy; + u8 cat = gMovesInfo[move].category; + + u8 pwr_num[3], acc_num[3]; + u8 cat_desc[7] = _("CAT: "); + u8 pwr_desc[7] = _("PWR: "); + u8 acc_desc[7] = _("ACC: "); + u8 cat_start[] = _("{CLEAR_TO 0x03}"); + u8 pwr_start[] = _("{CLEAR_TO 0x38}"); + u8 acc_start[] = _("{CLEAR_TO 0x6D}"); + LoadMessageBoxAndBorderGfx(); + DrawStdWindowFrame(B_WIN_MOVE_DESCRIPTION, FALSE); + if (pwr < 2) + StringCopy(pwr_num, gText_BattleSwitchWhich5); + else + ConvertIntToDecimalStringN(pwr_num, pwr, STR_CONV_MODE_LEFT_ALIGN, 3); + if (acc < 2) + StringCopy(acc_num, gText_BattleSwitchWhich5); + else + ConvertIntToDecimalStringN(acc_num, acc, STR_CONV_MODE_LEFT_ALIGN, 3); + StringCopy(gDisplayedStringBattle, cat_start); + StringAppend(gDisplayedStringBattle, cat_desc); + StringAppend(gDisplayedStringBattle, pwr_start); + StringAppend(gDisplayedStringBattle, pwr_desc); + StringAppend(gDisplayedStringBattle, pwr_num); + StringAppend(gDisplayedStringBattle, acc_start); + StringAppend(gDisplayedStringBattle, acc_desc); + StringAppend(gDisplayedStringBattle, acc_num); + StringAppend(gDisplayedStringBattle, gText_NewLine); + if (gMovesInfo[move].effect == EFFECT_PLACEHOLDER) + StringAppend(gDisplayedStringBattle, gNotDoneYetDescription); + else + StringAppend(gDisplayedStringBattle, gMovesInfo[move].description); + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_DESCRIPTION); + + if (gCategoryIconSpriteId == 0xFF) + gCategoryIconSpriteId = CreateSprite(&gSpriteTemplate_CategoryIcons, 38, 64, 1); + + StartSpriteAnim(&gSprites[gCategoryIconSpriteId], cat); + + CopyWindowToVram(B_WIN_MOVE_DESCRIPTION, COPYWIN_FULL); +} + void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 baseTileNum) { u16 src[2]; @@ -2056,27 +2098,16 @@ static void PlayerHandleChooseMove(u32 battler) struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); InitMoveSelectionsVarsAndStrings(battler); - gBattleStruct->mega.playerSelect = FALSE; - gBattleStruct->burst.playerSelect = FALSE; - gBattleStruct->dynamax.playerSelect = FALSE; - if (!IsMegaTriggerSpriteActive()) - gBattleStruct->mega.triggerSpriteId = 0xFF; - if (CanMegaEvolve(battler)) - CreateMegaTriggerSprite(battler, 0); - if (!IsBurstTriggerSpriteActive()) - 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; - - GetUsableZMoves(battler, moveInfo->moves); - gBattleStruct->zmove.viable = IsZMoveUsable(battler, gMoveSelectionCursor[battler]); - CreateZMoveTriggerSprite(battler, gBattleStruct->zmove.viable); + gBattleStruct->gimmick.playerSelect = FALSE; + + AssignUsableZMoves(battler, moveInfo->moves); + gBattleStruct->zmove.viable = (gBattleStruct->zmove.possibleZMoves[battler] & gBitTable[gMoveSelectionCursor[battler]]) != 0; + + if (!IsGimmickTriggerSpriteActive()) + gBattleStruct->gimmick.triggerSpriteId = 0xFF; + if (!(gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_Z_MOVE && !gBattleStruct->zmove.viable)) + CreateGimmickTriggerSprite(battler); + gBattlerControllerFuncs[battler] = HandleChooseMoveAfterDma3; } } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index b817adf09754..2dffd4f70288 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -368,17 +368,17 @@ static void PlayerPartnerHandleChooseMove(u32 battler) if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - - if (ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveId])) - QueueZMove(battler, moveInfo->moves[chosenMoveId]); - - // If partner can mega evolve, do it. - if (CanMegaEvolve(battler)) - BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); - else if (CanUltraBurst(battler)) - BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_ULTRA_BURST) | (gBattlerTarget << 8)); + // If partner can and should use a gimmick (considering trainer data), do it + if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_NONE + && !(gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_Z_MOVE + && !ShouldUseZMove(battler, gBattlerTarget, moveInfo->moves[chosenMoveId]))) + { + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_GIMMICK) | (gBattlerTarget << 8)); + } else + { BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); + } } PlayerPartnerBufferExecCompleted(battler); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index c4acc1691a0c..230c3464dd32 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -11,6 +11,7 @@ #include "battle_setup.h" #include "battle_tv.h" #include "cable_club.h" +#include "event_object_movement.h" #include "link.h" #include "link_rfu.h" #include "palette.h" @@ -1608,6 +1609,15 @@ static u32 GetBattlerMonData(u32 battler, struct Pokemon *party, u32 monId, u8 * src = (u8 *)&battleMon; for (size = 0; size < sizeof(battleMon); size++) dst[size] = src[size]; + #if TESTING + if (gTestRunnerEnabled) + { + u32 side = GetBattlerSide(battler); + u32 partyIndex = gBattlerPartyIndexes[battler]; + if (TestRunner_Battle_GetForcedAbility(side, partyIndex)) + gBattleMons[battler].ability = gBattleStruct->overwrittenAbilities[battler] = TestRunner_Battle_GetForcedAbility(side, partyIndex); + } + #endif break; case REQUEST_SPECIES_BATTLE: data16 = GetMonData(&party[monId], MON_DATA_SPECIES); @@ -2085,7 +2095,22 @@ static void SetBattlerMonData(u32 battler, struct Pokemon *party, u32 monId) HandleLowHpMusicChange(&party[gBattlerPartyIndexes[battler]], battler); } -void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit) +// In normal singles, if follower pokemon is out, have it slide in instead of being thrown +static bool8 ShouldDoSlideInAnim(void) +{ + struct ObjectEvent *followerObj = GetFollowerObject(); + if (!followerObj || followerObj->invisible) + return FALSE; + if (gBattleTypeFlags & ( + BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_FIRST_BATTLE | + BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TWO_OPPONENTS | + BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL) + ) + return FALSE; + return TRUE; +} + +void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit, bool32 doSlideIn) { u16 species; u32 side = GetBattlerSide(battler); @@ -2116,7 +2141,7 @@ void StartSendOutAnim(u32 battler, bool32 dontClearSubstituteBit) gSprites[gBattleControllerData[battler]].data[1] = gBattlerSpriteIds[battler]; gSprites[gBattleControllerData[battler]].data[2] = battler; - gSprites[gBattleControllerData[battler]].data[0] = DoPokeballSendOutAnimation(battler, 0, (side == B_SIDE_OPPONENT) ? POKEBALL_OPPONENT_SENDOUT : POKEBALL_PLAYER_SENDOUT); + gSprites[gBattleControllerData[battler]].data[0] = DoPokeballSendOutAnimation(battler, 0, (side == B_SIDE_OPPONENT) ? POKEBALL_OPPONENT_SENDOUT : (doSlideIn ? POKEBALL_PLAYER_SLIDEIN : POKEBALL_PLAYER_SENDOUT)); } static void FreeMonSprite(u32 battler) @@ -2440,7 +2465,7 @@ void BtlController_HandleSwitchInAnim(u32 battler, bool32 isPlayerSide, void (*c gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; if (isPlayerSide) BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler); - StartSendOutAnim(battler, gBattleResources->bufferA[battler][2]); + StartSendOutAnim(battler, gBattleResources->bufferA[battler][2], FALSE); gBattlerControllerFuncs[battler] = controllerCallback; } @@ -2936,17 +2961,17 @@ static void Task_StartSendOutAnim(u8 taskId) if (TwoMonsAtSendOut(battler)) { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE); + StartSendOutAnim(battler, FALSE, ShouldDoSlideInAnim()); battlerPartner = battler ^ BIT_FLANK; gBattleResources->bufferA[battlerPartner][1] = gBattlerPartyIndexes[battlerPartner]; BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerPartner]], battlerPartner); - StartSendOutAnim(battlerPartner, FALSE); + StartSendOutAnim(battlerPartner, FALSE, ShouldDoSlideInAnim()); } else { gBattleResources->bufferA[battler][1] = gBattlerPartyIndexes[battler]; - StartSendOutAnim(battler, FALSE); + StartSendOutAnim(battler, FALSE, ShouldDoSlideInAnim()); } gBattlerControllerFuncs[battler] = (void*)(GetWordTaskArg(taskId, tControllerFunc_1)); DestroyTask(taskId); diff --git a/src/battle_debug.c b/src/battle_debug.c index 671a9057ef3f..4aefb2b1ff11 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -946,7 +946,7 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 83 + count * 54, i * 15, 0, NULL); ConvertIntToDecimalStringN(text, - AI_DATA->simulatedDmg[data->aiBattlerId][battlerDef][i], + AI_DATA->simulatedDmg[data->aiBattlerId][battlerDef][i].expected, STR_CONV_MODE_RIGHT_ALIGN, 3); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 110 + count * 54, i * 15, 0, NULL); diff --git a/src/battle_dome.c b/src/battle_dome.c index 0978ae488887..67b9a1e2934a 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -107,7 +107,7 @@ enum { static u8 GetDomeTrainerMonIvs(u16); static void SwapDomeTrainers(int, int, u16 *); -static void CalcDomeMonStats(u16, int, int, u8, u8, int *); +static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, int *stats); static void CreateDomeOpponentMons(u16); static int SelectOpponentMons_Good(u16, bool8); static int SelectOpponentMons_Bad(u16, bool8); @@ -2000,7 +2000,7 @@ static void InitDomeTrainers(void) if (alreadySelectedMonId == monId || species[0] == gFacilityTrainerMons[monId].species || species[1] == gFacilityTrainerMons[monId].species - || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) + || gFacilityTrainerMons[alreadySelectedMonId].heldItem == gFacilityTrainerMons[monId].heldItem) break; } } while (k != j); @@ -2053,11 +2053,8 @@ static void InitDomeTrainers(void) ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, - monLevel, ivs, - gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, - gFacilityTrainerMons[DOME_MONS[i][j]].nature, - statValues); + CalcDomeMonStats(&gFacilityTrainerMons[DOME_MONS[i][j]], + monLevel, ivs, statValues); rankingScores[i] += statValues[STAT_ATK]; rankingScores[i] += statValues[STAT_DEF]; @@ -2130,40 +2127,31 @@ static void InitDomeTrainers(void) #define CALC_STAT(base, statIndex) \ { \ - u8 baseStat = gSpeciesInfo[species].base; \ + u8 baseStat = gSpeciesInfo[fmon->species].base; \ stats[statIndex] = (((2 * baseStat + ivs + evs[statIndex] / 4) * level) / 100) + 5; \ - stats[statIndex] = (u8) ModifyStatByNature(nature, stats[statIndex], statIndex); \ + stats[statIndex] = (u8) ModifyStatByNature(fmon->nature, stats[statIndex], statIndex); \ } -static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 nature, int *stats) +static void CalcDomeMonStats(const struct TrainerMon *fmon, int level, u8 ivs, int *stats) { - int i, count; - u8 bits; - u16 resultingEvs; int evs[NUM_STATS]; - - count = 0, bits = evBits; - for (i = 0; i < NUM_STATS; bits >>= 1, i++) - { - if (bits & 1) - count++; - } - - resultingEvs = MAX_TOTAL_EVS / count; - for (i = 0; i < NUM_STATS; bits <<= 1, i++) + int i; + + for (i = 0; i < NUM_STATS; i++) { - evs[i] = 0; - if (evBits & bits) - evs[i] = resultingEvs; + if (fmon->ev != NULL) + evs[i] = fmon->ev[i]; + else + evs[i] = 0; } - - if (species == SPECIES_SHEDINJA) + + if (fmon->species == SPECIES_SHEDINJA) { stats[STAT_HP] = 1; } else { - int n = 2 * gSpeciesInfo[species].baseHP; + int n = 2 * gSpeciesInfo[fmon->species].baseHP; stats[STAT_HP] = (((n + ivs + evs[STAT_HP] / 4) * level) / 100) + level + 10; } @@ -2205,33 +2193,15 @@ static void InitDomeOpponentParty(void) static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tournamentMonId, u32 otId) { - int i; - u8 friendship = MAX_FRIENDSHIP; #ifdef BUGFIX u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId); #else u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokémon have ivs of 3. #endif u8 level = SetFacilityPtrsGetLevel(); - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species, - level, - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].nature, - fixedIv, - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].evSpread, otId); - - friendship = MAX_FRIENDSHIP; - for (i = 0; i < MAX_MON_MOVES; i++) - { - SetMonMoveSlot(&gEnemyParty[monPartyId], - gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i], i); - if (gMovesInfo[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].moves[i]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - - SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[monPartyId], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].itemTableId]); + + CreateFacilityMon(&gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]], + level, fixedIv, otId, 0, &gEnemyParty[monPartyId]); } static void CreateDomeOpponentMons(u16 tournamentTrainerId) @@ -4286,6 +4256,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) textPrinter.currentChar = GetSpeciesName(DOME_MONS[trainerTourneyId][i]); else textPrinter.currentChar = GetSpeciesName(gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species); + textPrinter.fontId = GetFontIdToFit(textPrinter.currentChar, FONT_SHORT, 0, 60); textPrinter.windowId = WIN_TRAINER_MON1_NAME + i + windowId; if (i == 1) @@ -4297,6 +4268,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) CopyWindowToVram(WIN_TRAINER_MON1_NAME + i + windowId, COPYWIN_FULL); AddTextPrinter(&textPrinter, 0, NULL); } + textPrinter.fontId = FONT_SHORT; PutWindowTilemap(windowId + WIN_TRAINER_FLAVOR_TEXT); CopyWindowToVram(windowId + WIN_TRAINER_FLAVOR_TEXT, COPYWIN_FULL); @@ -4438,11 +4410,15 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) else nature = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].nature; - if (gNatureStatTable[nature][j] > 0) + if (gNaturesInfo[nature].statUp == gNaturesInfo[nature].statDown) + { + allocatedArray[j + NUM_STATS + 1] += allocatedArray[j + 1]; + } + else if (gNaturesInfo[nature].statUp == j + 1) { allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 110) / 100; } - else if (gNatureStatTable[nature][j] < 0) + else if (gNaturesInfo[nature].statDown == j + 1) { allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 90) / 100; allocatedArray[j + NUM_STATS + NUM_NATURE_STATS + 2]++; @@ -4463,32 +4439,28 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) { for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - int evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; - for (k = 0, j = 0; j < NUM_STATS; j++) - { - allocatedArray[j] = 0; - if (evBits & 1) - k++; - evBits >>= 1; - } - k = MAX_TOTAL_EVS / k; - evBits = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].evSpread; for (j = 0; j < NUM_STATS; j++) { - if (evBits & 1) - allocatedArray[j] = k; - evBits >>= 1; + if (gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].ev != NULL) + allocatedArray[j] = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].ev[j]; + else + allocatedArray[j] = 0; } - + allocatedArray[NUM_STATS] += allocatedArray[STAT_HP]; for (j = 0; j < NUM_NATURE_STATS; j++) { nature = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].nature; - if (gNatureStatTable[nature][j] > 0) + + if (gNaturesInfo[nature].statUp == gNaturesInfo[nature].statDown) + { + allocatedArray[j + NUM_STATS + 1] += allocatedArray[j + 1]; + } + else if (gNaturesInfo[nature].statUp == j + 1) { allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 110) / 100; } - else if (gNatureStatTable[nature][j] < 0) + else if (gNaturesInfo[nature].statDown == j + 1) { allocatedArray[j + NUM_STATS + 1] += (allocatedArray[j + 1] * 90) / 100; allocatedArray[j + NUM_STATS + NUM_NATURE_STATS + 2]++; @@ -5800,7 +5772,7 @@ static void InitRandomTourneyTreeResults(void) if (alreadySelectedMonId == monId || species[0] == gFacilityTrainerMons[monId].species || species[1] == gFacilityTrainerMons[monId].species - || gFacilityTrainerMons[alreadySelectedMonId].itemTableId == gFacilityTrainerMons[monId].itemTableId) + || gFacilityTrainerMons[alreadySelectedMonId].heldItem == gFacilityTrainerMons[monId].heldItem) break; } } while (k != j); @@ -5821,11 +5793,8 @@ static void InitRandomTourneyTreeResults(void) ivs = GetDomeTrainerMonIvs(DOME_TRAINERS[i].trainerId); for (j = 0; j < FRONTIER_PARTY_SIZE; j++) { - CalcDomeMonStats(gFacilityTrainerMons[DOME_MONS[i][j]].species, - monLevel, ivs, - gFacilityTrainerMons[DOME_MONS[i][j]].evSpread, - gFacilityTrainerMons[DOME_MONS[i][j]].nature, - statValues); + CalcDomeMonStats(&gFacilityTrainerMons[DOME_MONS[i][j]], + monLevel, ivs, statValues); statSums[i] += statValues[STAT_ATK]; statSums[i] += statValues[STAT_DEF]; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index 8dbde6d82133..06a26718a978 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -5,6 +5,7 @@ #include "battle_interface.h" #include "battle_scripts.h" #include "battle_script_commands.h" +#include "battle_gimmick.h" #include "data.h" #include "event_data.h" #include "graphics.h" @@ -22,7 +23,7 @@ #include "constants/items.h" #include "constants/moves.h" -static u8 GetMaxPowerTier(u16 move); +static u8 GetMaxPowerTier(u32 move); struct GMaxMove { @@ -69,35 +70,21 @@ static const struct GMaxMove sGMaxMoveTable[] = {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) +bool32 CanDynamax(u32 battler) { - 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; - + u16 species = gBattleMons[battler].species; + u16 holdEffect = GetBattlerHoldEffect(battler, 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; + if (!TESTING && (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT + || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT))) + { + if (!CheckBagHasItem(ITEM_DYNAMAX_BAND, 1)) + return FALSE; + if (B_FLAG_DYNAMAX_BATTLE == 0 || (B_FLAG_DYNAMAX_BATTLE != 0 && !FlagGet(B_FLAG_DYNAMAX_BATTLE))) + return FALSE; + } // Check if species isn't allowed to Dynamax. if (GET_BASE_SPECIES_ID(species) == SPECIES_ZACIAN @@ -105,18 +92,24 @@ bool32 CanDynamax(u16 battlerId) || 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) + // Check if Trainer has already Dynamaxed. + if (HasTrainerUsedGimmick(battler, GIMMICK_DYNAMAX)) + return FALSE; + + // Check if AI battler is intended to Dynamaxed. + if (!ShouldTrainerBattlerUseGimmick(battler, GIMMICK_DYNAMAX)) + return FALSE; + + // Check if battler has another gimmick active. + if (GetActiveGimmick(battler) != GIMMICK_NONE) 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)]) + // Check if battler is holding a Z-Crystal or Mega Stone. + if (!TESTING && (holdEffect == HOLD_EFFECT_Z_CRYSTAL || holdEffect == HOLD_EFFECT_MEGA_STONE)) // tests make this check already 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) + // if (gBattleTypeFlags & BATTLE_TYPE_RAID && gBattleStruct->raid.dynamaxEnergy != battler) // return FALSE; // No checks failed, all set! @@ -124,10 +117,10 @@ bool32 CanDynamax(u16 battlerId) } // Returns whether a battler is transformed into a Gigantamax form. -bool32 IsGigantamaxed(u16 battlerId) +bool32 IsGigantamaxed(u32 battler) { - struct Pokemon *mon = &GetSideParty(GetBattlerSide(battlerId))[gBattlerPartyIndexes[battlerId]]; - if ((gSpeciesInfo[gBattleMons[battlerId].species].isGigantamax) && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; + if ((gSpeciesInfo[gBattleMons[battler].species].isGigantamax) && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) return TRUE; return FALSE; } @@ -148,79 +141,80 @@ void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon) } // Returns the non-Dynamax HP of a Pokemon. -u16 GetNonDynamaxHP(u16 battlerId) +u16 GetNonDynamaxHP(u32 battler) { - if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - return gBattleMons[battlerId].hp; + if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || gBattleMons[battler].species == SPECIES_SHEDINJA) + return gBattleMons[battler].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); + u16 hp = UQ_4_12_TO_INT((gBattleMons[battler].hp * mult) + UQ_4_12_ROUND); return hp; } } // Returns the non-Dynamax Max HP of a Pokemon. -u16 GetNonDynamaxMaxHP(u32 battlerId) +u16 GetNonDynamaxMaxHP(u32 battler) { - if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) - return gBattleMons[battlerId].maxHP; + if (GetActiveGimmick(battler) != GIMMICK_DYNAMAX || gBattleMons[battler].species == SPECIES_SHEDINJA) + return gBattleMons[battler].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); + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battler].maxHP * mult) + UQ_4_12_ROUND); return maxHP; } } // Sets flags used for Dynamaxing and checks Gigantamax forms. -void PrepareBattlerForDynamax(u16 battlerId) +void ActivateDynamax(u32 battler) { - u8 side = GetBattlerSide(battlerId); - - gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; - gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS_COUNT; + // Set appropriate use flags. + SetActiveGimmick(battler, GIMMICK_DYNAMAX); + SetGimmickAsActivated(battler, GIMMICK_DYNAMAX); + gBattleStruct->dynamax.dynamaxTurns[battler] = DYNAMAX_TURNS_COUNT; // Substitute is removed upon Dynamaxing. - gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; - ClearBehindSubstituteBit(battlerId); + gBattleMons[battler].status2 &= ~STATUS2_SUBSTITUTE; + ClearBehindSubstituteBit(battler); // Choiced Moves are reset upon Dynamaxing. - gBattleStruct->choicedMove[battlerId] = MOVE_NONE; + gBattleStruct->choicedMove[battler] = MOVE_NONE; // Try Gigantamax form change. - if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) // Ditto cannot Gigantamax. - TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) // Ditto cannot Gigantamax. + TryBattleFormChange(battler, FORM_CHANGE_BATTLE_GIGANTAMAX); + + BattleScriptExecute(BattleScript_DynamaxBegins); } // Unsets the flags used for Dynamaxing and reverts max HP if needed. -void UndoDynamax(u16 battlerId) +void UndoDynamax(u32 battler) { - u8 side = GetBattlerSide(battlerId); - u8 monId = gBattlerPartyIndexes[battlerId]; + u8 side = GetBattlerSide(battler); + u8 monId = gBattlerPartyIndexes[battler]; // Revert HP if battler is still Dynamaxed. - if (IsDynamaxed(battlerId)) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) { 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); + gBattleMons[battler].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[battler].hp); CalculateMonStats(mon); } // Makes sure there are no Dynamax flags set, including on switch / faint. - gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; - gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; + SetActiveGimmick(battler, GIMMICK_NONE); + gBattleStruct->dynamax.dynamaxTurns[battler] = 0; // Undo form change if needed. - if (IsGigantamaxed(battlerId)) - TryBattleFormChange(battlerId, FORM_CHANGE_END_BATTLE); + if (IsGigantamaxed(battler)) + TryBattleFormChange(battler, FORM_CHANGE_END_BATTLE); } // Certain moves are blocked by Max Guard that normally ignore protection. -bool32 IsMoveBlockedByMaxGuard(u16 move) +bool32 IsMoveBlockedByMaxGuard(u32 move) { switch (move) { @@ -239,7 +233,7 @@ bool32 IsMoveBlockedByMaxGuard(u16 move) } // Weight-based moves (and some other moves in Raids) are blocked by Dynamax. -bool32 IsMoveBlockedByDynamax(u16 move) +bool32 IsMoveBlockedByDynamax(u32 move) { // TODO: Certain moves are banned in raids. switch (gMovesInfo[move].effect) @@ -251,24 +245,15 @@ bool32 IsMoveBlockedByDynamax(u16 move) 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) +static u16 GetTypeBasedMaxMove(u32 battler, u32 type) { // Gigantamax check u32 i; - u16 species = gBattleMons[battlerId].species; - u16 targetSpecies = SPECIES_NONE; + u32 species = gBattleMons[battler].species; + u32 targetSpecies = SPECIES_NONE; if (!gSpeciesInfo[species].isGigantamax) - targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + targetSpecies = GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_GIGANTAMAX); if (targetSpecies != SPECIES_NONE) species = targetSpecies; @@ -289,9 +274,9 @@ static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) } // Returns the appropriate Max Move or G-Max Move for a battler to use. -u16 GetMaxMove(u16 battlerId, u16 baseMove) +u16 GetMaxMove(u32 battler, u32 baseMove) { - u16 move = baseMove; + u32 move = baseMove; if (baseMove == MOVE_NONE) // for move display { return MOVE_NONE; @@ -306,13 +291,11 @@ u16 GetMaxMove(u16 battlerId, u16 baseMove) } else if (gBattleStruct->dynamicMoveType) { - move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); - gBattleStruct->dynamax.categories[battlerId] = gMovesInfo[baseMove].category; + move = GetTypeBasedMaxMove(battler, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); } else { - move = GetTypeBasedMaxMove(battlerId, gMovesInfo[baseMove].type); - gBattleStruct->dynamax.categories[battlerId] = gMovesInfo[baseMove].category; + move = GetTypeBasedMaxMove(battler, gMovesInfo[baseMove].type); } return move; @@ -332,7 +315,7 @@ enum }; // Gets the base power of a Max Move. -u8 GetMaxMovePower(u16 move) +u8 GetMaxMovePower(u32 move) { u8 tier; // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. @@ -383,7 +366,7 @@ u8 GetMaxMovePower(u16 move) } } -static u8 GetMaxPowerTier(u16 move) +static u8 GetMaxPowerTier(u32 move) { if (gMovesInfo[move].strikeCount >= 2 && gMovesInfo[move].strikeCount <= 5) { @@ -459,7 +442,7 @@ static u8 GetMaxPowerTier(u16 move) } // Returns whether a move is a Max Move or not. -bool32 IsMaxMove(u16 move) +bool32 IsMaxMove(u32 move) { return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; } @@ -485,7 +468,7 @@ void ChooseDamageNonTypesString(u8 type) } // Returns the status effect that should be applied by a G-Max Move. -static u32 GetMaxMoveStatusEffect(u16 move) +static u32 GetMaxMoveStatusEffect(u32 move) { u8 maxEffect = gMovesInfo[move].argument; switch (maxEffect) @@ -520,26 +503,11 @@ static u32 GetMaxMoveStatusEffect(u16 move) } } -// CALLNATIVE FUNCTIONS -#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd = (const void *)gBattlescriptCurrInstr -#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) - -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - // Updates Dynamax HP multipliers and healthboxes. void BS_UpdateDynamax(void) { NATIVE_ARGS(); - u16 battler = gBattleScripting.battler; + u32 battler = gBattleScripting.battler; struct Pokemon *mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. @@ -1003,24 +971,6 @@ void BS_TrySetStatus2(void) } } -// 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) { @@ -1064,201 +1014,8 @@ void BS_TryRecycleBerry(void) void BS_JumpIfDynamaxed(void) { NATIVE_ARGS(const u8 *jumpInstr); - if (IsDynamaxed(gBattlerTarget)) + if ((GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) 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 8e3f84b359d7..7d7ec7b3af5d 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -362,7 +362,7 @@ static void GenerateOpponentMons(void) // Ensure held items don't repeat on the opponent's team for (k = firstMonId; k < firstMonId + i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[monId].heldItem) break; } if (k != firstMonId + i) @@ -370,7 +370,7 @@ static void GenerateOpponentMons(void) // Successful selection species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monId].heldItem; gFrontierTempParty[i] = monId; i++; } @@ -396,21 +396,17 @@ static void SetRentalsToOpponentParty(void) gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL); gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL); gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ABILITY_NUM, NULL); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gFrontierTempParty[i]].itemTableId]); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gFacilityTrainerMons[gFrontierTempParty[i]].heldItem); } } static void SetPlayerAndOpponentParties(void) { - int i, j, k; - int count = 0; - u8 bits = 0; + int i; u8 monLevel; u16 monId; - u16 evs; u8 ivs; - u8 friendship; - + if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_TENT) { gFacilityTrainerMons = gSlateportBattleTentMons; @@ -432,36 +428,11 @@ static void SetPlayerAndOpponentParties(void) { monId = gSaveBlock2Ptr->frontier.rentalMons[i].monId; ivs = gSaveBlock2Ptr->frontier.rentalMons[i].ivs; - CreateMon(&gPlayerParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - ivs, - TRUE, gSaveBlock2Ptr->frontier.rentalMons[i].personality, - OT_ID_PLAYER_ID, 0); - - count = 0; - bits = gFacilityTrainerMons[monId].evSpread; - for (j = 0; j < NUM_STATS; bits >>= 1, j++) - { - if (bits & 1) - count++; - } - - evs = MAX_TOTAL_EVS / count; - bits = 1; - for (j = 0; j < NUM_STATS; bits <<= 1, j++) - { - if (gFacilityTrainerMons[monId].evSpread & bits) - SetMonData(&gPlayerParty[i], MON_DATA_HP_EV + j, &evs); - } - + + CreateFacilityMon(&gFacilityTrainerMons[monId], monLevel, ivs, OT_ID_PLAYER_ID, FLAG_FRONTIER_MON_FACTORY, &gPlayerParty[i]); + SetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, + &gSaveBlock2Ptr->frontier.rentalMons[i].personality); CalculateMonStats(&gPlayerParty[i]); - friendship = 0; - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gPlayerParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - SetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i].abilityNum); } } @@ -473,34 +444,12 @@ static void SetPlayerAndOpponentParties(void) { monId = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].monId; ivs = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs; - CreateMon(&gEnemyParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - ivs, - TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality, - OT_ID_PLAYER_ID, 0); - - count = 0; - bits = gFacilityTrainerMons[monId].evSpread; - for (j = 0; j < NUM_STATS; bits >>= 1, j++) - { - if (bits & 1) - count++; - } - - evs = MAX_TOTAL_EVS / count; - bits = 1; - for (j = 0; j < NUM_STATS; bits <<= 1, j++) - { - if (gFacilityTrainerMons[monId].evSpread & bits) - SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &evs); - } - - CalculateMonStats(&gEnemyParty[i]); - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - SetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum); + CreateFacilityMon(&gFacilityTrainerMons[monId], + monLevel, ivs, OT_ID_PLAYER_ID, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[i]); + SetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, + &gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality); + CalculateMonStats(&gPlayerParty[i]); } break; } @@ -582,7 +531,7 @@ static void GenerateInitialRentalMons(void) // Cannot have two same held items. for (j = firstMonId; j < firstMonId + i; j++) { - if (heldItems[j] != ITEM_NONE && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[j] != ITEM_NONE && heldItems[j] == gFacilityTrainerMons[monId].heldItem) { if (gFacilityTrainerMons[monId].species == currSpecies) currSpecies = SPECIES_NONE; @@ -594,7 +543,7 @@ static void GenerateInitialRentalMons(void) gSaveBlock2Ptr->frontier.rentalMons[i].monId = monId; species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monId].heldItem; monIds[i] = monId; i++; } @@ -724,7 +673,7 @@ static void RestorePlayerPartyHeldItems(void) { SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, - &gBattleFrontierHeldItems[gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[i].monId].itemTableId]); + &gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[i].monId].heldItem); } } @@ -761,7 +710,6 @@ void FillFactoryBrainParty(void) int i, j, k; u16 species[FRONTIER_PARTY_SIZE]; u16 heldItems[FRONTIER_PARTY_SIZE]; - u8 friendship; int monLevel; u8 fixedIV; u32 otId; @@ -801,27 +749,17 @@ void FillFactoryBrainParty(void) for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[monId].heldItem) break; } if (k != i) continue; species[i] = gFacilityTrainerMons[monId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i], - gFacilityTrainerMons[monId].species, - monLevel, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otId); - - friendship = 0; - for (k = 0; k < MAX_MON_MOVES; k++) - SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monId].moves[k], k); - SetMonData(&gEnemyParty[i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + heldItems[i] = gFacilityTrainerMons[monId].heldItem; + CreateFacilityMon(&gFacilityTrainerMons[monId], + monLevel, fixedIV, otId, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[i]); i++; } } diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index e945361f338b..5aa019c29fd0 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1735,10 +1735,9 @@ static void Select_Task_HandleChooseMons(u8 taskId) static void CreateFrontierFactorySelectableMons(u8 firstMonId) { - u8 i, j = 0; + u8 i = 0; u8 ivs = 0; u8 level = 0; - u8 friendship = 0; u32 otId = 0; u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; @@ -1762,27 +1761,18 @@ static void CreateFrontierFactorySelectableMons(u8 firstMonId) ivs = GetFactoryMonFixedIV(challengeNum + 1, FALSE); else ivs = GetFactoryMonFixedIV(challengeNum, FALSE); - CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData, - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otId); - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, ivs, otId, FLAG_FRONTIER_MON_FACTORY, + &sFactorySelectScreen->mons[i + firstMonId].monData); } } static void CreateSlateportTentSelectableMons(u8 firstMonId) { - u8 i, j; + u8 i; u8 ivs = 0; u8 level = TENT_MIN_LEVEL; - u8 friendship = 0; u32 otId = 0; gFacilityTrainerMons = gSlateportBattleTentMons; @@ -1792,18 +1782,7 @@ static void CreateSlateportTentSelectableMons(u8 firstMonId) { u16 monId = gSaveBlock2Ptr->frontier.rentalMons[i].monId; sFactorySelectScreen->mons[i + firstMonId].monId = monId; - CreateMonWithEVSpreadNatureOTID(&sFactorySelectScreen->mons[i + firstMonId].monData, - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otId); - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, ivs, otId, 0, &sFactorySelectScreen->mons[i + firstMonId].monData); } } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 9970be2e659c..728db40af2e8 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -28,7 +28,6 @@ #include "constants/battle_move_effects.h" -extern const u8 gBattlePalaceNatureToMoveTarget[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; @@ -138,7 +137,7 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) // Otherwise use move from "Support" group for (; i < maxGroupNum; i++) { - if (gBattlePalaceNatureToMoveGroupLikelihood[GetNatureFromPersonality(gBattleMons[battler].personality)][i] > percent) + if (gNaturesInfo[GetNatureFromPersonality(gBattleMons[battler].personality)].battlePalacePercents[i] > percent) break; } selectedGroup = i - minGroupNum; @@ -263,17 +262,7 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) } } - if (moveInfo->moves[chosenMoveId] == MOVE_CURSE) - { - if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST && moveInfo->monType3 != TYPE_GHOST) - moveTarget = MOVE_TARGET_USER; - else - moveTarget = MOVE_TARGET_SELECTED; - } - else - { - moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveId]); - } + moveTarget = GetBattlerMoveTargetType(battler, moveInfo->moves[chosenMoveId]); if (moveTarget & MOVE_TARGET_USER) chosenMoveId |= (battler << 8); @@ -338,7 +327,7 @@ static u16 GetBattlePalaceTarget(u32 battler) if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp) return (BATTLE_OPPOSITE(battler & BIT_SIDE) + (Random() & 2)) << 8; - switch (gBattlePalaceNatureToMoveTarget[GetNatureFromPersonality(gBattleMons[battler].personality)]) + switch (gNaturesInfo[GetNatureFromPersonality(gBattleMons[battler].personality)].battlePalaceSmokescreen) { case PALACE_TARGET_STRONGER: if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp) @@ -513,6 +502,7 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId) case B_ANIM_SANDSTORM_CONTINUES: case B_ANIM_HAIL_CONTINUES: case B_ANIM_SNOW_CONTINUES: + case B_ANIM_FOG_CONTINUES: case B_ANIM_SNATCH_MOVE: return TRUE; default: @@ -636,7 +626,7 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) } // dynamax tint - if (IsDynamaxed(battler)) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) { // Calyrex and its forms have a blue dynamax aura instead of red. if (GET_BASE_SPECIES_ID(species) == SPECIES_CALYREX) @@ -645,6 +635,13 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) BlendPalette(paletteOffset, 16, 4, RGB(31, 0, 12)); CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); } + + // Terastallization's tint + if (GetActiveGimmick(battler) == GIMMICK_TERA) + { + BlendPalette(paletteOffset, 16, 8, GetTeraTypeRGB(GetBattlerTeraType(battler))); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16)); + } } void BattleGfxSfxDummy2(u16 species) @@ -709,7 +706,8 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) { LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]); - MegaIndicator_LoadSpritesGfx(); + LoadIndicatorSpritesGfx(); + CategoryIcons_LoadSpritesGfx(); } else if (!IsDoubleBattle()) { @@ -913,7 +911,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, - gTransformedPersonalities[battlerAtk]); + personalityValue); } else { @@ -931,7 +929,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, - gTransformedPersonalities[battlerAtk]); + personalityValue); } } src = gMonSpritesGfxPtr->spritesGfx[position]; @@ -1100,27 +1098,36 @@ void SetBattlerSpriteAffineMode(u8 affineMode) #define tBattlerId data[0] +void CreateEnemyShadowSprite(u32 battler) +{ + gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, + GetBattlerSpriteCoord(battler, BATTLER_COORD_X), + GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 29, + 0xC8); + if (gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId < MAX_SPRITES) + gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId].data[0] = battler; +} + void LoadAndCreateEnemyShadowSprites(void) { u8 battler; + u32 i; LoadCompressedSpriteSheet(&gSpriteSheet_EnemyShadow); + + // initialize shadow sprite ids + for (i = 0; i < gBattlersCount; i++) + { + gBattleSpritesDataPtr->healthBoxesData[i].shadowSpriteId = MAX_SPRITES; + } battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, - GetBattlerSpriteCoord(battler, BATTLER_COORD_X), - GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 29, - 0xC8); - gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId].data[0] = battler; - + CreateEnemyShadowSprite(battler); + if (IsDoubleBattle()) { battler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); - gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, - GetBattlerSpriteCoord(battler, BATTLER_COORD_X), - GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 29, - 0xC8); - gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId].data[0] = battler; + CreateEnemyShadowSprite(battler); } } @@ -1161,6 +1168,8 @@ void SetBattlerShadowSpriteCallback(u8 battler, u16 species) // The player's shadow is never seen. if (GetBattlerSide(battler) == B_SIDE_PLAYER || gBattleScripting.monCaught) return; + if (gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId >= MAX_SPRITES) + return; if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != SPECIES_NONE) species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; diff --git a/src/battle_gimmick.c b/src/battle_gimmick.c new file mode 100644 index 000000000000..c8ee93221862 --- /dev/null +++ b/src/battle_gimmick.c @@ -0,0 +1,401 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_gimmick.h" +#include "battle_z_move.h" +#include "battle_setup.h" +#include "battle_util.h" +#include "item.h" +#include "palette.h" +#include "pokemon.h" +#include "sprite.h" +#include "util.h" +#include "test_runner.h" + +#include "data/gimmicks.h" + +// Populates gBattleStruct->gimmick.usableGimmick for each battler. +void AssignUsableGimmicks(void) +{ + u32 battler, gimmick; + for (battler = 0; battler < gBattlersCount; ++battler) + { + gBattleStruct->gimmick.usableGimmick[battler] = GIMMICK_NONE; + for (gimmick = 0; gimmick < GIMMICKS_COUNT; ++gimmick) + { + if (CanActivateGimmick(battler, gimmick)) + { + gBattleStruct->gimmick.usableGimmick[battler] = gimmick; + break; + } + } + } +} + +// Returns whether a battler is able to use a gimmick. Checks consumption and gimmick specific functions. +bool32 CanActivateGimmick(u32 battler, enum Gimmick gimmick) +{ + return gGimmicksInfo[gimmick].CanActivate != NULL && gGimmicksInfo[gimmick].CanActivate(battler); +} + +// Returns whether the player has a gimmick selected while in the move selection menu. +bool32 IsGimmickSelected(u32 battler, enum Gimmick gimmick) +{ + // There's no player select in tests, but some gimmicks need to test choice before they are fully activated. + if (TESTING) + return (gBattleStruct->gimmick.toActivate & gBitTable[battler]) && gBattleStruct->gimmick.usableGimmick[battler] == gimmick; + else + return gBattleStruct->gimmick.usableGimmick[battler] == gimmick && gBattleStruct->gimmick.playerSelect; +} + +// Sets a battler as having a gimmick active using their party index. +void SetActiveGimmick(u32 battler, enum Gimmick gimmick) +{ + gBattleStruct->gimmick.activeGimmick[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]] = gimmick; +} + +// Returns a battler's active gimmick, if any. +enum Gimmick GetActiveGimmick(u32 battler) +{ + return gBattleStruct->gimmick.activeGimmick[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]]; +} + +// Returns whether a trainer mon is intended to use an unrestrictive gimmick via .useGimmick (i.e Tera). +bool32 ShouldTrainerBattlerUseGimmick(u32 battler, enum Gimmick gimmick) +{ + // There are no trainer party settings in battles, but the AI needs to know which gimmick to use. + if (TESTING) + { + return gimmick == TestRunner_Battle_GetChosenGimmick(GetBattlerSide(battler), gBattlerPartyIndexes[battler]); + } + // The player can bypass these checks because they can choose through the controller. + else if (GetBattlerSide(battler) == B_SIDE_PLAYER + && !((gBattleTypeFlags & BATTLE_TYPE_MULTI) && battler == B_POSITION_PLAYER_RIGHT)) + { + return TRUE; + } + // Check the trainer party data to see if a gimmick is intended. + else + { + bool32 isSecondTrainer = (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT) && (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !BATTLE_TWO_VS_ONE_OPPONENT; + u16 trainerId = isSecondTrainer ? gTrainerBattleOpponent_B : gTrainerBattleOpponent_A; + const struct TrainerMon *mon = &GetTrainerPartyFromId(trainerId)[isSecondTrainer ? gBattlerPartyIndexes[battler] - MULTI_PARTY_SIZE : gBattlerPartyIndexes[battler]]; + + if (gimmick == GIMMICK_TERA && mon->teraType != TYPE_NONE) + return TRUE; + if (gimmick == GIMMICK_DYNAMAX && mon->shouldUseDynamax) + return TRUE; + } + + return FALSE; +} + +// Returns whether a trainer has used a gimmick during a battle. +bool32 HasTrainerUsedGimmick(u32 battler, enum Gimmick gimmick) +{ + // Check whether partner battler has used gimmick or plans to during turn. + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && IsPartnerMonFromSameTrainer(battler) + && (gBattleStruct->gimmick.activated[BATTLE_PARTNER(battler)][gimmick] + || ((gBattleStruct->gimmick.toActivate & gBitTable[BATTLE_PARTNER(battler)] + && gBattleStruct->gimmick.usableGimmick[BATTLE_PARTNER(battler)] == gimmick)))) + { + return TRUE; + } + // Otherwise, return whether current battler has used gimmick. + else + { + return gBattleStruct->gimmick.activated[battler][gimmick]; + } +} + +// Sets a gimmick as used by a trainer with checks for Multi Battles. +void SetGimmickAsActivated(u32 battler, enum Gimmick gimmick) +{ + gBattleStruct->gimmick.activated[battler][gimmick] = TRUE; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsPartnerMonFromSameTrainer(battler)) + gBattleStruct->gimmick.activated[BATTLE_PARTNER(battler)][gimmick] = TRUE; +} + +#define SINGLES_GIMMICK_TRIGGER_POS_X_OPTIMAL (30) +#define SINGLES_GIMMICK_TRIGGER_POS_X_PRIORITY (31) +#define SINGLES_GIMMICK_TRIGGER_POS_X_SLIDE (15) +#define SINGLES_GIMMICK_TRIGGER_POS_Y_DIFF (-11) + +#define DOUBLES_GIMMICK_TRIGGER_POS_X_OPTIMAL (30) +#define DOUBLES_GIMMICK_TRIGGER_POS_X_PRIORITY (31) +#define DOUBLES_GIMMICK_TRIGGER_POS_X_SLIDE (15) +#define DOUBLES_GIMMICK_TRIGGER_POS_Y_DIFF (-4) + +#define tBattler data[0] +#define tHide data[1] + +void ChangeGimmickTriggerSprite(u32 spriteId, u32 animId) +{ + StartSpriteAnim(&gSprites[spriteId], animId); +} + +void CreateGimmickTriggerSprite(u32 battler) +{ + const struct GimmickInfo * gimmick = &gGimmicksInfo[gBattleStruct->gimmick.usableGimmick[battler]]; + + // Exit if there shouldn't be a sprite produced. + if (GetBattlerSide(battler) == B_SIDE_OPPONENT + || gBattleStruct->gimmick.usableGimmick[battler] == GIMMICK_NONE + || gimmick->triggerSheet == NULL) + { + return; + } + + LoadSpritePalette(gimmick->triggerPal); + if (GetSpriteTileStartByTag(TAG_GIMMICK_TRIGGER_TILE) == 0xFFFF) + LoadSpriteSheet(gimmick->triggerSheet); + + if (gBattleStruct->gimmick.triggerSpriteId == 0xFF) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleStruct->gimmick.triggerSpriteId = CreateSprite(gimmick->triggerTemplate, + gSprites[gHealthboxSpriteIds[battler]].x - DOUBLES_GIMMICK_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battler]].y - DOUBLES_GIMMICK_TRIGGER_POS_Y_DIFF, 0); + else + gBattleStruct->gimmick.triggerSpriteId = CreateSprite(gimmick->triggerTemplate, + gSprites[gHealthboxSpriteIds[battler]].x - SINGLES_GIMMICK_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battler]].y - SINGLES_GIMMICK_TRIGGER_POS_Y_DIFF, 0); + } + + gSprites[gBattleStruct->gimmick.triggerSpriteId].tBattler = battler; + gSprites[gBattleStruct->gimmick.triggerSpriteId].tHide = FALSE; + + ChangeGimmickTriggerSprite(gBattleStruct->gimmick.triggerSpriteId, 0); +} + +bool32 IsGimmickTriggerSpriteActive(void) +{ + if (GetSpriteTileStartByTag(TAG_GIMMICK_TRIGGER_TILE) == 0xFFFF) + return FALSE; + else if (IndexOfSpritePaletteTag(TAG_GIMMICK_TRIGGER_PAL) != 0xFF) + return TRUE; + else + return FALSE; +} + +void HideGimmickTriggerSprite(void) +{ + if (gBattleStruct->gimmick.triggerSpriteId != 0xFF) + { + ChangeGimmickTriggerSprite(gBattleStruct->gimmick.triggerSpriteId, 0); + gSprites[gBattleStruct->gimmick.triggerSpriteId].tHide = TRUE; + } +} + +void DestroyGimmickTriggerSprite(void) +{ + FreeSpritePaletteByTag(TAG_GIMMICK_TRIGGER_PAL); + FreeSpriteTilesByTag(TAG_GIMMICK_TRIGGER_TILE); + if (gBattleStruct->gimmick.triggerSpriteId != 0xFF) + DestroySprite(&gSprites[gBattleStruct->gimmick.triggerSpriteId]); + gBattleStruct->gimmick.triggerSpriteId = 0xFF; +} + +static void SpriteCb_GimmickTrigger(struct Sprite *sprite) +{ + s32 xSlide, xPriority, xOptimal; + s32 yDiff; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + xSlide = DOUBLES_GIMMICK_TRIGGER_POS_X_SLIDE; + xPriority = DOUBLES_GIMMICK_TRIGGER_POS_X_PRIORITY; + xOptimal = DOUBLES_GIMMICK_TRIGGER_POS_X_OPTIMAL; + yDiff = DOUBLES_GIMMICK_TRIGGER_POS_Y_DIFF; + } + else + { + xSlide = SINGLES_GIMMICK_TRIGGER_POS_X_SLIDE; + xPriority = SINGLES_GIMMICK_TRIGGER_POS_X_PRIORITY; + xOptimal = SINGLES_GIMMICK_TRIGGER_POS_X_OPTIMAL; + yDiff = SINGLES_GIMMICK_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) + DestroyGimmickTriggerSprite(); + } + 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; + } +} + +#undef tBattler +#undef tHide + +// for sprite data fields +#define tBattler data[0] +#define tPosX data[2] +#define tLevelXDelta data[3] // X position depends whether level has 3, 2 or 1 digit + +// data fields for healthboxMain +// oam.affineParam holds healthboxRight spriteId +#define hMain_Battler data[6] + +void LoadIndicatorSpritesGfx(void) +{ + u32 gimmick; + for (gimmick = 0; gimmick < GIMMICKS_COUNT; ++gimmick) + { + if (gimmick == GIMMICK_TERA) // special case + LoadSpriteSheets(sTeraIndicatorSpriteSheets); + else if (gGimmicksInfo[gimmick].indicatorSheet != NULL) + LoadSpriteSheet(gGimmicksInfo[gimmick].indicatorSheet); + + if (gGimmicksInfo[gimmick].indicatorPal != NULL) + LoadSpritePalette(gGimmicksInfo[gimmick].indicatorPal); + } + // Primal reversion graphics aren't loaded as part of gimmick data + LoadSpriteSheet(&sSpriteSheet_AlphaIndicator); + LoadSpriteSheet(&sSpriteSheet_OmegaIndicator); +} + +static void SpriteCb_GimmickIndicator(struct Sprite *sprite) +{ + u32 battler = sprite->tBattler; + + sprite->x = gSprites[gHealthboxSpriteIds[battler]].x + sprite->tPosX + sprite->tLevelXDelta; + sprite->x2 = gSprites[gHealthboxSpriteIds[battler]].x2; + sprite->y2 = gSprites[gHealthboxSpriteIds[battler]].y2; +} + +static inline u32 GetIndicatorSpriteId(u32 healthboxId) +{ + return gBattleStruct->gimmick.indicatorSpriteId[gSprites[healthboxId].hMain_Battler]; +} + +u32 GetIndicatorTileTag(u32 battler) +{ + u32 gimmick = GetActiveGimmick(battler); + + if (IsBattlerPrimalReverted(battler)) + { + if (gBattleMons[battler].species == SPECIES_GROUDON_PRIMAL) + return TAG_OMEGA_INDICATOR_TILE; + else + return TAG_ALPHA_INDICATOR_TILE; + } + else if (gimmick == GIMMICK_TERA) // special case + { + return sTeraIndicatorSpriteSheets[GetBattlerTeraType(battler)].tag; + } + else if (gGimmicksInfo[gimmick].indicatorSheet != NULL) + { + return gGimmicksInfo[gimmick].indicatorSheet->tag; + } + else + { + return TAG_NONE; + } +} + +u32 GetIndicatorPalTag(u32 battler) +{ + u32 gimmick = GetActiveGimmick(battler); + if (IsBattlerPrimalReverted(battler)) + return TAG_MISC_INDICATOR_PAL; + else if (gGimmicksInfo[gimmick].indicatorPal != NULL) + return gGimmicksInfo[gimmick].indicatorPal->tag; + else + return TAG_NONE; +} + +void UpdateIndicatorVisibilityAndType(u32 healthboxId, bool32 invisible) +{ + u32 battler = gSprites[healthboxId].hMain_Battler; + u32 tileTag = GetIndicatorTileTag(battler); + u32 palTag = GetIndicatorPalTag(battler); + struct Sprite *sprite = &gSprites[GetIndicatorSpriteId(healthboxId)]; + + if (GetIndicatorSpriteId(healthboxId) == 0) // safari zone means the player doesn't have an indicator sprite id + return; + + if (tileTag != TAG_NONE && palTag != TAG_NONE) + { + sprite->oam.tileNum = GetSpriteTileStartByTag(tileTag); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(palTag); + sprite->invisible = invisible; + } + else // in case of error + { + sprite->invisible = TRUE; + } +} + +void UpdateIndicatorOamPriority(u32 healthboxId, u32 oamPriority) +{ + gSprites[GetIndicatorSpriteId(healthboxId)].oam.priority = oamPriority; +} + +void UpdateIndicatorLevelData(u32 healthboxId, u32 level) +{ + s32 xDelta = 0; + + if (level >= 100) + xDelta -= 4; + else if (level < 10) + xDelta += 5; + + gSprites[GetIndicatorSpriteId(healthboxId)].tLevelXDelta = xDelta; +} + +static const s8 sIndicatorPositions[][2] = +{ + [B_POSITION_PLAYER_LEFT] = {53, -9}, + [B_POSITION_OPPONENT_LEFT] = {44, -9}, + [B_POSITION_PLAYER_RIGHT] = {52, -9}, + [B_POSITION_OPPONENT_RIGHT] = {44, -9}, +}; + +void CreateIndicatorSprite(u32 battler) +{ + u32 position, spriteId; + s16 xHealthbox = 0, x = 0, y = 0; + + position = GetBattlerPosition(battler); + GetBattlerHealthboxCoords(battler, &xHealthbox, &y); + + x = sIndicatorPositions[position][0]; + y += sIndicatorPositions[position][1]; + + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_GimmickIndicator, 0, y, 0); + gBattleStruct->gimmick.indicatorSpriteId[battler] = spriteId; + gSprites[spriteId].tBattler = battler; + gSprites[spriteId].tPosX = x; + gSprites[spriteId].invisible = FALSE; +} + +#undef tBattler +#undef tPosX +#undef tLevelXDelta + +#undef hMain_Battler diff --git a/src/battle_interface.c b/src/battle_interface.c index 4e32fcf5a61b..8d50bf95c3eb 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -172,6 +172,7 @@ enum static const u8 *GetHealthboxElementGfxPtr(u8); static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *, u32, u32, u32, u32 *); +static u8 *AddTextPrinterAndCreateWindowOnHealthboxToFit(const u8 *, u32, u32, u32, u32 *, u32); static void RemoveWindowOnHealthbox(u32 windowId); static void UpdateHpTextInHealthboxInDoubles(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); @@ -194,13 +195,6 @@ static void SpriteCB_StatusSummaryBalls_Enter(struct Sprite *); static void SpriteCB_StatusSummaryBalls_Exit(struct Sprite *); static void SpriteCB_StatusSummaryBalls_OnSwitchout(struct Sprite *); -static void SpriteCb_MegaTrigger(struct Sprite *); -static void SpriteCb_BurstTrigger(struct Sprite *); -static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level); -static void MegaIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId); -static void MegaIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority); -static void SpriteCb_MegaIndicator(struct Sprite *); - static u8 GetStatusIconForBattlerId(u8, u8); static s32 CalcNewBarValue(s32, s32, s32, s32 *, u8, u16); static u8 GetScaledExpFraction(s32, s32, s32, u8); @@ -619,122 +613,6 @@ static const struct WindowTemplate sHealthboxWindowTemplate = { .baseBlock = 0 }; -static const u8 ALIGNED(4) sMegaTriggerGfx[] = INCBIN_U8("graphics/battle_interface/mega_trigger.4bpp"); -static const u16 sMegaTriggerPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger.gbapal"); - -static const struct SpriteSheet sSpriteSheet_MegaTrigger = -{ - sMegaTriggerGfx, sizeof(sMegaTriggerGfx), TAG_MEGA_TRIGGER_TILE -}; -static const struct SpritePalette sSpritePalette_MegaTrigger = -{ - sMegaTriggerPal, TAG_MEGA_TRIGGER_PAL -}; - -static const struct OamData sOamData_MegaTrigger = -{ - .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_MegaTriggerOff[] = -{ - ANIMCMD_FRAME(0, 0), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_MegaTriggerOn[] = -{ - ANIMCMD_FRAME(16, 0), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_MegaTrigger[] = -{ - sSpriteAnim_MegaTriggerOff, - sSpriteAnim_MegaTriggerOn, -}; - -static const struct SpriteTemplate sSpriteTemplate_MegaTrigger = -{ - .tileTag = TAG_MEGA_TRIGGER_TILE, - .paletteTag = TAG_MEGA_TRIGGER_PAL, - .oam = &sOamData_MegaTrigger, - .anims = sSpriteAnimTable_MegaTrigger, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_MegaTrigger -}; - -static const u8 ALIGNED(4) sBurstTriggerGfx[] = INCBIN_U8("graphics/battle_interface/burst_trigger.4bpp"); -static const u16 sBurstTriggerPal[] = INCBIN_U16("graphics/battle_interface/burst_trigger.gbapal"); - -static const struct SpriteSheet sSpriteSheet_BurstTrigger = -{ - sBurstTriggerGfx, sizeof(sBurstTriggerGfx), TAG_BURST_TRIGGER_TILE -}; -static const struct SpritePalette sSpritePalette_BurstTrigger = -{ - sBurstTriggerPal, TAG_BURST_TRIGGER_PAL -}; - -static const struct OamData sOamData_BurstTrigger = -{ - .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_BurstTriggerOff[] = -{ - ANIMCMD_FRAME(0, 0), - ANIMCMD_END -}; - -static const union AnimCmd sSpriteAnim_BurstTriggerOn[] = -{ - ANIMCMD_FRAME(16, 0), - ANIMCMD_END -}; - -static const union AnimCmd *const sSpriteAnimTable_BurstTrigger[] = -{ - sSpriteAnim_BurstTriggerOff, - sSpriteAnim_BurstTriggerOn, -}; - -static const struct SpriteTemplate sSpriteTemplate_BurstTrigger = -{ - .tileTag = TAG_BURST_TRIGGER_TILE, - .paletteTag = TAG_BURST_TRIGGER_PAL, - .oam = &sOamData_BurstTrigger, - .anims = sSpriteAnimTable_BurstTrigger, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_BurstTrigger -}; - // Because the healthbox is too large to fit into one sprite, it is divided into two sprites. // healthboxLeft or healthboxMain is the left part that is used as the 'main' sprite. // healthboxRight or healthboxOther is the right part of the healthbox. @@ -742,7 +620,6 @@ static const struct SpriteTemplate sSpriteTemplate_BurstTrigger = // data fields for healthboxMain // oam.affineParam holds healthboxRight spriteId -#define hMain_MegaIndicatorId data[3] #define hMain_HealthBarSpriteId data[5] #define hMain_Battler data[6] #define hMain_Data7 data[7] @@ -851,8 +728,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) healthBarSpritePtr->hBar_Data6 = data6; healthBarSpritePtr->invisible = TRUE; - // Create mega indicator sprite. - MegaIndicator_CreateSprite(battlerId, healthboxLeftSpriteId); + CreateIndicatorSprite(battlerId); gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; @@ -936,7 +812,7 @@ void SetHealthboxSpriteInvisible(u8 healthboxSpriteId) gSprites[healthboxSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = TRUE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = TRUE; - MegaIndicator_SetVisibilities(healthboxSpriteId, TRUE); + UpdateIndicatorVisibilityAndType(healthboxSpriteId, TRUE); } void SetHealthboxSpriteVisible(u8 healthboxSpriteId) @@ -944,7 +820,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId) gSprites[healthboxSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = FALSE; gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = FALSE; - MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); + UpdateIndicatorVisibilityAndType(healthboxSpriteId, FALSE); } static void UpdateSpritePos(u8 spriteId, s16 x, s16 y) @@ -970,7 +846,8 @@ static void TryToggleHealboxVisibility(u32 priority, u32 healthboxLeftSpriteId, gSprites[healthboxLeftSpriteId].invisible = invisible; gSprites[healthboxRightSpriteId].invisible = invisible; gSprites[healthbarSpriteId].invisible = invisible; - MegaIndicator_SetVisibilities(healthboxLeftSpriteId, invisible); + + UpdateIndicatorVisibilityAndType(healthboxLeftSpriteId, invisible); } void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) @@ -987,7 +864,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) gSprites[healthboxRightSpriteId].oam.priority = priority; gSprites[healthbarSpriteId].oam.priority = priority; - MegaIndicator_UpdateOamPriority(healthboxLeftSpriteId, priority); + UpdateIndicatorOamPriority(healthboxLeftSpriteId, priority); if (B_HIDE_HEALTHBOX_IN_ANIMS == TRUE && hideHPBoxes && IsBattlerAlive(i)) TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId); @@ -1042,13 +919,13 @@ 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 or Dynamaxed. - if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler) || IsDynamaxed(battler)) + // Don't print Lv char if mon has a gimmick with an indicator active. + if (GetIndicatorTileTag(battler) != TAG_NONE) { objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))) - 1; - MegaIndicator_UpdateLevel(healthboxSpriteId, lvl); - MegaIndicator_SetVisibilities(healthboxSpriteId, FALSE); + UpdateIndicatorLevelData(healthboxSpriteId, lvl); + UpdateIndicatorVisibilityAndType(healthboxSpriteId, FALSE); } else { @@ -1057,7 +934,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); + UpdateIndicatorVisibilityAndType(healthboxSpriteId, TRUE); } windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); @@ -1238,7 +1115,7 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon) barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBattlerPosition(gSprites[healthboxSpriteId].hMain_Battler) * 384)]; var = 5; nature = GetNature(mon); - StringCopy(&text[6], gNatureNamePointers[nature]); + StringCopy(&text[6], gNaturesInfo[nature].name); RenderTextHandleBold(barFontGfx, FONT_BOLD, text); for (j = 6, i = 0; i < var; i++, j++) @@ -1358,434 +1235,6 @@ void SwapHpBarsWithHpText(void) } } -// Mega Evolution Trigger icon functions. -void ChangeMegaTriggerSprite(u8 spriteId, u8 animId) -{ - StartSpriteAnim(&gSprites[spriteId], animId); -} - -#define SINGLES_MEGA_TRIGGER_POS_X_OPTIMAL (30) -#define SINGLES_MEGA_TRIGGER_POS_X_PRIORITY (31) -#define SINGLES_MEGA_TRIGGER_POS_X_SLIDE (15) -#define SINGLES_MEGA_TRIGGER_POS_Y_DIFF (-11) - -#define DOUBLES_MEGA_TRIGGER_POS_X_OPTIMAL (30) -#define DOUBLES_MEGA_TRIGGER_POS_X_PRIORITY (31) -#define DOUBLES_MEGA_TRIGGER_POS_X_SLIDE (15) -#define DOUBLES_MEGA_TRIGGER_POS_Y_DIFF (-4) - -#define tBattler data[0] -#define tHide data[1] - -void CreateMegaTriggerSprite(u8 battlerId, u8 palId) -{ - LoadSpritePalette(&sSpritePalette_MegaTrigger); - if (GetSpriteTileStartByTag(TAG_MEGA_TRIGGER_TILE) == 0xFFFF) - LoadSpriteSheet(&sSpriteSheet_MegaTrigger); - if (gBattleStruct->mega.triggerSpriteId == 0xFF) - { - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - gBattleStruct->mega.triggerSpriteId = CreateSprite(&sSpriteTemplate_MegaTrigger, - gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_MEGA_TRIGGER_POS_X_SLIDE, - gSprites[gHealthboxSpriteIds[battlerId]].y - DOUBLES_MEGA_TRIGGER_POS_Y_DIFF, 0); - else - gBattleStruct->mega.triggerSpriteId = CreateSprite(&sSpriteTemplate_MegaTrigger, - gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_MEGA_TRIGGER_POS_X_SLIDE, - gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_MEGA_TRIGGER_POS_Y_DIFF, 0); - } - gSprites[gBattleStruct->mega.triggerSpriteId].tBattler = battlerId; - gSprites[gBattleStruct->mega.triggerSpriteId].tHide = FALSE; - - ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, palId); -} - -static void SpriteCb_MegaTrigger(struct Sprite *sprite) -{ - s32 xSlide, xPriority, xOptimal; - s32 yDiff; - - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - xSlide = DOUBLES_MEGA_TRIGGER_POS_X_SLIDE; - xPriority = DOUBLES_MEGA_TRIGGER_POS_X_PRIORITY; - xOptimal = DOUBLES_MEGA_TRIGGER_POS_X_OPTIMAL; - yDiff = DOUBLES_MEGA_TRIGGER_POS_Y_DIFF; - } - else - { - xSlide = SINGLES_MEGA_TRIGGER_POS_X_SLIDE; - xPriority = SINGLES_MEGA_TRIGGER_POS_X_PRIORITY; - xOptimal = SINGLES_MEGA_TRIGGER_POS_X_OPTIMAL; - yDiff = SINGLES_MEGA_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) - DestroyMegaTriggerSprite(); - } - 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 IsMegaTriggerSpriteActive(void) -{ - if (GetSpriteTileStartByTag(TAG_MEGA_TRIGGER_TILE) == 0xFFFF) - return FALSE; - else if (IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_PAL) != 0xFF) - return TRUE; - else - return FALSE; -} - -void HideMegaTriggerSprite(void) -{ - if (gBattleStruct->mega.triggerSpriteId >= MAX_SPRITES) - return; - ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, 0); - gSprites[gBattleStruct->mega.triggerSpriteId].tHide = TRUE; -} - -void HideTriggerSprites(void) -{ - HideMegaTriggerSprite(); - HideBurstTriggerSprite(); - HideZMoveTriggerSprite(); - HideDynamaxTriggerSprite(); -} - -void DestroyMegaTriggerSprite(void) -{ - FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_PAL); - FreeSpriteTilesByTag(TAG_MEGA_TRIGGER_TILE); - if (gBattleStruct->mega.triggerSpriteId != 0xFF) - DestroySprite(&gSprites[gBattleStruct->mega.triggerSpriteId]); - gBattleStruct->mega.triggerSpriteId = 0xFF; -} - -#undef tBattler -#undef tHide - -// Ultra Burst Trigger icon functions. -void ChangeBurstTriggerSprite(u8 spriteId, u8 animId) -{ - StartSpriteAnim(&gSprites[spriteId], animId); -} - -#define SINGLES_BURST_TRIGGER_POS_X_OPTIMAL (30) -#define SINGLES_BURST_TRIGGER_POS_X_PRIORITY (31) -#define SINGLES_BURST_TRIGGER_POS_X_SLIDE (15) -#define SINGLES_BURST_TRIGGER_POS_Y_DIFF (-11) - -#define DOUBLES_BURST_TRIGGER_POS_X_OPTIMAL (30) -#define DOUBLES_BURST_TRIGGER_POS_X_PRIORITY (31) -#define DOUBLES_BURST_TRIGGER_POS_X_SLIDE (15) -#define DOUBLES_BURST_TRIGGER_POS_Y_DIFF (-4) - -#define tBattler data[0] -#define tHide data[1] - -void CreateBurstTriggerSprite(u8 battlerId, u8 palId) -{ - LoadSpritePalette(&sSpritePalette_BurstTrigger); - if (GetSpriteTileStartByTag(TAG_BURST_TRIGGER_TILE) == 0xFFFF) - LoadSpriteSheet(&sSpriteSheet_BurstTrigger); - if (gBattleStruct->burst.triggerSpriteId == 0xFF) - { - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - gBattleStruct->burst.triggerSpriteId = CreateSprite(&sSpriteTemplate_BurstTrigger, - gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_BURST_TRIGGER_POS_X_SLIDE, - gSprites[gHealthboxSpriteIds[battlerId]].y - DOUBLES_BURST_TRIGGER_POS_Y_DIFF, 0); - else - gBattleStruct->burst.triggerSpriteId = CreateSprite(&sSpriteTemplate_BurstTrigger, - gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_BURST_TRIGGER_POS_X_SLIDE, - gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_BURST_TRIGGER_POS_Y_DIFF, 0); - } - gSprites[gBattleStruct->burst.triggerSpriteId].tBattler = battlerId; - gSprites[gBattleStruct->burst.triggerSpriteId].tHide = FALSE; - - ChangeBurstTriggerSprite(gBattleStruct->burst.triggerSpriteId, palId); -} - -static void SpriteCb_BurstTrigger(struct Sprite *sprite) -{ - s32 xSlide, xPriority, xOptimal; - s32 yDiff; - - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - xSlide = DOUBLES_BURST_TRIGGER_POS_X_SLIDE; - xPriority = DOUBLES_BURST_TRIGGER_POS_X_PRIORITY; - xOptimal = DOUBLES_BURST_TRIGGER_POS_X_OPTIMAL; - yDiff = DOUBLES_BURST_TRIGGER_POS_Y_DIFF; - } - else - { - xSlide = SINGLES_BURST_TRIGGER_POS_X_SLIDE; - xPriority = SINGLES_BURST_TRIGGER_POS_X_PRIORITY; - xOptimal = SINGLES_BURST_TRIGGER_POS_X_OPTIMAL; - yDiff = SINGLES_BURST_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) - DestroyBurstTriggerSprite(); - } - 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 IsBurstTriggerSpriteActive(void) -{ - if (GetSpriteTileStartByTag(TAG_BURST_TRIGGER_TILE) == 0xFFFF) - return FALSE; - else if (IndexOfSpritePaletteTag(TAG_BURST_TRIGGER_PAL) != 0xFF) - return TRUE; - else - return FALSE; -} - -void HideBurstTriggerSprite(void) -{ - if (gBattleStruct->burst.triggerSpriteId >= MAX_SPRITES) - return; - ChangeBurstTriggerSprite(gBattleStruct->burst.triggerSpriteId, 0); - gSprites[gBattleStruct->burst.triggerSpriteId].tHide = TRUE; -} - -void DestroyBurstTriggerSprite(void) -{ - FreeSpritePaletteByTag(TAG_BURST_TRIGGER_PAL); - FreeSpriteTilesByTag(TAG_BURST_TRIGGER_TILE); - if (gBattleStruct->burst.triggerSpriteId != 0xFF) - DestroySprite(&gSprites[gBattleStruct->burst.triggerSpriteId]); - gBattleStruct->burst.triggerSpriteId = 0xFF; -} - -#undef tBattler -#undef tHide - - -// Code for Mega Evolution (And Alpha/Omega) Trigger icon visible on the battler's healthbox. -enum -{ - INDICATOR_MEGA, - INDICATOR_ALPHA, - INDICATOR_OMEGA, - INDICATOR_DYNAMAX, - INDICATOR_COUNT, -}; - -static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/mega_indicator.4bpp"); -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/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_MISC_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, - [INDICATOR_DYNAMAX] = {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL}, - [INDICATOR_COUNT] = {0} -}; - -static const struct OamData sOamData_MegaIndicator = -{ - .shape = SPRITE_SHAPE(16x16), - .size = SPRITE_SIZE(16x16), - .priority = 1, -}; - -static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = -{ - .tileTag = TAG_MEGA_INDICATOR_TILE, - .paletteTag = TAG_MEGA_INDICATOR_PAL, - .oam = &sOamData_MegaIndicator, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCb_MegaIndicator, -}; - -static const u16 sMegaIndicatorTags[][2] = -{ - [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_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] = -{ - [B_POSITION_PLAYER_LEFT] = {52, -9}, - [B_POSITION_OPPONENT_LEFT] = {44, -9}, - [B_POSITION_PLAYER_RIGHT] = {52, -9}, - [B_POSITION_OPPONENT_RIGHT] = {44, -9}, -}; - -// for sprite data fields -#define tBattler data[0] -#define tType data[1] // Indicator type: mega, alpha, omega -#define tPosX data[2] -#define tLevelXDelta data[3] // X position depends whether level has 3, 2 or 1 digit - -void MegaIndicator_LoadSpritesGfx(void) -{ - LoadSpriteSheets(sMegaIndicator_SpriteSheets); - LoadSpritePalettes(sMegaIndicator_SpritePalettes); -} - -static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *sprite) -{ - bool32 megaEvolved = IsBattlerMegaEvolved(battlerId); - bool32 primalReverted = IsBattlerPrimalReverted(battlerId); - bool32 dynamaxed = IsDynamaxed(battlerId); - - if (!megaEvolved && !primalReverted && !dynamaxed) - return TRUE; - - if (megaEvolved) - sprite->tType = INDICATOR_MEGA; - else if (primalReverted && gBattleMons[battlerId].species == SPECIES_KYOGRE_PRIMAL) - 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]); - return FALSE; -} - -static u8 *MegaIndicator_GetSpriteId(u32 healthboxSpriteId) -{ - u8 *spriteId = (u8 *)(&gSprites[healthboxSpriteId].hMain_MegaIndicatorId); - return spriteId; -} - -void MegaIndicator_SetVisibilities(u32 healthboxId, bool32 invisible) -{ - u8 *spriteId = MegaIndicator_GetSpriteId(healthboxId); - u32 battlerId = gSprites[healthboxId].hMain_Battler; - - if (GetSafariZoneFlag()) - return; - - if (invisible == TRUE) - gSprites[*spriteId].invisible = TRUE; - else // Try visible. - gSprites[*spriteId].invisible = MegaIndicator_ShouldBeInvisible(battlerId, &gSprites[*spriteId]); -} - -static void MegaIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority) -{ - u8 *spriteId = MegaIndicator_GetSpriteId(healthboxId); - gSprites[*spriteId].oam.priority = oamPriority; -} - -static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level) -{ - s16 xDelta = 0; - u8 *spriteId = MegaIndicator_GetSpriteId(healthboxId); - - if (level >= 100) - xDelta -= 4; - else if (level < 10) - xDelta += 5; - - gSprites[*spriteId].tLevelXDelta = xDelta; -} - -static void MegaIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) -{ - struct SpriteTemplate sprTemplate; - u32 position; - u8 *spriteId; - s16 xHealthbox = 0, y = 0; - s32 x = 0; - - position = GetBattlerPosition(battlerId); - GetBattlerHealthboxCoords(battlerId, &xHealthbox, &y); - - x = sIndicatorPositions[position][0]; - y += sIndicatorPositions[position][1]; - - spriteId = MegaIndicator_GetSpriteId(healthboxSpriteId); - sprTemplate = sSpriteTemplate_MegaIndicator; - sprTemplate.tileTag = sMegaIndicatorTags[INDICATOR_MEGA][0]; - sprTemplate.paletteTag = sMegaIndicatorTags[INDICATOR_MEGA][1]; - *spriteId = CreateSpriteAtEnd(&sprTemplate, 0, y, 0); - gSprites[*spriteId].tType = INDICATOR_MEGA; - gSprites[*spriteId].tBattler = battlerId; - gSprites[*spriteId].tPosX = x; - gSprites[*spriteId].invisible = TRUE; -} - -static void SpriteCb_MegaIndicator(struct Sprite *sprite) -{ - u32 battlerId = sprite->tBattler; - - sprite->x = gSprites[gHealthboxSpriteIds[battlerId]].x + sprite->tPosX + sprite->tLevelXDelta; - sprite->x2 = gSprites[gHealthboxSpriteIds[battlerId]].x2; - sprite->y2 = gSprites[gHealthboxSpriteIds[battlerId]].y2; -} - #undef tBattler #undef tType #undef tPosX @@ -2281,24 +1730,21 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && StringCompare(nickname, GetSpeciesName(species)) == 0) gender = 100; - // AddTextPrinterAndCreateWindowOnHealthbox's arguments are the same in all 3 cases. - // It's possible they may have been different in early development phases. switch (gender) { default: StringCopy(ptr, gText_HealthboxGender_None); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); break; case MON_MALE: StringCopy(ptr, gText_HealthboxGender_Male); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); break; case MON_FEMALE: StringCopy(ptr, gText_HealthboxGender_Female); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId); break; } + windowTileData = AddTextPrinterAndCreateWindowOnHealthboxToFit(gDisplayedStringBattle, 0, 3, 2, &windowId, 55); + spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER) @@ -2615,7 +2061,7 @@ s32 MoveBattleBar(u8 battlerId, u8 healthboxSpriteId, u8 whichBar, u8 unused) if (whichBar == HEALTH_BAR) // health bar { - u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / B_HEALTHBAR_PIXELS, 1); + u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / (B_HEALTHBAR_PIXELS / 2), 1); currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue, gBattleSpritesDataPtr->battleBars[battlerId].oldValue, gBattleSpritesDataPtr->battleBars[battlerId].receivedValue, @@ -2838,7 +2284,7 @@ static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 s32 newVal, result; s8 oldToMax, newToMax; - scale *= 8; + scale *= (B_FAST_EXP_GROW) ? 2 : 8; newVal = oldValue - receivedValue; if (newVal < 0) @@ -2887,7 +2333,7 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp) return result; } -static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId) +static u8 *AddTextPrinterAndCreateWindowOnHealthboxWithFont(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId, u32 fontId) { u16 winId; u8 color[3]; @@ -2900,12 +2346,23 @@ static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, color[1] = 1; color[2] = 3; - AddTextPrinterParameterized4(winId, FONT_SMALL, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); + AddTextPrinterParameterized4(winId, fontId, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); *windowId = winId; return (u8 *)(GetWindowAttribute(winId, WINDOW_TILE_DATA)); } +static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId) +{ + return AddTextPrinterAndCreateWindowOnHealthboxWithFont(str, x, y, bgColor, windowId, FONT_SMALL); +} + +static u8 *AddTextPrinterAndCreateWindowOnHealthboxToFit(const u8 *str, u32 x, u32 y, u32 bgColor, u32 *windowId, u32 width) +{ + u32 fontId = GetFontIdToFit(str, FONT_SMALL, 0, width); + return AddTextPrinterAndCreateWindowOnHealthboxWithFont(str, x, y, bgColor, windowId, fontId); +} + static void RemoveWindowOnHealthbox(u32 windowId) { RemoveWindow(windowId); @@ -3010,6 +2467,7 @@ static const s16 sAbilityPopUpCoordsSingles[MAX_BATTLERS_COUNT][2] = static u8* AddTextPrinterAndCreateWindowOnAbilityPopUp(const u8 *str, u32 x, u32 y, u32 color1, u32 color2, u32 color3, u32 *windowId) { + u32 fontId; u8 color[3] = {color1, color2, color3}; struct WindowTemplate winTemplate = {0}; winTemplate.width = POPUP_WINDOW_WIDTH; @@ -3018,7 +2476,8 @@ static u8* AddTextPrinterAndCreateWindowOnAbilityPopUp(const u8 *str, u32 x, u32 *windowId = AddWindow(&winTemplate); FillWindowPixelBuffer(*windowId, PIXEL_FILL(color1)); - AddTextPrinterParameterized4(*windowId, FONT_SMALL, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); + fontId = GetFontIdToFit(str, FONT_SMALL, 0, 76); + AddTextPrinterParameterized4(*windowId, fontId, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); return (u8 *)(GetWindowAttribute(*windowId, WINDOW_TILE_DATA)); } @@ -3723,3 +3182,9 @@ void ArrowsChangeColorLastBallCycle(bool32 showArrows) } #endif } + +void CategoryIcons_LoadSpritesGfx(void) +{ + LoadCompressedSpriteSheet(&gSpriteSheet_CategoryIcons); + LoadSpritePalette(&gSpritePal_CategoryIcons); +} diff --git a/src/battle_main.c b/src/battle_main.c index f5714d0ce24b..2b95bad97563 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -13,6 +13,8 @@ #include "battle_setup.h" #include "battle_tower.h" #include "battle_util.h" +#include "battle_z_move.h" +#include "battle_gimmick.h" #include "berry.h" #include "bg.h" #include "data.h" @@ -54,6 +56,7 @@ #include "wild_encounter.h" #include "window.h" #include "constants/abilities.h" +#include "constants/battle_ai.h" #include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" #include "constants/battle_partner.h" @@ -228,6 +231,7 @@ EWRAM_DATA u16 gBallToDisplay = 0; EWRAM_DATA bool8 gLastUsedBallMenuPresent = FALSE; EWRAM_DATA u8 gPartyCriticalHits[PARTY_SIZE] = {0}; EWRAM_DATA static u8 sTriedEvolving = 0; +EWRAM_DATA u8 gCategoryIconSpriteId = 0; void (*gPreBattleCallback1)(void); void (*gBattleMainFunc)(void); @@ -293,309 +297,7 @@ const struct OamData gOamData_BattleSpritePlayerSide = static const s8 sCenterToCornerVecXs[8] ={-32, -16, -16, -32, -32}; -// .generic is large enough that the text for TYPE_ELECTRIC will exceed TEXT_BUFF_ARRAY_COUNT. -const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = -{ - [TYPE_NORMAL] = - { - .name = _("Normal"), - .generic = _("a NORMAL move"), - .palette = 13, - .zMove = MOVE_BREAKNECK_BLITZ, - .maxMove = MOVE_MAX_STRIKE, - //.enhanceItem = ITEM_SILK_SCARF, - //.berry = ITEM_CHILAN_BERRY, - //.gem = ITEM_NORMAL_GEM, - //.zCrystal = ITEM_NORMALIUM_Z, - //.teraShard = ITEM_NORMAL_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_NORMAL, - }, - [TYPE_FIGHTING] = - { - .name = _("Fight"), - .generic = _("a FIGHTING move"), - .palette = 13, - .zMove = MOVE_ALL_OUT_PUMMELING, - .maxMove = MOVE_MAX_KNUCKLE, - //.enhanceItem = ITEM_BLACK_BELT, - //.berry = ITEM_CHOPLE_BERRY, - //.gem = ITEM_FIGHTING_GEM, - //.zCrystal = ITEM_FIGHTINIUM_Z, - //.plate = ITEM_FIST_PLATE, - //.memory = ITEM_FIGHTING_MEMORY, - //.teraShard = ITEM_FIGHTING_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_FIGHTING, - }, - [TYPE_FLYING] = - { - .name = _("Flying"), - .generic = _("a FLYING move"), - .palette = 14, - .zMove = MOVE_SUPERSONIC_SKYSTRIKE, - .maxMove = MOVE_MAX_AIRSTREAM, - //.enhanceItem = ITEM_SHARP_BEAK, - //.berry = ITEM_COBA_BERRY, - //.gem = ITEM_FLYING_GEM, - //.zCrystal = ITEM_FLYINIUM_Z, - //.plate = ITEM_SKY_PLATE, - //.memory = ITEM_FLYING_MEMORY, - //.teraShard = ITEM_FLYING_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_FLYING, - }, - [TYPE_POISON] = - { - .name = _("Poison"), - .generic = _("a POISON move"), - .palette = 14, - .zMove = MOVE_ACID_DOWNPOUR, - .maxMove = MOVE_MAX_OOZE, - //.enhanceItem = ITEM_POISON_BARB, - //.berry = ITEM_KEBIA_BERRY, - //.gem = ITEM_POISON_GEM, - //.zCrystal = ITEM_POISONIUM_Z, - //.plate = ITEM_TOXIC_PLATE, - //.memory = ITEM_POISON_MEMORY, - //.teraShard = ITEM_POISON_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_POISON, - }, - [TYPE_GROUND] = - { - .name = _("Ground"), - .generic = _("a GROUND move"), - .palette = 13, - .zMove = MOVE_TECTONIC_RAGE, - .maxMove = MOVE_MAX_QUAKE, - //.enhanceItem = ITEM_SOFT_SAND, - //.berry = ITEM_SHUCA_BERRY, - //.gem = ITEM_GROUND_GEM, - //.zCrystal = ITEM_GROUNDIUM_Z, - //.plate = ITEM_EARTH_PLATE, - //.memory = ITEM_GROUND_MEMORY, - //.teraShard = ITEM_GROUND_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_GROUND, - }, - [TYPE_ROCK] = - { - .name = _("Rock"), - .generic = _("a ROCK move"), - .palette = 13, - .zMove = MOVE_CONTINENTAL_CRUSH, - .maxMove = MOVE_MAX_ROCKFALL, - //.enhanceItem = ITEM_HARD_STONE, - //.berry = ITEM_CHARTI_BERRY, - //.gem = ITEM_ROCK_GEM, - //.zCrystal = ITEM_ROCKIUM_Z, - //.plate = ITEM_STONE_PLATE, - //.memory = ITEM_ROCK_MEMORY, - //.teraShard = ITEM_ROCK_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_ROCK, - }, - [TYPE_BUG] = - { - .name = _("Bug"), - .generic = _("a BUG move"), - .palette = 15, - .zMove = MOVE_SAVAGE_SPIN_OUT, - .maxMove = MOVE_MAX_FLUTTERBY, - //.enhanceItem = ITEM_SILVER_POWDER, - //.berry = ITEM_TANGA_BERRY, - //.gem = ITEM_BUG_GEM, - //.zCrystal = ITEM_BUGINIUM_Z, - //.plate = ITEM_INSECT_PLATE, - //.memory = ITEM_BUG_MEMORY, - //.teraShard = ITEM_BUG_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_BUG, - }, - [TYPE_GHOST] = - { - .name = _("Ghost"), - .generic = _("a GHOST move"), - .palette = 14, - .zMove = MOVE_NEVER_ENDING_NIGHTMARE, - .maxMove = MOVE_MAX_PHANTASM, - //.enhanceItem = ITEM_SPELL_TAG, - //.berry = ITEM_KASIB_BERRY, - //.gem = ITEM_GHOST_GEM, - //.zCrystal = ITEM_GHOSTIUM_Z, - //.plate = ITEM_SPOOKY_PLATE, - //.memory = ITEM_GHOST_MEMORY, - //.teraShard = ITEM_GHOST_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_GHOST, - }, - [TYPE_STEEL] = - { - .name = _("Steel"), - .generic = _("a STEEL move"), - .palette = 13, - .zMove = MOVE_CORKSCREW_CRASH, - .maxMove = MOVE_MAX_STEELSPIKE, - //.enhanceItem = ITEM_METAL_COAT, - //.berry = ITEM_BABIRI_BERRY, - //.gem = ITEM_STEEL_GEM, - //.zCrystal = ITEM_STEELIUM_Z, - //.plate = ITEM_IRON_PLATE, - //.memory = ITEM_STEEL_MEMORY, - //.teraShard = ITEM_STEEL_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_STEEL, - }, - [TYPE_MYSTERY] = - { - .name = _("???"), - .generic = _("a ??? move"), - .palette = 15, - }, - [TYPE_FIRE] = - { - .name = _("Fire"), - .generic = _("a FIRE move"), - .palette = 13, - .zMove = MOVE_INFERNO_OVERDRIVE, - .maxMove = MOVE_MAX_FLARE, - //.enhanceItem = ITEM_CHARCOAL, - //.berry = ITEM_OCCA_BERRY, - //.gem = ITEM_FIRE_GEM, - //.zCrystal = ITEM_FIRIUM_Z, - //.plate = ITEM_FLAME_PLATE, - //.memory = ITEM_FIRE_MEMORY, - //.teraShard = ITEM_FIRE_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_FIRE, - }, - [TYPE_WATER] = - { - .name = _("Water"), - .generic = _("a WATER move"), - .palette = 14, - .zMove = MOVE_HYDRO_VORTEX, - .maxMove = MOVE_MAX_GEYSER, - //.enhanceItem = ITEM_MYSTIC_WATER, - //.berry = ITEM_PASSHO_BERRY, - //.gem = ITEM_WATER_GEM, - //.zCrystal = ITEM_WATERIUM_Z, - //.plate = ITEM_SPLASH_PLATE, - //.memory = ITEM_WATER_MEMORY, - //.teraShard = ITEM_WATER_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_WATER, - }, - [TYPE_GRASS] = - { - .name = _("Grass"), - .generic = _("a GRASS move"), - .palette = 15, - .zMove = MOVE_BLOOM_DOOM, - .maxMove = MOVE_MAX_OVERGROWTH, - //.enhanceItem = ITEM_MIRACLE_SEED, - //.berry = ITEM_RINDO_BERRY, - //.gem = ITEM_GRASS_GEM, - //.zCrystal = ITEM_GRASSIUM_Z, - //.plate = ITEM_MEADOW_PLATE, - //.memory = ITEM_GRASS_MEMORY, - //.teraShard = ITEM_GRASS_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_GRASS, - }, - [TYPE_ELECTRIC] = - { - .name = _("Electr"), - .generic = _("an ELECTRIC move"), - .palette = 13, - .zMove = MOVE_GIGAVOLT_HAVOC, - .maxMove = MOVE_MAX_LIGHTNING, - //.enhanceItem = ITEM_MAGNET, - //.berry = ITEM_WACAN_BERRY, - //.gem = ITEM_ELECTRIC_GEM, - //.zCrystal = ITEM_ELECTRIUM_Z, - //.plate = ITEM_ZAP_PLATE, - //.memory = ITEM_ELECTRIC_MEMORY, - //.teraShard = ITEM_ELECTRIC_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_ELECTRIC, - }, - [TYPE_PSYCHIC] = - { - .name = _("Psychc"), - .generic = _("a PSYCHIC move"), - .palette = 14, - .zMove = MOVE_SHATTERED_PSYCHE, - .maxMove = MOVE_MAX_MINDSTORM, - //.enhanceItem = ITEM_TWISTED_SPOON, - //.berry = ITEM_PAYAPA_BERRY, - //.gem = ITEM_PSYCHIC_GEM, - //.zCrystal = ITEM_PSYCHIUM_Z, - //.plate = ITEM_MIND_PLATE, - //.memory = ITEM_PSYCHIC_MEMORY, - //.teraShard = ITEM_PSYCHIC_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_PSYCHIC, - }, - [TYPE_ICE] = - { - .name = _("Ice"), - .generic = _("an ICE move"), - .palette = 14, - .zMove = MOVE_SUBZERO_SLAMMER, - .maxMove = MOVE_MAX_HAILSTORM, - //.enhanceItem = ITEM_NEVER_MELT_ICE, - //.berry = ITEM_YACHE_BERRY, - //.gem = ITEM_ICE_GEM, - //.zCrystal = ITEM_ICIUM_Z, - //.plate = ITEM_ICICLE_PLATE, - //.memory = ITEM_ICE_MEMORY, - //.teraShard = ITEM_ICE_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_ICE, - }, - [TYPE_DRAGON] = - { - .name = _("Dragon"), - .generic = _("a DRAGON move"), - .palette = 15, - .zMove = MOVE_DEVASTATING_DRAKE, - .maxMove = MOVE_MAX_WYRMWIND, - //.enhanceItem = ITEM_DRAGON_FANG, - //.berry = ITEM_HABAN_BERRY, - //.gem = ITEM_DRAGON_GEM, - //.zCrystal = ITEM_DRAGONIUM_Z, - //.plate = ITEM_DRACO_PLATE, - //.memory = ITEM_DRAGON_MEMORY, - //.teraShard = ITEM_DRAGON_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_DRAGON, - }, - [TYPE_DARK] = - { - .name = _("Dark"), - .generic = _("a DARK move"), - .palette = 13, - .zMove = MOVE_BLACK_HOLE_ECLIPSE, - .maxMove = MOVE_MAX_DARKNESS, - //.enhanceItem = ITEM_BLACK_GLASSES, - //.berry = ITEM_COLBUR_BERRY, - //.gem = ITEM_DARK_GEM, - //.zCrystal = ITEM_DARKINIUM_Z, - //.plate = ITEM_DREAD_PLATE, - //.memory = ITEM_DARK_MEMORY, - //.teraShard = ITEM_DARK_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_DARK, - }, - [TYPE_FAIRY] = - { - .name = _("Fairy"), - .generic = _("a FAIRY move"), - .palette = 14, - .zMove = MOVE_TWINKLE_TACKLE, - .maxMove = MOVE_MAX_STARFALL, - //.enhanceItem = ITEM_FAIRY_FEATHER, - //.berry = ITEM_ROSELI_BERRY, - //.gem = ITEM_FAIRY_GEM, - //.zCrystal = ITEM_FAIRIUM_Z, - //.plate = ITEM_PIXIE_PLATE, - //.memory = ITEM_FAIRY_MEMORY, - //.teraShard = ITEM_FAIRY_TERA_SHARD, - //.arceusForm = SPECIES_ARCEUS_FAIRY, - }, - /* - [TYPE_STELLAR] = - { - .name = _("Stellar"), - .teraShard = ITEM_STELLAR_TERA_SHARD, - }, - */ -}; +#include "data/types_info.h" // extra args are money and ball #define TRAINER_CLASS(trainerClass, trainerName, ...) \ @@ -2064,6 +1766,7 @@ static void FreeRestoreBattleData(void) FreeMonSpritesGfx(); FreeBattleSpritesData(); FreeBattleResources(); + ResetDynamicAiFunc(); } void CB2_QuitRecordedBattle(void) @@ -2178,7 +1881,9 @@ void ModifyPersonalityForNature(u32 *personality, u32 newNature) u32 GeneratePersonalityForGender(u32 gender, u32 species) { const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[species]; - if (gender == MON_MALE) + if (gender == MON_GENDERLESS) + return 0; + else if (gender == MON_MALE) return ((255 - speciesInfo->genderRatio) / 2) + speciesInfo->genderRatio; else return speciesInfo->genderRatio / 2; @@ -2252,6 +1957,8 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); else if (partyData[i].gender == TRAINER_MON_FEMALE) personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); + else if (partyData[i].gender == TRAINER_MON_RANDOM_GENDER) + personalityValue = (personalityValue & 0xFFFFFF00) | GeneratePersonalityForGender(Random() & 1 ? MON_MALE : MON_FEMALE, partyData[i].species); ModifyPersonalityForNature(&personalityValue, partyData[i].nature); if (partyData[i].isShiny) { @@ -2319,6 +2026,11 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer u32 data = partyData[i].gigantamaxFactor; SetMonData(&party[i], MON_DATA_GIGANTAMAX_FACTOR, &data); } + if (partyData[i].teraType > 0) + { + u32 data = partyData[i].teraType; + SetMonData(&party[i], MON_DATA_TERA_TYPE, &data); + } CalculateMonStats(&party[i]); if (B_TRAINER_CLASS_POKE_BALLS >= GEN_7 && ball == -1) @@ -3205,6 +2917,37 @@ void SpriteCB_PlayerMonFromBall(struct Sprite *sprite) BattleAnimateBackSprite(sprite, sprite->sSpeciesId); } +void SpriteCB_PlayerMonSlideIn(struct Sprite *sprite) +{ + if (sprite->data[3] == 0) + { + PlaySE(SE_BALL_TRAY_ENTER); + sprite->data[3]++; + } + else if (sprite->data[3] == 1) + { + if (sprite->animEnded) + return; + sprite->data[4] = sprite->x; + sprite->x = -33; + sprite->invisible = FALSE; + sprite->data[3]++; + } + else if (sprite->data[3] < 27) + { + sprite->x += 4; + sprite->data[3]++; + } + else + { + sprite->data[3] = 0; + sprite->x = sprite->data[4]; + sprite->data[4] = 0; + sprite->callback = SpriteCB_PlayerMonFromBall; + PlayCry_ByMode(sprite->sSpeciesId, -25, CRY_MODE_NORMAL); + } +} + static void SpriteCB_TrainerThrowObject_Main(struct Sprite *sprite) { AnimSetCenterToCornerVecX(sprite); @@ -3356,9 +3099,6 @@ static void BattleStartClearSetData(void) gBattleStruct->arenaLostPlayerMons = 0; gBattleStruct->arenaLostOpponentMons = 0; - gBattleStruct->mega.triggerSpriteId = 0xFF; - gBattleStruct->burst.triggerSpriteId = 0xFF; - for (i = 0; i < ARRAY_COUNT(gSideTimers); i++) { gSideTimers[i].stickyWebBattlerId = 0xFF; @@ -3378,7 +3118,10 @@ static void BattleStartClearSetData(void) } gBattleStruct->swapDamageCategory = FALSE; // Photon Geyser, Shell Side Arm, Light That Burns the Sky + gBattleStruct->categoryOverride = FALSE; // used for Z-Moves and Max Moves + gSelectedMonPartyId = PARTY_SIZE; // Revival Blessing + gCategoryIconSpriteId = 0xFF; } void SwitchInClearSetData(u32 battler) @@ -3476,6 +3219,7 @@ void SwitchInClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][3] = 0; gBattleStruct->lastMoveFailed &= ~(gBitTable[battler]); gBattleStruct->palaceFlags &= ~(gBitTable[battler]); + gBattleStruct->boosterEnergyActivates &= ~(gBitTable[battler]); for (i = 0; i < ARRAY_COUNT(gSideTimers); i++) { @@ -3505,9 +3249,6 @@ void SwitchInClearSetData(u32 battler) // 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. @@ -3607,6 +3348,7 @@ const u8* FaintClearSetData(u32 battler) gBattleStruct->lastTakenMoveFrom[battler][3] = 0; gBattleStruct->palaceFlags &= ~(gBitTable[battler]); + gBattleStruct->boosterEnergyActivates &= ~(gBitTable[battler]); for (i = 0; i < ARRAY_COUNT(gSideTimers); i++) { @@ -3673,10 +3415,6 @@ const u8* FaintClearSetData(u32 battler) } } - // Clear Z-Move data - gBattleStruct->zmove.active = FALSE; - gBattleStruct->zmove.toBeUsed[battler] = MOVE_NONE; - gBattleStruct->zmove.effect = EFFECT_HIT; // Clear Dynamax data UndoDynamax(battler); @@ -3739,6 +3477,15 @@ static void DoBattleIntro(void) gBattleMons[battler].status2 = 0; for (i = 0; i < NUM_BATTLE_STATS; i++) gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; + #if TESTING + if (gTestRunnerEnabled) + { + u32 side = GetBattlerSide(battler); + u32 partyIndex = gBattlerPartyIndexes[battler]; + if (TestRunner_Battle_GetForcedAbility(side, partyIndex)) + gBattleMons[battler].ability = gBattleStruct->overwrittenAbilities[battler] = TestRunner_Battle_GetForcedAbility(side, partyIndex); + } + #endif } // Draw sprite. @@ -4041,7 +3788,7 @@ static void TryDoEventsBeforeFirstTurn(void) { struct Pokemon *party = GetBattlerParty(i); struct Pokemon *mon = &party[gBattlerPartyIndexes[i]]; - if (gBattleMons[i].hp == 0 || gBattleMons[i].species == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) + if (!IsBattlerAlive(i) || gBattleMons[i].species == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG)) gAbsentBattlerFlags |= gBitTable[i]; } } @@ -4161,6 +3908,7 @@ static void TryDoEventsBeforeFirstTurn(void) SpecialStatusesClear(); *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); + AssignUsableGimmicks(); gBattleMainFunc = HandleTurnActionSelectionState; ResetSentPokesToOpponentValue(); @@ -4281,6 +4029,7 @@ void BattleTurnPassed(void) *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); + AssignUsableGimmicks(); SetShellSideArmCategory(); SetAiLogicDataForTurn(AI_DATA); // get assumed abilities, hold effects, etc of all battlers gBattleMainFunc = HandleTurnActionSelectionState; @@ -4430,7 +4179,10 @@ static void HandleTurnActionSelectionState(void) if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) && (BattlerHasAi(battler) && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) { - AI_DATA->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, FALSE); + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_RISKY) // Risky AI switches aggressively even mid battle + AI_DATA->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, TRUE); + else + AI_DATA->mostSuitableMonId[battler] = GetMostSuitableMonToSwitchInto(battler, FALSE); gBattleStruct->aiMoveOrAction[battler] = ComputeBattleAiScores(battler); } // fallthrough @@ -4505,7 +4257,6 @@ static void HandleTurnActionSelectionState(void) struct ChooseMoveStruct moveInfo; moveInfo.zmove = gBattleStruct->zmove; - moveInfo.mega = gBattleStruct->mega; moveInfo.species = gBattleMons[battler].species; moveInfo.monType1 = gBattleMons[battler].type1; moveInfo.monType2 = gBattleMons[battler].type2; @@ -4630,11 +4381,7 @@ static void HandleTurnActionSelectionState(void) RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(battler))), 3); } - 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; + gBattleStruct->gimmick.toActivate &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); BtlController_EmitEndBounceEffect(battler, BUFFER_A); MarkBattlerForControllerExec(battler); return; @@ -4722,23 +4469,18 @@ static void HandleTurnActionSelectionState(void) } // 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); + gBattleStruct->chosenMovePositions[battler] = gBattleResources->bufferB[battler][2] & ~RET_GIMMICK; 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]; + if (gBattleResources->bufferB[battler][2] & RET_GIMMICK) + gBattleStruct->gimmick.toActivate |= gBitTable[battler]; // Max Move check - if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler])) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX || IsGimmickSelected(battler, GIMMICK_DYNAMAX)) { - gBattleStruct->dynamax.baseMove[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; - gBattleStruct->dynamax.usingMaxMove[battler] = TRUE; + gBattleStruct->dynamax.baseMoves[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; } gBattleCommunication[battler]++; @@ -5014,7 +4756,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 && !IsDynamaxed(battler)) + else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF && GetActiveGimmick(battler) != GIMMICK_DYNAMAX) speed = (speed * 150) / 100; else if (holdEffect == HOLD_EFFECT_QUICK_POWDER && gBattleMons[battler].species == SPECIES_DITTO && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) speed *= 2; @@ -5060,13 +4802,13 @@ s8 GetMovePriority(u32 battler, u16 move) s8 priority; u16 ability = GetBattlerAbility(battler); - if (gBattleStruct->zmove.toBeUsed[battler] && gMovesInfo[move].power != 0) - move = gBattleStruct->zmove.toBeUsed[battler]; + if (GetActiveGimmick(battler) == GIMMICK_Z_MOVE && gMovesInfo[move].power != 0) + move = GetUsableZMove(battler, move); priority = gMovesInfo[move].priority; // Max Guard check - if (gBattleStruct->dynamax.usingMaxMove[battler] && gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) return gMovesInfo[MOVE_MAX_GUARD].priority; if (ability == ABILITY_GALE_WINGS @@ -5080,7 +4822,7 @@ s8 GetMovePriority(u32 battler, u16 move) gProtectStructs[battler].pranksterElevated = 1; priority++; } - else if (gMovesInfo[move].effect == EFFECT_GRASSY_GLIDE && gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && IsBattlerGrounded(battler) && !IsDynamaxed(battler) && !(gBattleStruct->dynamax.toDynamax & gBitTable[battler])) + else if (gMovesInfo[move].effect == EFFECT_GRASSY_GLIDE && gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && IsBattlerGrounded(battler) && GetActiveGimmick(gBattlerAttacker) != GIMMICK_DYNAMAX && !IsGimmickSelected(battler, GIMMICK_DYNAMAX)) { priority++; } @@ -5345,8 +5087,7 @@ static void PopulateArrayWithBattlers(u8 *battlers) static bool32 TryDoGimmicksBeforeMoves(void) { - if (!(gHitMarker & HITMARKER_RUN) - && (gBattleStruct->mega.toEvolve || gBattleStruct->burst.toBurst || gBattleStruct->dynamax.toDynamax)) + if (!(gHitMarker & HITMARKER_RUN) && gBattleStruct->gimmick.toActivate) { u32 i, battler; u8 order[MAX_BATTLERS_COUNT]; @@ -5355,38 +5096,16 @@ static bool32 TryDoGimmicksBeforeMoves(void) SortBattlersBySpeed(order, FALSE); for (i = 0; i < gBattlersCount; i++) { - // Dynamax Check - if (gBattleStruct->dynamax.toDynamax & gBitTable[order[i]]) + // Search through each battler and activate their gimmick if they have one prepared. + if ((gBattleStruct->gimmick.toActivate & gBitTable[order[i]]) && !(gProtectStructs[order[i]].noValidMoves)) { - 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; - if (GetBattleFormChangeTargetSpecies(gBattlerAttacker, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) - BattleScriptExecute(BattleScript_WishMegaEvolution); - else - BattleScriptExecute(BattleScript_MegaEvolution); - return TRUE; - } - // Ultra Burst Check - if (gBattleStruct->burst.toBurst & gBitTable[order[i]] - && !(gProtectStructs[order[i]].noValidMoves)) - { - battler = gBattlerAttacker = order[i]; - gBattleStruct->burst.toBurst &= ~(gBitTable[battler]); - gLastUsedItem = gBattleMons[battler].item; - BattleScriptExecute(BattleScript_UltraBurst); - return TRUE; + battler = gBattlerAttacker = gBattleScripting.battler = order[i]; + gBattleStruct->gimmick.toActivate &= ~(gBitTable[battler]); + if (gGimmicksInfo[gBattleStruct->gimmick.usableGimmick[battler]].ActivateGimmick != NULL) + { + gGimmicksInfo[gBattleStruct->gimmick.usableGimmick[battler]].ActivateGimmick(battler); + return TRUE; + } } } } @@ -5773,10 +5492,10 @@ static void HandleEndTurn_FinishBattle(void) TryRestoreHeldItems(); // Undo Dynamax HP multiplier before recalculating stats. - for (i = 0; i < gBattlersCount; ++i) + for (battler = 0; battler < gBattlersCount; ++battler) { - if (IsDynamaxed(i)) - UndoDynamax(i); + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX) + UndoDynamax(battler); } for (i = 0; i < PARTY_SIZE; i++) @@ -5843,8 +5562,10 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) } FreeAllWindowBuffers(); - if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + if (gBattleStruct != NULL && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { + ZeroEnemyPartyMons(); + ResetDynamicAiFunc(); FreeMonSpritesGfx(); FreeBattleResources(); FreeBattleSpritesData(); @@ -5860,6 +5581,7 @@ static void TryEvolvePokemon(void) if (!(sTriedEvolving & gBitTable[i])) { u16 species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_SPECIAL, i, NULL); + bool32 evoModeNormal = TRUE; sTriedEvolving |= gBitTable[i]; if (species == SPECIES_NONE && (gLeveledUpInBattle & gBitTable[i])) @@ -5868,11 +5590,17 @@ static void TryEvolvePokemon(void) species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_BATTLE_ONLY, gLeveledUpInBattle, NULL); } + if (species == SPECIES_NONE) + { + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + if (species != SPECIES_NONE) { FreeAllWindowBuffers(); gBattleMainFunc = WaitForEvoSceneToFinish; - EvolutionScene(&gPlayerParty[i], species, TRUE, i); + EvolutionScene(&gPlayerParty[i], species, evoModeNormal, i); return; } } @@ -5912,7 +5640,7 @@ static void ReturnFromBattleToOverworld(void) #else if ((gBattleOutcome == B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT) // Bug: When Roar is used by roamer, gBattleOutcome is B_OUTCOME_PLAYER_TELEPORTED (5). #endif // & with B_OUTCOME_WON (1) will return TRUE and deactivates the roamer. - SetRoamerInactive(); + SetRoamerInactive(gEncounteredRoamerIndex); } m4aSongNumStop(SE_LOW_HEALTH); @@ -5940,9 +5668,59 @@ void RunBattleScriptCommands(void) gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } +bool32 TrySetAteType(u32 move, u32 battlerAtk, u32 attackerAbility) +{ + u32 ateType; + + switch (gMovesInfo[move].effect) + { + case EFFECT_TERA_BLAST: + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) + return FALSE; + break; + case EFFECT_TERA_STARSTORM: + if (gBattleMons[battlerAtk].species == SPECIES_TERAPAGOS_STELLAR) + return FALSE; + break; + case EFFECT_HIDDEN_POWER: + case EFFECT_WEATHER_BALL: + case EFFECT_CHANGE_TYPE_ON_ITEM: + case EFFECT_NATURAL_GIFT: + return FALSE; + } + + ateType = TYPE_NONE; + switch (attackerAbility) + { + case ABILITY_PIXILATE: + ateType = TYPE_FAIRY; + break; + case ABILITY_REFRIGERATE: + ateType = TYPE_ICE; + break; + case ABILITY_AERILATE: + ateType = TYPE_FLYING; + break; + case ABILITY_GALVANIZE: + ateType = TYPE_ELECTRIC; + break; + default: + ateType = TYPE_NONE; + break; + } + + if (ateType != TYPE_NONE && GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE) + { + gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_SET; + return TRUE; + } + + return FALSE; +} + void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) { - u32 moveType, ateType, attackerAbility; + u32 moveType, attackerAbility; u16 holdEffect = GetBattlerHoldEffect(battlerAtk, TRUE); if (move == MOVE_STRUGGLE) @@ -5962,7 +5740,7 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_SET; else if (gBattleWeather & B_WEATHER_SUN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_SET; - else if (gBattleWeather & (B_WEATHER_HAIL |B_WEATHER_SNOW)) + else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_SET; else gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; @@ -5977,9 +5755,9 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) | ((gBattleMons[battlerAtk].spAttackIV & 1) << 4) | ((gBattleMons[battlerAtk].spDefenseIV & 1) << 5); - // Subtract 4 instead of 1 below because 3 types are excluded (TYPE_NORMAL and TYPE_MYSTERY and TYPE_FAIRY) - // The final + 1 skips past Normal, and the following conditional skips TYPE_MYSTERY - gBattleStruct->dynamicMoveType = ((NUMBER_OF_MON_TYPES - 4) * typeBits) / 63 + 1; + // Subtract 6 instead of 1 below because 5 types are excluded (TYPE_NONE, TYPE_NORMAL, TYPE_MYSTERY, TYPE_FAIRY and TYPE_STELLAR) + // The final + 2 skips past TYPE_NONE and Normal. + gBattleStruct->dynamicMoveType = ((NUMBER_OF_MON_TYPES - 6) * typeBits) / 63 + 2; if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY) gBattleStruct->dynamicMoveType++; gBattleStruct->dynamicMoveType |= F_DYNAMIC_TYPE_IGNORE_PHYSICALITY | F_DYNAMIC_TYPE_SET; @@ -5990,7 +5768,9 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) } else if (gMovesInfo[move].effect == EFFECT_REVELATION_DANCE) { - if (gBattleMons[battlerAtk].type1 != TYPE_MYSTERY) + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA && GetBattlerTeraType(battlerAtk) != TYPE_STELLAR) + gBattleStruct->dynamicMoveType = GetBattlerTeraType(battlerAtk); + else if (gBattleMons[battlerAtk].type1 != TYPE_MYSTERY) gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type1 | F_DYNAMIC_TYPE_SET; else if (gBattleMons[battlerAtk].type2 != TYPE_MYSTERY) gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_SET; @@ -6032,32 +5812,30 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; } } + else if (gMovesInfo[move].effect == EFFECT_TERA_BLAST && GetActiveGimmick(battlerAtk) == GIMMICK_TERA) + { + gBattleStruct->dynamicMoveType = GetBattlerTeraType(battlerAtk) | F_DYNAMIC_TYPE_SET; + } + else if (gMovesInfo[move].effect == EFFECT_TERA_STARSTORM && gBattleMons[battlerAtk].species == SPECIES_TERAPAGOS_STELLAR) + { + gBattleStruct->dynamicMoveType = TYPE_STELLAR | F_DYNAMIC_TYPE_SET; + } attackerAbility = GetBattlerAbility(battlerAtk); - if (gMovesInfo[move].type == TYPE_NORMAL - && gMovesInfo[move].effect != EFFECT_HIDDEN_POWER - && gMovesInfo[move].effect != EFFECT_WEATHER_BALL - && gMovesInfo[move].effect != EFFECT_CHANGE_TYPE_ON_ITEM - && gMovesInfo[move].effect != EFFECT_NATURAL_GIFT - && ((attackerAbility == ABILITY_PIXILATE && (ateType = TYPE_FAIRY)) - || (attackerAbility == ABILITY_REFRIGERATE && (ateType = TYPE_ICE)) - || (attackerAbility == ABILITY_AERILATE && (ateType = TYPE_FLYING)) - || ((attackerAbility == ABILITY_GALVANIZE) && (ateType = TYPE_ELECTRIC)) - ) - ) + && TrySetAteType(move, battlerAtk, attackerAbility) + && GetActiveGimmick(battlerAtk) != GIMMICK_DYNAMAX) { - gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_SET; - if (!IsDynamaxed(battlerAtk)) gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gMovesInfo[move].type != TYPE_NORMAL - && gMovesInfo[move].effect != EFFECT_HIDDEN_POWER - && gMovesInfo[move].effect != EFFECT_WEATHER_BALL - && attackerAbility == ABILITY_NORMALIZE) + && gMovesInfo[move].effect != EFFECT_HIDDEN_POWER + && gMovesInfo[move].effect != EFFECT_WEATHER_BALL + && attackerAbility == ABILITY_NORMALIZE + && GetActiveGimmick(battlerAtk) != GIMMICK_Z_MOVE) { gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; - if (!IsDynamaxed(battlerAtk)) + if (GetActiveGimmick(battlerAtk) != GIMMICK_DYNAMAX) gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gMovesInfo[move].soundMove && attackerAbility == ABILITY_LIQUID_VOICE) diff --git a/src/battle_message.c b/src/battle_message.c index f57d29f9135b..87ac5326fb8f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -370,6 +370,9 @@ static const u8 sText_HailStopped[] = _("The hail stopped."); static const u8 sText_StartedSnow[] = _("It started to snow!"); static const u8 sText_SnowContinues[] = _("Snow continues to fall."); static const u8 sText_SnowStopped[] = _("The snow stopped."); +static const u8 sText_FogCreptUp[] = _("Fog crept up as thick as soup!"); +static const u8 sText_FogIsDeep[] = _("The fog is deep…"); +static const u8 sText_FogLifted[] = _("The fog lifted."); static const u8 sText_FailedToSpitUp[] = _("But it failed to spit up\na thing!"); static const u8 sText_FailedToSwallow[] = _("But it failed to swallow\na thing!"); static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!"); @@ -721,6 +724,7 @@ static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!"); static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!"); static const u8 sText_AbilityRaisedStatDrastically[] = _("{B_DEF_ABILITY} raised {B_DEF_NAME_WITH_PREFIX}'s\n{B_BUFF1} drastically!"); static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!"); +static const u8 sText_PkmnMadeShellGleam[] = _("{B_DEF_NAME_WITH_PREFIX} made its shell gleam!\nIt's distorting type matchups!"); static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!"); static const u8 sText_CanActFaster[] = _("{B_ATK_NAME_WITH_PREFIX} can act faster,\nthanks to {B_BUFF1}!"); static const u8 sText_MicleBerryActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted the accuracy of its\nnext move using {B_LAST_ITEM}!"); @@ -790,7 +794,8 @@ static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} u static const u8 sText_AttackerSwitchedStatWithTarget[] = _("{B_ATK_NAME_WITH_PREFIX} switched {B_BUFF1}\nwith its target!"); static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!"); static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); -static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); +static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas heightened!"); +static const u8 sText_BoosterEnergyActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its\n{B_LAST_ITEM} to activate\l{B_SCR_ACTIVE_ABILITY}!"); static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!"); static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p"); static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); @@ -841,11 +846,13 @@ static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorb static const u8 sText_ItemWasUsedUp[] = _("The {B_LAST_ITEM}\nwas used up..."); static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!"); static const u8 sText_ShedItsTail[] = _("{B_ATK_NAME_WITH_PREFIX} shed its tail\nto create a decoy!"); +static const u8 sText_PkmnTerastallizedInto[] = _("{B_ATK_NAME_WITH_PREFIX} terastallized\ninto the {B_BUFF1} type!"); static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!"); static const u8 sText_TidyingUpComplete[] = _("Tidying up complete!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_PKMNTERASTALLIZEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTerastallizedInto, [STRINGID_TIDYINGUPCOMPLETE - BATTLESTRINGS_TABLE_START] = sText_TidyingUpComplete, [STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts, [STRINGID_SHEDITSTAIL - BATTLESTRINGS_TABLE_START] = sText_ShedItsTail, @@ -890,6 +897,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, [STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened, + [STRINGID_BOOSTERENERGYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_BoosterEnergyActivates, [STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility, [STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower, [STRINGID_ATTACKERSWITCHEDSTATWITHTARGET - BATTLESTRINGS_TABLE_START] = sText_AttackerSwitchedStatWithTarget, @@ -955,6 +963,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_CANACTFASTERTHANKSTO - BATTLESTRINGS_TABLE_START] = sText_CanActFaster, [STRINGID_CURIOUSMEDICINEENTERS - BATTLESTRINGS_TABLE_START] = sText_CuriousMedicineEnters, [STRINGID_ASONEENTERS - BATTLESTRINGS_TABLE_START] = sText_AsOneEnters, + [STRINGID_PKMNMADESHELLGLEAM - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeShellGleam, [STRINGID_ABILITYRAISEDSTATDRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_AbilityRaisedStatDrastically, [STRINGID_PKMNSWILLPERISHIN3TURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsWillPerishIn3Turns, [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, @@ -1226,6 +1235,9 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_STARTEDSNOW - BATTLESTRINGS_TABLE_START] = sText_StartedSnow, [STRINGID_SNOWCONTINUES -BATTLESTRINGS_TABLE_START] = sText_SnowContinues, [STRINGID_SNOWSTOPPED - BATTLESTRINGS_TABLE_START] = sText_SnowStopped, + [STRINGID_FOGCREPTUP - BATTLESTRINGS_TABLE_START] = sText_FogCreptUp, + [STRINGID_FOGISDEEP - BATTLESTRINGS_TABLE_START] = sText_FogIsDeep, + [STRINGID_FOGLIFTED - BATTLESTRINGS_TABLE_START] = sText_FogLifted, [STRINGID_FAILEDTOSPITUP - BATTLESTRINGS_TABLE_START] = sText_FailedToSpitUp, [STRINGID_FAILEDTOSWALLOW - BATTLESTRINGS_TABLE_START] = sText_FailedToSwallow, [STRINGID_WINDBECAMEHEATWAVE - BATTLESTRINGS_TABLE_START] = sText_WindBecameHeatWave, @@ -1669,6 +1681,18 @@ const u16 gMoveWeatherChangeStringIds[] = [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT, [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL, [B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW, + [B_MSG_STARTED_FOG] = STRINGID_FOGCREPTUP, // Unused, can use for custom moves that set fog +}; + +const u16 gWeatherEndsStringIds[B_MSG_WEATHER_END_COUNT] = +{ + [B_MSG_WEATHER_END_RAIN] = STRINGID_RAINSTOPPED, + [B_MSG_WEATHER_END_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED, + [B_MSG_WEATHER_END_SUN] = STRINGID_SUNLIGHTFADED, + [B_MSG_WEATHER_END_HAIL] = STRINGID_HAILSTOPPED, + [B_MSG_WEATHER_END_STRONG_WINDS] = STRINGID_STRONGWINDSDISSIPATED, + [B_MSG_WEATHER_END_SNOW] = STRINGID_SNOWSTOPPED, + [B_MSG_WEATHER_END_FOG] = STRINGID_FOGLIFTED, }; const u16 gSandStormHailSnowContinuesStringIds[] = @@ -1921,10 +1945,10 @@ const u16 gWeatherStartsStringIds[] = [WEATHER_RAIN] = STRINGID_ITISRAINING, [WEATHER_SNOW] = (B_OVERWORLD_SNOW >= GEN_9 ? STRINGID_STARTEDSNOW : STRINGID_STARTEDHAIL), [WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING, - [WEATHER_FOG_HORIZONTAL] = STRINGID_ITISRAINING, + [WEATHER_FOG_HORIZONTAL] = STRINGID_FOGISDEEP, [WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING, [WEATHER_SANDSTORM] = STRINGID_SANDSTORMISRAGING, - [WEATHER_FOG_DIAGONAL] = STRINGID_ITISRAINING, + [WEATHER_FOG_DIAGONAL] = STRINGID_FOGISDEEP, [WEATHER_UNDERWATER] = STRINGID_ITISRAINING, [WEATHER_SHADE] = STRINGID_ITISRAINING, [WEATHER_DROUGHT] = STRINGID_SUNLIGHTSTRONG, @@ -2466,6 +2490,18 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .fgColor = 1, .shadowColor = 6, }, + [B_WIN_MOVE_DESCRIPTION] = { + .fillValue = PIXEL_FILL(0xE), + .fontId = FONT_NARROW, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = TEXT_DYNAMIC_COLOR_4, + .bgColor = TEXT_DYNAMIC_COLOR_5, + .shadowColor = TEXT_DYNAMIC_COLOR_6, + }, }; static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = @@ -2699,6 +2735,18 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .bgColor = 1, .shadowColor = 3, }, + [B_WIN_MOVE_DESCRIPTION] = { + .fillValue = PIXEL_FILL(0xE), + .fontId = FONT_NARROW, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = TEXT_DYNAMIC_COLOR_4, + .bgColor = TEXT_DYNAMIC_COLOR_5, + .shadowColor = TEXT_DYNAMIC_COLOR_6, + }, }; static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] = @@ -3912,6 +3960,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) printerTemplate.bgColor = textInfo[windowId].bgColor; printerTemplate.shadowColor = textInfo[windowId].shadowColor; + if (B_WIN_MOVE_NAME_1 <= windowId && windowId <= B_WIN_MOVE_NAME_4) + { + // We cannot check the actual width of the window because + // B_WIN_MOVE_NAME_1 and B_WIN_MOVE_NAME_3 are 16 wide for + // Z-move details. + if (gBattleStruct->zmove.viewing && windowId == B_WIN_MOVE_NAME_1) + printerTemplate.fontId = GetFontIdToFit(text, printerTemplate.fontId, printerTemplate.letterSpacing, 16 * TILE_WIDTH); + else + printerTemplate.fontId = GetFontIdToFit(text, printerTemplate.fontId, printerTemplate.letterSpacing, 8 * TILE_WIDTH); + } + if (printerTemplate.x == 0xFF) { u32 width = GetBattleWindowTemplatePixelWidth(gBattleScripting.windowsType, windowId); @@ -3965,7 +4024,7 @@ void SetPpNumbersPaletteInMoveSelection(u32 battler) var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[battler]], chooseMoveStruct->maxPp[gMoveSelectionCursor[battler]]); else - var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[battler]], gMovesInfo[gMoveSelectionCursor[battler]].pp); + var = 3; gPlttBufferUnfaded[BG_PLTT_ID(5) + 12] = palPtr[(var * 2) + 0]; gPlttBufferUnfaded[BG_PLTT_ID(5) + 11] = palPtr[(var * 2) + 1]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 55fcb3bc68a1..f25cef9cf563 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -66,37 +66,6 @@ #include "config/battle.h" #include "data/battle_move_effects.h" -// Helper for accessing command arguments and advancing gBattlescriptCurrInstr. -// -// For example accuracycheck is defined as: -// -// .macro accuracycheck failInstr:req, move:req -// .byte 0x1 -// .4byte \failInstr -// .2byte \move -// .endm -// -// Which corresponds to: -// -// CMD_ARGS(const u8 *failInstr, u16 move); -// -// The arguments can be accessed as cmd->failInstr and cmd->move. -// gBattlescriptCurrInstr = cmd->nextInstr; advances to the next instruction. -#define CMD_ARGS(...) const struct __attribute__((packed)) { u8 opcode; MEMBERS(__VA_ARGS__) const u8 nextInstr[0]; } *const cmd UNUSED = (const void *)gBattlescriptCurrInstr -#define VARIOUS_ARGS(...) CMD_ARGS(u8 battler, u8 id, ##__VA_ARGS__) -#define NATIVE_ARGS(...) CMD_ARGS(void (*func)(void), ##__VA_ARGS__) - -#define MEMBERS(...) VARARG_8(MEMBERS_, __VA_ARGS__) -#define MEMBERS_0() -#define MEMBERS_1(a) a; -#define MEMBERS_2(a, b) a; b; -#define MEMBERS_3(a, b, c) a; b; c; -#define MEMBERS_4(a, b, c, d) a; b; c; d; -#define MEMBERS_5(a, b, c, d, e) a; b; c; d; e; -#define MEMBERS_6(a, b, c, d, e, f) a; b; c; d; e; f; -#define MEMBERS_7(a, b, c, d, e, f, g) a; b; c; d; e; f; g; -#define MEMBERS_8(a, b, c, d, e, f, g, h) a; b; c; d; e; f; g; h; - // table to avoid ugly powing on gba (courtesy of doesnt) // this returns (i^2.5)/4 // the quarters cancel so no need to re-quadruple them in actual calculation @@ -361,11 +330,15 @@ static bool8 IsFinalStrikeEffect(u32 moveEffect); static void TryUpdateRoundTurnOrder(void); static bool32 ChangeOrderTargetAfterAttacker(void); void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler); +static void RemoveAllWeather(void); static void RemoveAllTerrains(void); static bool8 CanAbilityPreventStatLoss(u16 abilityDef); static bool8 CanBurnHitThaw(u16 move); static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent); static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove); +static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move); +static void SaveBattlerAttacker(u32 battler); +static void SaveBattlerTarget(u32 battler); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -492,7 +465,7 @@ static void Cmd_setatkhptozero(void); static void Cmd_jumpifnexttargetvalid(void); static void Cmd_tryhealhalfhealth(void); static void Cmd_trymirrormove(void); -static void Cmd_setrain(void); +static void Cmd_setfieldweather(void); static void Cmd_setreflect(void); static void Cmd_setseeded(void); static void Cmd_manipulatedamage(void); @@ -516,8 +489,8 @@ static void Cmd_givepaydaymoney(void); static void Cmd_setlightscreen(void); static void Cmd_tryKO(void); static void Cmd_damagetohalftargethp(void); -static void Cmd_setsandstorm(void); -static void Cmd_weatherdamage(void); +static void Cmd_unused_95(void); +static void Cmd_unused_96(void); static void Cmd_tryinfatuating(void); static void Cmd_updatestatusicon(void); static void Cmd_setmist(void); @@ -554,7 +527,7 @@ static void Cmd_presentdamagecalculation(void); static void Cmd_setsafeguard(void); static void Cmd_magnitudedamagecalculation(void); static void Cmd_jumpifnopursuitswitchdmg(void); -static void Cmd_setsunny(void); +static void Cmd_unused_bb(void); static void Cmd_halvehp(void); static void Cmd_copyfoestats(void); static void Cmd_rapidspinfree(void); @@ -567,7 +540,7 @@ static void Cmd_trydobeatup(void); static void Cmd_setsemiinvulnerablebit(void); static void Cmd_tryfiretwoturnmovenowbyeffect(void); static void Cmd_setminimize(void); -static void Cmd_sethail(void); +static void Cmd_unused_c8(void); static void Cmd_trymemento(void); static void Cmd_setforcedtarget(void); static void Cmd_setcharge(void); @@ -690,7 +663,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_end, //0x3D Cmd_end2, //0x3E Cmd_end3, //0x3F - Cmd_unused5, //0x40 + Cmd_unused5, //0x40 Cmd_call, //0x41 Cmd_setroost, //0x42 Cmd_jumpifabilitypresent, //0x43 @@ -751,7 +724,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_jumpifnexttargetvalid, //0x7A Cmd_tryhealhalfhealth, //0x7B Cmd_trymirrormove, //0x7C - Cmd_setrain, //0x7D + Cmd_setfieldweather, //0x7D Cmd_setreflect, //0x7E Cmd_setseeded, //0x7F Cmd_manipulatedamage, //0x80 @@ -775,8 +748,8 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_setlightscreen, //0x92 Cmd_tryKO, //0x93 Cmd_damagetohalftargethp, //0x94 - Cmd_setsandstorm, //0x95 - Cmd_weatherdamage, //0x96 + Cmd_unused_95, //0x95 + Cmd_unused_96, //0x96 Cmd_tryinfatuating, //0x97 Cmd_updatestatusicon, //0x98 Cmd_setmist, //0x99 @@ -813,7 +786,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_setsafeguard, //0xB8 Cmd_magnitudedamagecalculation, //0xB9 Cmd_jumpifnopursuitswitchdmg, //0xBA - Cmd_setsunny, //0xBB + Cmd_unused_bb, //0xBB Cmd_halvehp, //0xBC Cmd_copyfoestats, //0xBD Cmd_rapidspinfree, //0xBE @@ -826,7 +799,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_setsemiinvulnerablebit, //0xC5 Cmd_tryfiretwoturnmovenowbyeffect, //0xC6 Cmd_setminimize, //0xC7 - Cmd_sethail, //0xC8 + Cmd_unused_c8, //0xC8 Cmd_trymemento, //0xC9 Cmd_setforcedtarget, //0xCA Cmd_setcharge, //0xCB @@ -1128,72 +1101,6 @@ static const u8 sTerrainToType[BATTLE_TERRAIN_COUNT] = [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 -// Moves are grouped into "Attack", "Defense", or "Support" (see PALACE_MOVE_GROUP_*) -// Each nature has a certain percent chance of selecting a move from a particular group -// and a separate percent chance for each group when at or below 50% HP -// The table below doesn't list percentages for Support because you can subtract the other two -// Support percentages are listed in comments off to the side instead -#define PALACE_STYLE(atk, def, atkLow, defLow) {atk, atk + def, atkLow, atkLow + defLow} - -const ALIGNED(4) u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4] = -{ - [NATURE_HARDY] = PALACE_STYLE(61, 7, 61, 7), // 32% support >= 50% HP, 32% support < 50% HP - [NATURE_LONELY] = PALACE_STYLE(20, 25, 84, 8), // 55%, 8% - [NATURE_BRAVE] = PALACE_STYLE(70, 15, 32, 60), // 15%, 8% - [NATURE_ADAMANT] = PALACE_STYLE(38, 31, 70, 15), // 31%, 15% - [NATURE_NAUGHTY] = PALACE_STYLE(20, 70, 70, 22), // 10%, 8% - [NATURE_BOLD] = PALACE_STYLE(30, 20, 32, 58), // 50%, 10% - [NATURE_DOCILE] = PALACE_STYLE(56, 22, 56, 22), // 22%, 22% - [NATURE_RELAXED] = PALACE_STYLE(25, 15, 75, 15), // 60%, 10% - [NATURE_IMPISH] = PALACE_STYLE(69, 6, 28, 55), // 25%, 17% - [NATURE_LAX] = PALACE_STYLE(35, 10, 29, 6), // 55%, 65% - [NATURE_TIMID] = PALACE_STYLE(62, 10, 30, 20), // 28%, 50% - [NATURE_HASTY] = PALACE_STYLE(58, 37, 88, 6), // 5%, 6% - [NATURE_SERIOUS] = PALACE_STYLE(34, 11, 29, 11), // 55%, 60% - [NATURE_JOLLY] = PALACE_STYLE(35, 5, 35, 60), // 60%, 5% - [NATURE_NAIVE] = PALACE_STYLE(56, 22, 56, 22), // 22%, 22% - [NATURE_MODEST] = PALACE_STYLE(35, 45, 34, 60), // 20%, 6% - [NATURE_MILD] = PALACE_STYLE(44, 50, 34, 6), // 6%, 60% - [NATURE_QUIET] = PALACE_STYLE(56, 22, 56, 22), // 22%, 22% - [NATURE_BASHFUL] = PALACE_STYLE(30, 58, 30, 58), // 12%, 12% - [NATURE_RASH] = PALACE_STYLE(30, 13, 27, 6), // 57%, 67% - [NATURE_CALM] = PALACE_STYLE(40, 50, 25, 62), // 10%, 13% - [NATURE_GENTLE] = PALACE_STYLE(18, 70, 90, 5), // 12%, 5% - [NATURE_SASSY] = PALACE_STYLE(88, 6, 22, 20), // 6%, 58% - [NATURE_CAREFUL] = PALACE_STYLE(42, 50, 42, 5), // 8%, 53% - [NATURE_QUIRKY] = PALACE_STYLE(56, 22, 56, 22) // 22%, 22% -}; - -static const u8 sBattlePalaceNatureToFlavorTextId[NUM_NATURES] = -{ - [NATURE_HARDY] = B_MSG_EAGER_FOR_MORE, - [NATURE_LONELY] = B_MSG_GLINT_IN_EYE, - [NATURE_BRAVE] = B_MSG_GETTING_IN_POS, - [NATURE_ADAMANT] = B_MSG_GLINT_IN_EYE, - [NATURE_NAUGHTY] = B_MSG_GLINT_IN_EYE, - [NATURE_BOLD] = B_MSG_GETTING_IN_POS, - [NATURE_DOCILE] = B_MSG_EAGER_FOR_MORE, - [NATURE_RELAXED] = B_MSG_GLINT_IN_EYE, - [NATURE_IMPISH] = B_MSG_GETTING_IN_POS, - [NATURE_LAX] = B_MSG_GROWL_DEEPLY, - [NATURE_TIMID] = B_MSG_GROWL_DEEPLY, - [NATURE_HASTY] = B_MSG_GLINT_IN_EYE, - [NATURE_SERIOUS] = B_MSG_EAGER_FOR_MORE, - [NATURE_JOLLY] = B_MSG_GETTING_IN_POS, - [NATURE_NAIVE] = B_MSG_EAGER_FOR_MORE, - [NATURE_MODEST] = B_MSG_GETTING_IN_POS, - [NATURE_MILD] = B_MSG_GROWL_DEEPLY, - [NATURE_QUIET] = B_MSG_EAGER_FOR_MORE, - [NATURE_BASHFUL] = B_MSG_EAGER_FOR_MORE, - [NATURE_RASH] = B_MSG_GROWL_DEEPLY, - [NATURE_CALM] = B_MSG_GETTING_IN_POS, - [NATURE_GENTLE] = B_MSG_GLINT_IN_EYE, - [NATURE_SASSY] = B_MSG_GROWL_DEEPLY, - [NATURE_CAREFUL] = B_MSG_GROWL_DEEPLY, - [NATURE_QUIRKY] = B_MSG_EAGER_FOR_MORE, -}; - static bool32 NoTargetPresent(u8 battler, u32 move) { if (!IsBattlerAlive(gBattlerTarget)) @@ -1255,7 +1162,8 @@ bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType) && !gDisableStructs[gBattlerAttacker].usedProteanLibero && (gBattleMons[battler].type1 != moveType || gBattleMons[battler].type2 != moveType || (gBattleMons[battler].type3 != moveType && gBattleMons[battler].type3 != TYPE_MYSTERY)) - && move != MOVE_STRUGGLE) + && move != MOVE_STRUGGLE + && GetActiveGimmick(battler) != GIMMICK_TERA) { SET_BATTLER_TYPE(battler, moveType); return TRUE; @@ -1263,6 +1171,19 @@ bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType) return FALSE; } +bool32 ShouldTeraShellDistortTypeMatchups(u32 move, u32 battlerDef) +{ + if (!(gBattleStruct->distortedTypeMatchups & gBitTable[battlerDef]) + && GetBattlerAbility(battlerDef) == ABILITY_TERA_SHELL + && gBattleMons[battlerDef].species == SPECIES_TERAPAGOS_TERASTAL + && !IS_MOVE_STATUS(move) + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && gBattleMons[battlerDef].hp == gBattleMons[battlerDef].maxHP) + return TRUE; + + return FALSE; +} + bool32 IsMoveNotAllowedInSkyBattles(u32 move) { return ((gBattleStruct->isSkyBattle) && (gMovesInfo[gCurrentMove].skyBattleBanned)); @@ -1277,7 +1198,7 @@ static void Cmd_attackcanceler(void) GET_MOVE_TYPE(gCurrentMove, moveType); // Weight-based moves are blocked by Dynamax. - if (IsDynamaxed(gBattlerTarget) && IsMoveBlockedByDynamax(gCurrentMove)) + if ((GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) && IsMoveBlockedByDynamax(gCurrentMove)) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax; @@ -1289,7 +1210,7 @@ static void Cmd_attackcanceler(void) gCurrentActionFuncId = B_ACTION_FINISHED; return; } - if (gBattleMons[gBattlerAttacker].hp == 0 && gMovesInfo[gCurrentMove].effect != EFFECT_EXPLOSION && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) + if (!IsBattlerAlive(gBattlerAttacker) && gMovesInfo[gCurrentMove].effect != EFFECT_EXPLOSION && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) { gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gBattlescriptCurrInstr = BattleScript_MoveEnd; @@ -1322,7 +1243,7 @@ static void Cmd_attackcanceler(void) && GetBattlerAbility(gBattlerAttacker) == ABILITY_PARENTAL_BOND && IsMoveAffectedByParentalBond(gCurrentMove, gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget]) - && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE) + && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE) { gSpecialStatuses[gBattlerAttacker].parentalBondState = PARENTAL_BOND_1ST_HIT; gMultiHitCounter = 2; @@ -1443,7 +1364,8 @@ static void Cmd_attackcanceler(void) } // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in AccumulateOtherModifiers) - if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove)) + if ((IsZMove(gCurrentMove) + || IsMaxMove(gCurrentMove)) && IS_BATTLER_PROTECTED(gBattlerTarget)) { BattleScriptPush(cmd->nextInstr); @@ -1592,7 +1514,7 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } - if (gBattleStruct->zmove.active && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { JumpIfMoveFailed(7, move); return TRUE; @@ -1759,14 +1681,15 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u if (B_AFFECTION_MECHANICS == TRUE && GetBattlerAffectionHearts(battlerDef) == AFFECTION_FIVE_HEARTS) calc = (calc * 90) / 100; + if (WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_FOG) + calc = (calc * 60) / 100; // modified by 3/5 + return calc; } -static void Cmd_accuracycheck(void) +static void AccuracyCheck(bool32 recalcDragonDarts, const u8 *nextInstr, const u8 *failInstr, u16 move) { - CMD_ARGS(const u8 *failInstr, u16 move); - - u32 type, move = cmd->move; + u32 type; u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, move); u32 abilityAtk = GetBattlerAbility(gBattlerAttacker); u32 abilityDef = GetBattlerAbility(gBattlerTarget); @@ -1778,11 +1701,11 @@ static void Cmd_accuracycheck(void) if (move == NO_ACC_CALC_CHECK_LOCK_ON) { if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) - gBattlescriptCurrInstr = cmd->nextInstr; + gBattlescriptCurrInstr = nextInstr; else if (gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)) - gBattlescriptCurrInstr = cmd->failInstr; + gBattlescriptCurrInstr = failInstr; else if (!JumpIfMoveAffectedByProtect(gCurrentMove)) - gBattlescriptCurrInstr = cmd->nextInstr; + gBattlescriptCurrInstr = nextInstr; } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT || (gSpecialStatuses[gBattlerAttacker].multiHitOn @@ -1790,7 +1713,7 @@ static void Cmd_accuracycheck(void) || !(gMovesInfo[move].effect == EFFECT_TRIPLE_KICK || gMovesInfo[move].effect == EFFECT_POPULATION_BOMB)))) { // No acc checks for second hit of Parental Bond or multi hit moves, except Triple Kick/Triple Axel/Population Bomb - gBattlescriptCurrInstr = cmd->nextInstr; + gBattlescriptCurrInstr = nextInstr; } else { @@ -1818,6 +1741,18 @@ static void Cmd_accuracycheck(void) if (holdEffectAtk == HOLD_EFFECT_BLUNDER_POLICY) gBattleStruct->blunderPolicy = TRUE; // Only activates from missing through acc/evasion checks + if (gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_DARTS + && !recalcDragonDarts // So we don't jump back and forth between targets + && CanTargetPartner(gBattlerAttacker, gBattlerTarget) + && !TargetFullyImmuneToCurrMove(gBattlerAttacker, BATTLE_PARTNER(gBattlerTarget))) + { + // Smart target to partner if miss + gBattlerTarget = BATTLE_PARTNER(gBattlerTarget); + gMoveResultFlags &= ~MOVE_RESULT_MISSED; + AccuracyCheck(TRUE, nextInstr, failInstr, move); + return; + } + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_ATK; @@ -1831,6 +1766,16 @@ static void Cmd_accuracycheck(void) } } +static void Cmd_accuracycheck(void) +{ + CMD_ARGS(const u8 *failInstr, u16 move); + + // The main body of this function has been moved to AccuracyCheck() to accomodate + // Dragon Darts' multiple accuracy checks on a single attack; + // each dart can try to re-target once after missing. + AccuracyCheck(FALSE, cmd->nextInstr, cmd->failInstr, cmd->move); +} + static void Cmd_attackstring(void) { CMD_ARGS(); @@ -1901,6 +1846,14 @@ static void Cmd_ppreduce(void) gHitMarker &= ~HITMARKER_NO_PPDEDUCT; gBattlescriptCurrInstr = cmd->nextInstr; + + if (ShouldTeraShellDistortTypeMatchups(gCurrentMove, gBattlerTarget)) + { + gBattleStruct->distortedTypeMatchups |= gBitTable[gBattlerTarget]; + gBattlerAbility = gBattlerTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_TeraShellDistortingTypeMatchups; + } } // The chance is 1/N for each stage. @@ -1991,7 +1944,7 @@ static void Cmd_critcalc(void) else if (critChance == -2) gIsCriticalHit = TRUE; else - gIsCriticalHit = RandomWeighted(RNG_CRITICAL_HIT, sCriticalHitOdds[critChance] - 1, 1); + gIsCriticalHit = RandomChance(RNG_CRITICAL_HIT, 1, sCriticalHitOdds[critChance]); // Counter for EVO_CRITICAL_HITS. partySlot = gBattlerPartyIndexes[gBattlerAttacker]; @@ -2009,8 +1962,8 @@ static void Cmd_damagecalc(void) u8 moveType; GET_MOVE_TYPE(gCurrentMove, moveType); - if (gBattleStruct->shellSideArmCategory[gBattlerAttacker][gBattlerTarget] == DAMAGE_CATEGORY_PHYSICAL && gCurrentMove == MOVE_SHELL_SIDE_ARM) - gBattleStruct->swapDamageCategory = TRUE; + if (gMovesInfo[gCurrentMove].effect == EFFECT_SHELL_SIDE_ARM) + gBattleStruct->swapDamageCategory = (gBattleStruct->shellSideArmCategory[gBattlerAttacker][gBattlerTarget] != gMovesInfo[gCurrentMove].category); gBattleMoveDamage = CalculateMoveDamage(gCurrentMove, gBattlerAttacker, gBattlerTarget, moveType, 0, gIsCriticalHit, TRUE, TRUE); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -2150,12 +2103,12 @@ static void Cmd_adjustdamage(void) // of a move that is Super Effective against a Flying-type Pokémon. if (gBattleWeather & B_WEATHER_STRONG_WINDS) { - if ((GetBattlerType(gBattlerTarget, 0) == TYPE_FLYING - && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 0)) >= UQ_4_12(2.0)) - || (GetBattlerType(gBattlerTarget, 1) == TYPE_FLYING - && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 1)) >= UQ_4_12(2.0)) - || (GetBattlerType(gBattlerTarget, 2) == TYPE_FLYING - && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 2)) >= UQ_4_12(2.0))) + if ((GetBattlerType(gBattlerTarget, 0, FALSE) == TYPE_FLYING + && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 0, FALSE)) >= UQ_4_12(2.0)) + || (GetBattlerType(gBattlerTarget, 1, FALSE) == TYPE_FLYING + && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 1, FALSE)) >= UQ_4_12(2.0)) + || (GetBattlerType(gBattlerTarget, 2, FALSE) == TYPE_FLYING + && GetTypeModifier(moveType, GetBattlerType(gBattlerTarget, 2, FALSE)) >= UQ_4_12(2.0))) { gBattlerAbility = gBattlerTarget; BattleScriptPushCursor(); @@ -2818,7 +2771,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) return; if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && IsFinalStrikeEffect(gBattleScripting.moveEffect)) { gBattlescriptCurrInstr++; @@ -2882,7 +2835,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) && gBattleScripting.moveEffect != MOVE_EFFECT_CHARGING) INCREMENT_RESET_RETURN - if (gBattleMons[gEffectBattler].hp == 0 && !activateAfterFaint) + if (!IsBattlerAlive(gEffectBattler) && !activateAfterFaint) INCREMENT_RESET_RETURN if (DoesSubstituteBlockMove(gBattlerAttacker, gEffectBattler, gCurrentMove) && affectsUser != MOVE_EFFECT_AFFECTS_USER) @@ -3152,7 +3105,6 @@ void SetMoveEffect(bool32 primary, bool32 certain) } // for synchronize - if (gBattleScripting.moveEffect == MOVE_EFFECT_POISON || gBattleScripting.moveEffect == MOVE_EFFECT_TOXIC || gBattleScripting.moveEffect == MOVE_EFFECT_PARALYSIS @@ -3161,6 +3113,10 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattleStruct->synchronizeMoveEffect = gBattleScripting.moveEffect; gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; } + + if (gBattleScripting.moveEffect == MOVE_EFFECT_POISON || gBattleScripting.moveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->poisonPuppeteerConfusion = TRUE; + return; } else if (statusChanged == FALSE) @@ -3223,7 +3179,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) } } else if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber - && !IsDynamaxed(gEffectBattler)) + && !(GetActiveGimmick(gEffectBattler) == GIMMICK_DYNAMAX)) { gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; gBattlescriptCurrInstr++; @@ -3341,7 +3297,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) if (NoAliveMonsForEitherParty() || ChangeStatBuffs(SET_STAT_BUFF_VALUE(1), gBattleScripting.moveEffect - MOVE_EFFECT_ATK_PLUS_1 + 1, - affectsUser | STAT_CHANGE_UPDATE_MOVE_EFFECT, 0)) + affectsUser | STAT_CHANGE_UPDATE_MOVE_EFFECT, 0) == STAT_CHANGE_DIDNT_WORK) { gBattlescriptCurrInstr++; } @@ -3371,7 +3327,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_1 + 1, - flags, gBattlescriptCurrInstr + 1)) + flags, gBattlescriptCurrInstr + 1) == STAT_CHANGE_DIDNT_WORK) { if (!mirrorArmorReflected) gBattlescriptCurrInstr++; @@ -3394,7 +3350,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) if (NoAliveMonsForEitherParty() || ChangeStatBuffs(SET_STAT_BUFF_VALUE(2), gBattleScripting.moveEffect - MOVE_EFFECT_ATK_PLUS_2 + 1, - affectsUser | STAT_CHANGE_UPDATE_MOVE_EFFECT, 0)) + affectsUser | STAT_CHANGE_UPDATE_MOVE_EFFECT, 0) == STAT_CHANGE_DIDNT_WORK) { gBattlescriptCurrInstr++; } @@ -3421,7 +3377,7 @@ void SetMoveEffect(bool32 primary, bool32 certain) flags |= STAT_CHANGE_ALLOW_PTR; if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_2 + 1, - flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1)) + flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1) == STAT_CHANGE_DIDNT_WORK) { if (!mirrorArmorReflected) gBattlescriptCurrInstr++; @@ -3527,13 +3483,6 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattleMons[gEffectBattler].status2 |= STATUS2_LOCK_CONFUSE_TURN(RandomUniform(RNG_RAMPAGE_TURNS, 2, 3)); } break; - case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat - if (!NoAliveMonsForEitherParty()) - { - BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_SAtkDown2; - } - break; case MOVE_EFFECT_CLEAR_SMOG: for (i = 0; i < NUM_BATTLE_STATS; i++) { @@ -3852,6 +3801,15 @@ void SetMoveEffect(bool32 primary, bool32 certain) gBattlescriptCurrInstr = BattleScript_EffectPsychicNoise; } break; + case MOVE_EFFECT_TERA_BLAST: + if (GetActiveGimmick(gEffectBattler) == GIMMICK_TERA + && GetBattlerTeraType(gEffectBattler) == TYPE_STELLAR + && !NoAliveMonsForEitherParty()) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_LowerAtkSpAtk; + } + break; } } } @@ -4000,7 +3958,7 @@ static void Cmd_tryfaintmon(void) faintScript = BattleScript_FaintTarget; } if (!(gAbsentBattlerFlags & gBitTable[battler]) - && gBattleMons[battler].hp == 0) + && !IsBattlerAlive(battler)) { gHitMarker |= HITMARKER_FAINTED(battler); BattleScriptPush(cmd->nextInstr); @@ -4020,8 +3978,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 - && !IsDynamaxed(gBattlerAttacker)) + if ((gHitMarker & HITMARKER_DESTINYBOND) && IsBattlerAlive(gBattlerAttacker) + && !(GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX)) { gHitMarker &= ~HITMARKER_DESTINYBOND; BattleScriptPush(gBattlescriptCurrInstr); @@ -4031,7 +3989,7 @@ static void Cmd_tryfaintmon(void) if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE) && !(gHitMarker & HITMARKER_GRUDGE) && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && gCurrentMove != MOVE_STRUGGLE) { u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBattlerAttacker); @@ -4073,7 +4031,7 @@ static void Cmd_cleareffectsonfaint(void) { u32 battler = GetBattlerForBattleScript(cmd->battler); const u8 *clearDataResult = NULL; - if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[battler].hp == 0) + if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !IsBattlerAlive(battler)) { gBattleMons[battler].status1 = 0; BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[battler].status1), &gBattleMons[battler].status1); @@ -4096,7 +4054,7 @@ static void Cmd_jumpifstatus(void) u32 flags = cmd->flags; const u8 *jumpInstr = cmd->jumpInstr; - if (gBattleMons[battler].status1 & flags && gBattleMons[battler].hp != 0) + if (gBattleMons[battler].status1 & flags && IsBattlerAlive(battler)) gBattlescriptCurrInstr = jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -4110,7 +4068,7 @@ static void Cmd_jumpifstatus2(void) u32 flags = cmd->flags; const u8 *jumpInstr = cmd->jumpInstr; - if (gBattleMons[battler].status2 & flags && gBattleMons[battler].hp != 0) + if (gBattleMons[battler].status2 & flags && IsBattlerAlive(battler)) gBattlescriptCurrInstr = jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -5155,7 +5113,9 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n || animId == B_ANIM_FORM_CHANGE || animId == B_ANIM_SUBSTITUTE_FADE || animId == B_ANIM_PRIMAL_REVERSION - || animId == B_ANIM_ULTRA_BURST) + || animId == B_ANIM_ULTRA_BURST + || animId == B_ANIM_TERA_CHARGE + || animId == B_ANIM_TERA_ACTIVATE) { BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); @@ -5170,7 +5130,8 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n || animId == B_ANIM_SUN_CONTINUES || animId == B_ANIM_SANDSTORM_CONTINUES || animId == B_ANIM_HAIL_CONTINUES - || animId == B_ANIM_SNOW_CONTINUES) + || animId == B_ANIM_SNOW_CONTINUES + || animId == B_ANIM_FOG_CONTINUES) { BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); @@ -5379,9 +5340,19 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) gBattleMons[battlerDef].item = 0; if (gBattleMons[battlerDef].ability != ABILITY_GORILLA_TACTICS) gBattleStruct->choicedMove[battlerDef] = 0; - gWishFutureKnock.knockedOffMons[side] |= gBitTable[gBattlerPartyIndexes[battlerDef]]; CheckSetUnburden(battlerDef); + // In Gen 5+, Knock Off removes the target's item rather than rendering it unusable. + if (B_KNOCK_OFF_REMOVAL >= GEN_5) + { + BtlController_EmitSetMonData(battlerDef, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item); + MarkBattlerForControllerExec(battlerDef); + } + else + { + gWishFutureKnock.knockedOffMons[side] |= gBitTable[gBattlerPartyIndexes[battlerDef]]; + } + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_KnockedOff; } @@ -5390,14 +5361,14 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) return FALSE; } -#define SYMBIOSIS_CHECK(battler, ally) \ +#define SYMBIOSIS_CHECK(battler, ally) \ GetBattlerAbility(ally) == ABILITY_SYMBIOSIS \ && gBattleMons[battler].item == ITEM_NONE \ && gBattleMons[ally].item != ITEM_NONE \ && CanBattlerGetOrLoseItem(battler, gBattleMons[ally].item) \ && CanBattlerGetOrLoseItem(ally, gBattleMons[ally].item) \ - && gBattleMons[battler].hp != 0 \ - && gBattleMons[ally].hp != 0 + && IsBattlerAlive(battler) \ + && IsBattlerAlive(ally) static u32 GetNextTarget(u32 moveTarget, bool32 excludeCurrent) { @@ -5530,7 +5501,7 @@ static void Cmd_moveend(void) break; case MOVEEND_RAGE: // rage check if (gBattleMons[gBattlerTarget].status2 & STATUS2_RAGE - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && gBattlerAttacker != gBattlerTarget && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) @@ -5547,7 +5518,7 @@ static void Cmd_moveend(void) break; case MOVEEND_DEFROST: // defrosting check if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && gBattlerAttacker != gBattlerTarget && (moveType == TYPE_FIRE || CanBurnHitThaw(gCurrentMove)) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) @@ -5560,7 +5531,7 @@ static void Cmd_moveend(void) effect = TRUE; } if (gBattleMons[gBattlerTarget].status1 & STATUS1_FROSTBITE - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && gBattlerAttacker != gBattlerTarget && gMovesInfo[originallyUsedMove].thawsUser && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) @@ -5890,7 +5861,7 @@ static void Cmd_moveend(void) gLastPrintedMoves[gBattlerAttacker] = gChosenMove; gLastUsedMove = gCurrentMove; if (IsMaxMove(gCurrentMove)) - gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMove[gBattlerAttacker]; + gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMoves[gBattlerAttacker]; } } if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) @@ -6035,10 +6006,11 @@ static void Cmd_moveend(void) } else { - if (gCurrentMove == MOVE_DRAGON_DARTS) - { - // TODO - } + if (gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_DARTS + && gBattleStruct->moveTarget[gBattlerAttacker] == gBattlerTarget // Haven't already changed targets + && CanTargetPartner(gBattlerAttacker, gBattlerTarget) + && !TargetFullyImmuneToCurrMove(gBattlerAttacker, BATTLE_PARTNER(gBattlerTarget))) + gBattlerTarget = BATTLE_PARTNER(gBattlerTarget); // Target the partner in doubles for second hit. if (gBattleMons[gBattlerAttacker].hp && gBattleMons[gBattlerTarget].hp @@ -6221,7 +6193,8 @@ static void Cmd_moveend(void) && CanBattlerSwitch(gBattlerAttacker)) { gLastUsedItem = gBattleMons[battler].item; - gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card + SaveBattlerTarget(battler); // save battler with red card + gBattleScripting.battler = battler; gEffectBattler = gBattlerAttacker; if (gMovesInfo[gCurrentMove].effect == EFFECT_HIT_ESCAPE) gBattlescriptCurrInstr = BattleScript_MoveEnd; // Prevent user switch-in selection @@ -6377,7 +6350,7 @@ static void Cmd_moveend(void) case MOVEEND_SET_EVOLUTION_TRACKER: // If the Pokémon needs to keep track of move usage for its evolutions, do it if (originallyUsedMove != MOVE_NONE) - TryUpdateEvolutionTracker(EVO_LEVEL_MOVE_TWENTY_TIMES, 1, originallyUsedMove); + TryUpdateEvolutionTracker(EVO_USE_MOVE_TWENTY_TIMES, 1, originallyUsedMove); gBattleScripting.moveendState++; break; case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits. @@ -6392,6 +6365,25 @@ static void Cmd_moveend(void) && (gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE) != STATUS2_LOCK_CONFUSE_TURN(1)) // And won't end this turn CancelMultiTurnMoves(gBattlerAttacker); // Cancel it + + + if (gBattleStruct->savedAttackerCount > 0) + { + // #if TESTING + // Test_ExitWithResult(TEST_RESULT_ERROR, "savedAttackerCount is greater than 0! More calls to SaveBattlerAttacker than RestoreBattlerAttacker!"); + // #else + DebugPrintfLevel(MGBA_LOG_WARN, "savedAttackerCount is greater than 0! More calls to SaveBattlerAttacker than RestoreBattlerAttacker!"); + // #endif + } + if (gBattleStruct->savedTargetCount > 0) + { + // #if TESTING + // Test_ExitWithResult(TEST_RESULT_ERROR, "savedTargetCount is greater than 0! More calls to SaveBattlerTarget than RestoreBattlerTarget!"); + // #else + DebugPrintfLevel(MGBA_LOG_WARN, "savedTargetCount is greater than 0! More calls to SaveBattlerTarget than RestoreBattlerTarget!"); + // #endif + } + gBattleStruct->targetsDone[gBattlerAttacker] = 0; gProtectStructs[gBattlerAttacker].targetAffected = FALSE; gProtectStructs[gBattlerAttacker].shellTrap = FALSE; @@ -6402,16 +6394,17 @@ static void Cmd_moveend(void) gSpecialStatuses[gBattlerAttacker].preventLifeOrbDamage = 0; gSpecialStatuses[gBattlerTarget].berryReduced = FALSE; gBattleScripting.moveEffect = 0; - // clear attacker z move data - gBattleStruct->zmove.active = FALSE; - gBattleStruct->zmove.toBeUsed[gBattlerAttacker] = MOVE_NONE; - gBattleStruct->zmove.effect = EFFECT_HIT; gBattleStruct->hitSwitchTargetFailed = FALSE; gBattleStruct->isAtkCancelerForCalledMove = FALSE; gBattleStruct->swapDamageCategory = FALSE; + gBattleStruct->categoryOverride = FALSE; gBattleStruct->bouncedMoveIsUsed = FALSE; gBattleStruct->enduredDamage = 0; gBattleStruct->additionalEffectsCounter = 0; + gBattleStruct->poisonPuppeteerConfusion = FALSE; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE) + SetActiveGimmick(gBattlerAttacker, GIMMICK_NONE); + gBattleStruct->distortedTypeMatchups = 0; memset(gQueuedStatBoosts, 0, sizeof(gQueuedStatBoosts)); gBattleScripting.moveendState++; break; @@ -6493,7 +6486,7 @@ static void Cmd_switchindataupdate(void) monData[i] = gBattleResources->bufferB[battler][4 + i]; // Edge case: the sent out pokemon has 0 HP. This should never happen. - if (gBattleMons[battler].hp == 0) + if (!IsBattlerAlive(battler)) { // If it's a test, mark it as invalid. if (gTestRunnerEnabled) @@ -6525,6 +6518,15 @@ static void Cmd_switchindataupdate(void) gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].types[1]; gBattleMons[battler].type3 = TYPE_MYSTERY; gBattleMons[battler].ability = GetAbilityBySpecies(gBattleMons[battler].species, gBattleMons[battler].abilityNum); + #if TESTING + if (gTestRunnerEnabled) + { + u32 side = GetBattlerSide(battler); + u32 partyIndex = gBattlerPartyIndexes[battler]; + if (TestRunner_Battle_GetForcedAbility(side, partyIndex)) + gBattleMons[battler].ability = gBattleStruct->overwrittenAbilities[battler] = TestRunner_Battle_GetForcedAbility(side, partyIndex); + } + #endif // check knocked off item i = GetBattlerSide(battler); @@ -6546,7 +6548,7 @@ static void Cmd_switchindataupdate(void) if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[battler].maxHP / 2 >= gBattleMons[battler].hp - && gBattleMons[battler].hp != 0 + && IsBattlerAlive(battler) && !(gBattleMons[battler].status1 & STATUS1_SLEEP)) { gBattleStruct->palaceFlags |= gBitTable[battler]; @@ -8443,7 +8445,7 @@ static void Cmd_hpthresholds(void) if (result == 0) result = 1; - if (result > 69 || gBattleMons[opposingBattler].hp == 0) + if (result > 69 || !IsBattlerAlive(opposingBattler)) gBattleStruct->hpScale = 0; else if (result > 39) gBattleStruct->hpScale = 1; @@ -8530,6 +8532,30 @@ bool32 CanUseLastResort(u8 battler) return (knownMovesCount >= 2 && usedMovesCount >= knownMovesCount - 1); } +static void RemoveAllWeather(void) +{ + gWishFutureKnock.weatherDuration = 0; + + if (gBattleWeather & B_WEATHER_RAIN) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_RAIN; + else if(gBattleWeather & B_WEATHER_SANDSTORM) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_SANDSTORM; + else if(gBattleWeather & B_WEATHER_SUN) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_SUN; + else if(gBattleWeather & B_WEATHER_HAIL) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_HAIL; + else if(gBattleWeather & B_WEATHER_STRONG_WINDS) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_STRONG_WINDS; + else if(gBattleWeather & B_WEATHER_SNOW) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_SNOW; + else if(gBattleWeather & B_WEATHER_FOG) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_FOG; + else + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_END_COUNT; // failsafe + + gBattleWeather = 0; // remove the weather +} + static void RemoveAllTerrains(void) { gFieldTimers.terrainTimer = 0; @@ -8595,6 +8621,13 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeDefog, 0); + if (gBattleWeather & B_WEATHER_FOG) + { + gBattleWeather &= ~B_WEATHER_FOG; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_FogEnded_Ret; + return TRUE; + } if (B_DEFOG_CLEARS_TERRAIN >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)) { RemoveAllTerrains(); @@ -8804,7 +8837,6 @@ static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) { struct Pokemon *party = GetBattlerParty(battler); struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]]; - u32 position = GetBattlerPosition(battler); u32 side = GetBattlerSide(battler); // Change species. @@ -8832,9 +8864,9 @@ static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) if (side == B_SIDE_OPPONENT) SetBattlerShadowSpriteCallback(battler, gBattleMons[battler].species); if (type == HANDLE_TYPE_MEGA_EVOLUTION) - gBattleStruct->mega.alreadyEvolved[position] = TRUE; + SetGimmickAsActivated(battler, GIMMICK_MEGA); if (type == HANDLE_TYPE_ULTRA_BURST) - gBattleStruct->burst.alreadyBursted[position] = TRUE; + SetGimmickAsActivated(battler, GIMMICK_ULTRA_BURST); } } @@ -9262,8 +9294,8 @@ static void Cmd_various(void) VARIOUS_ARGS(); if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE)) && gBattleTypeFlags & BATTLE_TYPE_TRAINER - && gBattleMons[0].hp != 0 - && gBattleMons[1].hp != 0) + && IsBattlerAlive(B_POSITION_PLAYER_LEFT) + && IsBattlerAlive(B_POSITION_OPPONENT_LEFT)) { gHitMarker &= ~HITMARKER_PLAYER_FAINTED; } @@ -9277,12 +9309,12 @@ static void Cmd_various(void) gBattleScripting.battler = battler = gBattleCommunication[1]; if (!(gBattleStruct->palaceFlags & gBitTable[battler]) && gBattleMons[battler].maxHP / 2 >= gBattleMons[battler].hp - && gBattleMons[battler].hp != 0 + && IsBattlerAlive(battler) && !(gBattleMons[battler].status1 & STATUS1_SLEEP)) { gBattleStruct->palaceFlags |= gBitTable[battler]; gBattleCommunication[0] = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = sBattlePalaceNatureToFlavorTextId[GetNatureFromPersonality(gBattleMons[battler].personality)]; + gBattleCommunication[MULTISTRING_CHOOSER] = gNaturesInfo[GetNatureFromPersonality(gBattleMons[battler].personality)].battlePalaceFlavorText; } break; } @@ -9377,7 +9409,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(); battler = 1; - if (gBattleMons[battler].hp != 0) + if (IsBattlerAlive(battler)) { BtlController_EmitReturnMonToBall(battler, BUFFER_A, FALSE); MarkBattlerForControllerExec(battler); @@ -9390,7 +9422,7 @@ static void Cmd_various(void) if (gBattlersCount > 3) { battler = 3; - if (gBattleMons[battler].hp != 0) + if (IsBattlerAlive(battler)) { BtlController_EmitReturnMonToBall(battler, BUFFER_A, FALSE); MarkBattlerForControllerExec(battler); @@ -9469,18 +9501,6 @@ static void Cmd_various(void) AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, battler, 0, 0, 0); return; } - case VARIOUS_SAVE_TARGET: - { - VARIOUS_ARGS(); - gBattleStruct->savedBattlerTarget = gBattlerTarget; - break; - } - case VARIOUS_RESTORE_TARGET: - { - VARIOUS_ARGS(); - gBattlerTarget = gBattleStruct->savedBattlerTarget; - break; - } case VARIOUS_INSTANT_HP_DROP: { VARIOUS_ARGS(); @@ -9707,7 +9727,7 @@ static void Cmd_various(void) else { if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability - || IsDynamaxed(gBattlerTarget)) + || (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9746,7 +9766,15 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->failInstr; else { - gCalledMove = move; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(move)) + { + gBattleStruct->zmove.baseMoves[gBattlerAttacker] = move; + gCalledMove = GetTypeBasedZMove(move); + } + else + { + gCalledMove = move; + } gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); gStatuses3[gBattlerAttacker] |= STATUS3_ME_FIRST; @@ -9780,8 +9808,9 @@ static void Cmd_various(void) case VARIOUS_TRY_SOAK: { VARIOUS_ARGS(const u8 *failInstr); - if (GetBattlerType(gBattlerTarget, 0) == gMovesInfo[gCurrentMove].type - && GetBattlerType(gBattlerTarget, 1) == gMovesInfo[gCurrentMove].type) + if ((GetBattlerType(gBattlerTarget, 0, FALSE) == gMovesInfo[gCurrentMove].type + && GetBattlerType(gBattlerTarget, 1, FALSE) == gMovesInfo[gCurrentMove].type) + || GetActiveGimmick(gBattlerTarget) == GIMMICK_TERA) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9878,7 +9907,9 @@ static void Cmd_various(void) if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || MoveHasAdditionalEffectSelf(move, MOVE_EFFECT_RECHARGE) || gMovesInfo[move].instructBanned || gBattleMoveEffects[gMovesInfo[move].effect].twoTurnEffect - || IsDynamaxed(gBattlerTarget)) + || (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) + || IsZMove(move) + || IsMaxMove(move)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -10115,7 +10146,7 @@ static void Cmd_various(void) case VARIOUS_TRY_THIRD_TYPE: { VARIOUS_ARGS(const u8 *failInstr); - if (IS_BATTLER_OF_TYPE(battler, gMovesInfo[gCurrentMove].argument)) + if (IS_BATTLER_OF_TYPE(battler, gMovesInfo[gCurrentMove].argument) || GetActiveGimmick(battler) == GIMMICK_TERA) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -11108,10 +11139,10 @@ static void SetMoveForMirrorMove(u32 move) { gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; // Edge case, we used Z Mirror Move, got the stat boost and now need to use the Z-move - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] && !IS_MOVE_STATUS(move)) + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(move)) { - gCurrentMove = gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, gBattlerAttacker); - QueueZMove(gBattlerAttacker, move); + gBattleStruct->zmove.baseMoves[gBattlerAttacker] = move; + gCurrentMove = GetTypeBasedZMove(move); } else { @@ -11159,19 +11190,39 @@ static void Cmd_trymirrormove(void) } } -static void Cmd_setrain(void) +static void Cmd_setfieldweather(void) { - CMD_ARGS(); + CMD_ARGS(u8 weather); + + u8 weather = cmd->weather; - if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_RAIN, FALSE)) + if (!TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; + gBattlescriptCurrInstr = cmd->nextInstr; + return; } - else + + switch (weather) { + case ENUM_WEATHER_RAIN: gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_RAIN; + break; + case ENUM_WEATHER_SUN: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SUNLIGHT; + break; + case ENUM_WEATHER_SANDSTORM: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SANDSTORM; + break; + case ENUM_WEATHER_HAIL: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_HAIL; + break; + case ENUM_WEATHER_SNOW: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SNOW; + break; } + gBattlescriptCurrInstr = cmd->nextInstr; } @@ -11421,7 +11472,7 @@ static void Cmd_stockpiletobasedamage(void) if (gBattleCommunication[MISS_TYPE] != B_MSG_PROTECTED) gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter; - if (!(gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && gBattleMons[gBattlerTarget].hp != 0)) + if (!(gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT && IsBattlerAlive(gBattlerTarget))) { gBattleStruct->moveEffect2 = MOVE_EFFECT_STOCKPILE_WORE_OFF; } @@ -11634,17 +11685,18 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr } else { - BattleScriptPush(BS_ptr); gBattleScripting.battler = battler; if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { gLastUsedItem = gBattleMons[battler].item; + BattleScriptPush(BS_ptr); gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } else { gBattlerAbility = battler; + BattleScriptPush(BS_ptr); gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; gLastUsedAbility = battlerAbility; RecordAbilityBattle(battler, gLastUsedAbility); @@ -12128,6 +12180,12 @@ static void Cmd_tryconversiontypechange(void) u8 moveChecked = 0; u8 moveType = 0; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + { + gBattlescriptCurrInstr = cmd->failInstr; + return; + } + if (B_UPDATED_CONVERSION >= GEN_6) { // Changes user's type to its first move's type @@ -12266,7 +12324,7 @@ static void Cmd_tryKO(void) u16 targetAbility = GetBattlerAbility(gBattlerTarget); // Dynamaxed Pokemon cannot be hit by OHKO moves. - if (IsDynamaxed(gBattlerTarget)) + if ((GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) { gMoveResultFlags |= MOVE_RESULT_MISSED; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_UNAFFECTED; @@ -12362,90 +12420,12 @@ static void Cmd_damagetohalftargethp(void) gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_setsandstorm(void) +static void Cmd_unused_95(void) { - CMD_ARGS(); - - if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_SANDSTORM, FALSE)) - { - gMoveResultFlags |= MOVE_RESULT_MISSED; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SANDSTORM; - } - gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_weatherdamage(void) +static void Cmd_unused_96(void) { - CMD_ARGS(); - - u32 ability = GetBattlerAbility(gBattlerAttacker); - - gBattleMoveDamage = 0; - if (IsBattlerAlive(gBattlerAttacker) && WEATHER_HAS_EFFECT && ability != ABILITY_MAGIC_GUARD) - { - if (gBattleWeather & B_WEATHER_SANDSTORM) - { - if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ROCK) - && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GROUND) - && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_STEEL) - && ability != ABILITY_SAND_VEIL - && ability != ABILITY_SAND_FORCE - && ability != ABILITY_SAND_RUSH - && ability != ABILITY_OVERCOAT - && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) - { - gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - } - } - if (gBattleWeather & B_WEATHER_HAIL) - { - if (ability == ABILITY_ICE_BODY - && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && !BATTLER_MAX_HP(gBattlerAttacker) - && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) - { - gBattlerAbility = gBattlerAttacker; - gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - } - else if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE) - && ability != ABILITY_SNOW_CLOAK - && ability != ABILITY_OVERCOAT - && ability != ABILITY_ICE_BODY - && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) - { - gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - } - } - if (gBattleWeather & B_WEATHER_SNOW) - { - if (ability == ABILITY_ICE_BODY - && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - && !BATTLER_MAX_HP(gBattlerAttacker) - && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) - { - gBattlerAbility = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - } - } - } - - gBattlescriptCurrInstr = cmd->nextInstr; } static void Cmd_tryinfatuating(void) @@ -12831,11 +12811,11 @@ static void Cmd_trysetencore(void) s32 i; - if (IsMaxMove(gLastMoves[gBattlerTarget]) && !IsDynamaxed(gBattlerTarget)) + if (IsMaxMove(gLastMoves[gBattlerTarget]) && !(GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) { for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[gBattlerTarget].moves[i] == gBattleStruct->dynamax.baseMove[gBattlerTarget]) + if (gBattleMons[gBattlerTarget].moves[i] == gBattleStruct->dynamax.baseMoves[gBattlerTarget]) break; } } @@ -12914,6 +12894,14 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } + else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (gLastHitByType[gBattlerAttacker] == TYPE_STELLAR) + { + gBattlescriptCurrInstr = cmd->failInstr; + } else { u32 i, resistTypes = 0; @@ -13045,7 +13033,15 @@ static void Cmd_trychoosesleeptalkmove(void) movePosition = MOD(Random(), MAX_MON_MOVES); } while ((gBitTable[movePosition] & unusableMovesBits)); - gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition]; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(gBattleMons[gBattlerAttacker].moves[movePosition])) + { + gBattleStruct->zmove.baseMoves[gBattlerAttacker] = gBattleMons[gBattlerAttacker].moves[movePosition]; + gCalledMove = GetTypeBasedZMove(gBattleMons[gBattlerAttacker].moves[movePosition]); + } + else + { + gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition]; + } gCurrMovePos = movePosition; gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); @@ -13114,7 +13110,7 @@ static void Cmd_tryspiteppreduce(void) { for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleStruct->dynamax.baseMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + if (gBattleStruct->dynamax.baseMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) break; } } @@ -13175,7 +13171,7 @@ static void Cmd_healpartystatus(void) CMD_ARGS(); u32 zero = 0; - u32 battler; + u32 partner = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); u8 toHeal = 0; if (gCurrentMove == MOVE_HEAL_BELL) @@ -13185,7 +13181,8 @@ static void Cmd_healpartystatus(void) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BELL; - if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF) + if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SOUNDPROOF + || B_HEAL_BELL_SOUNDPROOF == GEN_5 || B_HEAL_BELL_SOUNDPROOF >= GEN_8) { gBattleMons[gBattlerAttacker].status1 = 0; gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; @@ -13196,19 +13193,18 @@ static void Cmd_healpartystatus(void) gBattleCommunication[MULTISTRING_CHOOSER] |= B_MSG_BELL_SOUNDPROOF_ATTACKER; } - battler = gBattleScripting.battler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); + gBattleScripting.battler = partner; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && !(gAbsentBattlerFlags & gBitTable[battler])) + if (IsBattlerAlive(partner)) { - if (GetBattlerAbility(battler) != ABILITY_SOUNDPROOF) + if (GetBattlerAbility(partner) != ABILITY_SOUNDPROOF || B_HEAL_BELL_SOUNDPROOF == GEN_5) { - gBattleMons[battler].status1 = 0; - gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; + gBattleMons[partner].status1 = 0; + gBattleMons[partner].status2 &= ~STATUS2_NIGHTMARE; } else { - RecordAbilityBattle(battler, gBattleMons[battler].ability); + RecordAbilityBattle(partner, gBattleMons[partner].ability); gBattleCommunication[MULTISTRING_CHOOSER] |= B_MSG_BELL_SOUNDPROOF_PARTNER; } } @@ -13223,15 +13219,29 @@ static void Cmd_healpartystatus(void) if (species != SPECIES_NONE && species != SPECIES_EGG) { u16 ability; - - if (gBattlerPartyIndexes[gBattlerAttacker] == i) + bool32 isAttacker = gBattlerPartyIndexes[gBattlerAttacker] == i; + bool32 isDoublesPartner = gBattlerPartyIndexes[partner] == i && IsBattlerAlive(partner); + + if (B_HEAL_BELL_SOUNDPROOF == GEN_5 || (isAttacker && B_HEAL_BELL_SOUNDPROOF >= GEN_8)) + ability = ABILITY_NONE; + else if (B_HEAL_BELL_SOUNDPROOF > GEN_5 && !isAttacker && !isDoublesPartner) + ability = ABILITY_NONE; + else if (isAttacker) ability = GetBattlerAbility(gBattlerAttacker); - else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && gBattlerPartyIndexes[battler] == i - && !(gAbsentBattlerFlags & gBitTable[battler])) - ability = GetBattlerAbility(battler); + else if (isDoublesPartner) + ability = GetBattlerAbility(partner); else + { ability = GetAbilityBySpecies(species, abilityNum); + #if TESTING + if (gTestRunnerEnabled) + { + u32 side = GetBattlerSide(gBattlerAttacker); + if (TestRunner_Battle_GetForcedAbility(side, i)) + ability = TestRunner_Battle_GetForcedAbility(side, i); + } + #endif + } if (ability != ABILITY_SOUNDPROOF) toHeal |= (1 << i); @@ -13246,12 +13256,11 @@ static void Cmd_healpartystatus(void) gBattleMons[gBattlerAttacker].status1 = 0; gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - battler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && !(gAbsentBattlerFlags & gBitTable[battler])) + && !(gAbsentBattlerFlags & gBitTable[partner])) { - gBattleMons[battler].status1 = 0; - gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; + gBattleMons[partner].status1 = 0; + gBattleMons[partner].status2 &= ~STATUS2_NIGHTMARE; } } @@ -13592,21 +13601,8 @@ static void Cmd_jumpifnopursuitswitchdmg(void) } } -static void Cmd_setsunny(void) +static void Cmd_unused_bb(void) { - CMD_ARGS(); - - if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_SUN, FALSE)) - { - gMoveResultFlags |= MOVE_RESULT_MISSED; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SUNLIGHT; - } - - gBattlescriptCurrInstr = cmd->nextInstr; } // Belly Drum, Fillet Away @@ -13825,7 +13821,7 @@ static void Cmd_trydobeatup(void) CMD_ARGS(const u8 *endInstr, const u8 *failInstr); struct Pokemon *party = GetBattlerParty(gBattlerAttacker); - if (gBattleMons[gBattlerTarget].hp == 0) + if (!IsBattlerAlive(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->endInstr; } @@ -13923,21 +13919,8 @@ static void Cmd_setminimize(void) gBattlescriptCurrInstr = cmd->nextInstr; } -static void Cmd_sethail(void) +static void Cmd_unused_c8(void) { - CMD_ARGS(); - - if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_HAIL, FALSE)) - { - gMoveResultFlags |= MOVE_RESULT_MISSED; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_HAIL; - } - - gBattlescriptCurrInstr = cmd->nextInstr; } static void Cmd_trymemento(void) @@ -13999,25 +13982,33 @@ static void Cmd_callterrainattack(void) CMD_ARGS(); gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gCurrentMove = GetNaturePowerMove(); + gCurrentMove = GetNaturePowerMove(gBattlerAttacker); gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); BattleScriptPush(GET_MOVE_BATTLESCRIPT(gCurrentMove)); gBattlescriptCurrInstr = cmd->nextInstr; } -u16 GetNaturePowerMove(void) +u32 GetNaturePowerMove(u32 battler) { + u32 move = sNaturePowerMoves[gBattleTerrain]; if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) - return MOVE_MOONBLAST; + move = MOVE_MOONBLAST; else if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) - return MOVE_THUNDERBOLT; + move = MOVE_THUNDERBOLT; else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) - return MOVE_ENERGY_BALL; + move = MOVE_ENERGY_BALL; else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) - return MOVE_PSYCHIC; + move = MOVE_PSYCHIC; else if (sNaturePowerMoves[gBattleTerrain] == MOVE_NONE) - return MOVE_TRI_ATTACK; - return sNaturePowerMoves[gBattleTerrain]; + move = MOVE_TRI_ATTACK; + + if (GetActiveGimmick(battler) == GIMMICK_Z_MOVE) + { + gBattleStruct->zmove.baseMoves[gBattlerAttacker] = move; + move = GetTypeBasedZMove(move); + } + + return move; } // Refresh @@ -14043,7 +14034,7 @@ static void Cmd_settorment(void) CMD_ARGS(const u8 *failInstr); if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT - || IsDynamaxed(gBattlerTarget)) + || (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14432,7 +14423,7 @@ static void Cmd_tryswapabilities(void) } else { - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || IsDynamaxed(gBattlerTarget)) + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || (GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14663,7 +14654,7 @@ static void Cmd_jumpifhasnohp(void) u32 battler = GetBattlerForBattleScript(cmd->battler); - if (gBattleMons[battler].hp == 0) + if (!IsBattlerAlive(battler)) gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -14910,7 +14901,7 @@ static void Cmd_settypetoterrain(void) break; } - if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, terrainType)) + if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, terrainType) && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA) { SET_BATTLER_TYPE(gBattlerAttacker, terrainType); PREPARE_TYPE_BUFFER(gBattleTextBuff1, terrainType); @@ -15733,6 +15724,75 @@ static void Cmd_callnative(void) } // Callnative Funcs + +static void SaveBattlerTarget(u32 battler) +{ + if (gBattleStruct->savedTargetCount < NELEMS(gBattleStruct->savedBattlerTarget)) + gBattleStruct->savedBattlerTarget[gBattleStruct->savedTargetCount++] = battler; + else + DebugPrintfLevel(MGBA_LOG_WARN, "Attempting to exceed savedBattlerTarget array size!"); +} + +static void SaveBattlerAttacker(u32 battler) +{ + if (gBattleStruct->savedAttackerCount < NELEMS(gBattleStruct->savedBattlerAttacker)) + gBattleStruct->savedBattlerAttacker[gBattleStruct->savedAttackerCount++] = battler; + else + DebugPrintfLevel(MGBA_LOG_WARN, "Attempting to exceed savedBattlerAttacker array size!"); +} + +void BS_SaveTarget(void) +{ + NATIVE_ARGS(); + SaveBattlerTarget(gBattlerTarget); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_RestoreTarget(void) +{ + NATIVE_ARGS(); + if (gBattleStruct->savedTargetCount > 0) + { + gBattleStruct->savedTargetCount--; + gBattlerTarget = gBattleStruct->savedBattlerTarget[gBattleStruct->savedTargetCount]; + } + else + { + // #if TESTING + // Test_ExitWithResult(TEST_RESULT_ERROR, "BS_RestoreTarget attempting to restore an empty target!"); + // #else + DebugPrintfLevel(MGBA_LOG_WARN, "BS_RestoreTarget attempting to restore an empty target!"); + // #endif + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_SaveAttacker(void) +{ + NATIVE_ARGS(); + SaveBattlerAttacker(gBattlerAttacker); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_RestoreAttacker(void) +{ + NATIVE_ARGS(); + if (gBattleStruct->savedAttackerCount > 0) + { + gBattleStruct->savedAttackerCount--; + gBattlerAttacker = gBattleStruct->savedBattlerAttacker[gBattleStruct->savedAttackerCount]; + } + else + { + // #if TESTING + // Test_ExitWithResult(TEST_RESULT_ERROR, "BS_RestoreAttacker attempting to restore an empty attacker!"); + // #else + DebugPrintfLevel(MGBA_LOG_WARN, "BS_RestoreAttacker attempting to restore an empty attacker!"); + // #endif + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + void BS_CalcMetalBurstDmg(void) { NATIVE_ARGS(const u8 *failInstr); @@ -15926,7 +15986,7 @@ void BS_CheckParentalBondCounter(void) NATIVE_ARGS(u8 counter, const u8 *jumpInstr); // Some effects should only happen on the first or second strike of Parental Bond, // so a way to check this in battle scripts is useful - if (gSpecialStatuses[gBattlerAttacker].parentalBondState == cmd->counter && gBattleMons[gBattlerTarget].hp != 0) + if (gSpecialStatuses[gBattlerAttacker].parentalBondState == cmd->counter && IsBattlerAlive(gBattlerTarget)) gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; @@ -16287,23 +16347,6 @@ void BS_TryRevertWeatherForm(void) gBattlescriptCurrInstr = cmd->nextInstr; } -void BS_SetSnow(void) -{ - NATIVE_ARGS(); - - if (!TryChangeBattleWeather(gBattlerAttacker, ENUM_WEATHER_SNOW, FALSE)) - { - gMoveResultFlags |= MOVE_RESULT_MISSED; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED; - - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SNOW; - } - gBattlescriptCurrInstr = cmd->nextInstr; -} - void BS_HandleMegaEvolution(void) { NATIVE_ARGS(u8 battler, u8 caseId); @@ -16462,14 +16505,18 @@ void BS_TryReflectType(void) { NATIVE_ARGS(const u8 *failInstr); u16 targetBaseSpecies = GET_BASE_SPECIES_ID(gBattleMons[gBattlerTarget].species); - u8 targetType1 = GetBattlerType(gBattlerTarget, 0); - u8 targetType2 = GetBattlerType(gBattlerTarget, 1); - u8 targetType3 = GetBattlerType(gBattlerTarget, 2); + u8 targetType1 = GetBattlerType(gBattlerTarget, 0, FALSE); + u8 targetType2 = GetBattlerType(gBattlerTarget, 1, FALSE); + u8 targetType3 = GetBattlerType(gBattlerTarget, 2, FALSE); if (targetBaseSpecies == SPECIES_ARCEUS || targetBaseSpecies == SPECIES_SILVALLY) { gBattlescriptCurrInstr = cmd->failInstr; } + else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA) + { + gBattlescriptCurrInstr = cmd->failInstr; + } else if (IS_BATTLER_TYPELESS(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; @@ -16697,9 +16744,8 @@ void BS_TryTrainerSlideDynamaxMsg(void) NATIVE_ARGS(); s32 shouldSlide; - if ((shouldSlide = ShouldDoTrainerSlide(gBattlerAttacker, TRAINER_SLIDE_DYNAMAX))) + if ((shouldSlide = ShouldDoTrainerSlide(gBattleScripting.battler, TRAINER_SLIDE_DYNAMAX))) { - gBattleScripting.battler = gBattlerAttacker; BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = (shouldSlide == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); } @@ -16740,10 +16786,19 @@ void BS_TryCopycat(void) } else { - if (IsMaxMove(gLastUsedMove)) + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(gLastUsedMove)) + { + gBattleStruct->zmove.baseMoves[gBattlerAttacker] = gLastUsedMove; + gCalledMove = GetTypeBasedZMove(gLastUsedMove); + } + else if (IsMaxMove(gLastUsedMove)) + { gCalledMove = gBattleStruct->dynamax.lastUsedBaseMove; + } else + { gCalledMove = gLastUsedMove; + } gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); @@ -16831,7 +16886,9 @@ void BS_AllySwitchFailChance(void) void BS_SetPhotonGeyserCategory(void) { NATIVE_ARGS(); - gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) == DAMAGE_CATEGORY_PHYSICAL); + if (!((gMovesInfo[gCurrentMove].effect == EFFECT_TERA_BLAST && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA) + || (gMovesInfo[gCurrentMove].effect == EFFECT_TERA_STARSTORM && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA && gBattleMons[gBattlerAttacker].species == SPECIES_TERAPAGOS_STELLAR))) + gBattleStruct->swapDamageCategory = (GetCategoryBasedOnStats(gBattlerAttacker) != gMovesInfo[gCurrentMove].category); gBattlescriptCurrInstr = cmd->nextInstr; } @@ -16866,21 +16923,26 @@ static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 use if (evolutions[i].method == evolutionMethod) { - // We only have 9 bits to use - u16 val = min(511, GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER) + upAmount); + // We only have 10 bits to use + u16 val = min(1023, GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER) + upAmount); // Reset progress if you faint for the recoil method. switch (evolutionMethod) { - case EVO_LEVEL_MOVE_TWENTY_TIMES: + case EVO_USE_MOVE_TWENTY_TIMES: if (evolutions[i].param == usedMove) SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val); break; - case EVO_LEVEL_RECOIL_DAMAGE_MALE: - case EVO_LEVEL_RECOIL_DAMAGE_FEMALE: + case EVO_RECOIL_DAMAGE_MALE: + case EVO_RECOIL_DAMAGE_FEMALE: if (gBattleMons[gBattlerAttacker].hp == 0) val = 0; SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val); break; + case EVO_DEFEAT_THREE_WITH_ITEM: + if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES) == GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_SPECIES) + && GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HELD_ITEM) == evolutions[i].param) + SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val); + break; } return; } @@ -16896,16 +16958,23 @@ void BS_TryUpdateRecoilTracker(void) switch(gender) { case MON_MALE: - TryUpdateEvolutionTracker(EVO_LEVEL_RECOIL_DAMAGE_MALE, gBattleMoveDamage, MOVE_NONE); + TryUpdateEvolutionTracker(EVO_RECOIL_DAMAGE_MALE, gBattleMoveDamage, MOVE_NONE); break; case MON_FEMALE: - TryUpdateEvolutionTracker(EVO_LEVEL_RECOIL_DAMAGE_FEMALE, gBattleMoveDamage, MOVE_NONE); + TryUpdateEvolutionTracker(EVO_RECOIL_DAMAGE_FEMALE, gBattleMoveDamage, MOVE_NONE); break; } gBattlescriptCurrInstr = cmd->nextInstr; } +void BS_TryUpdateLeadersCrestTracker(void) +{ + NATIVE_ARGS(); + TryUpdateEvolutionTracker(EVO_DEFEAT_THREE_WITH_ITEM, 1, MOVE_NONE); + gBattlescriptCurrInstr = cmd->nextInstr; +} + void BS_TryTidyUp(void) { NATIVE_ARGS(u8 clear, const u8 *jumpInstr); @@ -17039,3 +17108,27 @@ void BS_CopyFoesStatIncrease(void) } gBattlescriptCurrInstr = cmd->jumpInstr; } + +void BS_RemoveWeather(void) +{ + NATIVE_ARGS(); + RemoveAllWeather(); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_ApplyTerastallization(void) +{ + NATIVE_ARGS(); + ApplyBattlerVisualsForTeraAnim(gBattlerAttacker); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_DamageToQuarterTargetHP(void) +{ + NATIVE_ARGS(); + gBattleMoveDamage = (3 * GetNonDynamaxHP(gBattlerTarget)) / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_setup.c b/src/battle_setup.c index 2fe016ec8728..41f2b9b50232 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -254,6 +254,23 @@ static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[] {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, }; +// two trainers, each with a defeat speech +static const struct TrainerBattleParameter sTrainerTwoTrainerBattleParams[] = +{ + {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT}, + {&sTrainerObjectEventLocalId, TRAINER_PARAM_CLEAR_VAL_16BIT}, + {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT}, + {&sTrainerBIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT}, + {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT}, + {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR}, +}; + #define REMATCH(trainer1, trainer2, trainer3, trainer4, trainer5, map) \ { \ .trainerIds = {trainer1, trainer2, trainer3, trainer4, trainer5}, \ @@ -1230,6 +1247,11 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data) gTrainerBattleOpponent_B = LocalIdToHillTrainerId(gSpecialVar_LastTalked); } return EventScript_TryDoNormalTrainerBattle; + case TRAINER_BATTLE_TWO_TRAINERS_NO_INTRO: + gNoOfApproachingTrainers = 2; // set TWO_OPPONENTS gBattleTypeFlags + gApproachingTrainerId = 1; // prevent trainer approach + TrainerBattleLoadArgs(sTrainerTwoTrainerBattleParams, data); + return EventScript_DoNoIntroTrainerBattle; default: if (gApproachingTrainerId == 0) { diff --git a/src/battle_tent.c b/src/battle_tent.c index c003affebe9f..8c6a94509a67 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -329,7 +329,7 @@ static void GenerateInitialRentalMons(void) // Cannot have two same held items. for (j = firstMonId; j < i + firstMonId; j++) { - if (heldItems[j] != 0 && heldItems[j] == gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]) + if (heldItems[j] != 0 && heldItems[j] == gFacilityTrainerMons[monSetId].heldItem) { if (gFacilityTrainerMons[monSetId].species == currSpecies) currSpecies = SPECIES_NONE; @@ -341,7 +341,7 @@ static void GenerateInitialRentalMons(void) gSaveBlock2Ptr->frontier.rentalMons[i].monId = monSetId; species[i] = gFacilityTrainerMons[monSetId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monSetId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[monSetId].heldItem; monIds[i] = monSetId; i++; } @@ -411,7 +411,7 @@ static void GenerateOpponentMons(void) // Ensure held items don't repeat on the opponent's team for (k = 0; k < i; k++) { - if (heldItems[k] != ITEM_NONE && heldItems[k] == gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]) + if (heldItems[k] != ITEM_NONE && heldItems[k] == gFacilityTrainerMons[sRandMonId].heldItem) break; } if (k != i) @@ -419,7 +419,7 @@ static void GenerateOpponentMons(void) // Successful selection species[i] = gFacilityTrainerMons[sRandMonId].species; - heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonId].itemTableId]; + heldItems[i] = gFacilityTrainerMons[sRandMonId].heldItem; gFrontierTempParty[i] = sRandMonId; i++; } diff --git a/src/battle_terastal.c b/src/battle_terastal.c new file mode 100644 index 000000000000..6866c6aaad87 --- /dev/null +++ b/src/battle_terastal.c @@ -0,0 +1,179 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_terastal.h" +#include "battle_gimmick.h" +#include "battle_scripts.h" +#include "event_data.h" +#include "item.h" +#include "palette.h" +#include "pokemon.h" +#include "safari_zone.h" +#include "sprite.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/hold_effects.h" +#include "constants/rgb.h" + +// Sets flags and variables upon a battler's Terastallization. +void ActivateTera(u32 battler) +{ + u32 side = GetBattlerSide(battler); + + // Set appropriate flags. + SetActiveGimmick(battler, GIMMICK_TERA); + SetGimmickAsActivated(battler, GIMMICK_TERA); + + // Remove Tera Orb charge. + if (B_FLAG_TERA_ORB_CHARGED != 0 + && (B_FLAG_TERA_ORB_NO_COST == 0 || !FlagGet(B_FLAG_TERA_ORB_NO_COST)) + && side == B_SIDE_PLAYER + && !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !IsPartnerMonFromSameTrainer(battler))) + { + FlagClear(B_FLAG_TERA_ORB_CHARGED); + } + + // Execute battle script. + PREPARE_TYPE_BUFFER(gBattleTextBuff1, GetBattlerTeraType(battler)); + if (TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_TERASTALLIZATION)) + BattleScriptExecute(BattleScript_TeraFormChange); + else + BattleScriptExecute(BattleScript_Terastallization); +} + +// Applies palette blend and enables UI indicator after animation has played +void ApplyBattlerVisualsForTeraAnim(u32 battler) +{ + struct Pokemon *party = GetBattlerParty(battler); + u32 index = gBattlerPartyIndexes[battler]; + + // Show indicator and do palette blend. + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &party[index], HEALTHBOX_ALL); + BlendPalette(OBJ_PLTT_ID(battler), 16, 8, GetTeraTypeRGB(GetBattlerTeraType(battler))); + CpuCopy32(gPlttBufferFaded + OBJ_PLTT_ID(battler), gPlttBufferUnfaded + OBJ_PLTT_ID(battler), PLTT_SIZEOF(16)); + + // We apply the animation behind a white screen, so restore the blended color here to avoid a pop + BlendPalette(OBJ_PLTT_ID(battler), 16, 16, RGB_WHITEALPHA); +} + +// Returns whether a battler can Terastallize. +bool32 CanTerastallize(u32 battler) +{ + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + + if (TESTING || GetBattlerSide(battler) == B_SIDE_OPPONENT) + { + // Skip all other checks in this block, go to HasTrainerUsedGimmick + } + else if (!CheckBagHasItem(ITEM_TERA_ORB, 1)) + { + return FALSE; + } + else if (FlagGet(B_FLAG_TERA_ORB_NO_COST)) + { + // Tera Orb is not depleted, go to HasTrainerUsedGimmick + } + else if (!FlagGet(B_FLAG_TERA_ORB_CHARGED)) + { + return FALSE; + } + + // Check if Trainer has already Terastallized. + if (HasTrainerUsedGimmick(battler, GIMMICK_TERA)) + return FALSE; + + // Check if AI battler is intended to Terastallize. + if (!ShouldTrainerBattlerUseGimmick(battler, GIMMICK_TERA)) + return FALSE; + + // Check if battler has another gimmick active. + if (GetActiveGimmick(battler) != GIMMICK_NONE) + return FALSE; + + // Check if battler is holding a Z-Crystal or Mega Stone. + if (!TESTING && (holdEffect == HOLD_EFFECT_Z_CRYSTAL || holdEffect == HOLD_EFFECT_MEGA_STONE)) // tests make this check already + return FALSE; + + // Every check passed! + return TRUE; +} + +// Returns a battler's Tera type. +u32 GetBattlerTeraType(u32 battler) +{ + return GetMonData(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], MON_DATA_TERA_TYPE); +} + +// Uses up a type's Stellar boost. +void ExpendTypeStellarBoost(u32 battler, u32 type) +{ + if (type < 32 && gBattleMons[battler].species != SPECIES_TERAPAGOS_STELLAR) // avoid OOB access + gBattleStruct->stellarBoostFlags[GetBattlerSide(battler)] |= gBitTable[type]; +} + +// Checks whether a type's Stellar boost has been expended. +bool32 IsTypeStellarBoosted(u32 battler, u32 type) +{ + if (type < 32) // avoid OOB access + return !(gBattleStruct->stellarBoostFlags[GetBattlerSide(battler)] & gBitTable[type]); + else + return FALSE; +} + +// Returns the STAB power multiplier to use when Terastallized. +// Power multipliers from Smogon Research thread. +uq4_12_t GetTeraMultiplier(u32 battler, u32 type) +{ + u32 teraType = GetBattlerTeraType(battler); + bool32 hasAdaptability = (GetBattlerAbility(battler) == ABILITY_ADAPTABILITY); + + // Safety check. + if (GetActiveGimmick(battler) != GIMMICK_TERA) + return UQ_4_12(1.0); + + // Stellar-type checks. + if (teraType == TYPE_STELLAR) + { + bool32 shouldBoost = IsTypeStellarBoosted(battler, type); + if (IS_BATTLER_OF_BASE_TYPE(battler, type)) + { + if (shouldBoost) + return UQ_4_12(2.0); + else + return UQ_4_12(1.5); + } + else if (shouldBoost) + return UQ_4_12(1.2); + else + return UQ_4_12(1.0); + } + // Base and Tera type. + if (type == teraType && IS_BATTLER_OF_BASE_TYPE(battler, type)) + { + if (hasAdaptability) + return UQ_4_12(2.25); + else + return UQ_4_12(2.0); + } + // Base or Tera type only. + else if ((type == teraType && !IS_BATTLER_OF_BASE_TYPE(battler, type)) + || (type != teraType && IS_BATTLER_OF_BASE_TYPE(battler, type))) + { + if (hasAdaptability) + return UQ_4_12(2.0); + else + return UQ_4_12(1.5); + } + // Neither base or Tera type. + else + { + return UQ_4_12(1.0); + } +} + +u16 GetTeraTypeRGB(u32 type) +{ + return gTypesInfo[type].teraTypeRGBValue; +} diff --git a/src/battle_tower.c b/src/battle_tower.c index 79c9de5c0458..045f87ad6553 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -42,7 +42,7 @@ // EWRAM vars. EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL; -EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL; +EWRAM_DATA const struct TrainerMon *gFacilityTrainerMons = NULL; // IWRAM common u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE]; @@ -81,73 +81,6 @@ static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderT #endif //FREE_BATTLE_TOWER_E_READER static u8 SetTentPtrsGetLevel(void); -const u16 gBattleFrontierHeldItems[] = -{ - [BATTLE_FRONTIER_ITEM_NONE] = ITEM_NONE, - [BATTLE_FRONTIER_ITEM_KINGS_ROCK] = ITEM_KINGS_ROCK, - [BATTLE_FRONTIER_ITEM_SITRUS_BERRY] = ITEM_SITRUS_BERRY, - [BATTLE_FRONTIER_ITEM_ORAN_BERRY] = ITEM_ORAN_BERRY, - [BATTLE_FRONTIER_ITEM_CHESTO_BERRY] = ITEM_CHESTO_BERRY, - [BATTLE_FRONTIER_ITEM_HARD_STONE] = ITEM_HARD_STONE, - [BATTLE_FRONTIER_ITEM_FOCUS_BAND] = ITEM_FOCUS_BAND, - [BATTLE_FRONTIER_ITEM_PERSIM_BERRY] = ITEM_PERSIM_BERRY, - [BATTLE_FRONTIER_ITEM_MIRACLE_SEED] = ITEM_MIRACLE_SEED, - [BATTLE_FRONTIER_ITEM_BERRY_JUICE] = ITEM_BERRY_JUICE, - [BATTLE_FRONTIER_ITEM_MACHO_BRACE] = ITEM_MACHO_BRACE, - [BATTLE_FRONTIER_ITEM_SILVER_POWDER] = ITEM_SILVER_POWDER, - [BATTLE_FRONTIER_ITEM_CHERI_BERRY] = ITEM_CHERI_BERRY, - [BATTLE_FRONTIER_ITEM_BLACK_GLASSES] = ITEM_BLACK_GLASSES, - [BATTLE_FRONTIER_ITEM_BLACK_BELT] = ITEM_BLACK_BELT, - [BATTLE_FRONTIER_ITEM_SOUL_DEW] = ITEM_SOUL_DEW, - [BATTLE_FRONTIER_ITEM_CHOICE_BAND] = ITEM_CHOICE_BAND, - [BATTLE_FRONTIER_ITEM_MAGNET] = ITEM_MAGNET, - [BATTLE_FRONTIER_ITEM_SILK_SCARF] = ITEM_SILK_SCARF, - [BATTLE_FRONTIER_ITEM_WHITE_HERB] = ITEM_WHITE_HERB, - [BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE] = ITEM_DEEP_SEA_SCALE, - [BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH] = ITEM_DEEP_SEA_TOOTH, - [BATTLE_FRONTIER_ITEM_MYSTIC_WATER] = ITEM_MYSTIC_WATER, - [BATTLE_FRONTIER_ITEM_SHARP_BEAK] = ITEM_SHARP_BEAK, - [BATTLE_FRONTIER_ITEM_QUICK_CLAW] = ITEM_QUICK_CLAW, - [BATTLE_FRONTIER_ITEM_LEFTOVERS] = ITEM_LEFTOVERS, - [BATTLE_FRONTIER_ITEM_RAWST_BERRY] = ITEM_RAWST_BERRY, - [BATTLE_FRONTIER_ITEM_LIGHT_BALL] = ITEM_LIGHT_BALL, - [BATTLE_FRONTIER_ITEM_POISON_BARB] = ITEM_POISON_BARB, - [BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE] = ITEM_NEVER_MELT_ICE, - [BATTLE_FRONTIER_ITEM_ASPEAR_BERRY] = ITEM_ASPEAR_BERRY, - [BATTLE_FRONTIER_ITEM_SPELL_TAG] = ITEM_SPELL_TAG, - [BATTLE_FRONTIER_ITEM_BRIGHT_POWDER] = ITEM_BRIGHT_POWDER, - [BATTLE_FRONTIER_ITEM_LEPPA_BERRY] = ITEM_LEPPA_BERRY, - [BATTLE_FRONTIER_ITEM_SCOPE_LENS] = ITEM_SCOPE_LENS, - [BATTLE_FRONTIER_ITEM_TWISTED_SPOON] = ITEM_TWISTED_SPOON, - [BATTLE_FRONTIER_ITEM_METAL_COAT] = ITEM_METAL_COAT, - [BATTLE_FRONTIER_ITEM_MENTAL_HERB] = ITEM_MENTAL_HERB, - [BATTLE_FRONTIER_ITEM_CHARCOAL] = ITEM_CHARCOAL, - [BATTLE_FRONTIER_ITEM_PECHA_BERRY] = ITEM_PECHA_BERRY, - [BATTLE_FRONTIER_ITEM_SOFT_SAND] = ITEM_SOFT_SAND, - [BATTLE_FRONTIER_ITEM_LUM_BERRY] = ITEM_LUM_BERRY, - [BATTLE_FRONTIER_ITEM_DRAGON_SCALE] = ITEM_DRAGON_SCALE, - [BATTLE_FRONTIER_ITEM_DRAGON_FANG] = ITEM_DRAGON_FANG, - [BATTLE_FRONTIER_ITEM_IAPAPA_BERRY] = ITEM_IAPAPA_BERRY, - [BATTLE_FRONTIER_ITEM_WIKI_BERRY] = ITEM_WIKI_BERRY, - [BATTLE_FRONTIER_ITEM_SEA_INCENSE] = ITEM_SEA_INCENSE, - [BATTLE_FRONTIER_ITEM_SHELL_BELL] = ITEM_SHELL_BELL, - [BATTLE_FRONTIER_ITEM_SALAC_BERRY] = ITEM_SALAC_BERRY, - [BATTLE_FRONTIER_ITEM_LANSAT_BERRY] = ITEM_LANSAT_BERRY, - [BATTLE_FRONTIER_ITEM_APICOT_BERRY] = ITEM_APICOT_BERRY, - [BATTLE_FRONTIER_ITEM_STARF_BERRY] = ITEM_STARF_BERRY, - [BATTLE_FRONTIER_ITEM_LIECHI_BERRY] = ITEM_LIECHI_BERRY, - [BATTLE_FRONTIER_ITEM_LEEK] = ITEM_LEEK, - [BATTLE_FRONTIER_ITEM_LAX_INCENSE] = ITEM_LAX_INCENSE, - [BATTLE_FRONTIER_ITEM_AGUAV_BERRY] = ITEM_AGUAV_BERRY, - [BATTLE_FRONTIER_ITEM_FIGY_BERRY] = ITEM_FIGY_BERRY, - [BATTLE_FRONTIER_ITEM_THICK_CLUB] = ITEM_THICK_CLUB, - [BATTLE_FRONTIER_ITEM_MAGO_BERRY] = ITEM_MAGO_BERRY, - [BATTLE_FRONTIER_ITEM_METAL_POWDER] = ITEM_METAL_POWDER, - [BATTLE_FRONTIER_ITEM_PETAYA_BERRY] = ITEM_PETAYA_BERRY, - [BATTLE_FRONTIER_ITEM_LUCKY_PUNCH] = ITEM_LUCKY_PUNCH, - [BATTLE_FRONTIER_ITEM_GANLON_BERRY] = ITEM_GANLON_BERRY, -}; - #include "data/battle_frontier/battle_frontier_trainer_mons.h" #include "data/battle_frontier/battle_frontier_trainers.h" #include "data/battle_frontier/battle_frontier_mons.h" @@ -766,7 +699,10 @@ static const u8 *const *const sPartnerApprenticeTextTables[NUM_APPRENTICES] = #include "data/battle_frontier/battle_tent.h" #include "data/partner_parties.h" +const struct Trainer gBattlePartners[] = +{ #include "data/battle_partners.h" +}; static void (* const sBattleTowerFuncs[])(void) = { @@ -1230,11 +1166,11 @@ void SetEReaderTrainerGfxId(void) SetBattleFacilityTrainerGfxId(TRAINER_EREADER, 0); } -u8 GetBattleFacilityTrainerGfxId(u16 trainerId) +u16 GetBattleFacilityTrainerGfxId(u16 trainerId) { u32 i; u8 facilityClass; - u8 trainerObjectGfxId; + u16 trainerObjectGfxId; SetFacilityPtrsGetLevel(); #if FREE_BATTLE_TOWER_E_READER == FALSE @@ -1627,11 +1563,98 @@ static void FillTentTrainerParty(u8 monsCount) FillTentTrainerParty_(gTrainerBattleOpponent_A, 0, monsCount); } +void CreateFacilityMon(const struct TrainerMon *fmon, u16 level, u8 fixedIV, u32 otID, u32 flags, struct Pokemon *dst) +{ + u8 ball = (fmon->ball == 0xFF) ? Random() % POKEBALL_COUNT : fmon->ball; + u16 move; + u32 personality, ability, friendship, j; + + if (fmon->gender == TRAINER_MON_MALE) + { + personality = GeneratePersonalityForGender(MON_MALE, fmon->species); + } + else if (fmon->gender == TRAINER_MON_FEMALE) + { + personality = GeneratePersonalityForGender(MON_FEMALE, fmon->species); + } + + ModifyPersonalityForNature(&personality, fmon->nature); + CreateMon(dst, fmon->species, level, fixedIV, TRUE, personality, otID, OT_ID_PRESET); + + friendship = MAX_FRIENDSHIP; + // Give the chosen Pokémon its specified moves. + for (j = 0; j < MAX_MON_MOVES; j++) + { + move = fmon->moves[j]; + if (flags & FLAG_FRONTIER_MON_FACTORY && move == MOVE_RETURN) + move = MOVE_FRUSTRATION; + + SetMonMoveSlot(dst, move, j); + if (gMovesInfo[move].effect == EFFECT_FRUSTRATION) + friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. + } + + SetMonData(dst, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(dst, MON_DATA_HELD_ITEM, &fmon->heldItem); + + // try to set ability. Otherwise, random of non-hidden as per vanilla + if (fmon->ability != ABILITY_NONE) + { + const struct SpeciesInfo *speciesInfo = &gSpeciesInfo[fmon->species]; + u32 maxAbilities = ARRAY_COUNT(speciesInfo->abilities); + for (ability = 0; ability < maxAbilities; ++ability) + { + if (speciesInfo->abilities[ability] == fmon->ability) + break; + } + if (ability >= maxAbilities) + ability = 0; + SetMonData(dst, MON_DATA_ABILITY_NUM, &ability); + } + + if (fmon->ev != NULL) + { + SetMonData(dst, MON_DATA_HP_EV, &(fmon->ev[0])); + SetMonData(dst, MON_DATA_ATK_EV, &(fmon->ev[1])); + SetMonData(dst, MON_DATA_DEF_EV, &(fmon->ev[2])); + SetMonData(dst, MON_DATA_SPATK_EV, &(fmon->ev[3])); + SetMonData(dst, MON_DATA_SPDEF_EV, &(fmon->ev[4])); + SetMonData(dst, MON_DATA_SPEED_EV, &(fmon->ev[5])); + } + + if (fmon->iv) + SetMonData(dst, MON_DATA_IVS, &(fmon->iv)); + + if (fmon->isShiny) + { + u32 data = TRUE; + SetMonData(dst, MON_DATA_IS_SHINY, &data); + } + if (fmon->dynamaxLevel > 0) + { + u32 data = fmon->dynamaxLevel; + SetMonData(dst, MON_DATA_DYNAMAX_LEVEL, &data); + } + if (fmon->gigantamaxFactor) + { + u32 data = fmon->gigantamaxFactor; + SetMonData(dst, MON_DATA_GIGANTAMAX_FACTOR, &data); + } + if (fmon->teraType) + { + u32 data = fmon->teraType; + SetMonData(dst, MON_DATA_TERA_TYPE, &data); + } + + + SetMonData(dst, MON_DATA_POKEBALL, &ball); + CalculateMonStats(dst); +} + static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; - u8 friendship = MAX_FRIENDSHIP; u8 level = SetFacilityPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; @@ -1708,7 +1731,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gFacilityTrainerMons[monId].heldItem) break; } if (j != i + firstMonId) @@ -1727,25 +1750,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) chosenMonIndices[i] = monId; // Place the chosen Pokémon into the trainer's party. - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = MAX_FRIENDSHIP; - // Give the chosen Pokémon its specified moves. - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. - } - - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, fixedIV, otID, 0, &gEnemyParty[i + firstMonId]); // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. @@ -1822,8 +1827,7 @@ static void FillFactoryTrainerParty(void) static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) { - u8 i, j; - u8 friendship; + u8 i; u8 level; u8 fixedIV; u32 otID; @@ -1868,27 +1872,15 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { u16 monId = gFrontierTempParty[i]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); - - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, FLAG_FRONTIER_MON_FACTORY, + &gEnemyParty[firstMonId + i]); } } static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) { - u8 i, j; - u8 friendship; + u8 i; u8 level = TENT_MIN_LEVEL; u8 fixedIV = 0; u32 otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); @@ -1896,24 +1888,9 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { u16 monId = gFrontierTempParty[i]; - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = 0; - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveAvoidReturn(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[firstMonId + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, 0, + &gEnemyParty[firstMonId + i]); } } @@ -2347,7 +2324,7 @@ static void LoadMultiPartnerCandidatesData(void) while (1) { monId = GetRandomFrontierMonFromSet(trainerId); - if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].itemTableId == gFacilityTrainerMons[monId].itemTableId) + if (j % 2 != 0 && gFacilityTrainerMons[gSaveBlock2Ptr->frontier.trainerIds[r10 - 1]].heldItem == gFacilityTrainerMons[monId].heldItem) continue; for (k = 8; k < r10; k++) @@ -2711,7 +2688,7 @@ static void SetTowerInterviewData(void) GetBattleTowerTrainerLanguage(&gSaveBlock2Ptr->frontier.towerInterview.opponentLanguage, gTrainerBattleOpponent_A); gSaveBlock2Ptr->frontier.towerInterview.opponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[1]], MON_DATA_SPECIES, NULL); gSaveBlock2Ptr->frontier.towerInterview.playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[0]], MON_DATA_SPECIES, NULL); - for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) + for (i = 0; i < VANILLA_POKEMON_NAME_LENGTH + 1; i++) gSaveBlock2Ptr->frontier.towerInterview.opponentMonNickname[i] = gBattleMons[0].nickname[i]; gSaveBlock2Ptr->frontier.towerBattleOutcome = gBattleOutcome; } @@ -3016,7 +2993,6 @@ static void FillPartnerParty(u16 trainerId) s32 i, j, k; u32 firstIdPart = 0, secondIdPart = 0, thirdIdPart = 0; u32 ivs, level, personality; - u32 friendship; u16 monId; u32 otID; u8 trainerName[(PLAYER_NAME_LENGTH * 3) + 1]; @@ -3121,22 +3097,7 @@ static void FillPartnerParty(u16 trainerId) for (i = 0; i < FRONTIER_MULTI_PARTY_SIZE; i++) { monId = gSaveBlock2Ptr->frontier.trainerIds[i + 18]; - CreateMonWithEVSpreadNatureOTID(&gPlayerParty[MULTI_PARTY_SIZE + i], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - ivs, - gFacilityTrainerMons[monId].evSpread, - otID); - friendship = MAX_FRIENDSHIP; - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gPlayerParty[MULTI_PARTY_SIZE + i], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; - } - SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], level, ivs, otID, 0, &gPlayerParty[MULTI_PARTY_SIZE + i]); for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) trainerName[j] = gFacilityTrainers[trainerId].trainerName[j]; SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_OT_NAME, &trainerName); @@ -3496,7 +3457,6 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) { s32 i, j; u16 chosenMonIndices[MAX_FRONTIER_PARTY_SIZE]; - u8 friendship; u8 level = SetTentPtrsGetLevel(); u8 fixedIV = 0; u8 bfMonCount; @@ -3535,7 +3495,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE - && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]) + && GetMonData(&gEnemyParty[j], MON_DATA_HELD_ITEM, NULL) == gFacilityTrainerMons[monId].heldItem) break; } if (j != i + firstMonId) @@ -3552,27 +3512,9 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) continue; chosenMonIndices[i] = monId; - - // Place the chosen Pokémon into the trainer's party. - CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], - gFacilityTrainerMons[monId].species, - level, - gFacilityTrainerMons[monId].nature, - fixedIV, - gFacilityTrainerMons[monId].evSpread, - otID); - - friendship = MAX_FRIENDSHIP; - // Give the chosen Pokémon its specified moves. - for (j = 0; j < MAX_MON_MOVES; j++) - { - SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); - if (gMovesInfo[gFacilityTrainerMons[monId].moves[j]].effect == EFFECT_FRUSTRATION) - friendship = 0; // Frustration is more powerful the lower the pokemon's friendship is. - } - - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); + CreateFacilityMon(&gFacilityTrainerMons[monId], + level, fixedIV, otID, 0, + &gEnemyParty[i + firstMonId]); // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. @@ -3580,7 +3522,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) } } -u8 FacilityClassToGraphicsId(u8 facilityClass) +u16 FacilityClassToGraphicsId(u8 facilityClass) { u8 trainerObjectGfxId; u8 i; diff --git a/src/battle_transition.c b/src/battle_transition.c index 3e11ccb43e47..b2b295e16e71 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -212,7 +212,6 @@ static bool8 AngledWipes_TryEnd(struct Task *); static bool8 AngledWipes_StartNext(struct Task *); static bool8 ShredSplit_Init(struct Task *); static bool8 ShredSplit_Main(struct Task *); -static bool8 ShredSplit_BrokenCheck(struct Task *); static bool8 ShredSplit_End(struct Task *); static bool8 Blackhole_Init(struct Task *); static bool8 Blackhole_Vibrate(struct Task *); @@ -561,7 +560,6 @@ static const TransitionStateFunc sShredSplit_Funcs[] = { ShredSplit_Init, ShredSplit_Main, - ShredSplit_BrokenCheck, ShredSplit_End }; @@ -2928,29 +2926,6 @@ static bool8 ShredSplit_Main(struct Task *task) return FALSE; } -// This function never increments the state counter, because the loop condition -// is always false, resulting in the game being stuck in an infinite loop. -// It's possible this transition is only partially -// done and the second part was left out. -// In any case removing or bypassing this state allows the transition to finish. -static bool8 ShredSplit_BrokenCheck(struct Task *task) -{ - u16 i; - bool32 done = TRUE; - u16 checkVar2 = 0xFF10; - - for (i = 0; i < DISPLAY_HEIGHT; i++) - { - if (gScanlineEffectRegBuffers[1][i] != DISPLAY_WIDTH && gScanlineEffectRegBuffers[1][i] != checkVar2) - done = FALSE; - } - - if (done == TRUE) - task->tState++; - - return FALSE; -} - static bool8 ShredSplit_End(struct Task *task) { DmaStop(0); diff --git a/src/battle_tv.c b/src/battle_tv.c index a2b370aa5598..bba14054c9c8 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -944,7 +944,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3) baseFromEffect++; // Recoil moves if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_RAPID_SPIN)) baseFromEffect++; - if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_SP_ATK_TWO_DOWN) || MoveHasAdditionalEffect(arg2, MOVE_EFFECT_ATK_DEF_DOWN)) + if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_SP_ATK_MINUS_2) || MoveHasAdditionalEffect(arg2, MOVE_EFFECT_ATK_DEF_DOWN)) baseFromEffect += 2; // Overheat, Superpower, etc. if (MoveHasAdditionalEffect(arg2, MOVE_EFFECT_STEAL_ITEM)) baseFromEffect += 3; diff --git a/src/battle_util.c b/src/battle_util.c index d39392d26741..678778bf1ac2 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8,6 +8,7 @@ #include "battle_interface.h" #include "battle_setup.h" #include "battle_z_move.h" +#include "battle_gimmick.h" #include "party_menu.h" #include "pokemon.h" #include "international_string_util.h" @@ -110,7 +111,7 @@ bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move) u32 ability = GetBattlerAbility(battlerAtk); if (gSideTimers[defSide].followmeTimer == 0 - || gBattleMons[gSideTimers[defSide].followmeTarget].hp == 0 + || !IsBattlerAlive(gSideTimers[defSide].followmeTarget) || gMovesInfo[move].effect == EFFECT_SNIPE_SHOT || gMovesInfo[move].effect == EFFECT_SKY_DROP || ability == ABILITY_PROPELLER_TAIL || ability == ABILITY_STALWART) @@ -157,7 +158,7 @@ void HandleAction_UseMove(void) gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker]; } // encore forces you to use the same move - else if (!gBattleStruct->zmove.active && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE + else if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE && gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos]) { gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove; @@ -165,7 +166,7 @@ void HandleAction_UseMove(void) *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); } // check if the encored move wasn't overwritten - else if (!gBattleStruct->zmove.active && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE + else if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE && gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos]) { gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos; @@ -185,13 +186,7 @@ void HandleAction_UseMove(void) gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; } - // check z move used - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] != MOVE_NONE && !IS_MOVE_STATUS(gCurrentMove)) - { - gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; - } - - if (gBattleMons[gBattlerAttacker].hp != 0) + if (IsBattlerAlive(gBattlerAttacker)) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) gBattleResults.lastUsedMovePlayer = gCurrentMove; @@ -203,11 +198,17 @@ void HandleAction_UseMove(void) SetTypeBeforeUsingMove(gChosenMove, gBattlerAttacker); GET_MOVE_TYPE(gChosenMove, moveType); - // check max move used - if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) + // check Z-Move used + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE && !IS_MOVE_STATUS(gCurrentMove) && !IsZMove(gCurrentMove)) + { + gBattleStruct->categoryOverride = gMovesInfo[gCurrentMove].category; + gCurrentMove = gChosenMove = GetUsableZMove(gBattlerAttacker, gCurrentMove); + } + // check Max Move used + else if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) { + gBattleStruct->categoryOverride = gMovesInfo[gCurrentMove].category; gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); - gBattleStruct->dynamax.activeCategory = gBattleStruct->dynamax.categories[gBattlerAttacker]; } moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); @@ -367,7 +368,7 @@ void HandleAction_UseMove(void) if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gProtectStructs[gBattlerAttacker].palaceUnableToUseMove) { // Battle Palace, select battle script for failure to use move - if (gBattleMons[gBattlerAttacker].hp == 0) + if (!IsBattlerAlive(gBattlerAttacker)) { gCurrentActionFuncId = B_ACTION_FINISHED; return; @@ -423,6 +424,8 @@ void HandleAction_Switch(void) if (gBattleResults.playerSwitchesCounter < 255) gBattleResults.playerSwitchesCounter++; + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) + UndoDynamax(gBattlerAttacker); // this is better performed here instead of SwitchInClearSetData TryBattleFormChange(gBattlerAttacker, FORM_CHANGE_BATTLE_SWITCH); } @@ -707,7 +710,7 @@ void HandleAction_NothingIsFainted(void) void HandleAction_ActionFinished(void) { - u32 i, j; + u32 i, j, moveType; bool32 afterYouActive = gSpecialStatuses[gBattlerByTurnOrder[gCurrentTurnActionNumber + 1]].afterYou; *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = gSelectedMonPartyId = PARTY_SIZE; gCurrentTurnActionNumber++; @@ -718,6 +721,16 @@ void HandleAction_ActionFinished(void) | HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT | HITMARKER_CHARGING | HITMARKER_NEVER_SET | HITMARKER_IGNORE_DISGUISE); + // check if Stellar type boost should be used up + GET_MOVE_TYPE(gCurrentMove, moveType); + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_TERA + && GetBattlerTeraType(gBattlerAttacker) == TYPE_STELLAR + && gMovesInfo[gCurrentMove].category != DAMAGE_CATEGORY_STATUS + && IsTypeStellarBoosted(gBattlerAttacker, moveType)) + { + ExpendTypeStellarBoost(gBattlerAttacker, moveType); + } + gCurrentMove = 0; gBattleMoveDamage = 0; gMoveResultFlags = 0; @@ -731,7 +744,6 @@ 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 && !afterYouActive && !gBattleStruct->pledgeMove) { @@ -893,44 +905,6 @@ static const uq4_12_t sPercentToModifier[] = UQ_4_12(1.00), // 100 }; -#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] = -{// 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 u8 GetBattlerForBattleScript(u8 caseId) { @@ -1280,17 +1254,17 @@ bool32 IsBelchPreventingMove(u32 battler, u32 move) } // Dynamax bypasses all selection prevention except Taunt and Assault Vest. -#define DYNAMAX_BYPASS_CHECK !gBattleStruct->dynamax.playerSelect && !IsDynamaxed(gBattlerAttacker) +#define DYNAMAX_BYPASS_CHECK (!IsGimmickSelected(gBattlerAttacker, GIMMICK_DYNAMAX) && GetActiveGimmick(gBattlerAttacker) != GIMMICK_DYNAMAX) u32 TrySetCantSelectMoveBattleScript(u32 battler) { u32 limitations = 0; - u8 moveId = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST | RET_DYNAMAX); + u8 moveId = gBattleResources->bufferB[battler][2] & ~RET_GIMMICK; u32 move = gBattleMons[battler].moves[moveId]; u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battler]; - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) { gBattleScripting.battler = battler; gCurrentMove = move; @@ -1306,7 +1280,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(battler); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1321,9 +1295,9 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].tauntTimer != 0 && IS_MOVE_STATUS(move)) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[battler].tauntTimer != 0 && IS_MOVE_STATUS(move)) { - if (IsDynamaxed(gBattlerAttacker)) + if ((GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX)) gCurrentMove = MOVE_MAX_GUARD; else gCurrentMove = move; @@ -1339,7 +1313,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].throatChopTimer != 0 && gMovesInfo[move].soundMove) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[battler].throatChopTimer != 0 && gMovesInfo[move].soundMove) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1354,7 +1328,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(battler, move)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && GetImprisonedMovesCount(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1369,7 +1343,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1384,7 +1358,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && IsHealBlockPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1399,7 +1373,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && IsBelchPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1463,7 +1437,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(move) && gMovesInfo[move].effect != EFFECT_ME_FIRST) { - if (IsDynamaxed(gBattlerAttacker)) + if ((GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX)) gCurrentMove = MOVE_MAX_GUARD; else gCurrentMove = move; @@ -1683,6 +1657,7 @@ enum ENDTURN_SUN, ENDTURN_HAIL, ENDTURN_SNOW, + ENDTURN_FOG, ENDTURN_DAMAGE_NON_TYPES, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, @@ -1740,7 +1715,7 @@ u8 DoFieldEndTurnEffects(void) do { s32 i; - u8 side; + u32 side; switch (gBattleStruct->turnCountersTracker) { @@ -1942,7 +1917,7 @@ u8 DoFieldEndTurnEffects(void) u32 battler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[battler] != 0 && --gWishFutureKnock.wishCounter[battler] == 0 - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { gBattlerTarget = battler; BattleScriptExecute(BattleScript_WishComesTrue); @@ -2071,23 +2046,33 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_FOG: + if (gBattleWeather & B_WEATHER_FOG) + { + if (!(gBattleWeather & B_WEATHER_FOG_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~B_WEATHER_FOG_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_FogEnded; + } + else + { + gBattlescriptCurrInstr = BattleScript_FogContinues; + } + + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnCountersTracker++; + break; case ENDTURN_DAMAGE_NON_TYPES: while (gBattleStruct->turnSideTracker < 2) { side = gBattleStruct->turnSideTracker; - if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES) + if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES && --gSideTimers[side].damageNonTypesTimer == 0) { - 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); - } + // There is no in-game message when this side status ends. + gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; + effect++; } gBattleStruct->turnSideTracker++; if (effect != 0) @@ -2314,6 +2299,7 @@ u8 DoFieldEndTurnEffects(void) enum { + ENDTURN_WEATHER_DAMAGE, ENDTURN_INGRAIN, ENDTURN_AQUA_RING, ENDTURN_ABILITIES, @@ -2353,6 +2339,7 @@ enum ENDTURN_SALT_CURE, ENDTURN_SYRUP_BOMB, ENDTURN_DYNAMAX, + ENDTURN_GMAX_MOVE_RESIDUAL_DAMAGE, ENDTURN_SEA_OF_FIRE_DAMAGE, ENDTURN_BATTLER_COUNT }; @@ -2394,11 +2381,60 @@ u8 DoBattlerEndTurnEffects(void) ability = GetBattlerAbility(battler); switch (gBattleStruct->turnEffectsTracker) { + case ENDTURN_WEATHER_DAMAGE: + ability = GetBattlerAbility(battler); + if (!IsBattlerAlive(battler) || !WEATHER_HAS_EFFECT || ability == ABILITY_MAGIC_GUARD) + { + gBattleStruct->turnEffectsTracker++; + break; + } + else if (gBattleWeather & B_WEATHER_SANDSTORM + && ability != ABILITY_SAND_VEIL + && ability != ABILITY_SAND_FORCE + && ability != ABILITY_SAND_RUSH + && ability != ABILITY_OVERCOAT + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ROCK) + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GROUND) + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_STEEL) + && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) + { + gBattleScripting.battler = battler; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; + BattleScriptExecute(BattleScript_DamagingWeather); + effect++; + } + else if (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW) + && ability == ABILITY_ICE_BODY + && !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && !BATTLER_MAX_HP(battler) + && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) + { + gBattleScripting.battler = battler; + gBattleMoveDamage = -1 * (GetNonDynamaxMaxHP(battler) / 16); + BattleScriptExecute(BattleScript_IceBodyHeal); + effect++; + } + else if (gBattleWeather & B_WEATHER_HAIL + && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE) + && ability != ABILITY_SNOW_CLOAK + && ability != ABILITY_OVERCOAT + && ability != ABILITY_ICE_BODY + && !(gStatuses3[battler] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) + && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) + { + gBattleScripting.battler = battler; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; + BattleScriptExecute(BattleScript_DamagingWeather); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_INGRAIN: // ingrain if ((gStatuses3[battler] & STATUS3_ROOTED) && !BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_IngrainTurnHeal); @@ -2410,7 +2446,7 @@ u8 DoBattlerEndTurnEffects(void) if ((gStatuses3[battler] & STATUS3_AQUA_RING) && !BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_AquaRingHeal); @@ -2440,8 +2476,8 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_LEECH_SEED: // leech seed if ((gStatuses3[battler] & STATUS3_LEECHSEED) - && gBattleMons[gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER].hp != 0 - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; @@ -2458,7 +2494,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_POISON: // poison if ((gBattleMons[battler].status1 & STATUS1_POISON) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; @@ -2487,7 +2523,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_BAD_POISON: // toxic poison if ((gBattleMons[battler].status1 & STATUS1_TOXIC_POISON) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; @@ -2519,7 +2555,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_BURN: // burn if ((gBattleMons[battler].status1 & STATUS1_BURN) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); @@ -2538,7 +2574,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_FROSTBITE: // burn if ((gBattleMons[battler].status1 & STATUS1_FROSTBITE) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); @@ -2551,7 +2587,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_NIGHTMARES: // spooky nightmares if ((gBattleMons[battler].status2 & STATUS2_NIGHTMARE) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; // R/S does not perform this sleep check, which causes the nightmare effect to @@ -2573,7 +2609,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_CURSE: // curse if ((gBattleMons[battler].status2 & STATUS2_CURSED) - && gBattleMons[battler].hp != 0) + && IsBattlerAlive(battler)) { MAGIC_GUARD_CHECK; gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; @@ -2585,7 +2621,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_WRAP: // wrap - if ((gBattleMons[battler].status2 & STATUS2_WRAPPED) && gBattleMons[battler].hp != 0) + if ((gBattleMons[battler].status2 & STATUS2_WRAPPED) && IsBattlerAlive(battler)) { if (--gDisableStructs[battler].wrapTurns != 0) // damaged by wrap { @@ -2891,7 +2927,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_SALT_CURE: - if (gStatuses4[battler] & STATUS4_SALT_CURE && gBattleMons[battler].hp != 0) + if (gStatuses4[battler] & STATUS4_SALT_CURE && IsBattlerAlive(battler)) { gBattlerTarget = battler; if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_STEEL) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER)) @@ -2907,7 +2943,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_SYRUP_BOMB: - if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) + if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (IsBattlerAlive(battler))) { if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; @@ -2930,7 +2966,7 @@ u8 DoBattlerEndTurnEffects(void) gBattleStruct->turnEffectsTracker++; break; case ENDTURN_DYNAMAX: - if (IsDynamaxed(battler) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0) { gBattleScripting.battler = battler; @@ -2940,10 +2976,27 @@ u8 DoBattlerEndTurnEffects(void) } gBattleStruct->turnEffectsTracker++; break; + case ENDTURN_GMAX_MOVE_RESIDUAL_DAMAGE: + { + u32 side = GetBattlerSide(gBattlerAttacker); + if (gSideTimers[side].damageNonTypesTimer + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) + && IsBattlerAlive(gBattlerAttacker) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleScripting.battler = battler; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 6; + ChooseDamageNonTypesString(gSideTimers[side].damageNonTypesType); + BattleScriptExecute(BattleScript_DamageNonTypesContinues); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + } case ENDTURN_SEA_OF_FIRE_DAMAGE: if (IsBattlerAlive(battler) && gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SEA_OF_FIRE) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; BtlController_EmitStatusAnimation(battler, BUFFER_A, FALSE, STATUS1_BURN); MarkBattlerForControllerExec(battler); BattleScriptExecute(BattleScript_HurtByTheSeaOfFire); @@ -3052,7 +3105,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) case 2: if ((gBattleTypeFlags & BATTLE_TYPE_ARENA) && gBattleStruct->arenaTurnCounter == 2 - && gBattleMons[0].hp != 0 && gBattleMons[1].hp != 0) + && IsBattlerAlive(B_POSITION_PLAYER_LEFT) && IsBattlerAlive(B_POSITION_OPPONENT_LEFT)) { s32 i; @@ -3309,7 +3362,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_DISABLED: // disabled move - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE) { gProtectStructs[gBattlerAttacker].usedDisabledMove = TRUE; gBattleScripting.battler = gBattlerAttacker; @@ -3321,7 +3374,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_HEAL_BLOCKED: - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(gBattlerAttacker, gCurrentMove)) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(gBattlerAttacker, gCurrentMove)) { gProtectStructs[gBattlerAttacker].usedHealBlockedMove = TRUE; gBattleScripting.battler = gBattlerAttacker; @@ -3345,7 +3398,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_TAUNTED: // taunt - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gBattlerAttacker].tauntTimer && IS_MOVE_STATUS(gCurrentMove)) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].tauntTimer && IS_MOVE_STATUS(gCurrentMove)) { gProtectStructs[gBattlerAttacker].usedTauntedMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); @@ -3356,7 +3409,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_IMPRISONED: // imprisoned - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) { gProtectStructs[gBattlerAttacker].usedImprisonedMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); @@ -3520,7 +3573,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_THROAT_CHOP: - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[gBattlerAttacker].throatChopTimer && gMovesInfo[gCurrentMove].soundMove) + if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].throatChopTimer && gMovesInfo[gCurrentMove].soundMove) { gProtectStructs[gBattlerAttacker].usedThroatChopPreventedMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); @@ -3531,23 +3584,18 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_Z_MOVES: - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] != MOVE_NONE) + if (GetActiveGimmick(gBattlerAttacker) == GIMMICK_Z_MOVE) { // For Z-Mirror Move, so it doesn't play the animation twice. - bool32 alreadyUsed = (gBattleStruct->zmove.used[gBattlerAttacker] == TRUE); + bool32 alreadyUsed = HasTrainerUsedGimmick(gBattlerAttacker, GIMMICK_Z_MOVE); - //attacker has a queued z move - gBattleStruct->zmove.active = TRUE; - gBattleStruct->zmove.activeCategory = gBattleStruct->zmove.categories[gBattlerAttacker]; + // attacker has a queued z move RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_Z_CRYSTAL); - gBattleStruct->zmove.used[gBattlerAttacker] = TRUE; - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsPartnerMonFromSameTrainer(gBattlerAttacker)) - gBattleStruct->zmove.used[BATTLE_PARTNER(gBattlerAttacker)] = TRUE; //if 1v1 double, set partner used flag as well + SetGimmickAsActivated(gBattlerAttacker, GIMMICK_Z_MOVE); gBattleScripting.battler = gBattlerAttacker; - if (gBattleStruct->zmove.activeCategory == DAMAGE_CATEGORY_STATUS) + if (gMovesInfo[gCurrentMove].category == DAMAGE_CATEGORY_STATUS) { - gBattleStruct->zmove.effect = gMovesInfo[gBattleStruct->zmove.baseMoves[gBattlerAttacker]].zMove.effect; if (!alreadyUsed) { BattleScriptPushCursor(); @@ -3612,6 +3660,11 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) { gMultiHitCounter = gMovesInfo[gCurrentMove].strikeCount; PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 3, 0) + + if (gMovesInfo[gCurrentMove].effect == EFFECT_DRAGON_DARTS + && CanTargetPartner(gBattlerAttacker, gBattlerTarget) + && TargetFullyImmuneToCurrMove(gBattlerAttacker, gBattlerTarget)) + gBattlerTarget = BATTLE_PARTNER(gBattlerTarget); } } else if (B_BEAT_UP >= GEN_5 && gMovesInfo[gCurrentMove].effect == EFFECT_BEAT_UP) @@ -3839,6 +3892,7 @@ static const u16 sWeatherFlagsInfo[][3] = [ENUM_WEATHER_HAIL] = {B_WEATHER_HAIL_TEMPORARY, B_WEATHER_HAIL_PERMANENT, HOLD_EFFECT_ICY_ROCK}, [ENUM_WEATHER_STRONG_WINDS] = {B_WEATHER_STRONG_WINDS, B_WEATHER_STRONG_WINDS, HOLD_EFFECT_NONE}, [ENUM_WEATHER_SNOW] = {B_WEATHER_SNOW_TEMPORARY, B_WEATHER_SNOW_PERMANENT, HOLD_EFFECT_ICY_ROCK}, + [ENUM_WEATHER_FOG] = {B_WEATHER_FOG_TEMPORARY, B_WEATHER_FOG_PERMANENT, HOLD_EFFECT_NONE}, }; static void ShouldChangeFormInWeather(u32 battler) @@ -4177,7 +4231,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - else if (B_FOG_TERRAIN == TRUE + else if (B_OVERWORLD_FOG >= GEN_8 && (GetCurrentWeather() == WEATHER_FOG_HORIZONTAL || GetCurrentWeather() == WEATHER_FOG_DIAGONAL) && !(gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)) { @@ -4235,6 +4289,18 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case WEATHER_FOG_DIAGONAL: + case WEATHER_FOG_HORIZONTAL: + if (B_OVERWORLD_FOG == GEN_4) + { + if (!(gBattleWeather & B_WEATHER_FOG)) + { + gBattleWeather = B_WEATHER_FOG; + gBattleScripting.animArg1 = B_ANIM_FOG_CONTINUES; + effect++; + } + break; + } } } if (effect != 0) @@ -4243,7 +4309,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); } break; - case ABILITYEFFECT_ON_SWITCHIN: // 0 + case ABILITYEFFECT_ON_SWITCHIN: gBattleScripting.battler = battler; switch (gLastUsedAbility) { @@ -4415,7 +4481,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!gSpecialStatuses[battler].switchInAbilityDone) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; - gBattlerAttacker = battler; + gBattleScripting.battler = battler; BattleScriptPushCursorAndCallback(BattleScript_FriskActivates); // Try activate effect++; } @@ -4637,6 +4703,14 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_TERAFORM_ZERO: + if (!gSpecialStatuses[battler].switchInAbilityDone + && gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR) + { + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + BattleScriptPushCursorAndCallback(BattleScript_ActivateTeraformZero); + effect++; + } case ABILITY_SCHOOLING: if (gBattleMons[battler].level < 20) break; @@ -4828,10 +4902,22 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_TERA_SHIFT: + if (!gSpecialStatuses[battler].switchInAbilityDone + && gBattleMons[battler].species == SPECIES_TERAPAGOS_NORMAL + && TryBattleFormChange(battler, FORM_CHANGE_BATTLE_SWITCH)) + { + gBattlerAttacker = battler; + gBattleScripting.abilityPopupOverwrite = gLastUsedAbility = ABILITY_TERA_SHIFT; + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeWithStringEnd3); + effect++; + } + break; } break; - case ABILITYEFFECT_ENDTURN: // 1 - if (gBattleMons[battler].hp != 0) + case ABILITYEFFECT_ENDTURN: + if (IsBattlerAlive(battler)) { gBattlerAttacker = battler; switch (gLastUsedAbility) @@ -4872,7 +4958,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_SHED_SKIN: - if ((gBattleMons[battler].status1 & STATUS1_ANY) && (Random() % 3) == 0) + if ((gBattleMons[battler].status1 & STATUS1_ANY) + && (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_SHED_SKIN, 30) : RandomChance(RNG_SHED_SKIN, 1, 3))) { ABILITY_HEAL_MON_STATUS: if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON)) @@ -5021,9 +5108,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } } break; - case ABILITYEFFECT_MOVES_BLOCK: // 2 + case ABILITYEFFECT_MOVES_BLOCK: + case ABILITYEFFECT_WOULD_BLOCK: { u16 moveTarget = GetBattlerMoveTargetType(battler, move); + const u8 * battleScriptBlocksMove = NULL; switch (gLastUsedAbility) { @@ -5067,7 +5156,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; - gBattlescriptCurrInstr = BattleScript_SoundproofProtected; + battleScriptBlocksMove = BattleScript_SoundproofProtected; } else if (effect == 2 || effect == 4) { @@ -5078,11 +5167,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; - gBattlescriptCurrInstr = BattleScript_DazzlingProtected; + battleScriptBlocksMove = BattleScript_DazzlingProtected; } else if (effect == 3) { - gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates; + battleScriptBlocksMove = BattleScript_GoodAsGoldActivates; } else if (GetChosenMovePriority(gBattlerAttacker) > 0 && BlocksPrankster(move, gBattlerAttacker, gBattlerTarget, TRUE) @@ -5091,12 +5180,24 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE) || !(moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY))) CancelMultiTurnMoves(gBattlerAttacker); // Don't cancel moves that can hit two targets bc one target might not be protected gBattleScripting.battler = gBattlerAbility = gBattlerTarget; - gBattlescriptCurrInstr = BattleScript_DarkTypePreventsPrankster; + battleScriptBlocksMove = BattleScript_DarkTypePreventsPrankster; effect = 1; } + if (caseID == ABILITYEFFECT_WOULD_BLOCK) + { + if (effect && gLastUsedAbility != 0xFFFF) + RecordAbilityBattle(battler, gLastUsedAbility); + + return effect; + } + else if (effect) + { + gBattlescriptCurrInstr = battleScriptBlocksMove; + } break; } - case ABILITYEFFECT_ABSORBING: // 3 + case ABILITYEFFECT_ABSORBING: + case ABILITYEFFECT_WOULD_ABSORB: if (move != MOVE_NONE) { u8 statId = 0; @@ -5129,31 +5230,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect = 2, statId = STAT_ATK; break; case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE - && (B_FLASH_FIRE_FROZEN >= GEN_5 || !(gBattleMons[battler].status1 & STATUS1_FREEZE))) - { - if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_BOOST; - if (gProtectStructs[gBattlerAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_FlashFireBoost; - else - gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; - - gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE; - effect = 3; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_NO_BOOST; - if (gProtectStructs[gBattlerAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_FlashFireBoost; - else - gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; - - effect = 3; - } - } + if (moveType == TYPE_FIRE && (B_FLASH_FIRE_FROZEN >= GEN_5 || !(gBattleMons[battler].status1 & STATUS1_FREEZE))) + effect = 3; break; case ABILITY_WELL_BAKED_BODY: if (moveType == TYPE_FIRE) @@ -5168,8 +5246,14 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect = 1; break; } + if (caseID == ABILITYEFFECT_WOULD_ABSORB) + { + if (effect && gLastUsedAbility != 0xFFFF) + RecordAbilityBattle(battler, gLastUsedAbility); - if (effect == 1) // Drain Hp ability. + return effect; + } + else if (effect == 1) // Drain Hp ability. { if (BATTLER_MAX_HP(battler) || (B_HEAL_BLOCKING >= GEN_5 && gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { @@ -5212,6 +5296,26 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); } } + else if (effect == 3) + { + if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_BOOST; + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_NO_BOOST; + if (gProtectStructs[gBattlerAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + } + } if (effect) gMultiHitCounter = 0; // Prevent multi-hit moves from hitting more than once after move has been absorbed. @@ -5334,7 +5438,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? + && !(GetActiveGimmick(gBattlerAttacker) == GIMMICK_DYNAMAX) // TODO: Max Moves don't make contact, useless? && RandomPercentage(RNG_CURSED_BODY, 30)) { gDisableStructs[gBattlerAttacker].disabledMove = gChosenMove; @@ -5376,7 +5480,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && TARGET_TURN_DAMAGED && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker) - && !IsDynamaxed(gBattlerTarget) + && !(GetActiveGimmick(gBattlerTarget) == GIMMICK_DYNAMAX) && !gAbilitiesInfo[gBattleMons[gBattlerAttacker].ability].cantBeSwapped) { if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) @@ -5413,7 +5517,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gMovesInfo[move].power != 0 && TARGET_TURN_DAMAGED && !IS_BATTLER_OF_TYPE(battler, moveType) - && gBattleMons[battler].hp != 0) + && moveType != TYPE_STELLAR + && IsBattlerAlive(battler)) { SET_BATTLER_TYPE(battler, moveType); PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); @@ -5425,7 +5530,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_GOOEY: case ABILITY_TANGLING_HAIR: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && (CompareStat(gBattlerAttacker, STAT_SPEED, MIN_STAT_STAGE, CMP_GREATER_THAN) || GetBattlerAbility(gBattlerAttacker) == ABILITY_MIRROR_ARMOR) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED @@ -5443,7 +5548,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_ROUGH_SKIN: case ABILITY_IRON_BARBS: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS @@ -5460,7 +5565,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_AFTERMATH: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerTarget].hp == 0 + && !IsBattlerAlive(gBattlerTarget) && IsBattlerAlive(gBattlerAttacker) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && IsMoveMakingContact(move, gBattlerAttacker)) @@ -5485,7 +5590,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_INNARDS_OUT: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerTarget].hp == 0 + && !IsBattlerAlive(gBattlerTarget) && IsBattlerAlive(gBattlerAttacker)) { gBattleMoveDamage = gSpecialStatuses[gBattlerTarget].shellBellDmg; @@ -5497,24 +5602,38 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_EFFECT_SPORE: { u32 ability = GetBattlerAbility(gBattlerAttacker); - if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GRASS) + if ((!IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GRASS) || B_POWDER_GRASS < GEN_6) && ability != ABILITY_OVERCOAT && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - i = Random() % 3; - if (i == 0) + u32 poison, paralysis, sleep; + + if (B_ABILITY_TRIGGER_CHANCE >= GEN_5) + { + poison = 9; + paralysis = 19; + } + else + { + poison = 10; + paralysis = 20; + } + sleep = 30; + + i = RandomUniform(RNG_EFFECT_SPORE, 0, B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? 99 : 299); + if (i < poison) goto POISON_POINT; - if (i == 1) + if (i < paralysis) goto STATIC; // Sleep - if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + if (i < sleep + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED && CanBeSlept(gBattlerAttacker, ability) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS - && IsMoveMakingContact(move, gBattlerAttacker) - && (Random() % 3) == 0) + && IsMoveMakingContact(move, gBattlerAttacker)) { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_SLEEP; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); @@ -5526,53 +5645,57 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } } break; - POISON_POINT: case ABILITY_POISON_POINT: - if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 - && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && TARGET_TURN_DAMAGED - && CanBePoisoned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) - && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS - && IsMoveMakingContact(move, gBattlerAttacker) - && RandomWeighted(RNG_POISON_POINT, 2, 1)) + if (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_POISON_POINT, 30) : RandomChance(RNG_POISON_POINT, 1, 3)) { - gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; - PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; - effect++; + POISON_POINT: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && IsBattlerAlive(gBattlerAttacker) + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && CanBePoisoned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS + && IsMoveMakingContact(move, gBattlerAttacker)) + { + gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; + effect++; + } } break; - STATIC: case ABILITY_STATIC: - if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 - && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && TARGET_TURN_DAMAGED - && CanBeParalyzed(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) - && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS - && IsMoveMakingContact(move, gBattlerAttacker) - && RandomWeighted(RNG_STATIC, 2, 1)) + if (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_STATIC, 30) : RandomChance(RNG_STATIC, 1, 3)) { - gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; - PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; - effect++; + STATIC: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && IsBattlerAlive(gBattlerAttacker) + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && TARGET_TURN_DAMAGED + && CanBeParalyzed(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) + && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS + && IsMoveMakingContact(move, gBattlerAttacker)) + { + gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; + effect++; + } } break; case ABILITY_FLAME_BODY: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS && (IsMoveMakingContact(move, gBattlerAttacker)) && TARGET_TURN_DAMAGED && CanBeBurned(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) - && RandomWeighted(RNG_FLAME_BODY, 2, 1)) + && (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3))) { gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); @@ -5584,11 +5707,11 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_CUTE_CHARM: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && gBattleMons[gBattlerTarget].hp != 0 - && RandomWeighted(RNG_CUTE_CHARM, 2, 1) + && IsBattlerAlive(gBattlerTarget) + && (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_CUTE_CHARM, 30) : RandomChance(RNG_CUTE_CHARM, 1, 3)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) && AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget) && GetBattlerAbility(gBattlerAttacker) != ABILITY_OBLIVIOUS @@ -5612,7 +5735,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_COTTON_DOWN: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED) { @@ -5786,7 +5909,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 { case ABILITY_POISON_TOUCH: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_PROTECTIVE_PADS @@ -5802,11 +5925,27 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_TOXIC_CHAIN: + if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && IsBattlerAlive(gBattlerTarget) + && !gProtectStructs[gBattlerAttacker].confusionSelfDmg + && CanBePoisoned(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerTarget)) + && TARGET_TURN_DAMAGED // Need to actually hit the target + && RandomWeighted(RNG_TOXIC_CHAIN, 7, 3)) + { + gBattleScripting.moveEffect = MOVE_EFFECT_TOXIC; + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; + effect++; + } + break; case ABILITY_STENCH: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerTarget].hp != 0 + && IsBattlerAlive(gBattlerTarget) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && RandomWeighted(RNG_STENCH, 9, 1) + && RandomChance(RNG_STENCH, 1, 10) && TARGET_TURN_DAMAGED && !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH)) { @@ -5827,6 +5966,18 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_POISON_PUPPETEER: + if (gBattleMons[gBattlerAttacker].species == SPECIES_PECHARUNT + && gBattleStruct->poisonPuppeteerConfusion == TRUE + && CanBeConfused(gBattlerTarget)) + { + gBattleStruct->poisonPuppeteerConfusion = FALSE; + gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION; + PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; + effect++; + } } break; case ABILITYEFFECT_MOVE_END_OTHER: // Abilities that activate on *another* battler's moveend: Dancer, Soul-Heart, Receiver, Symbiosis @@ -5915,7 +6066,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } } break; - case ABILITYEFFECT_IMMUNITY: // 5 + case ABILITYEFFECT_IMMUNITY: for (battler = 0; battler < gBattlersCount; battler++) { switch (GetBattlerAbility(battler)) @@ -6028,7 +6179,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } } break; - case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 + case ABILITYEFFECT_ATK_SYNCHRONIZE: if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; @@ -6475,7 +6626,7 @@ bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId) { bool32 isBerry = (ItemId_GetPocket(itemId) == POCKET_BERRIES); - if (gBattleMons[battler].hp == 0) + if (!IsBattlerAlive(battler)) return FALSE; if (gBattleScripting.overrideBerryRequirements) return TRUE; @@ -7422,6 +7573,18 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_MIRROR_HERB: effect = TryConsumeMirrorHerb(battler, TRUE); break; + case HOLD_EFFECT_BOOSTER_ENERGY: + if (!(gBattleStruct->boosterEnergyActivates & gBitTable[battler]) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); + gBattleScripting.battler = battler; + gBattleStruct->boosterEnergyActivates |= gBitTable[battler]; + BattleScriptExecute(BattleScript_BoosterEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; } if (effect != 0) { @@ -7677,6 +7840,18 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_MIRROR_HERB: effect = TryConsumeMirrorHerb(battler, TRUE); break; + case HOLD_EFFECT_BOOSTER_ENERGY: + if (!(gBattleStruct->boosterEnergyActivates & gBitTable[battler]) + && (((GetBattlerAbility(battler) == ABILITY_PROTOSYNTHESIS) && !(gBattleWeather & B_WEATHER_SUN)) + || ((GetBattlerAbility(battler) == ABILITY_QUARK_DRIVE) && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)))) + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, GetHighestStatId(battler)); + gBattlerAbility = gBattleScripting.battler = battler; + gBattleStruct->boosterEnergyActivates |= gBitTable[battler]; + BattleScriptExecute(BattleScript_BoosterEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; } if (effect != 0) @@ -7751,7 +7926,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_BLUNDER_POLICY: if (gBattleStruct->blunderPolicy - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && CompareStat(gBattlerAttacker, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN)) { gBattleStruct->blunderPolicy = FALSE; @@ -7772,7 +7947,7 @@ 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 - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { gLastUsedItem = atkItem; @@ -7806,7 +7981,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_THROAT_SPRAY: // Does NOT need to be a damaging move if (gProtectStructs[gBattlerAttacker].targetAffected - && gBattleMons[gBattlerAttacker].hp != 0 + && IsBattlerAlive(gBattlerAttacker) && gMovesInfo[gCurrentMove].soundMove && CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN) && !NoAliveMonsForEitherParty()) // Don't activate if battle will end @@ -7955,6 +8130,18 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_MARANGA_BERRY: // consume and boost sp. defense if used special move effect = DamagedStatBoostBerryEffect(battler, STAT_SPDEF, DAMAGE_CATEGORY_SPECIAL); break; + case HOLD_EFFECT_CURE_STATUS: // only Toxic Chain's interaction with Knock Off + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[battler].status1 & STATUS1_PSN_ANY && !UnnerveOn(battler, gLastUsedItem) && GetBattlerAbility(gBattlerAttacker) == ABILITY_TOXIC_CHAIN && gMovesInfo[gCurrentMove].effect == EFFECT_KNOCK_OFF) + { + gBattleScripting.battler = battler; + gBattleMons[battler].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); + BattleScriptExecute(BattleScript_BerryCurePsnEnd2); + BtlController_EmitSetMonData(battler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); + MarkBattlerForControllerExec(battler); + effect = ITEM_STATUS_CHANGE; + } + break; case HOLD_EFFECT_STICKY_BARB: if (TARGET_TURN_DAMAGED && (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) @@ -8089,10 +8276,6 @@ u32 GetMoveTarget(u16 move, u8 setTarget) else moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, move); - // Special cases - if (move == MOVE_CURSE && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - moveTarget = MOVE_TARGET_USER; - switch (moveTarget) { case MOVE_TARGET_SELECTED: @@ -8347,7 +8530,7 @@ bool32 IsMoveMakingContact(u32 move, u32 battlerAtk) if (!gMovesInfo[move].makesContact) { - if (move == MOVE_SHELL_SIDE_ARM && gBattleStruct->shellSideArmCategory[battlerAtk][gBattlerTarget] == DAMAGE_CATEGORY_PHYSICAL) + if (gMovesInfo[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->shellSideArmCategory[battlerAtk][gBattlerTarget] == DAMAGE_CATEGORY_PHYSICAL) return TRUE; else return FALSE; @@ -8375,7 +8558,7 @@ bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move) } // Z-Moves and Max Moves bypass protection (except Max Guard). - if ((IsMaxMove(move) || gBattleStruct->zmove.active) + if ((IsZMove(move) || IsMaxMove(move)) && (!gProtectStructs[battlerDef].maxGuarded || gMovesInfo[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; @@ -8387,7 +8570,8 @@ bool32 IsBattlerProtected(u32 battlerAtk, u32 battlerDef, u32 move) // 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 - && (gMovesInfo[move].makesContact || (move == MOVE_SHELL_SIDE_ARM && gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] == DAMAGE_CATEGORY_PHYSICAL)) + && (gMovesInfo[move].makesContact + || (gMovesInfo[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->shellSideArmCategory[battlerAtk][battlerDef] == DAMAGE_CATEGORY_PHYSICAL)) && !gProtectStructs[battlerDef].maxGuarded) // Max Guard cannot be bypassed by Unseen Fist return FALSE; else if (gMovesInfo[move].ignoresProtect) @@ -8672,7 +8856,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 u32 basePower = gMovesInfo[move].power; u32 weight, hpFraction, speed; - if (gBattleStruct->zmove.active) + if (GetActiveGimmick(battlerAtk) == GIMMICK_Z_MOVE) return GetZMovePower(gBattleStruct->zmove.baseMoves[battlerAtk]); switch (gMovesInfo[move].effect) @@ -8718,7 +8902,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 if (gMultiHitCounter == 0) // Calc damage with max BP for move consideration basePower *= 6; else - basePower *= (4 - gMultiHitCounter); + basePower *= 1 + gMovesInfo[move].strikeCount - gMultiHitCounter; break; case EFFECT_SPIT_UP: basePower = 100 * gDisableStructs[battlerAtk].stockpileCounter; @@ -8852,7 +9036,7 @@ 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: - if (IsDynamaxed(battlerDef)) + if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX) basePower *= 2; break; case EFFECT_HIDDEN_POWER: @@ -8906,6 +9090,10 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 if (RandomPercentage(RNG_FICKLE_BEAM, 30)) basePower *= 2; break; + case EFFECT_TERA_BLAST: + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA && GetBattlerTeraType(battlerAtk) == TYPE_STELLAR) + basePower = 100; + break; case EFFECT_LAST_RESPECTS: basePower += (basePower * min(100, GetBattlerSideFaintCounter(battlerAtk))); break; @@ -8950,7 +9138,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); break; case EFFECT_SOLAR_BEAM: - if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW))) + if (IsBattlerWeatherAffected(battlerAtk, (B_WEATHER_HAIL | B_WEATHER_SANDSTORM | B_WEATHER_RAIN | B_WEATHER_SNOW | B_WEATHER_FOG))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.5)); break; case EFFECT_STOMPING_TANTRUM: @@ -8987,12 +9175,13 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 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, (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)); + modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.33 : 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)); + modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.33 : 0.5)); // attacker's abilities switch (atkAbility) @@ -9108,7 +9297,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 atkHighestStat = GetHighestStatId(battlerAtk); - if (weather & B_WEATHER_SUN + if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerAtk]) && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } @@ -9116,7 +9305,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_QUARK_DRIVE: { u8 atkHighestStat = GetHighestStatId(battlerAtk); - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN + if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerAtk]) && ((IS_MOVE_PHYSICAL(move) && atkHighestStat == STAT_ATK) || (IS_MOVE_SPECIAL(move) && atkHighestStat == STAT_SPATK))) modifier = uq4_12_multiply(modifier, UQ_4_12(1.3)); } @@ -9186,7 +9375,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_PROTOSYNTHESIS: { u8 defHighestStat = GetHighestStatId(battlerDef); - if (weather & B_WEATHER_SUN + if ((weather & B_WEATHER_SUN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerDef]) && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } @@ -9194,7 +9383,7 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 case ABILITY_QUARK_DRIVE: { u8 defHighestStat = GetHighestStatId(battlerDef); - if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN + if ((gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN || gBattleStruct->boosterEnergyActivates & gBitTable[battlerDef]) && ((IS_MOVE_PHYSICAL(move) && defHighestStat == STAT_DEF) || (IS_MOVE_SPECIAL(move) && defHighestStat == STAT_SPDEF))) modifier = uq4_12_multiply(modifier, UQ_4_12(0.7)); } @@ -9273,6 +9462,19 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(1.1)); break; } + + // Terastallization boosts weak, non-priority, non-multi hit moves after modifiers to 60 BP. + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA + && (moveType == GetBattlerTeraType(battlerAtk) + || (GetBattlerTeraType(battlerAtk) == TYPE_STELLAR && IsTypeStellarBoosted(battlerAtk, moveType))) + && uq4_12_multiply_by_int_half_down(modifier, basePower) < 60 + && gMovesInfo[move].strikeCount < 2 + && gMovesInfo[move].effect != EFFECT_MULTI_HIT + && gMovesInfo[move].priority == 0) + { + return 60; + } + return uq4_12_multiply_by_int_half_down(modifier, basePower); } @@ -9300,12 +9502,20 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m } else if (gMovesInfo[move].effect == EFFECT_BODY_PRESS) { - atkStat = gBattleMons[battlerAtk].defense; - // Edge case: Body Press used during Wonder Room. For some reason, it still uses Defense over Sp.Def, but uses Sp.Def stat changes - if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM) - atkStage = gBattleMons[battlerAtk].statStages[STAT_SPDEF]; + if (IS_MOVE_PHYSICAL(move)) + { + atkStat = gBattleMons[battlerAtk].defense; + // Edge case: Body Press used during Wonder Room. For some reason, it still uses Defense over Sp.Def, but uses Sp.Def stat changes + if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM) + atkStage = gBattleMons[battlerAtk].statStages[STAT_SPDEF]; + else + atkStage = gBattleMons[battlerAtk].statStages[STAT_DEF]; + } else - atkStage = gBattleMons[battlerAtk].statStages[STAT_DEF]; + { + atkStat = gBattleMons[battlerAtk].spDefense; + atkStage = gBattleMons[battlerAtk].statStages[STAT_SPDEF]; + } } else { @@ -9458,11 +9668,11 @@ 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_CHOICE_BAND: - if (IS_MOVE_PHYSICAL(move) && !IsDynamaxed(battlerAtk)) + if (IS_MOVE_PHYSICAL(move) && GetActiveGimmick(battlerAtk) != GIMMICK_DYNAMAX) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; case HOLD_EFFECT_CHOICE_SPECS: - if (IS_MOVE_SPECIAL(move) && !IsDynamaxed(battlerAtk)) + if (IS_MOVE_SPECIAL(move) && GetActiveGimmick(battlerAtk) != GIMMICK_DYNAMAX) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; } @@ -9730,7 +9940,7 @@ static inline uq4_12_t GetGlaiveRushModifier(u32 battlerDef) static inline uq4_12_t GetZMaxMoveAgainstProtectionModifier(u32 battlerDef, u32 move) { - if ((gBattleStruct->zmove.active || IsMaxMove(move)) && IS_BATTLER_PROTECTED(battlerDef)) + if ((IsZMove(move) || IsMaxMove(move)) && IS_BATTLER_PROTECTED(battlerDef)) return UQ_4_12(0.25); return UQ_4_12(1.0); } @@ -9967,11 +10177,14 @@ static inline s32 DoMoveDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, if (randomFactor) { - dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); + dmg *= DMG_ROLL_PERCENT_HI - RandomUniform(RNG_DAMAGE_MODIFIER, 0, DMG_ROLL_PERCENT_HI - DMG_ROLL_PERCENT_LO); dmg /= 100; } - DAMAGE_APPLY_MODIFIER(GetSameTypeAttackBonusModifier(battlerAtk, moveType, move, abilityAtk)); + if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA) + DAMAGE_APPLY_MODIFIER(GetTeraMultiplier(battlerAtk, moveType)); + else + DAMAGE_APPLY_MODIFIER(GetSameTypeAttackBonusModifier(battlerAtk, moveType, move, abilityAtk)); DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); DAMAGE_APPLY_MODIFIER(GetBurnOrFrostBiteModifier(battlerAtk, move, abilityAtk)); DAMAGE_APPLY_MODIFIER(GetZMaxMoveAgainstProtectionModifier(battlerDef, move)); @@ -10025,7 +10238,7 @@ static inline s32 DoFutureSightAttackDamageCalcVars(u32 move, u32 battlerAtk, u3 if (randomFactor) { - dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); + dmg *= DMG_ROLL_PERCENT_HI - RandomUniform(RNG_DAMAGE_MODIFIER, 0, DMG_ROLL_PERCENT_HI - DMG_ROLL_PERCENT_LO); dmg /= 100; } @@ -10122,10 +10335,12 @@ static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 move if (moveType == TYPE_PSYCHIC && defType == TYPE_DARK && gStatuses3[battlerDef] & STATUS3_MIRACLE_EYED && mod == UQ_4_12(0.0)) mod = UQ_4_12(1.0); - if (gMovesInfo[move].effect == EFFECT_FREEZE_DRY && defType == TYPE_WATER) + if (gMovesInfo[move].effect == EFFECT_SUPER_EFFECTIVE_ON_ARG && defType == gMovesInfo[move].argument) mod = UQ_4_12(2.0); if (moveType == TYPE_GROUND && defType == TYPE_FLYING && IsBattlerGrounded(battlerDef) && mod == UQ_4_12(0.0)) mod = UQ_4_12(1.0); + if (moveType == TYPE_STELLAR && GetActiveGimmick(battlerDef) == GIMMICK_TERA) + mod = UQ_4_12(2.0); // B_WEATHER_STRONG_WINDS weakens Super Effective moves against Flying-type Pokémon if (gBattleWeather & B_WEATHER_STRONG_WINDS && WEATHER_HAS_EFFECT) @@ -10134,6 +10349,13 @@ static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 move mod = UQ_4_12(1.0); } + if (gBattleStruct->distortedTypeMatchups & gBitTable[battlerDef] || (gBattleStruct->aiCalcInProgress && ShouldTeraShellDistortTypeMatchups(move, battlerDef))) + { + mod = UQ_4_12(0.5); + if (recordAbilities) + RecordAbilityBattle(battlerDef, GetBattlerAbility(battlerDef)); + } + *modifier = uq4_12_multiply(*modifier, mod); } @@ -10176,12 +10398,12 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(u32 move, u32 mov { u32 illusionSpecies; - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 0), battlerAtk, recordAbilities); - if (GetBattlerType(battlerDef, 1) != GetBattlerType(battlerDef, 0)) - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 1), battlerAtk, recordAbilities); - if (GetBattlerType(battlerDef, 2) != TYPE_MYSTERY && GetBattlerType(battlerDef, 2) != GetBattlerType(battlerDef, 1) - && GetBattlerType(battlerDef, 2) != GetBattlerType(battlerDef, 0)) - MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 2), battlerAtk, recordAbilities); + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 0, FALSE), battlerAtk, recordAbilities); + if (GetBattlerType(battlerDef, 1, FALSE) != GetBattlerType(battlerDef, 0, FALSE)) + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 1, FALSE), battlerAtk, recordAbilities); + if (GetBattlerType(battlerDef, 2, FALSE) != TYPE_MYSTERY && GetBattlerType(battlerDef, 2, FALSE) != GetBattlerType(battlerDef, 1, FALSE) + && GetBattlerType(battlerDef, 2, FALSE) != GetBattlerType(battlerDef, 0, FALSE)) + MulByTypeEffectiveness(&modifier, move, moveType, battlerDef, GetBattlerType(battlerDef, 2, FALSE), battlerAtk, recordAbilities); if (moveType == TYPE_FIRE && gDisableStructs[battlerDef].tarShot) modifier = uq4_12_multiply(modifier, UQ_4_12(2.0)); @@ -10213,7 +10435,7 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(u32 move, u32 mov // Thousand Arrows ignores type modifiers for flying mons if (!IsBattlerGrounded(battlerDef) && (gMovesInfo[move].ignoreTypeIfFlyingAndUngrounded) - && (gBattleMons[battlerDef].type1 == TYPE_FLYING || gBattleMons[battlerDef].type2 == TYPE_FLYING || gBattleMons[battlerDef].type3 == TYPE_FLYING)) + && (GetBattlerType(battlerDef, 0, FALSE) == TYPE_FLYING || GetBattlerType(battlerDef, 1, FALSE) == TYPE_FLYING || GetBattlerType(battlerDef, 2, FALSE) == TYPE_FLYING)) { modifier = UQ_4_12(1.0); } @@ -10292,11 +10514,43 @@ static uq4_12_t GetInverseTypeMultiplier(uq4_12_t multiplier) } } +uq4_12_t GetTypeEffectiveness(struct Pokemon *mon, u8 moveType) +{ + uq4_12_t modifier = UQ_4_12(1.0); + u16 abilityDef = GetMonAbility(mon); + u16 speciesDef = GetMonData(mon, MON_DATA_SPECIES); + u8 type1 = gSpeciesInfo[speciesDef].types[0]; + u8 type2 = gSpeciesInfo[speciesDef].types[1]; + + if (moveType != TYPE_MYSTERY) + { + MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, type1, 0, FALSE); + if (type2 != type1) + MulByTypeEffectiveness(&modifier, MOVE_POUND, moveType, 0, type2, 0, FALSE); + + if ((modifier <= UQ_4_12(1.0) && abilityDef == ABILITY_WONDER_GUARD) + || (moveType == TYPE_FIRE && abilityDef == ABILITY_FLASH_FIRE) + || (moveType == TYPE_GRASS && abilityDef == ABILITY_SAP_SIPPER) + || (moveType == TYPE_GROUND && (abilityDef == ABILITY_LEVITATE + || abilityDef == ABILITY_EARTH_EATER)) + || (moveType == TYPE_WATER && (abilityDef == ABILITY_WATER_ABSORB + || abilityDef == ABILITY_DRY_SKIN + || abilityDef == ABILITY_STORM_DRAIN)) + || (moveType == TYPE_ELECTRIC && (abilityDef == ABILITY_LIGHTNING_ROD // TODO: Add Gen 3/4 config check + || abilityDef == ABILITY_VOLT_ABSORB + || abilityDef == ABILITY_MOTOR_DRIVE))) + { + modifier = UQ_4_12(0.0); + } + } + return modifier; +} + uq4_12_t GetTypeModifier(u32 atkType, u32 defType) { if (B_FLAG_INVERSE_BATTLE != 0 && FlagGet(B_FLAG_INVERSE_BATTLE)) - return GetInverseTypeMultiplier(sTypeEffectivenessTable[atkType][defType]); - return sTypeEffectivenessTable[atkType][defType]; + return GetInverseTypeMultiplier(gTypeEffectivenessTable[atkType][defType]); + return gTypeEffectivenessTable[atkType][defType]; } s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 maxHp) @@ -10390,62 +10644,37 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) bool32 CanMegaEvolve(u32 battler) { - u32 itemId, holdEffect; - struct Pokemon *mon; - u32 battlerPosition = GetBattlerPosition(battler); - u8 partnerPosition = GetBattlerPosition(BATTLE_PARTNER(battler)); - struct MegaEvolutionData *mega = &(((struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]))->mega); - - // Check if Player has a Mega Ring - if ((GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)) - && !CheckBagHasItem(ITEM_MEGA_RING, 1)) - return FALSE; + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); - // Check if trainer already mega evolved a pokemon. - if (mega->alreadyEvolved[battlerPosition]) + // Check if Player has a Mega Ring. + if (!TESTING + && (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_MEGA_RING, 1)) return FALSE; - // Cannot use z move and mega evolve on same turn - if (gBattleStruct->zmove.toBeUsed[battler]) + // Check if Trainer has already Mega Evolved. + if (HasTrainerUsedGimmick(battler, GIMMICK_MEGA)) return FALSE; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && IsPartnerMonFromSameTrainer(battler) - && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battler)]))) + // Check if battler has another gimmick active. + if (GetActiveGimmick(battler) != GIMMICK_NONE) return FALSE; - // Check if mon is currently held by Sky Drop + // Check if battler is currently held by Sky Drop. if (gStatuses3[battler] & STATUS3_SKY_DROPPED) return FALSE; - // Gets mon data. - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; - else - mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; - - itemId = GetMonData(mon, MON_DATA_HELD_ITEM); - - if (itemId == ITEM_ENIGMA_BERRY_E_READER) - holdEffect = gEnigmaBerries[battler].holdEffect; - else - holdEffect = ItemId_GetHoldEffect(itemId); + // Check if battler is holding a Z-Crystal. + if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) + return FALSE; - // Check if there is an entry in the evolution table for regular Mega Evolution. - if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM) != SPECIES_NONE) - { - // Can Mega Evolve via Mega Stone. - if (holdEffect == HOLD_EFFECT_MEGA_STONE) - return TRUE; - } + // Check if there is an entry in the form change table for regular Mega Evolution and battler is holding Mega Stone. + if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM) != SPECIES_NONE && holdEffect == HOLD_EFFECT_MEGA_STONE) + return TRUE; - // Check if there is an entry in the evolution table for Wish Mega Evolution. + // Check if there is an entry in the form change table for Wish Mega Evolution. if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) - { - // Can't Wish Mega Evolve if holding a Z Crystal. - if (holdEffect != HOLD_EFFECT_Z_CRYSTAL) - return TRUE; - } + return TRUE; // No checks passed, the mon CAN'T mega evolve. return FALSE; @@ -10453,58 +10682,51 @@ bool32 CanMegaEvolve(u32 battler) bool32 CanUltraBurst(u32 battler) { - u32 itemId, holdEffect; - struct Pokemon *mon; - u32 battlerPosition = GetBattlerPosition(battler); - u8 partnerPosition = GetBattlerPosition(BATTLE_PARTNER(battler)); - - // Check if Player has a Z Ring - if ((GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)) - && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) - return FALSE; + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); - // Check if trainer already ultra bursted a pokemon. - if (gBattleStruct->burst.alreadyBursted[battlerPosition]) + // Check if Player has a Z-Ring + if (!TESTING && (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT + || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) return FALSE; - // Cannot use z move and ultra burst on same turn - if (gBattleStruct->zmove.toBeUsed[battler]) + // Check if Trainer has already Ultra Bursted. + if (HasTrainerUsedGimmick(battler, GIMMICK_ULTRA_BURST)) return FALSE; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && IsPartnerMonFromSameTrainer(battler) - && (gBattleStruct->burst.alreadyBursted[partnerPosition] || (gBattleStruct->burst.toBurst & gBitTable[BATTLE_PARTNER(battler)]))) + // Check if battler has another gimmick active. + if (GetActiveGimmick(battler) != GIMMICK_NONE) return FALSE; // Check if mon is currently held by Sky Drop if (gStatuses3[battler] & STATUS3_SKY_DROPPED) return FALSE; - // Gets mon data. - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; - else - mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; - - itemId = GetMonData(mon, MON_DATA_HELD_ITEM); - - // Check if there is an entry in the evolution table for Ultra Burst. - if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_ULTRA_BURST) != SPECIES_NONE) - { - if (itemId == ITEM_ENIGMA_BERRY_E_READER) - holdEffect = gEnigmaBerries[battler].holdEffect; - else - holdEffect = ItemId_GetHoldEffect(itemId); - - // Can Ultra Burst via Z Crystal. - if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) - return TRUE; - } + // Check if there is an entry in the form change table for Ultra Burst and battler is holding a Z-Crystal. + if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_ULTRA_BURST) != SPECIES_NONE && holdEffect == HOLD_EFFECT_Z_CRYSTAL) + return TRUE; // No checks passed, the mon CAN'T ultra burst. return FALSE; } +void ActivateMegaEvolution(u32 battler) +{ + gLastUsedItem = gBattleMons[battler].item; + SetActiveGimmick(battler, GIMMICK_MEGA); + if (GetBattleFormChangeTargetSpecies(battler, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) + BattleScriptExecute(BattleScript_WishMegaEvolution); + else + BattleScriptExecute(BattleScript_MegaEvolution); +} + +void ActivateUltraBurst(u32 battler) +{ + gLastUsedItem = gBattleMons[battler].item; + SetActiveGimmick(battler, GIMMICK_ULTRA_BURST); + BattleScriptExecute(BattleScript_UltraBurst); +} + bool32 IsBattlerMegaEvolved(u32 battler) { // While Transform does copy stats and visuals, it shouldn't be counted as true Mega Evolution. @@ -10529,6 +10751,14 @@ bool32 IsBattlerUltraBursted(u32 battler) return (gSpeciesInfo[gBattleMons[battler].species].isUltraBurst); } +bool32 IsBattlerInTeraForm(u32 battler) +{ + // While Transform does copy stats and visuals, it shouldn't be counted as a true Tera Form. + if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + return FALSE; + return (gSpeciesInfo[gBattleMons[battler].species].isTeraForm); +} + // Returns SPECIES_NONE if no form change is possible u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) { @@ -10563,7 +10793,8 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_SWITCH: - targetSpecies = formChanges[i].targetSpecies; + if (formChanges[i].param1 == GetBattlerAbility(battler) || formChanges[i].param1 == ABILITY_NONE) + targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_HP_PERCENT: if (formChanges[i].param1 == GetBattlerAbility(battler)) @@ -10618,6 +10849,10 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) if (gBattleMons[battler].status1 & formChanges[i].param1) targetSpecies = formChanges[i].targetSpecies; break; + case FORM_CHANGE_BATTLE_TERASTALLIZATION: + if (GetBattlerTeraType(battler) == formChanges[i].param1) + targetSpecies = formChanges[i].targetSpecies; + break; } } } @@ -10633,7 +10868,7 @@ bool32 CanBattlerFormChange(u32 battler, u16 method) && B_TRANSFORM_FORM_CHANGES >= GEN_5) return FALSE; // Mega Evolved and Ultra Bursted Pokémon should always revert to normal upon fainting or ending the battle. - if ((IsBattlerMegaEvolved(battler) || IsBattlerUltraBursted(battler)) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) + if ((IsBattlerMegaEvolved(battler) || IsBattlerUltraBursted(battler) || IsBattlerInTeraForm(battler)) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) return TRUE; else if (IsBattlerPrimalReverted(battler) && (method == FORM_CHANGE_END_BATTLE)) return TRUE; @@ -10673,7 +10908,7 @@ bool32 TryBattleFormChange(u32 battler, u32 method) bool32 restoreSpecies = FALSE; // Mega Evolved and Ultra Bursted Pokémon should always revert to normal upon fainting or ending the battle, so no need to add it to the form change tables. - if ((IsBattlerMegaEvolved(battler) || IsBattlerUltraBursted(battler)) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) + if ((IsBattlerMegaEvolved(battler) || IsBattlerUltraBursted(battler) || IsBattlerInTeraForm(battler)) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_END_BATTLE)) restoreSpecies = TRUE; // Unlike Megas, Primal Reversion isn't canceled on fainting. @@ -10704,8 +10939,8 @@ bool32 TryBattleFormChange(u32 battler, u32 method) bool32 DoBattlersShareType(u32 battler1, u32 battler2) { s32 i; - u8 types1[3] = {GetBattlerType(battler1, 0), GetBattlerType(battler1, 1), GetBattlerType(battler1, 2)}; - u8 types2[3] = {GetBattlerType(battler2, 0), GetBattlerType(battler2, 1), GetBattlerType(battler2, 2)}; + u8 types1[3] = {GetBattlerType(battler1, 0, FALSE), GetBattlerType(battler1, 1, FALSE), GetBattlerType(battler1, 2, FALSE)}; + u8 types2[3] = {GetBattlerType(battler2, 0, FALSE), GetBattlerType(battler2, 1, FALSE), GetBattlerType(battler2, 2, FALSE)}; if (types1[2] == TYPE_MYSTERY) types1[2] = types1[0]; @@ -10733,6 +10968,9 @@ bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId) return FALSE; else if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) return FALSE; + else if (holdEffect == HOLD_EFFECT_BOOSTER_ENERGY + && (gSpeciesInfo[gBattleMons[gBattlerAttacker].species].isParadox || gSpeciesInfo[gBattleMons[gBattlerTarget].species].isParadox)) + return FALSE; else return TRUE; } @@ -10827,15 +11065,20 @@ bool32 ShouldGetStatBadgeBoost(u16 badgeFlag, u32 battler) return FALSE; } +static u32 SwapMoveDamageCategory(u32 move) +{ + if (gMovesInfo[move].category == DAMAGE_CATEGORY_PHYSICAL) + return DAMAGE_CATEGORY_SPECIAL; + return DAMAGE_CATEGORY_PHYSICAL; +} + u8 GetBattleMoveCategory(u32 moveId) { u8 moveType; - if (gBattleStruct != NULL && gBattleStruct->zmove.active && !IS_MOVE_STATUS(moveId)) - return gBattleStruct->zmove.activeCategory; - if (gBattleStruct != NULL && IsMaxMove(moveId)) // TODO: Might be buggy depending on when this is called. - return gBattleStruct->dynamax.activeCategory; - if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky - return DAMAGE_CATEGORY_PHYSICAL; + if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky, Tera Blast + return SwapMoveDamageCategory(moveId); + if (gBattleStruct != NULL && (IsZMove(moveId) || IsMaxMove(moveId))) // TODO: Might be buggy depending on when this is called. + return gBattleStruct->categoryOverride; if (B_PHYSICAL_SPECIAL_SPLIT >= GEN_4) return gMovesInfo[moveId].category; @@ -10845,7 +11088,7 @@ u8 GetBattleMoveCategory(u32 moveId) GET_MOVE_TYPE(moveId, moveType); else moveType = gMovesInfo[moveId].type; - return moveType < TYPE_MYSTERY ? DAMAGE_CATEGORY_PHYSICAL : DAMAGE_CATEGORY_SPECIAL; + return gTypesInfo[moveType].damageCategory; } static bool32 TryRemoveScreens(u32 battler) @@ -10886,7 +11129,7 @@ static bool32 IsUnnerveAbilityOnOpposingSide(u32 battler) return FALSE; } -// Photon geyser & light that burns the sky +// Photon Geyser, Light That Burns the Sky, Tera Blast u8 GetCategoryBasedOnStats(u32 battler) { u32 attack = gBattleMons[battler].attack; @@ -10975,15 +11218,22 @@ void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast) void TryRestoreHeldItems(void) { u32 i; - u16 lostItem = ITEM_NONE; + bool32 returnNPCItems = B_RETURN_STOLEN_NPC_ITEMS >= GEN_5 && gBattleTypeFlags & BATTLE_TYPE_TRAINER; for (i = 0; i < PARTY_SIZE; i++) { - if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9 || gBattleStruct->itemLost[B_SIDE_PLAYER][i].stolen) + // Check if held items should be restored after battle based on generation + if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9 || gBattleStruct->itemLost[B_SIDE_PLAYER][i].stolen || returnNPCItems) { - lostItem = gBattleStruct->itemLost[B_SIDE_PLAYER][i].originalItem; - if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES) - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &lostItem); // Restore stolen non-berry items + u16 lostItem = gBattleStruct->itemLost[B_SIDE_PLAYER][i].originalItem; + + // Check if the lost item is a berry and the mon is not holding it + if (ItemId_GetPocket(lostItem) == POCKET_BERRIES && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) != lostItem) + lostItem = ITEM_NONE; + + // Check if the lost item should be restored + if ((lostItem != ITEM_NONE || returnNPCItems) && ItemId_GetPocket(lostItem) != POCKET_BERRIES) + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &lostItem); } } } @@ -11197,11 +11447,17 @@ bool32 IsBattlerWeatherAffected(u32 battler, u32 weatherFlags) // Possible return values are defined in battle.h following MOVE_TARGET_SELECTED u32 GetBattlerMoveTargetType(u32 battler, u32 move) { - if (gMovesInfo[move].effect == EFFECT_EXPANDING_FORCE + if (move == MOVE_CURSE + && !IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + return MOVE_TARGET_USER; + else if (gMovesInfo[move].effect == EFFECT_EXPANDING_FORCE && IsBattlerTerrainAffected(battler, STATUS_FIELD_PSYCHIC_TERRAIN)) return MOVE_TARGET_BOTH; - else - return gMovesInfo[move].target; + else if (gMovesInfo[move].effect == EFFECT_TERA_STARSTORM + && gBattleMons[battler].species == SPECIES_TERAPAGOS_STELLAR) + return MOVE_TARGET_BOTH; + + return gMovesInfo[move].target; } bool32 CanTargetBattler(u32 battlerAtk, u32 battlerDef, u16 move) @@ -11210,7 +11466,7 @@ 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) + if ((GetActiveGimmick(battlerAtk) == GIMMICK_DYNAMAX || IsGimmickSelected(battlerAtk, GIMMICK_DYNAMAX)) && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)) return FALSE; return TRUE; @@ -11249,7 +11505,7 @@ void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon) void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); - if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) + if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && gChosenActionByBattler[battler] != B_ACTION_SWITCH) ApplyDynamaxHPMultiplier(battler, mon); CopyMonLevelAndBaseStatsToBattleMon(battler, mon); CopyMonAbilityAndTypesToBattleMon(battler, mon); @@ -11444,17 +11700,23 @@ bool8 IsMonBannedFromSkyBattles(u16 species) } } -u8 GetBattlerType(u32 battler, u8 typeIndex) +u8 GetBattlerType(u32 battler, u8 typeIndex, bool32 ignoreTera) { + u32 teraType = GetBattlerTeraType(battler); u16 types[3] = {0}; types[0] = gBattleMons[battler].type1; types[1] = gBattleMons[battler].type2; types[2] = gBattleMons[battler].type3; + // Handle Terastallization + if (GetActiveGimmick(battler) == GIMMICK_TERA && teraType != TYPE_STELLAR && !ignoreTera) + return GetBattlerTeraType(battler); + // Handle Roost's Flying-type suppression if (typeIndex == 0 || typeIndex == 1) { - if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST) + if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST + && GetActiveGimmick(battler) != GIMMICK_TERA) { if (types[0] == TYPE_FLYING && types[1] == TYPE_FLYING) return B_ROOST_PURE_FLYING >= GEN_5 ? TYPE_NORMAL : TYPE_MYSTERY; @@ -11469,6 +11731,8 @@ u8 GetBattlerType(u32 battler, u8 typeIndex) void RemoveBattlerType(u32 battler, u8 type) { u32 i; + if (GetActiveGimmick(battler) == GIMMICK_TERA) // don't remove type if Terastallized + return; for (i = 0; i < 3; i++) { if (*(u8 *)(&gBattleMons[battler].type1 + i) == type) @@ -11525,3 +11789,27 @@ void SetShellSideArmCategory(void) } } } + +bool32 CanTargetPartner(u32 battlerAtk, u32 battlerDef) +{ + return (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && IsBattlerAlive(BATTLE_PARTNER(battlerDef)) + && battlerDef != BATTLE_PARTNER(battlerAtk)); +} + +static inline bool32 DoesCurrentTargetHaveAbilityImmunity(void) +{ + return (AbilityBattleEffects(ABILITYEFFECT_WOULD_BLOCK, gBattlerTarget, 0, 0, 0) + || AbilityBattleEffects(ABILITYEFFECT_WOULD_ABSORB, gBattlerTarget, 0, 0, 0)); +} + +bool32 TargetFullyImmuneToCurrMove(u32 BattlerAtk, u32 battlerDef) +{ + u32 moveType = 0; + GET_MOVE_TYPE(gCurrentMove, moveType); + + return ((CalcTypeEffectivenessMultiplier(gCurrentMove, moveType, BattlerAtk, battlerDef, GetBattlerAbility(battlerDef), FALSE) == UQ_4_12(0.0)) + || IsBattlerProtected(BattlerAtk, battlerDef, gCurrentMove) + || IsSemiInvulnerable(battlerDef, gCurrentMove) + || DoesCurrentTargetHaveAbilityImmunity()); +} diff --git a/src/battle_z_move.c b/src/battle_z_move.c index 203185cfdc85..c000c3580851 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -45,12 +45,8 @@ #define STAT_STAGE(battler, stat) (gBattleMons[battler].statStages[stat - 1]) // Function Declarations -static void SpriteCB_ZMoveTrigger(struct Sprite *sprite); -static u16 GetSignatureZMove(u16 move, u16 species, u16 item); 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 void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler); // Const Data @@ -108,260 +104,130 @@ static const u8 sText_RecoverHP[] = _("Recover HP"); static const u8 sText_HealAllyHP[] = _("Heal Replacement HP"); static const u8 sText_PowerColon[] = _("Power: "); -static const u32 sZMoveTriggerGfx[] = INCBIN_U32("graphics/battle_interface/z_move_trigger.4bpp.lz"); -static const u16 sZMoveTriggerPal[] = INCBIN_U16("graphics/battle_interface/z_move_trigger.gbapal"); +// Functions +bool32 IsZMove(u32 move) +{ + return move >= FIRST_Z_MOVE && move <= LAST_Z_MOVE; +} -static const struct CompressedSpriteSheet sSpriteSheet_ZMoveTrigger = { - sZMoveTriggerGfx, (32 * 32) / 2, TAG_ZMOVE_TRIGGER_TILE -}; +bool32 CanUseZMove(u32 battler) +{ + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); -static const struct SpritePalette sSpritePalette_ZMoveTrigger = { - sZMoveTriggerPal, TAG_ZMOVE_TRIGGER_PAL -}; + // Check if Player has Z-Power Ring. + if (!TESTING && (battler == B_POSITION_PLAYER_LEFT + || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && battler == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) + return FALSE; -static const struct OamData sOamData_ZMoveTrigger = -{ - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .shape = SPRITE_SHAPE(32x32), - .size = SPRITE_SIZE(32x32), - .priority = 1, -}; + // Add '| BATTLE_TYPE_FRONTIER' to below if issues occur + if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL)) + return FALSE; -static const struct SpriteTemplate sSpriteTemplate_ZMoveTrigger = -{ - .tileTag = TAG_ZMOVE_TRIGGER_TILE, - .paletteTag = TAG_ZMOVE_TRIGGER_PAL, - .oam = &sOamData_ZMoveTrigger, - .anims = gDummySpriteAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_ZMoveTrigger -}; + // Check if Trainer has already used a Z-Move. + if (HasTrainerUsedGimmick(battler, GIMMICK_Z_MOVE)) + return FALSE; -// Functions -bool8 IsZMove(u16 move) + // Check if battler has another gimmick active. + if (GetActiveGimmick(battler) != GIMMICK_NONE && GetActiveGimmick(battler) != GIMMICK_ULTRA_BURST) + return FALSE; + + // Check if battler isn't holding a Z-Crystal. + if (holdEffect != HOLD_EFFECT_Z_CRYSTAL) + return FALSE; + + // All checks passed! + return TRUE; +} + +u32 GetUsableZMove(u32 battler, u32 move) { - return move >= FIRST_Z_MOVE && move <= LAST_Z_MOVE; + u32 item = gBattleMons[battler].item; + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); + + if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) + { + u16 zMove = GetSignatureZMove(move, gBattleMons[battler].species, item); + if (zMove != MOVE_NONE) + return zMove; // Signature z move exists + + if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gMovesInfo[move].type == ItemId_GetSecondaryId(item)) + return GetTypeBasedZMove(move); + } + + return MOVE_NONE; } -void QueueZMove(u8 battler, u16 baseMove) +void ActivateZMove(u32 battler) { - gBattleStruct->zmove.toBeUsed[battler] = gBattleStruct->zmove.chosenZMove; - gBattleStruct->zmove.baseMoves[battler] = baseMove; - if (gBattleStruct->zmove.chosenZMove == MOVE_LIGHT_THAT_BURNS_THE_SKY) - gBattleStruct->zmove.categories[battler] = GetCategoryBasedOnStats(battler); - else - gBattleStruct->zmove.categories[battler] = gMovesInfo[baseMove].category; + gBattleStruct->zmove.baseMoves[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; + SetActiveGimmick(battler, GIMMICK_Z_MOVE); } -bool32 IsViableZMove(u8 battler, u16 move) +bool32 IsViableZMove(u32 battler, u32 move) { u32 item; - u16 holdEffect; + u32 holdEffect = GetBattlerHoldEffect(battler, FALSE); int moveSlotIndex; item = gBattleMons[battler].item; + if (gBattleStruct->gimmick.usableGimmick[battler] != GIMMICK_Z_MOVE) + return FALSE; + for (moveSlotIndex = 0; moveSlotIndex < MAX_MON_MOVES; moveSlotIndex++) { if (gBattleMons[battler].moves[moveSlotIndex] == move && gBattleMons[battler].pp[moveSlotIndex] == 0) return FALSE; } - if (gBattleStruct->zmove.used[battler]) - return FALSE; - - // Add '| BATTLE_TYPE_FRONTIER' to below if issues occur - if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL)) - return FALSE; - - if ((GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) + // Check if Player has Z-Power Ring. + if ((battler == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && battler == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) + { return FALSE; + } - if (item == ITEM_ENIGMA_BERRY_E_READER) - return FALSE; // HoldEffect = gEnigmaBerries[battler].holdEffect; - else - holdEffect = ItemId_GetHoldEffect(item); - + // Check for signature Z-Move or type-based Z-Move. if (holdEffect == HOLD_EFFECT_Z_CRYSTAL) { u16 zMove = GetSignatureZMove(move, gBattleMons[battler].species, item); if (zMove != MOVE_NONE) - { - gBattleStruct->zmove.chosenZMove = zMove; // Signature z move exists return TRUE; - } - if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gMovesInfo[move].type == ItemId_GetSecondaryId(item)) - { - gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battler); + if (move != MOVE_NONE && gMovesInfo[move].type == ItemId_GetSecondaryId(item)) return TRUE; - } } return FALSE; } -void GetUsableZMoves(u8 battler, u16 *moves) +void AssignUsableZMoves(u32 battler, u16 *moves) { u32 i; gBattleStruct->zmove.possibleZMoves[battler] = 0; for (i = 0; i < MAX_MON_MOVES; i++) { if (moves[i] != MOVE_NONE && IsViableZMove(battler, moves[i])) - gBattleStruct->zmove.possibleZMoves[battler] |= (1 << i); + gBattleStruct->zmove.possibleZMoves[battler] |= gBitTable[i]; } } -bool32 IsZMoveUsable(u8 battler, u16 moveIndex) -{ - if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsPartnerMonFromSameTrainer(battler) && gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(battler)] != MOVE_NONE) - return FALSE; // Player's other mon has a z move queued up already - if (gBattleStruct->zmove.possibleZMoves[battler] & (1 << moveIndex)) - return TRUE; - return FALSE; -} - -bool32 TryChangeZIndicator(u8 battler, u8 moveIndex) +bool32 TryChangeZTrigger(u32 battler, u32 moveIndex) { - bool32 viableZMove = IsZMoveUsable(battler, moveIndex); + bool32 viableZMove = (gBattleStruct->zmove.possibleZMoves[battler] & gBitTable[moveIndex]) != 0; if (gBattleStruct->zmove.viable && !viableZMove) - HideZMoveTriggerSprite(); // Was a viable z move, now is not -> slide out + HideGimmickTriggerSprite(); // 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) -#define SINGLES_Z_TRIGGER_POS_X_PRIORITY (29) -#define SINGLES_Z_TRIGGER_POS_X_SLIDE (15) -#define SINGLES_Z_TRIGGER_POS_Y_DIFF (-10) - -#define DOUBLES_Z_TRIGGER_POS_X_OPTIMAL SINGLES_Z_TRIGGER_POS_X_OPTIMAL -#define DOUBLES_Z_TRIGGER_POS_X_PRIORITY SINGLES_Z_TRIGGER_POS_X_PRIORITY -#define DOUBLES_Z_TRIGGER_POS_X_SLIDE SINGLES_Z_TRIGGER_POS_X_SLIDE -#define DOUBLES_Z_TRIGGER_POS_Y_DIFF (-4) - -#define tBattler data[0] -#define tHide data[1] - -void CreateZMoveTriggerSprite(u8 battler, bool8 viable) -{ - s16 x, y; + CreateGimmickTriggerSprite(battler); // Was not a viable z move, now is -> slide back in - LoadSpritePalette(&sSpritePalette_ZMoveTrigger); - if (GetSpriteTileStartByTag(TAG_ZMOVE_TRIGGER_TILE) == 0xFFFF) - LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_ZMoveTrigger); + gBattleStruct->zmove.viable = viableZMove; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - x = gSprites[gHealthboxSpriteIds[battler]].x - DOUBLES_Z_TRIGGER_POS_X_SLIDE; - y = gSprites[gHealthboxSpriteIds[battler]].y - DOUBLES_Z_TRIGGER_POS_Y_DIFF; - } - else - { - x = gSprites[gHealthboxSpriteIds[battler]].x - SINGLES_Z_TRIGGER_POS_X_SLIDE; - y = gSprites[gHealthboxSpriteIds[battler]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF; - } - - if (gBattleStruct->zmove.triggerSpriteId == 0xFF) - gBattleStruct->zmove.triggerSpriteId = CreateSprite(&sSpriteTemplate_ZMoveTrigger, x, y, 0); - - gSprites[gBattleStruct->zmove.triggerSpriteId].tBattler = battler; - gSprites[gBattleStruct->zmove.triggerSpriteId].tHide = (viable == TRUE) ? FALSE : TRUE; -} - -static void SpriteCB_ZMoveTrigger(struct Sprite *sprite) -{ - s32 xSlide, xPriority, xOptimal; - s32 yDiff; - - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - xSlide = DOUBLES_Z_TRIGGER_POS_X_SLIDE; - xPriority = DOUBLES_Z_TRIGGER_POS_X_PRIORITY; - xOptimal = DOUBLES_Z_TRIGGER_POS_X_OPTIMAL; - yDiff = DOUBLES_Z_TRIGGER_POS_Y_DIFF; - } - else - { - xSlide = SINGLES_Z_TRIGGER_POS_X_SLIDE; - xPriority = SINGLES_Z_TRIGGER_POS_X_PRIORITY; - xOptimal = SINGLES_Z_TRIGGER_POS_X_OPTIMAL; - yDiff = SINGLES_Z_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) - DestroyZMoveTriggerSprite(); - } - else - { - if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xOptimal) - { - sprite->x--; - 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 IsZMoveTriggerSpriteActive(void) -{ - if (GetSpriteTileStartByTag(TAG_ZMOVE_TRIGGER_TILE) == 0xFFFF) - return FALSE; - else if (IndexOfSpritePaletteTag(TAG_ZMOVE_TRIGGER_PAL) != 0xFF) - return TRUE; - else - return FALSE; -} - -void HideZMoveTriggerSprite(void) -{ - struct Sprite *sprite; - gBattleStruct->zmove.viable = FALSE; - if (gBattleStruct->zmove.triggerSpriteId >= MAX_SPRITES) - return; - sprite = &gSprites[gBattleStruct->zmove.triggerSpriteId]; - sprite->tHide = TRUE; -} - -static void ShowZMoveTriggerSprite(u8 battler) -{ - gBattleStruct->zmove.viable = TRUE; - CreateZMoveTriggerSprite(battler, TRUE); -} - -void DestroyZMoveTriggerSprite(void) -{ - FreeSpritePaletteByTag(TAG_ZMOVE_TRIGGER_PAL); - FreeSpriteTilesByTag(TAG_ZMOVE_TRIGGER_TILE); - if (gBattleStruct->zmove.triggerSpriteId != 0xFF) - DestroySprite(&gSprites[gBattleStruct->zmove.triggerSpriteId]); - - gBattleStruct->zmove.triggerSpriteId = 0xFF; + return viableZMove; } -static u16 GetSignatureZMove(u16 move, u16 species, u16 item) +u32 GetSignatureZMove(u32 move, u32 species, u32 item) { u32 i; @@ -375,13 +241,17 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item) return MOVE_NONE; } -u16 GetTypeBasedZMove(u16 move, u8 battler) +u32 GetTypeBasedZMove(u32 move) { - u8 moveType = gMovesInfo[move].type; + u32 moveType = gMovesInfo[move].type; if (moveType >= NUMBER_OF_MON_TYPES) moveType = TYPE_MYSTERY; + // Z-Weather Ball changes types, however Revelation Dance, -ate ability affected moves, and Hidden Power do not + if (gBattleStruct->dynamicMoveType && gMovesInfo[move].effect == EFFECT_WEATHER_BALL) + moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; + // Get Z-Move from type if (gTypesInfo[moveType].zMove == MOVE_NONE) // failsafe return gTypesInfo[0].zMove; @@ -544,7 +414,7 @@ static void ZMoveSelectionDisplayPpNumber(u32 battler) static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler) { - u8 *txtPtr; + u8 *txtPtr, *end; u8 zMoveType; GET_MOVE_TYPE(zMove, zMoveType); @@ -554,7 +424,8 @@ static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler) *(txtPtr)++ = EXT_CTRL_CODE_FONT; *(txtPtr)++ = FONT_NORMAL; - StringCopy(txtPtr, gTypesInfo[zMoveType].name); + end = StringCopy(txtPtr, gTypesInfo[zMoveType].name); + PrependFontIdToFit(txtPtr, end, FONT_NORMAL, WindowWidthPx(B_WIN_MOVE_TYPE) - 25); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } @@ -564,20 +435,20 @@ static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler) void SetZEffect(void) { u32 i; + u32 effect = gMovesInfo[gBattleStruct->zmove.baseMoves[gBattlerAttacker]].zMove.effect; - gBattleStruct->zmove.zStatusActive = TRUE; - if (gBattleStruct->zmove.effect == Z_EFFECT_CURSE) + if (effect == Z_EFFECT_CURSE) { if (IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - gBattleStruct->zmove.effect = Z_EFFECT_RECOVER_HP; + effect = Z_EFFECT_RECOVER_HP; else - gBattleStruct->zmove.effect = Z_EFFECT_ATK_UP_1; + effect = Z_EFFECT_ATK_UP_1; } gBattleScripting.savedStatChanger = gBattleScripting.statChanger; // Save used move's stat changer (e.g. for Z-Growl) gBattleScripting.battler = gBattlerAttacker; - switch (gBattleStruct->zmove.effect) + switch (effect) { case Z_EFFECT_RESET_STATS: for (i = 0; i < NUM_BATTLE_STATS - 1; i++) @@ -590,22 +461,27 @@ void SetZEffect(void) gBattlescriptCurrInstr = BattleScript_ZEffectPrintString; break; case Z_EFFECT_ALL_STATS_UP_1: - if (!AreStatsMaxed(gBattlerAttacker, STAT_SPDEF)) + { + bool32 canBoost = FALSE; + for (i = STAT_ATK; i < NUM_STATS; i++) // Doesn't increase Acc or Evsn { - for (i = 0; i < STAT_ACC - 1; i++) // Doesn't increase Acc or Evsn + if (STAT_STAGE(gBattlerAttacker, i) < 12) { - if (gBattleMons[gBattlerAttacker].statStages[i] < 12) - ++gBattleMons[gBattlerAttacker].statStages[i]; + canBoost = TRUE; } + } + if (canBoost) + { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_Z_ALL_STATS_UP; BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH); - gBattlescriptCurrInstr = BattleScript_ZEffectPrintString; + gBattlescriptCurrInstr = BattleScript_AllStatsUpZMove; } else { gBattlescriptCurrInstr += Z_EFFECT_BS_LENGTH; } break; + } case Z_EFFECT_BOOST_CRITS: if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY_ANY)) { @@ -646,17 +522,17 @@ void SetZEffect(void) gBattlescriptCurrInstr = BattleScript_ZEffectPrintString; break; case Z_EFFECT_ATK_UP_1 ... Z_EFFECT_EVSN_UP_1: - SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE); + SET_STATCHANGER(effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE); BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH); gBattlescriptCurrInstr = BattleScript_StatUpZMove; break; case Z_EFFECT_ATK_UP_2 ... Z_EFFECT_EVSN_UP_2: - SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_2 + 1, 2, FALSE); + SET_STATCHANGER(effect - Z_EFFECT_ATK_UP_2 + 1, 2, FALSE); BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH); gBattlescriptCurrInstr = BattleScript_StatUpZMove; break; case Z_EFFECT_ATK_UP_3 ... Z_EFFECT_EVSN_UP_3: - SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_3 + 1, 3, FALSE); + SET_STATCHANGER(effect - Z_EFFECT_ATK_UP_3 + 1, 3, FALSE); BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH); gBattlescriptCurrInstr = BattleScript_StatUpZMove; break; @@ -664,22 +540,9 @@ void SetZEffect(void) gBattlescriptCurrInstr += Z_EFFECT_BS_LENGTH; break; } - - gBattleStruct->zmove.zStatusActive = FALSE; -} - -static bool32 AreStatsMaxed(u8 battler, u8 n) -{ - u32 i; - for (i = STAT_ATK; i <= n; i++) - { - if (STAT_STAGE(battler, i) < MAX_STAT_STAGE) - return FALSE; - } - return TRUE; } -u16 GetZMovePower(u16 move) +u32 GetZMovePower(u32 move) { if (gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS) return 0; diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 7863f3cc116c..ab0f610fd705 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -1,5 +1,6 @@ #include "global.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_camera.h" #include "field_effect.h" #include "script.h" @@ -214,6 +215,7 @@ static void DoBrailleRegirockEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); UnlockPlayerFieldControls(); + UnfreezeObjectEvents(); } bool8 ShouldDoBrailleRegisteelEffect(void) @@ -253,6 +255,7 @@ static void DoBrailleRegisteelEffect(void) PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); UnlockPlayerFieldControls(); + UnfreezeObjectEvents(); } // theory: another commented out DoBrailleWait and Task_BrailleWait. diff --git a/src/cable_car.c b/src/cable_car.c index 8a666a536e46..347f4e87e85f 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -790,12 +790,12 @@ static void CreateCableCarSprites(void) u8 spriteId; u8 i; - u8 playerGraphicsIds[2] = { + u16 playerGraphicsIds[2] = { [MALE] = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, [FEMALE] = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL }; u16 rval = Random(); - u8 hikerGraphicsIds[4] = { + u16 hikerGraphicsIds[4] = { OBJ_EVENT_GFX_HIKER, OBJ_EVENT_GFX_CAMPER, OBJ_EVENT_GFX_PICNICKER, @@ -1058,4 +1058,3 @@ static void InitGroundTilemapData(bool8 goingDown) sCableCar->groundTimer = 0; } - diff --git a/src/clock.c b/src/clock.c index 825ccc4448bb..7061f96b7f59 100644 --- a/src/clock.c +++ b/src/clock.c @@ -54,6 +54,7 @@ static void UpdatePerDay(struct Time *localTime) UpdateFrontierGambler(daysSince); SetShoalItemFlag(daysSince); SetRandomLotteryNumber(daysSince); + UpdateDaysPassedSinceFormChange(daysSince); *days = localTime->days; } } diff --git a/src/contest.c b/src/contest.c index f0d0d527ed37..be8bb3e92b3a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1085,6 +1085,18 @@ static const s8 sContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGO } }; +static void CopyNicknameToFit(u8 *dest, u32 contestant) +{ + u8 *end = StringCopy(dest, gContestMons[contestant].nickname); + WrapFontIdToFit(dest, end, FONT_NORMAL, 60); +} + +static void CopyMoveNameToFit(u8 *dest, u32 move) +{ + u8 *end = StringCopy(dest, GetMoveName(move)); + WrapFontIdToFit(dest, end, FONT_NORMAL, 84); +} + static void TaskDummy1(u8 taskId) { } @@ -1636,7 +1648,7 @@ static void Task_ShowMoveSelectScreen(u8 taskId) moveNameBuffer = StringCopy(moveNameBuffer, GetMoveName(move)); FillWindowPixelBuffer(i + MOVE_WINDOWS_START, PIXEL_FILL(0)); - Contest_PrintTextToBg0WindowAt(i + MOVE_WINDOWS_START, moveName, 5, 1, FONT_NARROW); + Contest_PrintTextToBg0WindowAt(i + MOVE_WINDOWS_START, moveName, 5, 1, GetFontIdToFit(moveName, FONT_NARROW, 0, WindowWidthPx(i + MOVE_WINDOWS_START) - 11)); } DrawMoveSelectArrow(eContest.playerMoveChoice); @@ -1899,7 +1911,7 @@ static void Task_DoAppeals(u8 taskId) else { ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); if (eContestantStatus[contestant].currMove < MOVES_COUNT) StringCopy(gStringVar2, GetMoveName(eContestantStatus[contestant].currMove)); else @@ -2165,7 +2177,7 @@ static void Task_DoAppeals(u8 taskId) || eContestantStatus[contestant].turnSkipped) { ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); StringExpandPlaceholders(gStringVar4, gText_MonCantAppealNextTurn); Contest_StartTextPrinter(gStringVar4, TRUE); } @@ -2207,7 +2219,7 @@ static void Task_DoAppeals(u8 taskId) { // Started combo ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); StringExpandPlaceholders(gStringVar4, gText_JudgeLookedAtMonExpectantly); Contest_StartTextPrinter(gStringVar4, TRUE); DoJudgeSpeechBubble(JUDGE_SYMBOL_ONE_EXCLAMATION); @@ -2251,7 +2263,7 @@ static void Task_DoAppeals(u8 taskId) if (eContestantStatus[contestant].repeatedMove) { ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); StringExpandPlaceholders(gStringVar4, gText_RepeatedAppeal); Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].tCounter = 0; @@ -2295,7 +2307,7 @@ static void Task_DoAppeals(u8 taskId) if (eContestantStatus[contestant].overrideCategoryExcitementMod) { r3 = 1; - StringCopy(gStringVar3, GetMoveName(eContestantStatus[contestant].currMove)); + CopyMoveNameToFit(gStringVar3, eContestantStatus[contestant].currMove); } else { @@ -2306,7 +2318,7 @@ static void Task_DoAppeals(u8 taskId) r3 = 0; ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); eContest.applauseLevel += r3; if (eContest.applauseLevel < 0) eContest.applauseLevel = 0; @@ -2428,9 +2440,9 @@ static void Task_DoAppeals(u8 taskId) return; case APPEALSTATE_PRINT_CROWD_WATCHES_MSG: ContestClearGeneralTextWindow(); - StringCopy(gStringVar3, gContestMons[eContestExcitement.freezer].nickname); - StringCopy(gStringVar1, gContestMons[contestant].nickname); - StringCopy(gStringVar2, GetMoveName(eContestantStatus[contestant].currMove)); + CopyNicknameToFit(gStringVar3, eContestExcitement.freezer); + CopyNicknameToFit(gStringVar1, contestant); + CopyMoveNameToFit(gStringVar2, eContestantStatus[contestant].currMove); StringExpandPlaceholders(gStringVar4, gText_CrowdContinuesToWatchMon); Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].tState = APPEALSTATE_PRINT_MON_MOVE_IGNORED_MSG; @@ -2455,8 +2467,8 @@ static void Task_DoAppeals(u8 taskId) if (eContestantStatus[contestant].hasJudgesAttention) eContestantStatus[contestant].hasJudgesAttention = FALSE; StartStopFlashJudgeAttentionEye(contestant); - StringCopy(gStringVar1, gContestMons[contestant].nickname); - StringCopy(gStringVar2, GetMoveName(eContestantStatus[contestant].currMove)); + CopyNicknameToFit(gStringVar1, contestant); + CopyMoveNameToFit(gStringVar2, eContestantStatus[contestant].currMove); StringExpandPlaceholders(gStringVar4, gText_MonWasTooNervousToMove); Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].tState = APPEALSTATE_WAIT_TOO_NERVOUS_MSG; @@ -2500,7 +2512,7 @@ static void Task_DoAppeals(u8 taskId) return; case APPEALSTATE_PRINT_SKIP_TURN_MSG: ContestClearGeneralTextWindow(); - StringCopy(gStringVar1, gContestMons[contestant].nickname); + CopyNicknameToFit(gStringVar1, contestant); StringExpandPlaceholders(gStringVar4, gText_MonWasWatchingOthers); Contest_StartTextPrinter(gStringVar4, TRUE); gTasks[taskId].tState = APPEALSTATE_WAIT_SKIP_TURN_MSG; @@ -3133,7 +3145,7 @@ static void PrintContestantMonName(u8 contestant) static void PrintContestantMonNameWithColor(u8 contestant, u8 color) { Contest_CopyStringWithColor(gContestMons[contestant].nickname, color); - Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, 5, 1, FONT_NARROW); + Contest_PrintTextToBg0WindowAt(gContestantTurnOrder[contestant], gDisplayedStringBattle, 5, 1, GetFontIdToFit(gContestMons[contestant].nickname, FONT_NARROW, 0, 50)); } static u16 CalculateContestantRound1Points(u8 who, u8 contestCategory) @@ -5642,7 +5654,7 @@ bool8 SaveContestWinner(u8 rank) gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality; gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species; gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId; - StringCopy(gSaveBlock1Ptr->contestWinners[id].monName, gContestMons[i].nickname); + StringCopyN(gSaveBlock1Ptr->contestWinners[id].monName, gContestMons[i].nickname, VANILLA_POKEMON_NAME_LENGTH); StringCopy(gSaveBlock1Ptr->contestWinners[id].trainerName, gContestMons[i].trainerName); if(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) gSaveBlock1Ptr->contestWinners[id].contestRank = CONTEST_RANK_LINK; @@ -5661,7 +5673,7 @@ bool8 SaveContestWinner(u8 rank) gCurContestWinner.isShiny = gContestMons[i].isShiny; gCurContestWinner.trainerId = gContestMons[i].otId; gCurContestWinner.species = gContestMons[i].species; - StringCopy(gCurContestWinner.monName, gContestMons[i].nickname); + StringCopyN(gCurContestWinner.monName, gContestMons[i].nickname, VANILLA_POKEMON_NAME_LENGTH); StringCopy(gCurContestWinner.trainerName, gContestMons[i].trainerName); gCurContestWinner.contestCategory = captionId; } diff --git a/src/contest_util.c b/src/contest_util.c index 7977f373c165..3938fcd382da 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -130,6 +130,7 @@ static void LoadContestResultsTitleBarTilemaps(void); static u8 GetNumPreliminaryPoints(u8, bool8); static s8 GetNumRound2Points(u8, bool8); static void AddContestTextPrinter(int, u8 *, int); +static void AddContestTextPrinterFitWidth(int, u8 *, int, int); static void AllocContestResults(void); static void FreeContestResults(void); static void LoadAllContestMonIcons(u8, u8); @@ -504,7 +505,7 @@ static void LoadContestMonName(u8 monIndex) str = StringCopy(gDisplayedStringBattle, gText_ColorDarkGray); StringCopy(str, mon->nickname); - AddContestTextPrinter(monIndex, gDisplayedStringBattle, 0); + AddContestTextPrinterFitWidth(monIndex, gDisplayedStringBattle, 0, 49); StringCopy(str, gText_Slash); StringAppend(str, mon->trainerName); AddContestTextPrinter(monIndex, gDisplayedStringBattle, 50); @@ -1916,12 +1917,12 @@ static void FreeContestResults(void) FreeMonSpritesGfx(); } -static void AddContestTextPrinter(int windowId, u8 *str, int x) +static void AddContestTextPrinterFitWidth(int windowId, u8 *str, int x, int widthPx) { struct TextPrinterTemplate textPrinter; textPrinter.currentChar = str; textPrinter.windowId = windowId; - textPrinter.fontId = FONT_NARROW; + textPrinter.fontId = GetFontIdToFit(str, FONT_NARROW, 0, widthPx); textPrinter.x = x; textPrinter.y = 2; textPrinter.currentX = x; @@ -1936,6 +1937,11 @@ static void AddContestTextPrinter(int windowId, u8 *str, int x) PutWindowTilemap(windowId); } +static void AddContestTextPrinter(int windowId, u8 *str, int x) +{ + AddContestTextPrinterFitWidth(windowId, str, x, DISPLAY_WIDTH); +} + void TryEnterContestMon(void) { u8 eligibility = GetContestEntryEligibility(&gPlayerParty[gContestMonPartyIndex]); @@ -2495,28 +2501,28 @@ void LoadLinkContestPlayerPalettes(void) struct Sprite *sprite; static const u8 sContestantLocalIds[CONTESTANT_COUNT] = { 3, 4, 5, 14 }; - gReservedSpritePaletteCount = 12; + // gReservedSpritePaletteCount = 12; + // TODO: Does dynamically allocating link player palettes break link contests? if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { for (i = 0; i < gNumLinkContestPlayers; i++) { objectEventId = GetObjectEventIdByLocalIdAndMap(sContestantLocalIds[i], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); sprite = &gSprites[gObjectEvents[objectEventId].spriteId]; - sprite->oam.paletteNum = 6 + i; version = (u8)gLinkPlayers[i].version; if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_RubySapphireBrendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_BRENDAN); else - LoadPalette(gObjectEventPal_RubySapphireMay, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_RS_MAY); } else { if (gLinkPlayers[i].gender == MALE) - LoadPalette(gObjectEventPal_Brendan, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_BRENDAN); else - LoadPalette(gObjectEventPal_May, OBJ_PLTT_ID(6 + i), PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadObjectEventPalette(OBJ_EVENT_PAL_TAG_MAY); } } } diff --git a/src/data.c b/src/data.c index 3f516d3a7ff9..ccb6b4c62324 100644 --- a/src/data.c +++ b/src/data.c @@ -226,4 +226,10 @@ const union AnimCmd *const sAnims_Trainer[] ={ }; #include "data/trainer_parties.h" + +const struct Trainer gTrainers[] = +{ #include "data/trainers.h" +}; + +#include "data/text/follower_messages.h" diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 0f94e5a30607..371fb61a482d 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1458,6 +1458,9 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {NULL, 0x0, ANIM_TAG_IVY_CUDGEL_FIRE}, {NULL, 0x0, ANIM_TAG_IVY_CUDGEL_ROCK}, {NULL, 0x0, ANIM_TAG_IVY_CUDGEL_WATER}, + {gBattleAnimSpriteGfx_TeraCrystal, 0x800, ANIM_TAG_TERA_CRYSTAL}, + {gBattleAnimSpriteGfx_TeraShatter, 0x0180, ANIM_TAG_TERA_SHATTER}, + {gBattleAnimSpriteGfx_DreepyMissile, 0x200, ANIM_TAG_DREEPY_SHINY}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1917,6 +1920,9 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_IvyCudgelFire, ANIM_TAG_IVY_CUDGEL_FIRE}, {gBattleAnimSpritePal_IvyCudgelRock, ANIM_TAG_IVY_CUDGEL_ROCK}, {gBattleAnimSpritePal_IvyCudgelWater, ANIM_TAG_IVY_CUDGEL_WATER}, + {gBattleAnimSpritePal_TeraCrystal, ANIM_TAG_TERA_CRYSTAL}, + {gBattleAnimSpritePal_TeraShatter, ANIM_TAG_TERA_SHATTER}, + {gBattleAnimSpritePal_DreepyMissileShiny, ANIM_TAG_DREEPY_SHINY}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index 1147ab908089..e83a25e82998 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1,6177 +1,6177 @@ -const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = +const struct TrainerMon gBattleFrontierMons[NUM_FRONTIER_MONS] = { [FRONTIER_MON_SUNKERN] = { .species = SPECIES_SUNKERN, .moves = {MOVE_MEGA_DRAIN, MOVE_HELPING_HAND, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_AZURILL] = { .species = SPECIES_AZURILL, .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RASH }, [FRONTIER_MON_CATERPIE] = { .species = SPECIES_CATERPIE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WEEDLE] = { .species = SPECIES_WEEDLE, .moves = {MOVE_POISON_STING, MOVE_STRING_SHOT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WURMPLE] = { .species = SPECIES_WURMPLE, .moves = {MOVE_TACKLE, MOVE_STRING_SHOT, MOVE_POISON_STING, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_CONFUSION, MOVE_IMPRISON, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_FLAIL, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_FEEBAS] = { .species = SPECIES_FEEBAS, .moves = {MOVE_FLAIL, MOVE_MIRROR_COAT, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_METAPOD] = { .species = SPECIES_METAPOD, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_KAKUNA] = { .species = SPECIES_KAKUNA, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_PICHU] = { .species = SPECIES_PICHU, .moves = {MOVE_SWEET_KISS, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_SHOCK_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RASH }, [FRONTIER_MON_SILCOON] = { .species = SPECIES_SILCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_CASCOON] = { .species = SPECIES_CASCOON, .moves = {MOVE_HARDEN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [FRONTIER_MON_IGGLYBUFF] = { .species = SPECIES_IGGLYBUFF, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WOOPER] = { .species = SPECIES_WOOPER, .moves = {MOVE_YAWN, MOVE_DIG, MOVE_WATER_PULSE, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TYROGUE] = { .species = SPECIES_TYROGUE, .moves = {MOVE_MACH_PUNCH, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SENTRET] = { .species = SPECIES_SENTRET, .moves = {MOVE_QUICK_ATTACK, MOVE_FOLLOW_ME, MOVE_HELPING_HAND, MOVE_ASSIST}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CLEFFA] = { .species = SPECIES_CLEFFA, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_ATTRACT, MOVE_METRONOME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_BULLET_SEED, MOVE_BIDE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_SUNNY_DAY, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_CRUNCH, MOVE_SWAGGER, MOVE_ROAR, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHEDINJA] = { .species = SPECIES_SHEDINJA, .moves = {MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_SILVER_WIND, MOVE_GRUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_FAKE_OUT, MOVE_SEISMIC_TOSS, MOVE_DETECT, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_UPROAR, MOVE_SWAGGER, MOVE_BODY_SLAM, MOVE_SMELLING_SALTS}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_HEADBUTT, MOVE_PIN_MISSILE, MOVE_SWIFT, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_ZUBAT] = { .species = SPECIES_ZUBAT, .moves = {MOVE_POISON_FANG, MOVE_WHIRLWIND, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_TOGEPI] = { .species = SPECIES_TOGEPI, .moves = {MOVE_RETURN, MOVE_YAWN, MOVE_WISH, MOVE_SWEET_KISS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SPINARAK] = { .species = SPECIES_SPINARAK, .moves = {MOVE_SIGNAL_BEAM, MOVE_NIGHT_SHADE, MOVE_SPIDER_WEB, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_LIGHT_SCREEN, MOVE_RETURN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_HOPPIP] = { .species = SPECIES_HOPPIP, .moves = {MOVE_MEGA_DRAIN, MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_LAX }, [FRONTIER_MON_SLUGMA] = { .species = SPECIES_SLUGMA, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_YAWN, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_SWINUB] = { .species = SPECIES_SWINUB, .moves = {MOVE_ICY_WIND, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_SMEARGLE] = { .species = SPECIES_SMEARGLE, .moves = {MOVE_EXTREME_SPEED, MOVE_FAKE_OUT, MOVE_QUICK_ATTACK, MOVE_MACH_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PIDGEY] = { .species = SPECIES_PIDGEY, .moves = {MOVE_GUST, MOVE_SAND_ATTACK, MOVE_WHIRLWIND, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_RATTATA] = { .species = SPECIES_RATTATA, .moves = {MOVE_HYPER_FANG, MOVE_PURSUIT, MOVE_QUICK_ATTACK, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WYNAUT] = { .species = SPECIES_WYNAUT, .moves = {MOVE_ENCORE, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_JOLLY }, [FRONTIER_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_SING, MOVE_ATTRACT, MOVE_CHARM, MOVE_DOUBLE_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SPEAROW] = { .species = SPECIES_SPEAROW, .moves = {MOVE_FURY_ATTACK, MOVE_PURSUIT, MOVE_MIRROR_MOVE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOOTHOOT] = { .species = SPECIES_HOOTHOOT, .moves = {MOVE_CONFUSION, MOVE_HYPNOSIS, MOVE_SUPERSONIC, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DIGLETT] = { .species = SPECIES_DIGLETT, .moves = {MOVE_MAGNITUDE, MOVE_SLASH, MOVE_ROCK_TOMB, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_LEDYBA] = { .species = SPECIES_LEDYBA, .moves = {MOVE_PSYBEAM, MOVE_AGILITY, MOVE_BATON_PASS, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_MUD_SLAP, MOVE_DIG, MOVE_TOXIC, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_CALM }, [FRONTIER_MON_SURSKIT] = { .species = SPECIES_SURSKIT, .moves = {MOVE_BUBBLE_BEAM, MOVE_RAIN_DANCE, MOVE_SWEET_SCENT, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_JIGGLYPUFF] = { .species = SPECIES_JIGGLYPUFF, .moves = {MOVE_SING, MOVE_WISH, MOVE_MIMIC, MOVE_DOUBLE_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_ENDEAVOR, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_PULSE, MOVE_FLY, MOVE_QUICK_ATTACK, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_NIDORAN_M] = { .species = SPECIES_NIDORAN_M, .moves = {MOVE_DOUBLE_KICK, MOVE_POISON_STING, MOVE_DISABLE, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_NIDORAN_F] = { .species = SPECIES_NIDORAN_F, .moves = {MOVE_CRUNCH, MOVE_DOUBLE_KICK, MOVE_FLATTER, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CONFUSION, MOVE_WILL_O_WISP, MOVE_FUTURE_SIGHT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAREEP] = { .species = SPECIES_MAREEP, .moves = {MOVE_SHOCK_WAVE, MOVE_FLASH, MOVE_REFLECT, MOVE_COTTON_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MEDITITE] = { .species = SPECIES_MEDITITE, .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SLAKOTH] = { .species = SPECIES_SLAKOTH, .moves = {MOVE_YAWN, MOVE_SCRATCH, MOVE_ENCORE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PARAS] = { .species = SPECIES_PARAS, .moves = {MOVE_SPORE, MOVE_LEECH_LIFE, MOVE_SLASH, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_EKANS] = { .species = SPECIES_EKANS, .moves = {MOVE_ACID, MOVE_DIG, MOVE_SCREECH, MOVE_TORMENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DITTO] = { .species = SPECIES_DITTO, .moves = {MOVE_TRANSFORM, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_WATER_PULSE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_MEOWTH] = { .species = SPECIES_MEOWTH, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_SCREECH, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PINECO] = { .species = SPECIES_PINECO, .moves = {MOVE_SELF_DESTRUCT, MOVE_TAKE_DOWN, MOVE_REFLECT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_TOXIC, MOVE_DIG, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_SPHEAL] = { .species = SPECIES_SPHEAL, .moves = {MOVE_ICE_BALL, MOVE_WATER_PULSE, MOVE_HAIL, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HORSEA] = { .species = SPECIES_HORSEA, .moves = {MOVE_WATER_GUN, MOVE_AGILITY, MOVE_ICY_WIND, MOVE_TWISTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_SPORE, MOVE_BULLET_SEED, MOVE_LEECH_SEED, MOVE_HEADBUTT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SHUPPET] = { .species = SPECIES_SHUPPET, .moves = {MOVE_WILL_O_WISP, MOVE_NIGHT_SHADE, MOVE_GRUDGE, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RASH }, [FRONTIER_MON_DUSKULL] = { .species = SPECIES_DUSKULL, .moves = {MOVE_SKILL_SWAP, MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_ROAR, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VULPIX] = { .species = SPECIES_VULPIX, .moves = {MOVE_WILL_O_WISP, MOVE_CONFUSE_RAY, MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PIKACHU] = { .species = SPECIES_PIKACHU, .moves = {MOVE_THUNDER_PUNCH, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIGHT_BALL, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIGHT_BALL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_POLIWAG] = { .species = SPECIES_POLIWAG, .moves = {MOVE_HYPNOSIS, MOVE_ICY_WIND, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_BELLSPROUT] = { .species = SPECIES_BELLSPROUT, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_STUN_SPORE, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_LAX }, [FRONTIER_MON_GEODUDE] = { .species = SPECIES_GEODUDE, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_BLAST, MOVE_STRENGTH, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_DRATINI] = { .species = SPECIES_DRATINI, .moves = {MOVE_OUTRAGE, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SNUBBULL] = { .species = SPECIES_SNUBBULL, .moves = {MOVE_BITE, MOVE_CHARM, MOVE_SWAGGER, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_REMORAID] = { .species = SPECIES_REMORAID, .moves = {MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LARVITAR] = { .species = SPECIES_LARVITAR, .moves = {MOVE_THRASH, MOVE_ROCK_SLIDE, MOVE_DIG, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_PSYBEAM, MOVE_ANCIENT_POWER, MOVE_LIGHT_SCREEN, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SNORUNT] = { .species = SPECIES_SNORUNT, .moves = {MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_LEER, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_BAGON] = { .species = SPECIES_BAGON, .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_BELDUM] = { .species = SPECIES_BELDUM, .moves = {MOVE_TAKE_DOWN, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GULPIN] = { .species = SPECIES_GULPIN, .moves = {MOVE_TOXIC, MOVE_YAWN, MOVE_PAIN_SPLIT, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SERIOUS }, [FRONTIER_MON_VENONAT] = { .species = SPECIES_VENONAT, .moves = {MOVE_PSYBEAM, MOVE_SUPERSONIC, MOVE_STUN_SPORE, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MANKEY] = { .species = SPECIES_MANKEY, .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SCREECH, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_SEISMIC_TOSS, MOVE_REVENGE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHELLDER] = { .species = SPECIES_SHELLDER, .moves = {MOVE_ICICLE_SPEAR, MOVE_SUPERSONIC, MOVE_CLAMP, MOVE_WITHDRAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SMOOCHUM] = { .species = SPECIES_SMOOCHUM, .moves = {MOVE_SWEET_KISS, MOVE_SING, MOVE_MUD_SLAP, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_MAGNITUDE, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CARVANHA] = { .species = SPECIES_CARVANHA, .moves = {MOVE_BITE, MOVE_SCREECH, MOVE_SCARY_FACE, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_CORPHISH] = { .species = SPECIES_CORPHISH, .moves = {MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_CHARMANDER] = { .species = SPECIES_CHARMANDER, .moves = {MOVE_FIRE_SPIN, MOVE_METAL_CLAW, MOVE_SMOKESCREEN, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CYNDAQUIL] = { .species = SPECIES_CYNDAQUIL, .moves = {MOVE_EMBER, MOVE_SWIFT, MOVE_QUICK_ATTACK, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ABRA] = { .species = SPECIES_ABRA, .moves = {MOVE_MIMIC, MOVE_METRONOME, MOVE_FLASH, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_DODUO] = { .species = SPECIES_DODUO, .moves = {MOVE_FURY_ATTACK, MOVE_UPROAR, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_GASTLY] = { .species = SPECIES_GASTLY, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_NIGHT_SHADE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_DREAM_EATER, MOVE_SING, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_TREECKO] = { .species = SPECIES_TREECKO, .moves = {MOVE_BULLET_SEED, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_TORCHIC] = { .species = SPECIES_TORCHIC, .moves = {MOVE_FIRE_SPIN, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MUDKIP] = { .species = SPECIES_MUDKIP, .moves = {MOVE_WHIRLPOOL, MOVE_ENDEAVOR, MOVE_MUD_SPORT, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SQUIRTLE] = { .species = SPECIES_SQUIRTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_WITHDRAW, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TOTODILE] = { .species = SPECIES_TOTODILE, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_SCREECH, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWPOKE] = { .species = SPECIES_SLOWPOKE, .moves = {MOVE_CONFUSION, MOVE_DISABLE, MOVE_WATER_PULSE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_BULBASAUR] = { .species = SPECIES_BULBASAUR, .moves = {MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, MOVE_SLEEP_POWDER, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CHIKORITA] = { .species = SPECIES_CHIKORITA, .moves = {MOVE_SECRET_POWER, MOVE_BULLET_SEED, MOVE_MUD_SLAP, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ODDISH] = { .species = SPECIES_ODDISH, .moves = {MOVE_ACID, MOVE_STUN_SPORE, MOVE_SWEET_SCENT, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PSYDUCK] = { .species = SPECIES_PSYDUCK, .moves = {MOVE_CONFUSION, MOVE_FURY_SWIPES, MOVE_AERIAL_ACE, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_CUBONE] = { .species = SPECIES_CUBONE, .moves = {MOVE_BONE_CLUB, MOVE_HEADBUTT, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_FURY_ATTACK, MOVE_AGILITY, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NATU] = { .species = SPECIES_NATU, .moves = {MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CLEFAIRY] = { .species = SPECIES_CLEFAIRY, .moves = {MOVE_FOLLOW_ME, MOVE_RETURN, MOVE_ENCORE, MOVE_SING}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_SHOCK_WAVE, MOVE_SUPERSONIC, MOVE_METAL_SOUND, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_SEEL] = { .species = SPECIES_SEEL, .moves = {MOVE_AURORA_BEAM, MOVE_DIVE, MOVE_BODY_SLAM, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRIMER] = { .species = SPECIES_GRIMER, .moves = {MOVE_SLUDGE, MOVE_ROCK_TOMB, MOVE_ACID_ARMOR, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KRABBY] = { .species = SPECIES_KRABBY, .moves = {MOVE_CRABHAMMER, MOVE_MUD_SHOT, MOVE_FLAIL, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_EXEGGCUTE] = { .species = SPECIES_EXEGGCUTE, .moves = {MOVE_CONFUSION, MOVE_ANCIENT_POWER, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EEVEE] = { .species = SPECIES_EEVEE, .moves = {MOVE_CHARM, MOVE_ATTRACT, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DROWZEE] = { .species = SPECIES_DROWZEE, .moves = {MOVE_CONFUSION, MOVE_HEADBUTT, MOVE_DISABLE, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_SCREECH, MOVE_ROLLOUT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHINCHOU] = { .species = SPECIES_CHINCHOU, .moves = {MOVE_SPARK, MOVE_DIVE, MOVE_CONFUSE_RAY, MOVE_TAKE_DOWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TEDDIURSA] = { .species = SPECIES_TEDDIURSA, .moves = {MOVE_SECRET_POWER, MOVE_FAKE_TEARS, MOVE_FEINT_ATTACK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_DELIBIRD] = { .species = SPECIES_DELIBIRD, .moves = {MOVE_PRESENT, MOVE_ICE_BALL, MOVE_AERIAL_ACE, MOVE_HAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOUNDOUR] = { .species = SPECIES_HOUNDOUR, .moves = {MOVE_CRUNCH, MOVE_EMBER, MOVE_ROAR, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PHANPY] = { .species = SPECIES_PHANPY, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_ROCK_TOMB, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_SPOINK] = { .species = SPECIES_SPOINK, .moves = {MOVE_PSYWAVE, MOVE_BOUNCE, MOVE_MAGIC_COAT, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ARON] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_METAL_SOUND, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LUVDISC] = { .species = SPECIES_LUVDISC, .moves = {MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_DIVE, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_COTTON_SPORE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_UNOWN] = { .species = SPECIES_UNOWN, .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_KOFFING] = { .species = SPECIES_KOFFING, .moves = {MOVE_SLUDGE, MOVE_SMOKESCREEN, MOVE_TORMENT, MOVE_HAZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_STARYU] = { .species = SPECIES_STARYU, .moves = {MOVE_BUBBLE_BEAM, MOVE_MINIMIZE, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SKIPLOOM] = { .species = SPECIES_SKIPLOOM, .moves = {MOVE_MEGA_DRAIN, MOVE_CONFUSION, MOVE_COTTON_SPORE, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_EXTRASENSORY, MOVE_FAKE_OUT, MOVE_RAZOR_WIND, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_WATER_PULSE, MOVE_FAKE_OUT, MOVE_BRICK_BREAK, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VIBRAVA] = { .species = SPECIES_VIBRAVA, .moves = {MOVE_DRAGON_BREATH, MOVE_DIG, MOVE_SCREECH, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RHYHORN] = { .species = SPECIES_RHYHORN, .moves = {MOVE_ROCK_BLAST, MOVE_DIG, MOVE_SCARY_FACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CLAMPERL] = { .species = SPECIES_CLAMPERL, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_IRON_DEFENSE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_DEEP_SEA_SCALE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_PIDGEOTTO] = { .species = SPECIES_PIDGEOTTO, .moves = {MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK, MOVE_FEATHER_DANCE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GROWLITHE] = { .species = SPECIES_GROWLITHE, .moves = {MOVE_FLAME_WHEEL, MOVE_BITE, MOVE_ROAR, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FARFETCHD] = { .species = SPECIES_FARFETCHD, .moves = {MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEEK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEEK, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_OMANYTE] = { .species = SPECIES_OMANYTE, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ANCIENT_POWER, MOVE_TICKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KABUTO] = { .species = SPECIES_KABUTO, .moves = {MOVE_MEGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_SAND_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LILEEP] = { .species = SPECIES_LILEEP, .moves = {MOVE_ANCIENT_POWER, MOVE_ACID, MOVE_INGRAIN, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ANORITH] = { .species = SPECIES_ANORITH, .moves = {MOVE_METAL_CLAW, MOVE_FURY_CUTTER, MOVE_ANCIENT_POWER, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AIPOM] = { .species = SPECIES_AIPOM, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_ELEKID] = { .species = SPECIES_ELEKID, .moves = {MOVE_THUNDER_PUNCH, MOVE_QUICK_ATTACK, MOVE_SWIFT, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_HOWL, MOVE_ASTONISH, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_NIDORINA] = { .species = SPECIES_NIDORINA, .moves = {MOVE_DOUBLE_KICK, MOVE_BITE, MOVE_AERIAL_ACE, MOVE_FLATTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_NIDORINO] = { .species = SPECIES_NIDORINO, .moves = {MOVE_DOUBLE_KICK, MOVE_WATER_PULSE, MOVE_MUD_SLAP, MOVE_FLATTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_FLAAFFY] = { .species = SPECIES_FLAAFFY, .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COTTON_SPORE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MILD }, [FRONTIER_MON_MAGBY] = { .species = SPECIES_MAGBY, .moves = {MOVE_FIRE_PUNCH, MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_SMOG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NOSEPASS] = { .species = SPECIES_NOSEPASS, .moves = {MOVE_ROCK_SLIDE, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_CORSOLA] = { .species = SPECIES_CORSOLA, .moves = {MOVE_BUBBLE_BEAM, MOVE_MIRROR_COAT, MOVE_ATTRACT, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_MAWILE] = { .species = SPECIES_MAWILE, .moves = {MOVE_CRUNCH, MOVE_FAKE_TEARS, MOVE_IRON_DEFENSE, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_BUTTERFREE] = { .species = SPECIES_BUTTERFREE, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_BEEDRILL] = { .species = SPECIES_BEEDRILL, .moves = {MOVE_TWINEEDLE, MOVE_PURSUIT, MOVE_ENDEAVOR, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_POLIWHIRL] = { .species = SPECIES_POLIWHIRL, .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_SLAP, MOVE_ICY_WIND, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ONIX] = { .species = SPECIES_ONIX, .moves = {MOVE_ROCK_SLIDE, MOVE_BIND, MOVE_DRAGON_BREATH, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_SILVER_WIND, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_SILVER_WIND, MOVE_TOXIC, MOVE_PSYBEAM, MOVE_WHIRLWIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LEDIAN] = { .species = SPECIES_LEDIAN, .moves = {MOVE_COMET_PUNCH, MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_BASHFUL }, [FRONTIER_MON_ARIADOS] = { .species = SPECIES_ARIADOS, .moves = {MOVE_SIGNAL_BEAM, MOVE_SPIDER_WEB, MOVE_NIGHT_SHADE, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_YANMA] = { .species = SPECIES_YANMA, .moves = {MOVE_SIGNAL_BEAM, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DETECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_DELCATTY_1] = { .species = SPECIES_DELCATTY, .moves = {MOVE_SECRET_POWER, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_HEAL_BELL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_SABLEYE_1] = { .species = SPECIES_SABLEYE, .moves = {MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_KNOCK_OFF, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_LICKITUNG_1] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_SLAM, MOVE_BRICK_BREAK, MOVE_LICK, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WEEPINBELL_1] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_RAZOR_LEAF, MOVE_ACID, MOVE_WRAP, MOVE_SWEET_SCENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GRAVELER_1] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MAGNITUDE, MOVE_ROCK_THROW, MOVE_DEFENSE_CURL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GLOOM_1] = { .species = SPECIES_GLOOM, .moves = {MOVE_PETAL_DANCE, MOVE_ACID, MOVE_STUN_SPORE, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PORYGON_1] = { .species = SPECIES_PORYGON, .moves = {MOVE_PSYBEAM, MOVE_ICY_WIND, MOVE_RECYCLE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_KADABRA_1] = { .species = SPECIES_KADABRA, .moves = {MOVE_CONFUSION, MOVE_ROLE_PLAY, MOVE_FUTURE_SIGHT, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_WHIRLPOOL, MOVE_ROAR, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ROSELIA_1] = { .species = SPECIES_ROSELIA, .moves = {MOVE_MAGICAL_LEAF, MOVE_TOXIC, MOVE_GRASS_WHISTLE, MOVE_COTTON_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VOLBEAT_1] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SILVER_WIND, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ILLUMISE_1] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_WISH, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_IVYSAUR_1] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_PETAL_DANCE, MOVE_GROWTH, MOVE_SWEET_SCENT, MOVE_FURY_CUTTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_CHARMELEON_1] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_SLASH, MOVE_FIRE_SPIN, MOVE_SWORDS_DANCE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_WARTORTLE_1] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_WATER_PULSE, MOVE_BITE, MOVE_MUD_SLAP, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PARASECT_1] = { .species = SPECIES_PARASECT, .moves = {MOVE_SLASH, MOVE_PSYBEAM, MOVE_STUN_SPORE, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RASH }, [FRONTIER_MON_MACHOKE_1] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LOW_KICK, MOVE_ROCK_TOMB, MOVE_FORESIGHT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HAUNTER_1] = { .species = SPECIES_HAUNTER, .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_SPITE, MOVE_GRUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RASH }, [FRONTIER_MON_BAYLEEF_1] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_RAZOR_LEAF, MOVE_TOXIC, MOVE_SAFEGUARD, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_QUILAVA_1] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAME_WHEEL, MOVE_FURY_SWIPES, MOVE_SWIFT, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROCONAW_1] = { .species = SPECIES_CROCONAW, .moves = {MOVE_SLASH, MOVE_WATER_PULSE, MOVE_BITE, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TOGETIC_1] = { .species = SPECIES_TOGETIC, .moves = {MOVE_AERIAL_ACE, MOVE_MAGICAL_LEAF, MOVE_WISH, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MURKROW_1] = { .species = SPECIES_MURKROW, .moves = {MOVE_FEINT_ATTACK, MOVE_FLY, MOVE_TORMENT, MOVE_TAUNT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WOBBUFFET_1] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_CHARM, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_QUICK_ATTACK, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MINUN_1] = { .species = SPECIES_MINUN, .moves = {MOVE_SPARK, MOVE_CHARM, MOVE_ENCORE, MOVE_HELPING_HAND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GROVYLE_1] = { .species = SPECIES_GROVYLE, .moves = {MOVE_FURY_CUTTER, MOVE_ENDEAVOR, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_COMBUSKEN_1] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_EMBER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MARSHTOMP_1] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUD_SHOT, MOVE_WATER_GUN, MOVE_ROCK_TOMB, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PONYTA_1] = { .species = SPECIES_PONYTA, .moves = {MOVE_FIRE_SPIN, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_TAIL_WHIP}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AZUMARILL_1] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_BUBBLE_BEAM, MOVE_FACADE, MOVE_DIG, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUDOWOODO_1] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_ROCK_SLIDE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGCARGO_1] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_ROCK_SLIDE, MOVE_EMBER, MOVE_ACID_ARMOR, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_GENTLE }, [FRONTIER_MON_PUPITAR_1] = { .species = SPECIES_PUPITAR, .moves = {MOVE_DIG, MOVE_BITE, MOVE_SCARY_FACE, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SEALEO_1] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BALL, MOVE_HAIL, MOVE_SNORE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RATICATE_1] = { .species = SPECIES_RATICATE, .moves = {MOVE_ENDEAVOR, MOVE_PURSUIT, MOVE_SCARY_FACE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_MASQUERAIN_1] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_ICY_WIND, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_FURRET_1] = { .species = SPECIES_FURRET, .moves = {MOVE_SLAM, MOVE_PROTECT, MOVE_HELPING_HAND, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SERIOUS }, [FRONTIER_MON_DUNSPARCE_1] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_HEADBUTT, MOVE_GLARE, MOVE_DEFENSE_CURL, MOVE_ROLLOUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONAIR_1] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_DRAGON_BREATH, MOVE_LEER, MOVE_WRAP, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_POISON_FANG, MOVE_TAUNT, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_SECRET_POWER, MOVE_SAND_ATTACK, MOVE_COVET, MOVE_TICKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CASTFORM_1] = { .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_EMBER, MOVE_WATER_PULSE, MOVE_SHOCK_WAVE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_SHELGON_1] = { .species = SPECIES_SHELGON, .moves = {MOVE_HEADBUTT, MOVE_DRAGON_BREATH, MOVE_PROTECT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_METANG_1] = { .species = SPECIES_METANG, .moves = {MOVE_METAL_CLAW, MOVE_CONFUSION, MOVE_PURSUIT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_WIGGLYTUFF_1] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_SING, MOVE_DISABLE, MOVE_WISH, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SUNFLORA_1] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_PETAL_DANCE, MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHIMECHO_1] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYWAVE, MOVE_TAKE_DOWN, MOVE_HEAL_BELL, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_GLIGAR_1] = { .species = SPECIES_GLIGAR, .moves = {MOVE_METAL_CLAW, MOVE_DIG, MOVE_AERIAL_ACE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HASTY }, [FRONTIER_MON_QWILFISH_1] = { .species = SPECIES_QWILFISH, .moves = {MOVE_BUBBLE_BEAM, MOVE_PIN_MISSILE, MOVE_SPIKES, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_IMPISH }, [FRONTIER_MON_SNEASEL_1] = { .species = SPECIES_SNEASEL, .moves = {MOVE_FEINT_ATTACK, MOVE_FAKE_OUT, MOVE_ICY_WIND, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_STOCKPILE, MOVE_SWALLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SWELLOW_1] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FLY, MOVE_ENDEAVOR, MOVE_FACADE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAIRON_1] = { .species = SPECIES_LAIRON, .moves = {MOVE_METAL_CLAW, MOVE_ROCK_TOMB, MOVE_IRON_DEFENSE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_TANGELA_1] = { .species = SPECIES_TANGELA, .moves = {MOVE_MEGA_DRAIN, MOVE_SLAM, MOVE_TOXIC, MOVE_BIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_ARBOK_1] = { .species = SPECIES_ARBOK, .moves = {MOVE_POISON_FANG, MOVE_DIG, MOVE_BITE, MOVE_GLARE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PERSIAN_1] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FAKE_OUT, MOVE_SLASH, MOVE_TORMENT, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEADRA_1] = { .species = SPECIES_SEADRA, .moves = {MOVE_AURORA_BEAM, MOVE_SMOKESCREEN, MOVE_WATER_GUN, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_SASSY }, [FRONTIER_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_SECRET_POWER, MOVE_PSYBEAM, MOVE_MAGIC_COAT, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAIVE }, [FRONTIER_MON_VIGOROTH_1] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_SLASH, MOVE_COUNTER, MOVE_ENCORE, MOVE_UPROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_LUNATONE_1] = { .species = SPECIES_LUNATONE, .moves = {MOVE_CONFUSION, MOVE_COSMIC_POWER, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SOLROCK_1] = { .species = SPECIES_SOLROCK, .moves = {MOVE_CONFUSION, MOVE_FIRE_SPIN, MOVE_LIGHT_SCREEN, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_NOCTOWL_1] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_CONFUSION, MOVE_AERIAL_ACE, MOVE_FEINT_ATTACK, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SANDSLASH_1] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_CRUSH_CLAW, MOVE_ROCK_SLIDE, MOVE_SWIFT, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENOMOTH_1] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SILVER_WIND, MOVE_PSYBEAM, MOVE_SLEEP_POWDER, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHANSEY_1] = { .species = SPECIES_CHANSEY, .moves = {MOVE_METRONOME, MOVE_REFRESH, MOVE_DEFENSE_CURL, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SEAKING_1] = { .species = SPECIES_SEAKING, .moves = {MOVE_WATER_PULSE, MOVE_PSYBEAM, MOVE_SWIFT, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_JUMPLUFF_1] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PILOSWINE_1] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_DIG, MOVE_ANCIENT_POWER, MOVE_HAIL, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_AIR_CUTTER, MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PRIMEAPE_1] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_KARATE_CHOP, MOVE_COUNTER, MOVE_SWAGGER, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HITMONLEE_1] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_ROLLING_KICK, MOVE_BRICK_BREAK, MOVE_FOCUS_ENERGY, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HITMONCHAN_1] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_MACH_PUNCH, MOVE_SKY_UPPERCUT, MOVE_DETECT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GIRAFARIG_1] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYBEAM, MOVE_STOMP, MOVE_WISH, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_HITMONTOP_1] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_TRIPLE_KICK, MOVE_DIG, MOVE_MACH_PUNCH, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_BANETTE_1] = { .species = SPECIES_BANETTE, .moves = {MOVE_NIGHT_SHADE, MOVE_WILL_O_WISP, MOVE_SPITE, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_BATON_PASS, MOVE_SWORDS_DANCE, MOVE_ENDURE, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MILD }, [FRONTIER_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_POISON_TAIL, MOVE_BITE, MOVE_GLARE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_ZANGOOSE_1] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_SLASH, MOVE_DOUBLE_KICK, MOVE_ROAR, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_CAMERUPT_1] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_MAGNITUDE, MOVE_PROTECT, MOVE_SANDSTORM, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHARPEDO_1] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_SLASH, MOVE_BITE, MOVE_WATER_PULSE, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TROPIUS_1] = { .species = SPECIES_TROPIUS, .moves = {MOVE_MAGICAL_LEAF, MOVE_WHIRLWIND, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGNETON_1] = { .species = SPECIES_MAGNETON, .moves = {MOVE_SHOCK_WAVE, MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_LONELY }, [FRONTIER_MON_MANTINE_1] = { .species = SPECIES_MANTINE, .moves = {MOVE_BUBBLE_BEAM, MOVE_AERIAL_ACE, MOVE_RAIN_DANCE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_STANTLER_1] = { .species = SPECIES_STANTLER, .moves = {MOVE_EXTRASENSORY, MOVE_CONFUSE_RAY, MOVE_STOMP, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_GENTLE }, [FRONTIER_MON_ABSOL_1] = { .species = SPECIES_ABSOL, .moves = {MOVE_BITE, MOVE_RAZOR_WIND, MOVE_FUTURE_SIGHT, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWALOT_1] = { .species = SPECIES_SWALOT, .moves = {MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_SLUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CRAWDAUNT_1] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_BUBBLE_BEAM, MOVE_VISE_GRIP, MOVE_KNOCK_OFF, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PIDGEOT_1] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_MUD_SLAP, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRUMPIG_1] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYBEAM, MOVE_CONFUSE_RAY, MOVE_FUTURE_SIGHT, MOVE_MAGIC_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TORKOAL_1] = { .species = SPECIES_TORKOAL, .moves = {MOVE_EMBER, MOVE_FIRE_SPIN, MOVE_SMOKESCREEN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_KINGLER_1] = { .species = SPECIES_KINGLER, .moves = {MOVE_CRABHAMMER, MOVE_METAL_CLAW, MOVE_MUD_SHOT, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_CACTURNE_1] = { .species = SPECIES_CACTURNE, .moves = {MOVE_NEEDLE_ARM, MOVE_FEINT_ATTACK, MOVE_ACID, MOVE_MEGA_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HASTY }, [FRONTIER_MON_BELLOSSOM_1] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_PETAL_DANCE, MOVE_SAFEGUARD, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_OCTILLERY_1] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_PSYBEAM, MOVE_ROCK_BLAST}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_HUNTAIL_1] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_WHIRLPOOL, MOVE_SCARY_FACE, MOVE_MUD_SLAP, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GOREBYSS_1] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_WHIRLPOOL, MOVE_AMNESIA, MOVE_ICY_WIND, MOVE_CONFUSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_RELICANTH_1] = { .species = SPECIES_RELICANTH, .moves = {MOVE_ANCIENT_POWER, MOVE_WATER_PULSE, MOVE_HARDEN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_OMASTAR_1] = { .species = SPECIES_OMASTAR, .moves = {MOVE_BUBBLE_BEAM, MOVE_SPIKE_CANNON, MOVE_TICKLE, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KABUTOPS_1] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_DIG, MOVE_FURY_CUTTER, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_POLIWRATH_1] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_SUBMISSION, MOVE_DIG, MOVE_ROCK_TOMB, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SCYTHER_1] = { .species = SPECIES_SCYTHER, .moves = {MOVE_FURY_CUTTER, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_PINSIR_1] = { .species = SPECIES_PINSIR, .moves = {MOVE_SUBMISSION, MOVE_FOCUS_ENERGY, MOVE_SWORDS_DANCE, MOVE_REVENGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_POLITOED_1] = { .species = SPECIES_POLITOED, .moves = {MOVE_DIVE, MOVE_DIG, MOVE_HYPNOSIS, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_CLOYSTER_1] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_AURORA_BEAM, MOVE_SPIKE_CANNON, MOVE_SUPERSONIC, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_DELCATTY_2] = { .species = SPECIES_DELCATTY, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SABLEYE_2] = { .species = SPECIES_SABLEYE, .moves = {MOVE_SHADOW_BALL, MOVE_FEINT_ATTACK, MOVE_CONFUSE_RAY, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LICKITUNG_2] = { .species = SPECIES_LICKITUNG, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WEEPINBELL_2] = { .species = SPECIES_WEEPINBELL, .moves = {MOVE_SLUDGE_BOMB, MOVE_RAZOR_LEAF, MOVE_SLEEP_POWDER, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GRAVELER_2] = { .species = SPECIES_GRAVELER, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GLOOM_2] = { .species = SPECIES_GLOOM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SLUDGE_BOMB, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_PORYGON_2] = { .species = SPECIES_PORYGON, .moves = {MOVE_TRI_ATTACK, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_KADABRA_2] = { .species = SPECIES_KADABRA, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_REFLECT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_SPOUT, MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ROSELIA_2] = { .species = SPECIES_ROSELIA, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VOLBEAT_2] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_SIGNAL_BEAM, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_TAIL_GLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ILLUMISE_2] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_SILVER_WIND, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_IVYSAUR_2] = { .species = SPECIES_IVYSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_CHARMELEON_2] = { .species = SPECIES_CHARMELEON, .moves = {MOVE_FLAMETHROWER, MOVE_SLASH, MOVE_ANCIENT_POWER, MOVE_DRAGON_RAGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WARTORTLE_2] = { .species = SPECIES_WARTORTLE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAPID_SPIN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PARASECT_2] = { .species = SPECIES_PARASECT, .moves = {MOVE_SPORE, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_MACHOKE_2] = { .species = SPECIES_MACHOKE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FORESIGHT, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HAUNTER_2] = { .species = SPECIES_HAUNTER, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_BAYLEEF_2] = { .species = SPECIES_BAYLEEF, .moves = {MOVE_GIGA_DRAIN, MOVE_BODY_SLAM, MOVE_GRASS_WHISTLE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_QUILAVA_2] = { .species = SPECIES_QUILAVA, .moves = {MOVE_FLAMETHROWER, MOVE_CRUSH_CLAW, MOVE_BODY_SLAM, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROCONAW_2] = { .species = SPECIES_CROCONAW, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TOGETIC_2] = { .species = SPECIES_TOGETIC, .moves = {MOVE_RETURN, MOVE_SWEET_KISS, MOVE_AERIAL_ACE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_MURKROW_2] = { .species = SPECIES_MURKROW, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WOBBUFFET_2] = { .species = SPECIES_WOBBUFFET, .moves = {MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_ENCORE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_SEISMIC_TOSS, MOVE_WISH}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MINUN_2] = { .species = SPECIES_MINUN, .moves = {MOVE_THUNDERBOLT, MOVE_ATTRACT, MOVE_CHARM, MOVE_WISH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GROVYLE_2] = { .species = SPECIES_GROVYLE, .moves = {MOVE_GIGA_DRAIN, MOVE_CRUSH_CLAW, MOVE_SCREECH, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_COMBUSKEN_2] = { .species = SPECIES_COMBUSKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SKY_UPPERCUT, MOVE_SLASH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MARSHTOMP_2] = { .species = SPECIES_MARSHTOMP, .moves = {MOVE_MUDDY_WATER, MOVE_EARTHQUAKE, MOVE_MUD_SLAP, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_PONYTA_2] = { .species = SPECIES_PONYTA, .moves = {MOVE_FLAMETHROWER, MOVE_BODY_SLAM, MOVE_DOUBLE_KICK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_AZUMARILL_2] = { .species = SPECIES_AZUMARILL, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_IRON_TAIL, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SUDOWOODO_2] = { .species = SPECIES_SUDOWOODO, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_LOW_KICK, MOVE_SELF_DESTRUCT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MAGCARGO_2] = { .species = SPECIES_MAGCARGO, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_PUPITAR_2] = { .species = SPECIES_PUPITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SEALEO_2] = { .species = SPECIES_SEALEO, .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM, MOVE_HAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RATICATE_2] = { .species = SPECIES_RATICATE, .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_SHADOW_BALL, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MASQUERAIN_2] = { .species = SPECIES_MASQUERAIN, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_GIGA_DRAIN, MOVE_STUN_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_FURRET_2] = { .species = SPECIES_FURRET, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUNSPARCE_2] = { .species = SPECIES_DUNSPARCE, .moves = {MOVE_ICE_BEAM, MOVE_ROCK_TOMB, MOVE_BITE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_DRAGONAIR_2] = { .species = SPECIES_DRAGONAIR, .moves = {MOVE_RETURN, MOVE_REST, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_CRUNCH, MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_TRICK, MOVE_FRUSTRATION, MOVE_THUNDER_WAVE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_CASTFORM_2] = { .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SHELGON_2] = { .species = SPECIES_SHELGON, .moves = {MOVE_FRUSTRATION, MOVE_DRAGON_DANCE, MOVE_CRUNCH, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_METANG_2] = { .species = SPECIES_METANG, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_WIGGLYTUFF_2] = { .species = SPECIES_WIGGLYTUFF, .moves = {MOVE_FAKE_TEARS, MOVE_SING, MOVE_DREAM_EATER, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUNFLORA_2] = { .species = SPECIES_SUNFLORA, .moves = {MOVE_GIGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_GROWTH, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_CHIMECHO_2] = { .species = SPECIES_CHIMECHO, .moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEAL_BELL}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_GLIGAR_2] = { .species = SPECIES_GLIGAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_GUILLOTINE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QWILFISH_2] = { .species = SPECIES_QWILFISH, .moves = {MOVE_REVENGE, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNEASEL_2] = { .species = SPECIES_SNEASEL, .moves = {MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_AERIAL_ACE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SWELLOW_2] = { .species = SPECIES_SWELLOW, .moves = {MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PURSUIT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAIRON_2] = { .species = SPECIES_LAIRON, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_ROAR, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_TANGELA_2] = { .species = SPECIES_TANGELA, .moves = {MOVE_GIGA_DRAIN, MOVE_STUN_SPORE, MOVE_REST, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CALM }, [FRONTIER_MON_ARBOK_2] = { .species = SPECIES_ARBOK, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_GLARE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PERSIAN_2] = { .species = SPECIES_PERSIAN, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_ROAR, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEADRA_2] = { .species = SPECIES_SEADRA, .moves = {MOVE_HYDRO_PUMP, MOVE_FRUSTRATION, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_TRICK, MOVE_BRICK_BREAK, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_VIGOROTH_2] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_CRUSH_CLAW, MOVE_REVERSAL, MOVE_ENDURE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LUNATONE_2] = { .species = SPECIES_LUNATONE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_CALM_MIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SOLROCK_2] = { .species = SPECIES_SOLROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COSMIC_POWER, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_NOCTOWL_2] = { .species = SPECIES_NOCTOWL, .moves = {MOVE_PSYCHIC, MOVE_FEINT_ATTACK, MOVE_AERIAL_ACE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SANDSLASH_2] = { .species = SPECIES_SANDSLASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUSH_CLAW, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENOMOTH_2] = { .species = SPECIES_VENOMOTH, .moves = {MOVE_SIGNAL_BEAM, MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHANSEY_2] = { .species = SPECIES_CHANSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_RELAXED }, [FRONTIER_MON_SEAKING_2] = { .species = SPECIES_SEAKING, .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_JUMPLUFF_2] = { .species = SPECIES_JUMPLUFF, .moves = {MOVE_LEECH_SEED, MOVE_SLEEP_POWDER, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_PILOSWINE_2] = { .species = SPECIES_PILOSWINE, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_AIR_CUTTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PRIMEAPE_2] = { .species = SPECIES_PRIMEAPE, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_TOMB, MOVE_OVERHEAT, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HITMONLEE_2] = { .species = SPECIES_HITMONLEE, .moves = {MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_FORESIGHT, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HITMONCHAN_2] = { .species = SPECIES_HITMONCHAN, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_MACH_PUNCH, MOVE_DETECT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GIRAFARIG_2] = { .species = SPECIES_GIRAFARIG, .moves = {MOVE_PSYCHIC, MOVE_CRUNCH, MOVE_BATON_PASS, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_HITMONTOP_2] = { .species = SPECIES_HITMONTOP, .moves = {MOVE_DOUBLE_EDGE, MOVE_SEISMIC_TOSS, MOVE_ROCK_SLIDE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BANETTE_2] = { .species = SPECIES_BANETTE, .moves = {MOVE_SHADOW_BALL, MOVE_FRUSTRATION, MOVE_SCREECH, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SLASH, MOVE_SHADOW_BALL, MOVE_SWORDS_DANCE, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ZANGOOSE_2] = { .species = SPECIES_ZANGOOSE, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CAMERUPT_2] = { .species = SPECIES_CAMERUPT, .moves = {MOVE_EARTHQUAKE, MOVE_ERUPTION, MOVE_BODY_SLAM, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHARPEDO_2] = { .species = SPECIES_SHARPEDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TROPIUS_2] = { .species = SPECIES_TROPIUS, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MAGNETON_2] = { .species = SPECIES_MAGNETON, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_MANTINE_2] = { .species = SPECIES_MANTINE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STANTLER_2] = { .species = SPECIES_STANTLER, .moves = {MOVE_FRUSTRATION, MOVE_SHADOW_BALL, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ABSOL_2] = { .species = SPECIES_ABSOL, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_IRON_TAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWALOT_2] = { .species = SPECIES_SWALOT, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CRAWDAUNT_2] = { .species = SPECIES_CRAWDAUNT, .moves = {MOVE_GUILLOTINE, MOVE_FRUSTRATION, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PIDGEOT_2] = { .species = SPECIES_PIDGEOT, .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_STEEL_WING, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRUMPIG_2] = { .species = SPECIES_GRUMPIG, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TORKOAL_2] = { .species = SPECIES_TORKOAL, .moves = {MOVE_OVERHEAT, MOVE_BODY_SLAM, MOVE_SMOKESCREEN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_KINGLER_2] = { .species = SPECIES_KINGLER, .moves = {MOVE_GUILLOTINE, MOVE_ROCK_TOMB, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CACTURNE_2] = { .species = SPECIES_CACTURNE, .moves = {MOVE_MEGA_KICK, MOVE_TEETER_DANCE, MOVE_FEINT_ATTACK, MOVE_SANDSTORM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_BELLOSSOM_2] = { .species = SPECIES_BELLOSSOM, .moves = {MOVE_SOLAR_BEAM, MOVE_ATTRACT, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_OCTILLERY_2] = { .species = SPECIES_OCTILLERY, .moves = {MOVE_OCTAZOOKA, MOVE_FIRE_BLAST, MOVE_THUNDER_WAVE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_HUNTAIL_2] = { .species = SPECIES_HUNTAIL, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_GOREBYSS_2] = { .species = SPECIES_GOREBYSS, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_PSYCHIC, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_RELICANTH_2] = { .species = SPECIES_RELICANTH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_OMASTAR_2] = { .species = SPECIES_OMASTAR, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_ICE_BEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_KABUTOPS_2] = { .species = SPECIES_KABUTOPS, .moves = {MOVE_SLASH, MOVE_ROCK_SLIDE, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_POLIWRATH_2] = { .species = SPECIES_POLIWRATH, .moves = {MOVE_BRICK_BREAK, MOVE_HYPNOSIS, MOVE_REST, MOVE_BELLY_DRUM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SCYTHER_2] = { .species = SPECIES_SCYTHER, .moves = {MOVE_SILVER_WIND, MOVE_AERIAL_ACE, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PINSIR_2] = { .species = SPECIES_PINSIR, .moves = {MOVE_GUILLOTINE, MOVE_SWORDS_DANCE, MOVE_FLAIL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_POLITOED_2] = { .species = SPECIES_POLITOED, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_MUD_SLAP, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CLOYSTER_2] = { .species = SPECIES_CLOYSTER, .moves = {MOVE_DIVE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_DUGTRIO_1] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_TRI_ATTACK, MOVE_SLASH, MOVE_SAND_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_1] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_PSYCHIC, MOVE_HIGH_JUMP_KICK, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MISDREAVUS_1] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PAIN_SPLIT, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_FEAROW_1] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_FACADE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRANBULL_1] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_SMELLING_SALTS, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_JYNX_1] = { .species = SPECIES_JYNX, .moves = {MOVE_ICE_BEAM, MOVE_FAKE_OUT, MOVE_LOVELY_KISS, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DUSCLOPS_1] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_WILL_O_WISP, MOVE_SEISMIC_TOSS, MOVE_PAIN_SPLIT, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_DODRIO_1] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_1] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_FAKE_OUT, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_LANTURN_1] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_BRELOOM_1] = { .species = SPECIES_BRELOOM, .moves = {MOVE_SKY_UPPERCUT, MOVE_MACH_PUNCH, MOVE_HEADBUTT, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_FORRETRESS_1] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_LIGHT_SCREEN, MOVE_SPIKES}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WHISCASH_1] = { .species = SPECIES_WHISCASH, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_XATU_1] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_NIGHT_SHADE, MOVE_WISH, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SKARMORY_1] = { .species = SPECIES_SKARMORY, .moves = {MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_COUNTER, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAROWAK_1] = { .species = SPECIES_MAROWAK, .moves = {MOVE_BONEMERANG, MOVE_ROCK_SLIDE, MOVE_ICY_WIND, MOVE_HEADBUTT}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_1] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLEFABLE_1] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METRONOME, MOVE_DOUBLE_TEAM, MOVE_REFLECT, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BRAVE }, [FRONTIER_MON_HARIYAMA_1] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_1] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_LIGHT_SCREEN, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DEWGONG_1] = { .species = SPECIES_DEWGONG, .moves = {MOVE_ICE_BEAM, MOVE_ICY_WIND, MOVE_HEADBUTT, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MANECTRIC_1] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_FLASH, MOVE_QUICK_ATTACK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_1] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SLUDGE_BOMB, MOVE_PETAL_DANCE, MOVE_MOONLIGHT, MOVE_AROMATHERAPY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_VICTREEBEL_1] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLEEP_POWDER, MOVE_SWEET_SCENT, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_ELECTRODE_1] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDERBOLT, MOVE_SWIFT, MOVE_LIGHT_SCREEN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_EXPLOUD_1] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_HYPER_VOICE, MOVE_SHADOW_BALL, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_SHIFTRY_1] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_QUICK_ATTACK, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_GLALIE_1] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_CRUNCH, MOVE_HAIL, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LUDICOLO_1] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_HYPNO_1] = { .species = SPECIES_HYPNO, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_HYPNOSIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GOLEM_1] = { .species = SPECIES_GOLEM, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_COUNTER, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_1] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SCARY_FACE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_1] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_1] = { .species = SPECIES_WEEZING, .moves = {MOVE_SLUDGE_BOMB, MOVE_WILL_O_WISP, MOVE_SHADOW_BALL, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_1] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_DIZZY_PUNCH, MOVE_BRICK_BREAK, MOVE_COUNTER, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_1] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_TAUROS_1] = { .species = SPECIES_TAUROS, .moves = {MOVE_EARTHQUAKE, MOVE_THRASH, MOVE_SWAGGER, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLOWBRO_1] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_HEADBUTT, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SLOWKING_1] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_BRICK_BREAK, MOVE_AMNESIA, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MILTANK_1] = { .species = SPECIES_MILTANK, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_MILK_DRINK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_ALTARIA_1] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_REFRESH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NIDOQUEEN_1] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SLUDGE_BOMB, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_1] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_DOUBLE_KICK, MOVE_BODY_SLAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAGMAR_1] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_SMOKESCREEN, MOVE_BRICK_BREAK, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_CRADILY_1] = { .species = SPECIES_CRADILY, .moves = {MOVE_GIGA_DRAIN, MOVE_ROCK_SLIDE, MOVE_BARRIER, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_ARMALDO_1] = { .species = SPECIES_ARMALDO, .moves = {MOVE_SLASH, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_1] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_DIG, MOVE_BRICK_BREAK, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAPIDASH_1] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_KICK, MOVE_QUICK_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MUK_1] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BODY_SLAM, MOVE_SCREECH, MOVE_MINIMIZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GENGAR_1] = { .species = SPECIES_GENGAR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_AMPHAROS_1] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_THUNDER_WAVE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [FRONTIER_MON_SCIZOR_1] = { .species = SPECIES_SCIZOR, .moves = {MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_COUNTER, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HERACROSS_1] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_1] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_CRUNCH, MOVE_AERIAL_ACE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HOUNDOOM_1] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_COUNTER, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DONPHAN_1] = { .species = SPECIES_DONPHAN, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_1] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WAILORD_1] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICY_WIND, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_NINETALES_1] = { .species = SPECIES_NINETALES, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MACHAMP_1] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHUCKLE_1] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BRAVE }, [FRONTIER_MON_STEELIX_1] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_ROCK_TOMB, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_1] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SLUDGE_BOMB, MOVE_ICY_WIND, MOVE_BARRIER, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_AERODACTYL_1] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_ANCIENT_POWER, MOVE_DRAGON_BREATH, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PORYGON2_1] = { .species = SPECIES_PORYGON2, .moves = {MOVE_TRI_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GARDEVOIR_1] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_DREAM_EATER, MOVE_HYPNOSIS, MOVE_MAGICAL_LEAF, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_EXEGGUTOR_1] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_STARMIE_1] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_1] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_STEEL_WING, MOVE_FEINT_ATTACK, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VENUSAUR_1] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_SLEEP_POWDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_VAPOREON_1] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ROAR, MOVE_BITE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_JOLTEON_1] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ATTRACT, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLAREON_1] = { .species = SPECIES_FLAREON, .moves = {MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_BITE, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MEGANIUM_1] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_LIGHT_SCREEN, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ESPEON_1] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_CHARM, MOVE_CALM_MIND, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_1] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_1] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE, MOVE_SEISMIC_TOSS}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FERALIGATR_1] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_RAIN_DANCE, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_AGGRON_1] = { .species = SPECIES_AGGRON, .moves = {MOVE_IRON_TAIL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_1] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_DOUBLE_KICK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WALREIN_1] = { .species = SPECIES_WALREIN, .moves = {MOVE_BLIZZARD, MOVE_HAIL, MOVE_YAWN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_SCEPTILE_1] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_LEECH_SEED, MOVE_AERIAL_ACE, MOVE_DETECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_1] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_ROAR, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYPHLOSION_1] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SMOKESCREEN, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_1] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ATTRACT, MOVE_CONFUSE_RAY, MOVE_SING}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_CROBAT_1] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_BITE, MOVE_ASTONISH, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SWAMPERT_1] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_REST, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GYARADOS_1] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_SNORLAX_1] = { .species = SPECIES_SNORLAX, .moves = {MOVE_FACADE, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_1] = { .species = SPECIES_KINGDRA, .moves = {MOVE_HYDRO_PUMP, MOVE_DRAGON_BREATH, MOVE_ICY_WIND, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BLISSEY_1] = { .species = SPECIES_BLISSEY, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_1] = { .species = SPECIES_MILOTIC, .moves = {MOVE_HYDRO_PUMP, MOVE_ICY_WIND, MOVE_RECOVER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_1] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FLAMETHROWER, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_1] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DRAGON_CLAW, MOVE_AERIAL_ACE, MOVE_HEADBUTT, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_1] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_AERIAL_ACE, MOVE_FACADE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_1] = { .species = SPECIES_SLAKING, .moves = {MOVE_YAWN, MOVE_BULK_UP, MOVE_SWAGGER, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_2] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_TRI_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_2] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_PSYCHIC, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MAROWAK_2] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_2] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_YAWN, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_MISDREAVUS_2] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_FEAROW_2] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_ATTRACT, MOVE_PURSUIT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GRANBULL_2] = { .species = SPECIES_GRANBULL, .moves = {MOVE_OVERHEAT, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_JYNX_2] = { .species = SPECIES_JYNX, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_LOVELY_KISS, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_DUSCLOPS_2] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_DODRIO_2] = { .species = SPECIES_DODRIO, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_FEINT_ATTACK, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_2] = { .species = SPECIES_MR_MIME, .moves = {MOVE_BATON_PASS, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LANTURN_2] = { .species = SPECIES_LANTURN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_BRELOOM_2] = { .species = SPECIES_BRELOOM, .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_FOCUS_PUNCH, MOVE_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FORRETRESS_2] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_COUNTER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SKARMORY_2] = { .species = SPECIES_SKARMORY, .moves = {MOVE_SPIKES, MOVE_ROAR, MOVE_DRILL_PECK, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_WHISCASH_2] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SPARK, MOVE_FUTURE_SIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_XATU_2] = { .species = SPECIES_XATU, .moves = {MOVE_FLY, MOVE_TOXIC, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_CLEFABLE_2] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_METEOR_MASH, MOVE_COSMIC_POWER, MOVE_DOUBLE_TEAM, MOVE_FOLLOW_ME}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HARIYAMA_2] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAICHU_2] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DEWGONG_2] = { .species = SPECIES_DEWGONG, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_ENCORE, MOVE_DISABLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MANECTRIC_2] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_CRUNCH, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_2] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_INGRAIN, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_VICTREEBEL_2] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_SLEEP_POWDER, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_SERIOUS }, [FRONTIER_MON_ELECTRODE_2] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_EXPLOUD_2] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SHIFTRY_2] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_LEECH_SEED, MOVE_DIG, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_IMPISH }, [FRONTIER_MON_GLALIE_2] = { .species = SPECIES_GLALIE, .moves = {MOVE_EXPLOSION, MOVE_ENDURE, MOVE_BODY_SLAM, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_LUDICOLO_2] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HYPNO_2] = { .species = SPECIES_HYPNO, .moves = {MOVE_HYPNOSIS, MOVE_NIGHTMARE, MOVE_DREAM_EATER, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_GOLEM_2] = { .species = SPECIES_GOLEM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_2] = { .species = SPECIES_RHYDON, .moves = {MOVE_EARTHQUAKE, MOVE_HORN_DRILL, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_2] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_2] = { .species = SPECIES_WEEZING, .moves = {MOVE_MEMENTO, MOVE_SLUDGE_BOMB, MOVE_FACADE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_2] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_CRUSH_CLAW, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_2] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_ATTRACT, MOVE_FOCUS_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TAUROS_2] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLOWBRO_2] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_SLOWKING_2] = { .species = SPECIES_SLOWKING, .moves = {MOVE_YAWN, MOVE_THUNDER_WAVE, MOVE_SURF, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MILTANK_2] = { .species = SPECIES_MILTANK, .moves = {MOVE_FOCUS_PUNCH, MOVE_SHADOW_BALL, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_ALTARIA_2] = { .species = SPECIES_ALTARIA, .moves = {MOVE_PERISH_SONG, MOVE_DRAGON_BREATH, MOVE_PURSUIT, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_NIDOQUEEN_2] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_2] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAGMAR_2] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FIRE_BLAST, MOVE_SMOKESCREEN, MOVE_THUNDER_PUNCH, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CRADILY_2] = { .species = SPECIES_CRADILY, .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ARMALDO_2] = { .species = SPECIES_ARMALDO, .moves = {MOVE_IRON_TAIL, MOVE_ANCIENT_POWER, MOVE_BRICK_BREAK, MOVE_KNOCK_OFF}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_2] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_RAPIDASH_2] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_FIRE_BLAST, MOVE_BOUNCE, MOVE_DOUBLE_TEAM, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MUK_2] = { .species = SPECIES_MUK, .moves = {MOVE_CURSE, MOVE_REST, MOVE_SLUDGE_BOMB, MOVE_DYNAMIC_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GENGAR_2] = { .species = SPECIES_GENGAR, .moves = {MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_AMPHAROS_2] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_FOCUS_PUNCH, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SCIZOR_2] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_STEEL_WING, MOVE_SWORDS_DANCE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HERACROSS_2] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ATTRACT, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_URSARING_2] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HOUNDOOM_2] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_ROAR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DONPHAN_2] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_CLAYDOL_2] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_COSMIC_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_WAILORD_2] = { .species = SPECIES_WAILORD, .moves = {MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_CURSE, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NINETALES_2] = { .species = SPECIES_NINETALES, .moves = {MOVE_HEAT_WAVE, MOVE_BODY_SLAM, MOVE_GRUDGE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_2] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_BULK_UP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SHUCKLE_2] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SANDSTORM, MOVE_DIG, MOVE_FLASH, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_2] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_TENTACRUEL_2] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AERODACTYL_2] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ANCIENT_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_PORYGON2_2] = { .species = SPECIES_PORYGON2, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_2] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_2] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_RETURN, MOVE_CURSE, MOVE_SLEEP_POWDER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_2] = { .species = SPECIES_STARMIE, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_2] = { .species = SPECIES_FLYGON, .moves = {MOVE_SOLAR_BEAM, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VENUSAUR_2] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_DOUBLE_TEAM, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_VAPOREON_2] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_JOLTEON_2] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_DIG, MOVE_DOUBLE_KICK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_FLAREON_2] = { .species = SPECIES_FLAREON, .moves = {MOVE_CURSE, MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_RELAXED }, [FRONTIER_MON_MEGANIUM_2] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_LEECH_SEED, MOVE_SUBSTITUTE, MOVE_DOUBLE_TEAM, MOVE_GRASS_WHISTLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_ESPEON_2] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_UMBREON_2] = { .species = SPECIES_UMBREON, .moves = {MOVE_CURSE, MOVE_SCREECH, MOVE_DOUBLE_TEAM, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLASTOISE_2] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_HYDRO_PUMP, MOVE_MEGA_KICK, MOVE_BRICK_BREAK, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_FERALIGATR_2] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_SURF, MOVE_DRAGON_CLAW, MOVE_BRICK_BREAK, MOVE_SCARY_FACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_AGGRON_2] = { .species = SPECIES_AGGRON, .moves = {MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_2] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_BLAZE_KICK, MOVE_MEGA_KICK, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_WALREIN_2] = { .species = SPECIES_WALREIN, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SCEPTILE_2] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_THUNDER_PUNCH, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_2] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE, MOVE_SMOKESCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYPHLOSION_2] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_FLAMETHROWER, MOVE_THUNDER_PUNCH, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LAPRAS_2] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BODY_SLAM, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_CROBAT_2] = { .species = SPECIES_CROBAT, .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_SWAMPERT_2] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_GYARADOS_2] = { .species = SPECIES_GYARADOS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDERBOLT, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SNORLAX_2] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_2] = { .species = SPECIES_KINGDRA, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_BLISSEY_2] = { .species = SPECIES_BLISSEY, .moves = {MOVE_SEISMIC_TOSS, MOVE_SING, MOVE_ATTRACT, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_2] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SAFEGUARD, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_2] = { .species = SPECIES_ARCANINE, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_CRUNCH, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SALAMENCE_2] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_CRUNCH, MOVE_SWAGGER, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_2] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_PSYCH_UP, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_2] = { .species = SPECIES_SLAKING, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_YAWN, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_3] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_3] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_DYNAMIC_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MISDREAVUS_3] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_PERISH_SONG, MOVE_MEAN_LOOK, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_FEAROW_3] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_RETURN, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRANBULL_3] = { .species = SPECIES_GRANBULL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_JYNX_3] = { .species = SPECIES_JYNX, .moves = {MOVE_DREAM_EATER, MOVE_LOVELY_KISS, MOVE_ATTRACT, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_DUSCLOPS_3] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DODRIO_3] = { .species = SPECIES_DODRIO, .moves = {MOVE_DOUBLE_EDGE, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_3] = { .species = SPECIES_MR_MIME, .moves = {MOVE_TRICK, MOVE_TORMENT, MOVE_PSYCHIC, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LANTURN_3] = { .species = SPECIES_LANTURN, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_CONFUSE_RAY, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BRELOOM_3] = { .species = SPECIES_BRELOOM, .moves = {MOVE_IRON_TAIL, MOVE_FOCUS_PUNCH, MOVE_ATTRACT, MOVE_SPORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_FORRETRESS_3] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_GIGA_DRAIN, MOVE_ZAP_CANNON}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_QUIET }, [FRONTIER_MON_WHISCASH_3] = { .species = SPECIES_WHISCASH, .moves = {MOVE_SLEEP_TALK, MOVE_REST, MOVE_SURF, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_HARDY }, [FRONTIER_MON_XATU_3] = { .species = SPECIES_XATU, .moves = {MOVE_DRILL_PECK, MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_SKARMORY_3] = { .species = SPECIES_SKARMORY, .moves = {MOVE_TOXIC, MOVE_CURSE, MOVE_REST, MOVE_FLY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_MAROWAK_3] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_3] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLEFABLE_3] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_FLAMETHROWER, MOVE_MAGICAL_LEAF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HARIYAMA_3] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_3] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_IRON_TAIL, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DEWGONG_3] = { .species = SPECIES_DEWGONG, .moves = {MOVE_HORN_DRILL, MOVE_SHEER_COLD, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_MANECTRIC_3] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VILEPLUME_3] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_ATTRACT, MOVE_STUN_SPORE, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_VICTREEBEL_3] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_STUN_SPORE, MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRODE_3] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EXPLOUD_3] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_OVERHEAT, MOVE_ICE_BEAM, MOVE_THUNDER_PUNCH, MOVE_EXTRASENSORY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SHIFTRY_3] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_GLALIE_3] = { .species = SPECIES_GLALIE, .moves = {MOVE_BLIZZARD, MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LUDICOLO_3] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_HYPNO_3] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCH_UP, MOVE_SWAGGER, MOVE_MEGA_KICK, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLEM_3] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_3] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_HORN_DRILL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_3] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_TRICK, MOVE_DISABLE, MOVE_PSYCHIC, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_3] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_KANGASKHAN_3] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_ELECTABUZZ_3] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_THUNDERBOLT, MOVE_CROSS_CHOP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_TAUROS_3] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWBRO_3] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_QUIET }, [FRONTIER_MON_SLOWKING_3] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MILTANK_3] = { .species = SPECIES_MILTANK, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALTARIA_3] = { .species = SPECIES_ALTARIA, .moves = {MOVE_SING, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOQUEEN_3] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_NIDOKING_3] = { .species = SPECIES_NIDOKING, .moves = {MOVE_HORN_DRILL, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MAGMAR_3] = { .species = SPECIES_MAGMAR, .moves = {MOVE_MEGA_KICK, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [FRONTIER_MON_CRADILY_3] = { .species = SPECIES_CRADILY, .moves = {MOVE_SUBSTITUTE, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_ARMALDO_3] = { .species = SPECIES_ARMALDO, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_SWORDS_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_3] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_HYDRO_PUMP, MOVE_CROSS_CHOP, MOVE_BLIZZARD, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAPIDASH_3] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_HYPNOSIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MUK_3] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GENGAR_3] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_GIGA_DRAIN, MOVE_SKILL_SWAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AMPHAROS_3] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_IRON_TAIL, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SCIZOR_3] = { .species = SPECIES_SCIZOR, .moves = {MOVE_REVERSAL, MOVE_ENDURE, MOVE_AGILITY, MOVE_SLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_HERACROSS_3] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_3] = { .species = SPECIES_URSARING, .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_HOUNDOOM_3] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_DONPHAN_3] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_3] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WAILORD_3] = { .species = SPECIES_WAILORD, .moves = {MOVE_HYDRO_PUMP, MOVE_FISSURE, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_NINETALES_3] = { .species = SPECIES_NINETALES, .moves = {MOVE_FIRE_BLAST, MOVE_IRON_TAIL, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_3] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_FIRE_BLAST, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHUCKLE_3] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_3] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_3] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AERODACTYL_3] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FIRE_BLAST, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PORYGON2_3] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_TRI_ATTACK, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_3] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH, MOVE_MAGICAL_LEAF}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_3] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_3] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_3] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_VENUSAUR_3] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SLEEP_POWDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_VAPOREON_3] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_JOLTEON_3] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_AGILITY, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_FLAREON_3] = { .species = SPECIES_FLAREON, .moves = {MOVE_SHADOW_BALL, MOVE_FLAIL, MOVE_ENDURE, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_MEGANIUM_3] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_EARTHQUAKE, MOVE_FLAIL, MOVE_ENDURE, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_ESPEON_3] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_WISH, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_3] = { .species = SPECIES_UMBREON, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ATTRACT, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_3] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FERALIGATR_3] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AGGRON_3] = { .species = SPECIES_AGGRON, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BLAZIKEN_3] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_ENDURE, MOVE_REVERSAL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WALREIN_3] = { .species = SPECIES_WALREIN, .moves = {MOVE_SHEER_COLD, MOVE_FISSURE, MOVE_SURF, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_SCEPTILE_3] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CHARIZARD_3] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_BITE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYPHLOSION_3] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_EARTHQUAKE, MOVE_OVERHEAT, MOVE_ENDURE, MOVE_REVERSAL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LAPRAS_3] = { .species = SPECIES_LAPRAS, .moves = {MOVE_DOUBLE_EDGE, MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_CROBAT_3] = { .species = SPECIES_CROBAT, .moves = {MOVE_AIR_CUTTER, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWAMPERT_3] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_GYARADOS_3] = { .species = SPECIES_GYARADOS, .moves = {MOVE_SURF, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_SNORLAX_3] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_3] = { .species = SPECIES_KINGDRA, .moves = {MOVE_FLAIL, MOVE_HYDRO_PUMP, MOVE_DRAGON_DANCE, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLISSEY_3] = { .species = SPECIES_BLISSEY, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_3] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_ATTRACT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_ARCANINE_3] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SALAMENCE_3] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_3] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_METEOR_MASH, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SLAKING_3] = { .species = SPECIES_SLAKING, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DUGTRIO_4] = { .species = SPECIES_DUGTRIO, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_ROCK_SLIDE, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MEDICHAM_4] = { .species = SPECIES_MEDICHAM, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_MISDREAVUS_4] = { .species = SPECIES_MISDREAVUS, .moves = {MOVE_DESTINY_BOND, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_FEAROW_4] = { .species = SPECIES_FEAROW, .moves = {MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SKY_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GRANBULL_4] = { .species = SPECIES_GRANBULL, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_JYNX_4] = { .species = SPECIES_JYNX, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_LOVELY_KISS, MOVE_FAKE_TEARS}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DUSCLOPS_4] = { .species = SPECIES_DUSCLOPS, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DODRIO_4] = { .species = SPECIES_DODRIO, .moves = {MOVE_FLAIL, MOVE_ENDURE, MOVE_DRILL_PECK, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MR_MIME_4] = { .species = SPECIES_MR_MIME, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LANTURN_4] = { .species = SPECIES_LANTURN, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_BRELOOM_4] = { .species = SPECIES_BRELOOM, .moves = {MOVE_FOCUS_PUNCH, MOVE_SLUDGE_BOMB, MOVE_SPORE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_FORRETRESS_4] = { .species = SPECIES_FORRETRESS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WHISCASH_4] = { .species = SPECIES_WHISCASH, .moves = {MOVE_FISSURE, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_XATU_4] = { .species = SPECIES_XATU, .moves = {MOVE_PSYCHIC, MOVE_DRILL_PECK, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SKARMORY_4] = { .species = SPECIES_SKARMORY, .moves = {MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_COUNTER, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MAROWAK_4] = { .species = SPECIES_MAROWAK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_MEGA_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_THICK_CLUB, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_THICK_CLUB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_QUAGSIRE_4] = { .species = SPECIES_QUAGSIRE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_SASSY }, [FRONTIER_MON_CLEFABLE_4] = { .species = SPECIES_CLEFABLE, .moves = {MOVE_MEGA_KICK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_HARIYAMA_4] = { .species = SPECIES_HARIYAMA, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RAICHU_4] = { .species = SPECIES_RAICHU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_PROTECT, MOVE_MEGA_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DEWGONG_4] = { .species = SPECIES_DEWGONG, .moves = {MOVE_SHEER_COLD, MOVE_ICE_BEAM, MOVE_SURF, MOVE_SIGNAL_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MANECTRIC_4] = { .species = SPECIES_MANECTRIC, .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_VILEPLUME_4] = { .species = SPECIES_VILEPLUME, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_VICTREEBEL_4] = { .species = SPECIES_VICTREEBEL, .moves = {MOVE_GIGA_DRAIN, MOVE_DOUBLE_EDGE, MOVE_SLUDGE_BOMB, MOVE_SYNTHESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_ELECTRODE_4] = { .species = SPECIES_ELECTRODE, .moves = {MOVE_EXPLOSION, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAUGHTY }, [FRONTIER_MON_EXPLOUD_4] = { .species = SPECIES_EXPLOUD, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_OVERHEAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHIFTRY_4] = { .species = SPECIES_SHIFTRY, .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_MEGA_KICK, MOVE_FAKE_OUT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_GLALIE_4] = { .species = SPECIES_GLALIE, .moves = {MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LUDICOLO_4] = { .species = SPECIES_LUDICOLO, .moves = {MOVE_LEECH_SEED, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_TOXIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_HYPNO_4] = { .species = SPECIES_HYPNO, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GOLEM_4] = { .species = SPECIES_GOLEM, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_RHYDON_4] = { .species = SPECIES_RHYDON, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HORN_DRILL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALAKAZAM_4] = { .species = SPECIES_ALAKAZAM, .moves = {MOVE_PSYCHIC, MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_WEEZING_4] = { .species = SPECIES_WEEZING, .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_FRUSTRATION, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KANGASKHAN_4] = { .species = SPECIES_KANGASKHAN, .moves = {MOVE_MEGA_KICK, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ELECTABUZZ_4] = { .species = SPECIES_ELECTABUZZ, .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_MEGA_KICK, MOVE_CROSS_CHOP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TAUROS_4] = { .species = SPECIES_TAUROS, .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SLOWBRO_4] = { .species = SPECIES_SLOWBRO, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_SASSY }, [FRONTIER_MON_SLOWKING_4] = { .species = SPECIES_SLOWKING, .moves = {MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_MILTANK_4] = { .species = SPECIES_MILTANK, .moves = {MOVE_DOUBLE_EDGE, MOVE_CURSE, MOVE_DOUBLE_TEAM, MOVE_MILK_DRINK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ALTARIA_4] = { .species = SPECIES_ALTARIA, .moves = {MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_NIDOQUEEN_4] = { .species = SPECIES_NIDOQUEEN, .moves = {MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_NIDOKING_4] = { .species = SPECIES_NIDOKING, .moves = {MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_EARTHQUAKE, MOVE_THUNDER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MAGMAR_4] = { .species = SPECIES_MAGMAR, .moves = {MOVE_FLAMETHROWER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_CRADILY_4] = { .species = SPECIES_CRADILY, .moves = {MOVE_TOXIC, MOVE_INGRAIN, MOVE_MIRROR_COAT, MOVE_GIGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_ARMALDO_4] = { .species = SPECIES_ARMALDO, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GOLDUCK_4] = { .species = SPECIES_GOLDUCK, .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_ICE_BEAM, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAPIDASH_4] = { .species = SPECIES_RAPIDASH, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_IRON_TAIL, MOVE_DOUBLE_KICK}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MUK_4] = { .species = SPECIES_MUK, .moves = {MOVE_SLUDGE_BOMB, MOVE_BRICK_BREAK, MOVE_GIGA_DRAIN, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_GENGAR_4] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_AMPHAROS_4] = { .species = SPECIES_AMPHAROS, .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_THUNDER_WAVE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SCIZOR_4] = { .species = SPECIES_SCIZOR, .moves = {MOVE_SILVER_WIND, MOVE_SWORDS_DANCE, MOVE_AGILITY, MOVE_BATON_PASS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_HERACROSS_4] = { .species = SPECIES_HERACROSS, .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_REVERSAL, MOVE_ENDURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_4] = { .species = SPECIES_URSARING, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_HOUNDOOM_4] = { .species = SPECIES_HOUNDOOM, .moves = {MOVE_OVERHEAT, MOVE_SOLAR_BEAM, MOVE_CRUNCH, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DONPHAN_4] = { .species = SPECIES_DONPHAN, .moves = {MOVE_FISSURE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_IRON_TAIL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_CLAYDOL_4] = { .species = SPECIES_CLAYDOL, .moves = {MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_WAILORD_4] = { .species = SPECIES_WAILORD, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_FISSURE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_NINETALES_4] = { .species = SPECIES_NINETALES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_MACHAMP_4] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_FLAMETHROWER, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SHUCKLE_4] = { .species = SPECIES_SHUCKLE, .moves = {MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_WRAP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_CAREFUL }, [FRONTIER_MON_STEELIX_4] = { .species = SPECIES_STEELIX, .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TENTACRUEL_4] = { .species = SPECIES_TENTACRUEL, .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 170, 0), .nature = NATURE_QUIRKY }, [FRONTIER_MON_AERODACTYL_4] = { .species = SPECIES_AERODACTYL, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_FIRE_BLAST, MOVE_BITE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_PORYGON2_4] = { .species = SPECIES_PORYGON2, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GARDEVOIR_4] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_EXEGGUTOR_4] = { .species = SPECIES_EXEGGUTOR, .moves = {MOVE_PSYCHIC, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_STARMIE_4] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_FLYGON_4] = { .species = SPECIES_FLYGON, .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_CLAW, MOVE_DOUBLE_EDGE, MOVE_CRUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_VENUSAUR_4] = { .species = SPECIES_VENUSAUR, .moves = {MOVE_SOLAR_BEAM, MOVE_SLUDGE_BOMB, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 0, 170, 170), .nature = NATURE_DOCILE }, [FRONTIER_MON_VAPOREON_4] = { .species = SPECIES_VAPOREON, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ACID_ARMOR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_CALM }, [FRONTIER_MON_JOLTEON_4] = { .species = SPECIES_JOLTEON, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_BITE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_FLAREON_4] = { .species = SPECIES_FLAREON, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_MEGANIUM_4] = { .species = SPECIES_MEGANIUM, .moves = {MOVE_GIGA_DRAIN, MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_ESPEON_4] = { .species = SPECIES_ESPEON, .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_ATTRACT, MOVE_CALM_MIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_UMBREON_4] = { .species = SPECIES_UMBREON, .moves = {MOVE_CONFUSE_RAY, MOVE_TOXIC, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_BLASTOISE_4] = { .species = SPECIES_BLASTOISE, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_FERALIGATR_4] = { .species = SPECIES_FERALIGATR, .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_AGGRON_4] = { .species = SPECIES_AGGRON, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_BLAZIKEN_4] = { .species = SPECIES_BLAZIKEN, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_THUNDER_PUNCH, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_WALREIN_4] = { .species = SPECIES_WALREIN, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_SHEER_COLD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_SCEPTILE_4] = { .species = SPECIES_SCEPTILE, .moves = {MOVE_LEAF_BLADE, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CHARIZARD_4] = { .species = SPECIES_CHARIZARD, .moves = {MOVE_OVERHEAT, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYPHLOSION_4] = { .species = SPECIES_TYPHLOSION, .moves = {MOVE_OVERHEAT, MOVE_THUNDER_PUNCH, MOVE_EARTHQUAKE, MOVE_CRUSH_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_LAPRAS_4] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_PSYCHIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_CROBAT_4] = { .species = SPECIES_CROBAT, .moves = {MOVE_SLUDGE_BOMB, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SWAMPERT_4] = { .species = SPECIES_SWAMPERT, .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_GYARADOS_4] = { .species = SPECIES_GYARADOS, .moves = {MOVE_RETURN, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_4] = { .species = SPECIES_SNORLAX, .moves = {MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_KINGDRA_4] = { .species = SPECIES_KINGDRA, .moves = {MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_BLISSEY_4] = { .species = SPECIES_BLISSEY, .moves = {MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_COUNTER, MOVE_SOFT_BOILED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_BOLD }, [FRONTIER_MON_MILOTIC_4] = { .species = SPECIES_MILOTIC, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_MIRROR_COAT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_ARCANINE_4] = { .species = SPECIES_ARCANINE, .moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_CRUNCH, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SALAMENCE_4] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_METAGROSS_4] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_SLAKING_4] = { .species = SPECIES_SLAKING, .moves = {MOVE_THUNDERBOLT, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_ARTICUNO_1] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_WATER_PULSE, MOVE_ICY_WIND, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ZAPDOS_1] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_1] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FLAMETHROWER, MOVE_AERIAL_ACE, MOVE_MUD_SLAP, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAIKOU_1] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_1] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_1] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_1] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SUPERPOWER, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_1] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGISTEEL_1] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_METAL_CLAW, MOVE_CURSE, MOVE_AMNESIA, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_1] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIOS_1] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ARTICUNO_2] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_ZAPDOS_2] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DRILL_PECK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_2] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_RAIKOU_2] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_2] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_2] = { .species = SPECIES_SUICUNE, .moves = {MOVE_TOXIC, MOVE_DIVE, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_REGIROCK_2] = { .species = SPECIES_REGIROCK, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_2] = { .species = SPECIES_REGICE, .moves = {MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_REGISTEEL_2] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_LATIAS_2] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_2] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_3] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_FACADE, MOVE_AERIAL_ACE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_3] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_3] = { .species = SPECIES_MOLTRES, .moves = {MOVE_FIRE_BLAST, MOVE_SUNNY_DAY, MOVE_DOUBLE_TEAM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_RAIKOU_3] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_3] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_DOUBLE_EDGE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_SUICUNE_3] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RAIN_DANCE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_3] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_3] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_REGISTEEL_3] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_AMNESIA, MOVE_COUNTER, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_3] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_3] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_4] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_REST, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_4] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_4] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_STEEL_WING, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FRONTIER_MON_RAIKOU_4] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_4] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_4] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_BITE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGIROCK_4] = { .species = SPECIES_REGIROCK, .moves = {MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_CAREFUL }, [FRONTIER_MON_REGICE_4] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_BOLD }, [FRONTIER_MON_REGISTEEL_4] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FRONTIER_MON_LATIAS_4] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_SHADOW_BALL, MOVE_CHARM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_4] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_DRAGON_CLAW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_5] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_6] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_7] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_GENGAR_8] = { .species = SPECIES_GENGAR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_PUNCH, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_URSARING_5] = { .species = SPECIES_URSARING, .moves = {MOVE_MEGA_KICK, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_6] = { .species = SPECIES_URSARING, .moves = {MOVE_HYPER_BEAM, MOVE_YAWN, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_URSARING_7] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BULK_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_URSARING_8] = { .species = SPECIES_URSARING, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MACHAMP_5] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_6] = { .species = SPECIES_MACHAMP, .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_ROCK_TOMB}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_7] = { .species = SPECIES_MACHAMP, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_MACHAMP_8] = { .species = SPECIES_MACHAMP, .moves = {MOVE_REVENGE, MOVE_ROCK_SLIDE, MOVE_FACADE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_GARDEVOIR_5] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_ENDURE, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 170, 0, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_GARDEVOIR_6] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [FRONTIER_MON_GARDEVOIR_7] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_WILL_O_WISP, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FRONTIER_MON_GARDEVOIR_8] = { .species = SPECIES_GARDEVOIR, .moves = {MOVE_PSYCHIC, MOVE_MAGICAL_LEAF, MOVE_ATTRACT, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_5] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_LIGHT_SCREEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_6] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_THUNDER_WAVE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_STARMIE_7] = { .species = SPECIES_STARMIE, .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_COSMIC_POWER, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_STARMIE_8] = { .species = SPECIES_STARMIE, .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_COSMIC_POWER, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_5] = { .species = SPECIES_LAPRAS, .moves = {MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LAPRAS_6] = { .species = SPECIES_LAPRAS, .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_RAIN_DANCE, MOVE_BLIZZARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LAPRAS_7] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_REST, MOVE_SLEEP_TALK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_LAPRAS_8] = { .species = SPECIES_LAPRAS, .moves = {MOVE_SHEER_COLD, MOVE_HORN_DRILL, MOVE_SING, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [FRONTIER_MON_SNORLAX_5] = { .species = SPECIES_SNORLAX, .moves = {MOVE_MEGA_KICK, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_6] = { .species = SPECIES_SNORLAX, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_BRICK_BREAK, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_7] = { .species = SPECIES_SNORLAX, .moves = {MOVE_HYPER_BEAM, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SNORLAX_8] = { .species = SPECIES_SNORLAX, .moves = {MOVE_RETURN, MOVE_SHADOW_BALL, MOVE_BELLY_DRUM, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_5] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FACADE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_SALAMENCE_6] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_HEADBUTT, MOVE_AERIAL_ACE, MOVE_CRUNCH, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_HARDY }, [FRONTIER_MON_SALAMENCE_7] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SALAMENCE_8] = { .species = SPECIES_SALAMENCE, .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_CRUNCH, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_METAGROSS_5] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EXPLOSION, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_JOLLY }, [FRONTIER_MON_METAGROSS_6] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_PSYCHIC, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_7] = { .species = SPECIES_METAGROSS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_METAGROSS_8] = { .species = SPECIES_METAGROSS, .moves = {MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGIROCK_5] = { .species = SPECIES_REGIROCK, .moves = {MOVE_HYPER_BEAM, MOVE_FOCUS_PUNCH, MOVE_ROCK_SLIDE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGIROCK_6] = { .species = SPECIES_REGIROCK, .moves = {MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, MOVE_EXPLOSION}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGICE_5] = { .species = SPECIES_REGICE, .moves = {MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_CURSE, MOVE_COUNTER}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_BRAVE }, [FRONTIER_MON_REGICE_6] = { .species = SPECIES_REGICE, .moves = {MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_SLEEP_TALK, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_REGISTEEL_5] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_REGISTEEL_6] = { .species = SPECIES_REGISTEEL, .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_5] = { .species = SPECIES_LATIAS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIAS_6] = { .species = SPECIES_LATIAS, .moves = {MOVE_MIST_BALL, MOVE_DRAGON_CLAW, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIAS_7] = { .species = SPECIES_LATIAS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SWAGGER, MOVE_PSYCH_UP}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIAS_8] = { .species = SPECIES_LATIAS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_5] = { .species = SPECIES_LATIOS, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE, MOVE_CALM_MIND, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST }, [FRONTIER_MON_LATIOS_6] = { .species = SPECIES_LATIOS, .moves = {MOVE_LUSTER_PURGE, MOVE_SHADOW_BALL, MOVE_DRAGON_CLAW, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_LATIOS_7] = { .species = SPECIES_LATIOS, .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_DRAGON_DANCE, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_LATIOS_8] = { .species = SPECIES_LATIOS, .moves = {MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_1] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_2] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_EARTHQUAKE, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_3] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_4] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_DRAGONITE_5] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_OUTRAGE, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_6] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_7] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_THUNDERBOLT, MOVE_SURF, MOVE_ICE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_8] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_DRAGON_CLAW, MOVE_FLAMETHROWER, MOVE_ICE_BEAM, MOVE_BRICK_BREAK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_DRAGONITE_9] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RAIN_DANCE, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_DRAGONITE_10] = { .species = SPECIES_DRAGONITE, .moves = {MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_TYRANITAR_1] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_THUNDERBOLT, MOVE_SURF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_2] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CRUNCH, MOVE_THUNDERBOLT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_3] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_COUNTER, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_4] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_TYRANITAR_5] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_6] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_CURSE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_7] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_8] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_ROCK_SLIDE, MOVE_THUNDER_WAVE, MOVE_DRAGON_DANCE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_TYRANITAR_9] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HARDY }, [FRONTIER_MON_TYRANITAR_10] = { .species = SPECIES_TYRANITAR, .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_DRAGON_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [FRONTIER_MON_ARTICUNO_5] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_BLIZZARD, MOVE_DOUBLE_EDGE, MOVE_AGILITY, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ARTICUNO_6] = { .species = SPECIES_ARTICUNO, .moves = {MOVE_ICE_BEAM, MOVE_AERIAL_ACE, MOVE_REFLECT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_5] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDERBOLT, MOVE_DRILL_PECK, MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_ZAPDOS_6] = { .species = SPECIES_ZAPDOS, .moves = {MOVE_THUNDER, MOVE_DRILL_PECK, MOVE_RAIN_DANCE, MOVE_DOUBLE_EDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_5] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_SWAGGER, MOVE_FACADE}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_MOLTRES_6] = { .species = SPECIES_MOLTRES, .moves = {MOVE_OVERHEAT, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_DOCILE }, [FRONTIER_MON_RAIKOU_5] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ROAR, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_RAIKOU_6] = { .species = SPECIES_RAIKOU, .moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_SUBSTITUTE, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 252, 0, 0, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_ENTEI_5] = { .species = SPECIES_ENTEI, .moves = {MOVE_FIRE_BLAST, MOVE_DOUBLE_EDGE, MOVE_ENDURE, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_DOCILE }, [FRONTIER_MON_ENTEI_6] = { .species = SPECIES_ENTEI, .moves = {MOVE_FLAMETHROWER, MOVE_CALM_MIND, MOVE_ROAR, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_5] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FRONTIER_MON_SUICUNE_6] = { .species = SPECIES_SUICUNE, .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST } }; diff --git a/src/data/battle_frontier/battle_tent.h b/src/data/battle_frontier/battle_tent.h index 46598b212045..4ee203ea9075 100644 --- a/src/data/battle_frontier/battle_tent.h +++ b/src/data/battle_frontier/battle_tent.h @@ -751,496 +751,496 @@ const struct BattleFrontierTrainer gSlateportBattleTentTrainers[NUM_BATTLE_TENT_ } }; -const struct FacilityMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = +const struct TrainerMon gSlateportBattleTentMons[NUM_SLATEPORT_TENT_MONS] = { [SLATEPORT_TENT_MON_ZIGZAGOON_1] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_TACKLE, MOVE_CHARM, MOVE_ODOR_SLEUTH, MOVE_PIN_MISSILE}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHOICE_BAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHOICE_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_ZIGZAGOON_2] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_DIG, MOVE_MUD_SPORT, MOVE_TAIL_WHIP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_GUST, MOVE_HARDEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_POISON_STING, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_GUST}, - .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_ORAN_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_WAILMER_1] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_CURSE, MOVE_GROWL, MOVE_WHIRLPOOL}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_WAILMER_2] = { .species = SPECIES_WAILMER, .moves = {MOVE_ROLLOUT, MOVE_GROWL, MOVE_WHIRLPOOL, MOVE_WATER_PULSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_MARILL_1] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_WINGULL_1] = { .species = SPECIES_WINGULL, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_WING_ATTACK, MOVE_STEEL_WING}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_PELIPPER_1] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_WATER_SPORT, MOVE_GROWL, MOVE_WING_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_CACNEA_1] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_LEER, MOVE_LEECH_SEED, MOVE_PIN_MISSILE}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_LOMBRE_1] = { .species = SPECIES_LOMBRE, .moves = {MOVE_ASTONISH, MOVE_WATER_GUN, MOVE_FAKE_OUT, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_MIRACLE_SEED, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MIRACLE_SEED, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_SYNTHESIS, MOVE_NATURE_POWER, MOVE_RAIN_DANCE, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 170, 0), .nature = NATURE_DOCILE }, [SLATEPORT_TENT_MON_SEEDOT] = { .species = SPECIES_SEEDOT, .moves = {MOVE_SUNNY_DAY, MOVE_SYNTHESIS, MOVE_LEECH_SEED, MOVE_BIDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_FAKE_OUT, MOVE_NATURE_POWER, MOVE_HARDEN, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102), .nature = NATURE_QUIRKY }, [SLATEPORT_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_FURY_CUTTER, MOVE_DOUBLE_TEAM, MOVE_SCREECH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_NAUGHTY }, [SLATEPORT_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_MUD_SPORT, MOVE_BLOCK, MOVE_ROCK_TOMB, MOVE_MAGNITUDE}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_ANCIENT_POWER, MOVE_PSYBEAM, MOVE_REFLECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_MIGHTYENA_1] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_BITE, MOVE_ROAR, MOVE_SWAGGER, MOVE_TACKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_MIGHTYENA_2] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_SAND_ATTACK, MOVE_POISON_FANG}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHELL_BELL, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SHELL_BELL, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_TAIL_WHIP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_GOLDEEN] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATER_SPORT, MOVE_HORN_ATTACK, MOVE_WATERFALL, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_ELECTRIKE_1] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_BITE, MOVE_SPARK, MOVE_ROAR, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_SPARK, MOVE_ROLLOUT, MOVE_CHARGE, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 0, 252, 252), .nature = NATURE_MILD }, [SLATEPORT_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_DIG, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ENDEAVOR}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAUGHTY }, [SLATEPORT_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_MUD_SLAP, MOVE_IRON_TAIL, MOVE_HARDEN, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_TRAPINCH_1] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_BODY_SLAM, MOVE_FOCUS_ENERGY, MOVE_SAND_TOMB, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_CACNEA_2] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_SANDSTORM, MOVE_POISON_STING, MOVE_DESTINY_BOND}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_GROWL, MOVE_AERIAL_ACE, MOVE_AGILITY, MOVE_ENDEAVOR}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_SUPERSONIC, MOVE_GROWL, MOVE_FOCUS_ENERGY, MOVE_PECK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_GOLBAT_1] = { .species = SPECIES_GOLBAT, .moves = {MOVE_ASTONISH, MOVE_GUST, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SPELL_TAG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SPELL_TAG, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SPINDA] = { .species = SPECIES_SPINDA, .moves = {MOVE_DIZZY_PUNCH, MOVE_FEINT_ATTACK, MOVE_HYPNOSIS, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_SERIOUS }, [SLATEPORT_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HOWL, MOVE_BODY_SLAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_SAND_ATTACK, MOVE_KNOCK_OFF, MOVE_ARM_THRUST, MOVE_BELLY_DRUM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_GROWL, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MAGNITUDE, MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SEA_INCENSE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_BUBBLE_BEAM, MOVE_ACID, MOVE_BARRIER}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_FOCUS_ENERGY, MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_YAWN}, - .itemTableId = BATTLE_FRONTIER_ITEM_AGUAV_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_AGUAV_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_TACKLE, MOVE_FLAIL, MOVE_SPLASH, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_DRAGON_SCALE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SEVIPER_1] = { .species = SPECIES_SEVIPER, .moves = {MOVE_LICK, MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_HARDEN, MOVE_PSYWAVE, MOVE_TACKLE}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_KECLEON_1] = { .species = SPECIES_KECLEON, .moves = {MOVE_PSYBEAM, MOVE_SUBSTITUTE, MOVE_THIEF, MOVE_TAIL_WHIP}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_KECLEON_2] = { .species = SPECIES_KECLEON, .moves = {MOVE_FEINT_ATTACK, MOVE_ASTONISH, MOVE_LICK, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_IAPAPA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_CALM }, [SLATEPORT_TENT_MON_SHROOMISH_1] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_STUN_SPORE, MOVE_TACKLE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_SHROOMISH_2] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_ABSORB, MOVE_STUN_SPORE, MOVE_SPORE, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, - .evSpread = F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FIGY_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_LOMBRE_2] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_ASTONISH, MOVE_GROWL, MOVE_ABSORB}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_GROWL, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_TRAPINCH_2] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_FEINT_ATTACK, MOVE_DIG, MOVE_BITE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_PELIPPER_2] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_SUPERSONIC, MOVE_MIST, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_WIKI_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_WINGULL_2] = { .species = SPECIES_WINGULL, .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_GROWL, MOVE_ICY_WIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NEVER_MELT_ICE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MARILL_2] = { .species = SPECIES_MARILL, .moves = {MOVE_DOUBLE_EDGE, MOVE_RAIN_DANCE, MOVE_TAIL_WHIP, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_GANLON_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [SLATEPORT_TENT_MON_SKITTY] = { .species = SPECIES_SKITTY, .moves = {MOVE_ASSIST, MOVE_ATTRACT, MOVE_SING, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_CAREFUL }, [SLATEPORT_TENT_MON_SEVIPER_2] = { .species = SPECIES_SEVIPER, .moves = {MOVE_SWAGGER, MOVE_WRAP, MOVE_POISON_TAIL, MOVE_HAZE}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 0, 170, 170), .nature = NATURE_BRAVE }, [SLATEPORT_TENT_MON_GOLBAT_2] = { .species = SPECIES_GOLBAT, .moves = {MOVE_BITE, MOVE_TORMENT, MOVE_SCREECH, MOVE_POISON_FANG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_RALTS] = { .species = SPECIES_RALTS, .moves = {MOVE_HYPNOSIS, MOVE_IMPRISON, MOVE_PSYCHIC, MOVE_DREAM_EATER}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MAGO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_SAND_TOMB, MOVE_DEFENSE_CURL}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = 0, + .heldItem = ITEM_SOFT_SAND, + .ev = NULL, .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ENCORE, MOVE_POUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [SLATEPORT_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_CONFUSE_RAY, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_HARDY }, [SLATEPORT_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_CHARM, MOVE_TACKLE, MOVE_ENCORE, MOVE_MOONLIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHERI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHERI_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_DISABLE, MOVE_CONFUSION, MOVE_REFLECT, MOVE_RECOVER}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [SLATEPORT_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_CALM_MIND, MOVE_CONFUSION, MOVE_DOUBLE_TEAM, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_CAREFUL }, [SLATEPORT_TENT_MON_BRELOOM] = { .species = SPECIES_BRELOOM, .moves = {MOVE_ABSORB, MOVE_TACKLE, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_NAIVE }, [SLATEPORT_TENT_MON_PLUSLE_1] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_ENCORE, MOVE_THUNDER_WAVE, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_LONELY }, [SLATEPORT_TENT_MON_PLUSLE_2] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_FAKE_TEARS, MOVE_SUBSTITUTE, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MILD }, [SLATEPORT_TENT_MON_ELECTRIKE_2] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_ROAR, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_APICOT_BERRY, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_APICOT_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_TIMID }, [SLATEPORT_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_SING, MOVE_PECK, MOVE_STEEL_WING, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [SLATEPORT_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_FOCUS_ENERGY, MOVE_VITAL_THROW, MOVE_SEISMIC_TOSS, MOVE_FORESIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [SLATEPORT_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_FOCUS_ENERGY, MOVE_LEER, MOVE_KARATE_CHOP, MOVE_FORESIGHT}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MODEST } }; @@ -1804,321 +1804,321 @@ const struct BattleFrontierTrainer gVerdanturfBattleTentTrainers[NUM_BATTLE_TENT } }; -const struct FacilityMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = +const struct TrainerMon gVerdanturfBattleTentMons[NUM_VERDANTURF_TENT_MONS] = { [VERDANTURF_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_ROAR, MOVE_THIEF, MOVE_BITE, MOVE_HOWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(102, 102, 102, 102, 0, 102), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_ZIGZAGOON] = { .species = SPECIES_ZIGZAGOON, .moves = {MOVE_COVET, MOVE_GROWL, MOVE_PIN_MISSILE, MOVE_MUD_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [VERDANTURF_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_CONFUSION, MOVE_MOONLIGHT, MOVE_PROTECT, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 170, 0), .nature = NATURE_MODEST }, [VERDANTURF_TENT_MON_TAILLOW] = { .species = SPECIES_TAILLOW, .moves = {MOVE_AGILITY, MOVE_DOUBLE_TEAM, MOVE_WING_ATTACK, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_ORAN_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ORAN_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 0, 0), .nature = NATURE_RASH }, [VERDANTURF_TENT_MON_MACHOP] = { .species = SPECIES_MACHOP, .moves = {MOVE_LOW_KICK, MOVE_LEER, MOVE_FOCUS_ENERGY, MOVE_ENCORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PERSIM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PERSIM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 170, 0, 0), .nature = NATURE_LONELY }, [VERDANTURF_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 0), .nature = NATURE_HARDY }, [VERDANTURF_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_MUD_SLAP, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SPEED, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 0, 0), .nature = NATURE_HASTY }, [VERDANTURF_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_ATTRACT, MOVE_TWISTER, MOVE_WING_ATTACK, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_ENDEAVOR, MOVE_METAL_CLAW, MOVE_TACKLE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_PECHA_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_PECHA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_HARDY }, [VERDANTURF_TENT_MON_NUMEL_1] = { .species = SPECIES_NUMEL, .moves = {MOVE_EMBER, MOVE_ROCK_SLIDE, MOVE_ROLLOUT, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_SASSY }, [VERDANTURF_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_SLUDGE, MOVE_ACID_ARMOR, MOVE_AMNESIA}, - .itemTableId = BATTLE_FRONTIER_ITEM_POISON_BARB, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_POISON_BARB, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BOLD }, [VERDANTURF_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_SUBSTITUTE, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_BIND}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIET }, [VERDANTURF_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SANDSTORM, MOVE_FLASH, MOVE_SELF_DESTRUCT, MOVE_HARDEN}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_NINJASK] = { .species = SPECIES_NINJASK, .moves = {MOVE_DIG, MOVE_SCREECH, MOVE_SWORDS_DANCE, MOVE_LEECH_LIFE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(102, 0, 102, 102, 102, 102), .nature = NATURE_SASSY }, [VERDANTURF_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_BULK_UP, MOVE_ARM_THRUST, MOVE_SMELLING_SALTS, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_REFRESH, MOVE_SAFEGUARD, MOVE_ATTRACT, MOVE_MIRROR_MOVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MILD }, [VERDANTURF_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_MUD_SPORT, MOVE_SUPERSONIC, MOVE_DOUBLE_TEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_MYSTIC_WATER, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MYSTIC_WATER, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [VERDANTURF_TENT_MON_LOTAD] = { .species = SPECIES_LOTAD, .moves = {MOVE_GROWL, MOVE_WATER_GUN, MOVE_MEGA_DRAIN, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_IAPAPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_IAPAPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_NUMEL_2] = { .species = SPECIES_NUMEL, .moves = {MOVE_MAGNITUDE, MOVE_EMBER, MOVE_GROWL, MOVE_DEFENSE_CURL}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_LINOONE] = { .species = SPECIES_LINOONE, .moves = {MOVE_HEADBUTT, MOVE_TICKLE, MOVE_PROTECT, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(128, 128, 128, 0, 0, 128), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_SEVIPER] = { .species = SPECIES_SEVIPER, .moves = {MOVE_WRAP, MOVE_GLARE, MOVE_POISON_FANG, MOVE_SWAGGER}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 0, 170, 170), .nature = NATURE_LONELY }, [VERDANTURF_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AIR_CUTTER, MOVE_SANDSTORM, MOVE_LEER, MOVE_AGILITY}, - .itemTableId = BATTLE_FRONTIER_ITEM_MACHO_BRACE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MACHO_BRACE, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_BASHFUL }, [VERDANTURF_TENT_MON_SWELLOW] = { .species = SPECIES_SWELLOW, .moves = {MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SHARP_BEAK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SHARP_BEAK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_PECK, MOVE_SUPERSONIC, MOVE_PSYBEAM, MOVE_RAIN_DANCE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_GENTLE }, [VERDANTURF_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_SHOCK_WAVE, MOVE_TACKLE, MOVE_CHARGE, MOVE_THUNDER_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_MILD }, [VERDANTURF_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_SUNNY_DAY, MOVE_TORMENT, MOVE_FAKE_OUT, MOVE_THIEF}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_GLASSES, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_GLASSES, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 0, 128, 128), .nature = NATURE_BOLD }, [VERDANTURF_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_TAKE_DOWN, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_MODEST }, [VERDANTURF_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_HOWL, MOVE_TAKE_DOWN, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 170, 0, 0, 0), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_HARDEN, MOVE_FIRE_SPIN, MOVE_MIMIC, MOVE_PSYWAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_TWISTED_SPOON, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_TWISTED_SPOON, + .ev = TRAINER_PARTY_EVS(0, 128, 128, 0, 128, 128), .nature = NATURE_ADAMANT }, [VERDANTURF_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROLLOUT, MOVE_ROCK_SMASH, MOVE_SANDSTORM, MOVE_BLOCK}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_IMPISH }, [VERDANTURF_TENT_MON_KADABRA] = { .species = SPECIES_KADABRA, .moves = {MOVE_ENCORE, MOVE_PSYBEAM, MOVE_DISABLE, MOVE_KINESIS}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 0, 170, 170, 0), .nature = NATURE_QUIET }, [VERDANTURF_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_PROTECT, MOVE_SELF_DESTRUCT, MOVE_SPARK, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_BASHFUL }, [VERDANTURF_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_METAL_SOUND, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(84, 84, 84, 84, 84, 84), .nature = NATURE_SERIOUS }, [VERDANTURF_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_WING_ATTACK, MOVE_MIST, MOVE_AGILITY, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_FIGY_BERRY, - .evSpread = 0, + .heldItem = ITEM_FIGY_BERRY, + .ev = NULL, .nature = NATURE_BRAVE }, [VERDANTURF_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_HOWL, MOVE_UPROAR, MOVE_REST, MOVE_SCREECH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CALM }, [VERDANTURF_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_TAIL_WHIP, MOVE_BUBBLE_BEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_JOLLY }, [VERDANTURF_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_DIG, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_FEINT_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_NONE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_NONE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_NAUGHTY }, [VERDANTURF_TENT_MON_TENTACOOL] = { .species = SPECIES_TENTACOOL, .moves = {MOVE_SCREECH, MOVE_CONFUSE_RAY, MOVE_WRAP, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_VIGOROTH] = { .species = SPECIES_VIGOROTH, .moves = {MOVE_ENCORE, MOVE_SLACK_OFF, MOVE_YAWN, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 170, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_ROLLOUT, MOVE_CURSE, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_WHITE_HERB, - .evSpread = F_EV_SPREAD_HP, + .heldItem = ITEM_WHITE_HERB, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 0), .nature = NATURE_RELAXED }, [VERDANTURF_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_TACKLE, MOVE_SWEET_SCENT, MOVE_WISH, MOVE_ENCORE}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_LEER, MOVE_KARATE_CHOP, MOVE_BULK_UP, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_CALM }, [VERDANTURF_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_SECRET_POWER, MOVE_SUPERSONIC, MOVE_STOMP, MOVE_ROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_QUIRKY }, [VERDANTURF_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_INGRAIN, MOVE_LEECH_SEED, MOVE_NEEDLE_ARM, MOVE_GROWTH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SERIOUS } }; @@ -2685,321 +2685,321 @@ const struct BattleFrontierTrainer gFallarborBattleTentTrainers[NUM_BATTLE_TENT_ } }; -const struct FacilityMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = +const struct TrainerMon gFallarborBattleTentMons[NUM_FALLARBOR_TENT_MONS] = { [FALLARBOR_TENT_MON_NUMEL] = { .species = SPECIES_NUMEL, .moves = {MOVE_GROWL, MOVE_FLAMETHROWER, MOVE_TACKLE, MOVE_SUNNY_DAY}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHARCOAL, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHARCOAL, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_LINOONE_1] = { .species = SPECIES_LINOONE, .moves = {MOVE_ODOR_SLEUTH, MOVE_COVET, MOVE_ROCK_SMASH, MOVE_CHARM}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILK_SCARF, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_SILK_SCARF, + .ev = TRAINER_PARTY_EVS(0, 0, 252, 0, 0, 252), .nature = NATURE_SASSY }, [FALLARBOR_TENT_MON_PLUSLE] = { .species = SPECIES_PLUSLE, .moves = {MOVE_SPARK, MOVE_GROWL, MOVE_QUICK_ATTACK, MOVE_FAKE_TEARS}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_POOCHYENA] = { .species = SPECIES_POOCHYENA, .moves = {MOVE_YAWN, MOVE_ODOR_SLEUTH, MOVE_HOWL, MOVE_FRUSTRATION}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_NAUGHTY }, [FALLARBOR_TENT_MON_KECLEON] = { .species = SPECIES_KECLEON, .moves = {MOVE_LICK, MOVE_SLASH, MOVE_FEINT_ATTACK, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_WIKI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_WIKI_BERRY, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_MAGIKARP] = { .species = SPECIES_MAGIKARP, .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_FLAIL, MOVE_NONE}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_SCALE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_DRAGON_SCALE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_SOLROCK] = { .species = SPECIES_SOLROCK, .moves = {MOVE_ROCK_THROW, MOVE_FLASH, MOVE_SANDSTORM, MOVE_PSYWAVE}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_SASSY }, [FALLARBOR_TENT_MON_MAKUHITA] = { .species = SPECIES_MAKUHITA, .moves = {MOVE_DETECT, MOVE_ARM_THRUST, MOVE_FAKE_OUT, MOVE_SMELLING_SALTS}, - .itemTableId = BATTLE_FRONTIER_ITEM_BLACK_BELT, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_BLACK_BELT, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_MACHOKE] = { .species = SPECIES_MACHOKE, .moves = {MOVE_COUNTER, MOVE_REVENGE, MOVE_BULK_UP, MOVE_FOCUS_ENERGY}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_NAIVE }, [FALLARBOR_TENT_MON_NINCADA] = { .species = SPECIES_NINCADA, .moves = {MOVE_FURY_SWIPES, MOVE_ENDURE, MOVE_MUD_SLAP, MOVE_DIG}, - .itemTableId = BATTLE_FRONTIER_ITEM_LUM_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_LUM_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_SERIOUS }, [FALLARBOR_TENT_MON_BEAUTIFLY] = { .species = SPECIES_BEAUTIFLY, .moves = {MOVE_FLASH, MOVE_MORNING_SUN, MOVE_HARDEN, MOVE_MEGA_DRAIN}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(0, 128, 128, 128, 0, 128), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_DUSTOX] = { .species = SPECIES_DUSTOX, .moves = {MOVE_MOONLIGHT, MOVE_HARDEN, MOVE_POISON_STING, MOVE_PSYBEAM}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(0, 0, 170, 170, 0, 170), .nature = NATURE_DOCILE }, [FALLARBOR_TENT_MON_ILLUMISE] = { .species = SPECIES_ILLUMISE, .moves = {MOVE_METRONOME, MOVE_FLATTER, MOVE_WISH, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_SALAC_BERRY, - .evSpread = F_EV_SPREAD_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SALAC_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_VOLBEAT] = { .species = SPECIES_VOLBEAT, .moves = {MOVE_TACKLE, MOVE_MOONLIGHT, MOVE_SIGNAL_BEAM, MOVE_TAIL_GLOW}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEPPA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LEPPA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_NINJASK_1] = { .species = SPECIES_NINJASK, .moves = {MOVE_DOUBLE_TEAM, MOVE_PROTECT, MOVE_DIG, MOVE_SAND_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_TIMID }, [FALLARBOR_TENT_MON_NINJASK_2] = { .species = SPECIES_NINJASK, .moves = {MOVE_SWORDS_DANCE, MOVE_CUT, MOVE_FURY_CUTTER, MOVE_LEECH_LIFE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SILVER_POWDER, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SILVER_POWDER, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_ARON_1] = { .species = SPECIES_ARON, .moves = {MOVE_METAL_CLAW, MOVE_PROTECT, MOVE_SHOCK_WAVE, MOVE_METAL_SOUND}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 170, 0), .nature = NATURE_LONELY }, [FALLARBOR_TENT_MON_ARON_2] = { .species = SPECIES_ARON, .moves = {MOVE_SECRET_POWER, MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_MUD_SLAP}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_GENTLE }, [FALLARBOR_TENT_MON_ELECTRIKE] = { .species = SPECIES_ELECTRIKE, .moves = {MOVE_CRUNCH, MOVE_THUNDER_WAVE, MOVE_HOWL, MOVE_QUICK_ATTACK}, - .itemTableId = BATTLE_FRONTIER_ITEM_SEA_INCENSE, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SEA_INCENSE, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 170, 0), .nature = NATURE_HASTY }, [FALLARBOR_TENT_MON_MAGNEMITE] = { .species = SPECIES_MAGNEMITE, .moves = {MOVE_THUNDER_WAVE, MOVE_SUPERSONIC, MOVE_ENDURE, MOVE_SPARK}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_VOLTORB] = { .species = SPECIES_VOLTORB, .moves = {MOVE_CHARGE, MOVE_SPARK, MOVE_SCREECH, MOVE_SONIC_BOOM}, - .itemTableId = BATTLE_FRONTIER_ITEM_ASPEAR_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_ASPEAR_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_WHISMUR] = { .species = SPECIES_WHISMUR, .moves = {MOVE_REST, MOVE_SLEEP_TALK, MOVE_HYPER_VOICE, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LAX_INCENSE, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LAX_INCENSE, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LOUDRED] = { .species = SPECIES_LOUDRED, .moves = {MOVE_STOMP, MOVE_REST, MOVE_SCREECH, MOVE_UPROAR}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LINOONE_2] = { .species = SPECIES_LINOONE, .moves = {MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_SHOCK_WAVE, MOVE_GROWL}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGNET, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_MAGNET, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_MIGHTYENA] = { .species = SPECIES_MIGHTYENA, .moves = {MOVE_SAND_ATTACK, MOVE_HOWL, MOVE_SWAGGER, MOVE_SECRET_POWER}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 170, 0, 0), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_SWABLU] = { .species = SPECIES_SWABLU, .moves = {MOVE_TAKE_DOWN, MOVE_SING, MOVE_GROWL, MOVE_SAFEGUARD}, - .itemTableId = BATTLE_FRONTIER_ITEM_FOCUS_BAND, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_FOCUS_BAND, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_QUIRKY }, [FALLARBOR_TENT_MON_SKARMORY] = { .species = SPECIES_SKARMORY, .moves = {MOVE_AGILITY, MOVE_STEEL_WING, MOVE_SAND_ATTACK, MOVE_TORMENT}, - .itemTableId = BATTLE_FRONTIER_ITEM_METAL_COAT, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_METAL_COAT, + .ev = TRAINER_PARTY_EVS(170, 170, 0, 0, 0, 170), .nature = NATURE_BOLD }, [FALLARBOR_TENT_MON_GOLBAT] = { .species = SPECIES_GOLBAT, .moves = {MOVE_CONFUSE_RAY, MOVE_BITE, MOVE_DOUBLE_TEAM, MOVE_SUBSTITUTE}, - .itemTableId = BATTLE_FRONTIER_ITEM_PETAYA_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_PETAYA_BERRY, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BOLD }, [FALLARBOR_TENT_MON_WINGULL] = { .species = SPECIES_WINGULL, .moves = {MOVE_WING_ATTACK, MOVE_HAIL, MOVE_DOUBLE_TEAM, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_RAWST_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_SPEED, + .heldItem = ITEM_RAWST_BERRY, + .ev = TRAINER_PARTY_EVS(0, 0, 0, 252, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_PELIPPER] = { .species = SPECIES_PELIPPER, .moves = {MOVE_TWISTER, MOVE_ICY_WIND, MOVE_DOUBLE_TEAM, MOVE_WATER_GUN}, - .itemTableId = BATTLE_FRONTIER_ITEM_DRAGON_FANG, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_DRAGON_FANG, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_BARBOACH] = { .species = SPECIES_BARBOACH, .moves = {MOVE_SPARK, MOVE_WATER_GUN, MOVE_EARTHQUAKE, MOVE_WATER_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_LIECHI_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_LIECHI_BERRY, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 252, 0), .nature = NATURE_MODEST }, [FALLARBOR_TENT_MON_WAILMER] = { .species = SPECIES_WAILMER, .moves = {MOVE_WATER_PULSE, MOVE_RAIN_DANCE, MOVE_SPLASH, MOVE_CURSE}, - .itemTableId = BATTLE_FRONTIER_ITEM_KINGS_ROCK, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_KINGS_ROCK, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_QUIET }, [FALLARBOR_TENT_MON_MARILL] = { .species = SPECIES_MARILL, .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_ATTRACT}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_GOLDEEN_1] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_WATERFALL, MOVE_RAIN_DANCE, MOVE_FLAIL, MOVE_PROTECT}, - .itemTableId = BATTLE_FRONTIER_ITEM_GANLON_BERRY, - .evSpread = F_EV_SPREAD_SP_ATTACK | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_GANLON_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 0), .nature = NATURE_HASTY }, [FALLARBOR_TENT_MON_GOLDEEN_2] = { .species = SPECIES_GOLDEEN, .moves = {MOVE_SLEEP_TALK, MOVE_HORN_DRILL, MOVE_REST, MOVE_SUPERSONIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_MENTAL_HERB, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_MENTAL_HERB, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_CAREFUL }, [FALLARBOR_TENT_MON_TRAPINCH] = { .species = SPECIES_TRAPINCH, .moves = {MOVE_RETURN, MOVE_SAND_ATTACK, MOVE_ATTRACT, MOVE_STRENGTH}, - .itemTableId = BATTLE_FRONTIER_ITEM_MAGO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_MAGO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_BALTOY] = { .species = SPECIES_BALTOY, .moves = {MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_RAPID_SPIN, MOVE_MIMIC}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(0, 170, 0, 170, 0, 170), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_GRAVELER] = { .species = SPECIES_GRAVELER, .moves = {MOVE_ROCK_BLAST, MOVE_DEFENSE_CURL, MOVE_MAGNITUDE, MOVE_MUD_SPORT}, - .itemTableId = BATTLE_FRONTIER_ITEM_HARD_STONE, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_HARD_STONE, + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_SANDSHREW] = { .species = SPECIES_SANDSHREW, .moves = {MOVE_SAND_TOMB, MOVE_SANDSTORM, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH}, - .itemTableId = BATTLE_FRONTIER_ITEM_SOFT_SAND, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SOFT_SAND, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_JOLLY }, [FALLARBOR_TENT_MON_SWALOT] = { .species = SPECIES_SWALOT, .moves = {MOVE_YAWN, MOVE_ENCORE, MOVE_BULLET_SEED, MOVE_SLUDGE}, - .itemTableId = BATTLE_FRONTIER_ITEM_SCOPE_LENS, - .evSpread = F_EV_SPREAD_ATTACK | F_EV_SPREAD_HP, + .heldItem = ITEM_SCOPE_LENS, + .ev = TRAINER_PARTY_EVS(252, 252, 0, 0, 0, 0), .nature = NATURE_BRAVE }, [FALLARBOR_TENT_MON_SHROOMISH] = { .species = SPECIES_SHROOMISH, .moves = {MOVE_HEADBUTT, MOVE_SPORE, MOVE_SWAGGER, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_QUICK_CLAW, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_QUICK_CLAW, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_IMPISH }, [FALLARBOR_TENT_MON_KIRLIA] = { .species = SPECIES_KIRLIA, .moves = {MOVE_HYPNOSIS, MOVE_GROWL, MOVE_ATTRACT, MOVE_DREAM_EATER}, - .itemTableId = BATTLE_FRONTIER_ITEM_SITRUS_BERRY, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_SITRUS_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 0, 252), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_LOMBRE] = { .species = SPECIES_LOMBRE, .moves = {MOVE_NATURE_POWER, MOVE_WATER_GUN, MOVE_RAIN_DANCE, MOVE_FLASH}, - .itemTableId = BATTLE_FRONTIER_ITEM_LEFTOVERS, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_LEFTOVERS, + .ev = TRAINER_PARTY_EVS(170, 0, 170, 0, 0, 170), .nature = NATURE_BASHFUL }, [FALLARBOR_TENT_MON_NUZLEAF] = { .species = SPECIES_NUZLEAF, .moves = {MOVE_NATURE_POWER, MOVE_TORMENT, MOVE_SWAGGER, MOVE_REST}, - .itemTableId = BATTLE_FRONTIER_ITEM_CHESTO_BERRY, - .evSpread = F_EV_SPREAD_SPEED | F_EV_SPREAD_ATTACK, + .heldItem = ITEM_CHESTO_BERRY, + .ev = TRAINER_PARTY_EVS(0, 252, 0, 252, 0, 0), .nature = NATURE_ADAMANT }, [FALLARBOR_TENT_MON_CACNEA] = { .species = SPECIES_CACNEA, .moves = {MOVE_SANDSTORM, MOVE_NEEDLE_ARM, MOVE_TEETER_DANCE, MOVE_LEECH_SEED}, - .itemTableId = BATTLE_FRONTIER_ITEM_BRIGHT_POWDER, - .evSpread = F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_SPEED | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP, + .heldItem = ITEM_BRIGHT_POWDER, + .ev = TRAINER_PARTY_EVS(128, 0, 128, 128, 0, 128), .nature = NATURE_ADAMANT } }; diff --git a/src/data/battle_move_effects.h b/src/data/battle_move_effects.h index 5a1536155384..f970f0e9f793 100644 --- a/src/data/battle_move_effects.h +++ b/src/data/battle_move_effects.h @@ -1423,7 +1423,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 0, // TODO: Assign points }, - [EFFECT_FREEZE_DRY] = + [EFFECT_SUPER_EFFECTIVE_ON_ARG] = { .battleScript = BattleScript_EffectHit, .battleTvScore = 0, // TODO: Assign points @@ -2218,4 +2218,41 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] = .battleTvScore = 0, // TODO: Assign points .encourageEncore = TRUE, }, + + [EFFECT_SPICY_EXTRACT] = + { + .battleScript = BattleScript_EffectSpicyExtract, + .battleTvScore = 0, // TODO: Assign points + .encourageEncore = TRUE, + }, + + [EFFECT_TERA_BLAST] = + { + .battleScript = BattleScript_EffectPhotonGeyser, + .battleTvScore = 0, // TODO: Assign points + }, + + [EFFECT_TERA_STARSTORM] = + { + .battleScript = BattleScript_EffectPhotonGeyser, + .battleTvScore = 0, // TODO: Assign points + }, + + [EFFECT_DRAGON_DARTS] = + { + .battleScript = BattleScript_EffectHit, + .battleTvScore = 0, // TODO: Assign points + }, + + [EFFECT_GUARDIAN_OF_ALOLA] = + { + .battleScript = BattleScript_DamageToQuarterTargetHP, + .battleTvScore = 0, // TODO: Assign points + }, + + [EFFECT_SHELL_SIDE_ARM] = + { + .battleScript = BattleScript_EffectHit, + .battleTvScore = 0, // TODO: Assign points + }, }; diff --git a/src/data/battle_partners.h b/src/data/battle_partners.h index 39bb91132f74..95866d24faeb 100644 --- a/src/data/battle_partners.h +++ b/src/data/battle_partners.h @@ -1,20 +1,105 @@ -const struct Trainer gBattlePartners[] = { +// +// DO NOT MODIFY THIS FILE! It is auto-generated from src/data/battle_partners.party +// +// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE +// in include/config/general.h and remove this notice. +// Use sed -i '/^#line/d' 'src/data/battle_partners.h' to remove #line markers. +// + +#line 1 "src/data/battle_partners.party" + +#line 1 [PARTNER_NONE] = { - .party = NULL, +#line 3 .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, - .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _(""), - .items = {}, +#line 4 + .trainerPic = TRAINER_BACK_PIC_BRENDAN, + .encounterMusic_gender = +#line 6 + TRAINER_ENCOUNTER_MUSIC_MALE, + .partySize = 0, + .party = (const struct TrainerMon[]) + { + }, }, - +#line 8 [PARTNER_STEVEN] = { - .party = TRAINER_PARTY(sParty_StevenPartner), +#line 9 + .trainerName = _("STEVEN"), +#line 10 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11 .trainerPic = TRAINER_BACK_PIC_STEVEN, - .trainerName = _("STEVEN"), + .encounterMusic_gender = +#line 13 + TRAINER_ENCOUNTER_MUSIC_MALE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15 + .species = SPECIES_METANG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 19 + .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 6, 0), +#line 18 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 17 + .lvl = 42, +#line 16 + .nature = NATURE_BRAVE, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 20 + MOVE_LIGHT_SCREEN, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_METAL_CLAW, + }, + }, + { +#line 25 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 29 + .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 6, 252), +#line 28 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 27 + .lvl = 43, +#line 26 + .nature = NATURE_IMPISH, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 30 + MOVE_TOXIC, + MOVE_AERIAL_ACE, + MOVE_PROTECT, + MOVE_STEEL_WING, + }, + }, + { +#line 35 + .species = SPECIES_AGGRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 39 + .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 6), +#line 38 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 37 + .lvl = 44, +#line 36 + .nature = NATURE_ADAMANT, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 40 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_SOLAR_BEAM, + MOVE_DRAGON_CLAW, + }, + }, + }, }, -}; diff --git a/src/data/battle_partners.party b/src/data/battle_partners.party new file mode 100644 index 000000000000..e1ecfe35faaf --- /dev/null +++ b/src/data/battle_partners.party @@ -0,0 +1,43 @@ +=== PARTNER_NONE === +Name: +Class: Pkmn Trainer 1 +Pic: Brendan +Gender: Male +Music: Male + +=== PARTNER_STEVEN === +Name: STEVEN +Class: Rival +Pic: Steven +Gender: Male +Music: Male + +Metang +Brave Nature +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 Atk / 252 Def / 6 SpA +- Light Screen +- Psychic +- Reflect +- Metal Claw + +Skarmory +Impish Nature +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 HP / 6 SpA / 252 SpD +- Toxic +- Aerial Ace +- Protect +- Steel Wing + +Aggron +Adamant Nature +Level: 44 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +EVs: 252 Atk / 252 SpA / 6 SpD +- Thunder +- Protect +- Solar Beam +- Dragon Claw diff --git a/src/data/field_effects/field_effect_object_template_pointers.h b/src/data/field_effects/field_effect_object_template_pointers.h index 64a3c3283b00..14113d3a43bb 100755 --- a/src/data/field_effects/field_effect_object_template_pointers.h +++ b/src/data/field_effects/field_effect_object_template_pointers.h @@ -35,6 +35,9 @@ extern const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; extern const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; extern const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; extern const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, @@ -74,4 +77,7 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_BUBBLES] = &gFieldEffectObjectTemplate_Bubbles, [FLDEFFOBJ_SMALL_SPARKLE] = &gFieldEffectObjectTemplate_SmallSparkle, [FLDEFFOBJ_RAYQUAZA] = &gFieldEffectObjectTemplate_Rayquaza, + [FLDEFFOBJ_TRACKS_SLITHER] = &gFieldEffectObjectTemplate_SlitherTracks, + [FLDEFFOBJ_TRACKS_SPOT] = &gFieldEffectObjectTemplate_SpotTracks, + [FLDEFFOBJ_TRACKS_BUG] = &gFieldEffectObjectTemplate_BugTracks, }; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index d19adf6f0b71..3b9dafd2cb4f 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -30,7 +30,7 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowSmall, @@ -40,7 +40,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowMedium, @@ -50,7 +50,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowLarge, @@ -60,7 +60,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = TAG_WEATHER_START, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowExtraLarge, @@ -210,7 +210,7 @@ static const union AnimCmd *const sAnimTable_SurfBlob[] = const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_32x32, .anims = sAnimTable_SurfBlob, .images = sPicTable_SurfBlob, @@ -267,7 +267,7 @@ static const union AnimCmd *const sAnimTable_Arrow[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Arrow, .images = sPicTable_Arrow, @@ -431,6 +431,36 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = { .callback = UpdateFootprintsTireTracksFieldEffect, }; +static const struct SpriteFrameImage sPicTable_BugTracks[] = { + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_BugTracks, 2, 2, 1), +}; + +static const struct SpriteFrameImage sPicTable_SpotTracks[] = { + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SpotTracks, 2, 2, 1), +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_BugTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_DeepSandFootprints, + .images = sPicTable_SpotTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = { overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 1), @@ -438,6 +468,14 @@ static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = { overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 3), }; + +static const struct SpriteFrameImage sPicTable_SlitherTracks[] = { + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 0), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 1), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 2), + overworld_frame(gFieldEffectObjectPic_SlitherTracks, 2, 2, 3), +}; + static const union AnimCmd sBikeTireTracksAnim_South[] = { ANIMCMD_FRAME(2, 1), @@ -509,6 +547,17 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = { .callback = UpdateFootprintsTireTracksFieldEffect, }; + +const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks = { + .tileTag = 0xFFFF, + .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .oam = &gObjectEventBaseOam_16x16, + .anims = sAnimTable_BikeTireTracks, + .images = sPicTable_SlitherTracks, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateFootprintsTireTracksFieldEffect, +}; + static const struct SpriteFrameImage sPicTable_JumpBigSplash[] = { overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 0), overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 1), @@ -931,7 +980,7 @@ static const union AnimCmd *const sAnimTable_Sparkle[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x16, .anims = sAnimTable_Sparkle, .images = sPicTable_Sparkle, @@ -975,7 +1024,7 @@ static const union AnimCmd *const sAnimTable_TreeDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_TreeDisguise, .images = sPicTable_TreeDisguise, @@ -1019,7 +1068,7 @@ static const union AnimCmd *const sAnimTable_MountainDisguise[] = const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_2, .oam = &gObjectEventBaseOam_16x32, .anims = sAnimTable_MountainDisguise, .images = sPicTable_MountainDisguise, @@ -1064,7 +1113,7 @@ static const union AnimCmd *const sAnimTable_Bird[] = const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &gObjectEventBaseOam_32x32, .anims = sAnimTable_Bird, .images = sPicTable_Bird, @@ -1273,7 +1322,7 @@ static const union AnimCmd *const sAnimTable_RayquazaSpotlightEffect[] = { }; static const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = { - overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0), + overworld_frame(gObjectEventPic_RayquazaCutscene, 4, 4, 0), }; const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = { diff --git a/src/data/gimmicks.h b/src/data/gimmicks.h new file mode 100644 index 000000000000..95a233e3fe57 --- /dev/null +++ b/src/data/gimmicks.h @@ -0,0 +1,54 @@ +#include "graphics/gimmicks.h" + +// Gimmick data + +const struct GimmickInfo gGimmicksInfo[GIMMICKS_COUNT] = +{ + [GIMMICK_NONE] = {0}, + [GIMMICK_MEGA] = + { + .triggerSheet = &sSpriteSheet_MegaTrigger, + .triggerPal = &sSpritePalette_MegaTrigger, + .triggerTemplate = &sSpriteTemplate_GimmickTrigger, + .indicatorSheet = &sSpriteSheet_MegaIndicator, + .indicatorPal = &sSpritePalette_MegaIndicator, + .CanActivate = CanMegaEvolve, + .ActivateGimmick = ActivateMegaEvolution, + }, + [GIMMICK_Z_MOVE] = + { + .triggerSheet = &sSpriteSheet_ZMoveTrigger, + .triggerPal = &sSpritePalette_ZMoveTrigger, + .triggerTemplate = &sSpriteTemplate_GimmickTrigger, + .CanActivate = CanUseZMove, + .ActivateGimmick = ActivateZMove, + }, + [GIMMICK_ULTRA_BURST] = + { + .triggerSheet = &sSpriteSheet_BurstTrigger, + .triggerPal = &sSpritePalette_BurstTrigger, + .triggerTemplate = &sSpriteTemplate_GimmickTrigger, + .CanActivate = CanUltraBurst, + .ActivateGimmick = ActivateUltraBurst, + }, + [GIMMICK_DYNAMAX] = + { + .triggerSheet = &sSpriteSheet_DynamaxTrigger, + .triggerPal = &sSpritePalette_DynamaxTrigger, + .triggerTemplate = &sSpriteTemplate_GimmickTrigger, + .indicatorSheet = &sSpriteSheet_DynamaxIndicator, + .indicatorPal = &sSpritePalette_MiscIndicator, + .CanActivate = CanDynamax, + .ActivateGimmick = ActivateDynamax, + }, + [GIMMICK_TERA] = + { + .triggerSheet = &sSpriteSheet_TeraTrigger, + .triggerPal = &sSpritePalette_TeraTrigger, + .triggerTemplate = &sSpriteTemplate_GimmickTrigger, + .indicatorSheet = NULL, // handled separately + .indicatorPal = &sSpritePalette_TeraIndicator, + .CanActivate = CanTerastallize, + .ActivateGimmick = ActivateTera, + } +}; diff --git a/src/data/graphics/gimmicks.h b/src/data/graphics/gimmicks.h new file mode 100644 index 000000000000..5299f74fc3db --- /dev/null +++ b/src/data/graphics/gimmicks.h @@ -0,0 +1,153 @@ +// trigger data +static const u8 ALIGNED(4) sMegaTriggerGfx[] = INCBIN_U8("graphics/battle_interface/mega_trigger.4bpp"); +static const u8 ALIGNED(4) sZMoveTriggerGfx[] = INCBIN_U8("graphics/battle_interface/z_move_trigger.4bpp"); +static const u8 ALIGNED(4) sBurstTriggerGfx[] = INCBIN_U8("graphics/battle_interface/burst_trigger.4bpp"); +static const u8 ALIGNED(4) sDynamaxTriggerGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_trigger.4bpp"); +static const u8 ALIGNED(4) sTeraTriggerGfx[] = INCBIN_U8("graphics/battle_interface/tera_trigger.4bpp"); + +static const u16 sMegaTriggerPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger.gbapal"); +static const u16 sZMoveTriggerPal[] = INCBIN_U16("graphics/battle_interface/z_move_trigger.gbapal"); +static const u16 sBurstTriggerPal[] = INCBIN_U16("graphics/battle_interface/burst_trigger.gbapal"); +static const u16 sDynamaxTriggerPal[] = INCBIN_U16("graphics/battle_interface/dynamax_trigger.gbapal"); +static const u16 sTeraTriggerPal[] = INCBIN_U16("graphics/battle_interface/tera_trigger.gbapal"); + +static const struct SpriteSheet sSpriteSheet_MegaTrigger = {sMegaTriggerGfx, sizeof(sMegaTriggerGfx), TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpriteSheet sSpriteSheet_ZMoveTrigger = {sZMoveTriggerGfx, sizeof(sZMoveTriggerGfx), TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpriteSheet sSpriteSheet_BurstTrigger = {sBurstTriggerGfx, sizeof(sBurstTriggerGfx), TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpriteSheet sSpriteSheet_DynamaxTrigger = {sDynamaxTriggerGfx, sizeof(sDynamaxTriggerGfx), TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpriteSheet sSpriteSheet_TeraTrigger = {sTeraTriggerGfx, sizeof(sTeraTriggerGfx), TAG_GIMMICK_TRIGGER_TILE}; + +static const struct SpritePalette sSpritePalette_MegaTrigger = {sMegaTriggerPal, TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpritePalette sSpritePalette_ZMoveTrigger = {sZMoveTriggerPal, TAG_GIMMICK_TRIGGER_PAL}; +static const struct SpritePalette sSpritePalette_BurstTrigger = {sBurstTriggerPal, TAG_GIMMICK_TRIGGER_TILE}; +static const struct SpritePalette sSpritePalette_DynamaxTrigger = {sDynamaxTriggerPal, TAG_GIMMICK_TRIGGER_PAL}; +static const struct SpritePalette sSpritePalette_TeraTrigger = {sTeraTriggerPal, TAG_GIMMICK_TRIGGER_TILE}; + +static const struct OamData sOamData_GimmickTrigger = +{ + .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_GimmickTriggerOff[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_GimmickTriggerOn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_GimmickTrigger[] = +{ + sSpriteAnim_GimmickTriggerOff, + sSpriteAnim_GimmickTriggerOn, +}; + +static void SpriteCb_GimmickTrigger(struct Sprite *sprite); +static const struct SpriteTemplate sSpriteTemplate_GimmickTrigger = +{ + .tileTag = TAG_GIMMICK_TRIGGER_TILE, + .paletteTag = TAG_GIMMICK_TRIGGER_PAL, + .oam = &sOamData_GimmickTrigger, + .anims = sSpriteAnimTable_GimmickTrigger, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_GimmickTrigger, +}; + +// indicator data +static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/mega_indicator.4bpp"); +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 u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); +static const u8 ALIGNED(4) sNormalIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/normal_indicator.4bpp"); +static const u8 ALIGNED(4) sFightingIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/fighting_indicator.4bpp"); +static const u8 ALIGNED(4) sFlyingIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/flying_indicator.4bpp"); +static const u8 ALIGNED(4) sPoisonIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/poison_indicator.4bpp"); +static const u8 ALIGNED(4) sGroundIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/ground_indicator.4bpp"); +static const u8 ALIGNED(4) sRockIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/rock_indicator.4bpp"); +static const u8 ALIGNED(4) sBugIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/bug_indicator.4bpp"); +static const u8 ALIGNED(4) sGhostIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/ghost_indicator.4bpp"); +static const u8 ALIGNED(4) sSteelIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/steel_indicator.4bpp"); +static const u8 ALIGNED(4) sFireIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/fire_indicator.4bpp"); +static const u8 ALIGNED(4) sWaterIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/water_indicator.4bpp"); +static const u8 ALIGNED(4) sGrassIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/grass_indicator.4bpp"); +static const u8 ALIGNED(4) sElectricIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/electric_indicator.4bpp"); +static const u8 ALIGNED(4) sPsychicIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/psychic_indicator.4bpp"); +static const u8 ALIGNED(4) sIceIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/ice_indicator.4bpp"); +static const u8 ALIGNED(4) sDragonIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dragon_indicator.4bpp"); +static const u8 ALIGNED(4) sDarkIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dark_indicator.4bpp"); +static const u8 ALIGNED(4) sFairyIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/fairy_indicator.4bpp"); +static const u8 ALIGNED(4) sStellarIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/stellar_indicator.4bpp"); + +static const u16 sMiscIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); // has room for more colors +static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); +static const u16 sTeraIndicatorPal[] = INCBIN_U16("graphics/battle_interface/tera_indicator.gbapal"); + +static const struct SpriteSheet sSpriteSheet_MegaIndicator = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE}; +static const struct SpriteSheet sSpriteSheet_AlphaIndicator = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE}; +static const struct SpriteSheet sSpriteSheet_OmegaIndicator = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE}; +static const struct SpriteSheet sSpriteSheet_DynamaxIndicator = {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE}; +static const struct SpriteSheet sTeraIndicatorSpriteSheets[NUMBER_OF_MON_TYPES + 1] = +{ + {sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE}, // TYPE_NONE + {sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE}, + {sFightingIndicatorGfx, sizeof(sFightingIndicatorGfx), TAG_FIGHTING_INDICATOR_TILE}, + {sFlyingIndicatorGfx, sizeof(sFlyingIndicatorGfx), TAG_FLYING_INDICATOR_TILE}, + {sPoisonIndicatorGfx, sizeof(sPoisonIndicatorGfx), TAG_POISON_INDICATOR_TILE}, + {sGroundIndicatorGfx, sizeof(sGroundIndicatorGfx), TAG_GROUND_INDICATOR_TILE}, + {sRockIndicatorGfx, sizeof(sRockIndicatorGfx), TAG_ROCK_INDICATOR_TILE}, + {sBugIndicatorGfx, sizeof(sBugIndicatorGfx), TAG_BUG_INDICATOR_TILE}, + {sGhostIndicatorGfx, sizeof(sGhostIndicatorGfx), TAG_GHOST_INDICATOR_TILE}, + {sSteelIndicatorGfx, sizeof(sSteelIndicatorGfx), TAG_STEEL_INDICATOR_TILE}, + {sNormalIndicatorGfx, sizeof(sNormalIndicatorGfx), TAG_NORMAL_INDICATOR_TILE}, // TYPE_MYSTERY + {sFireIndicatorGfx, sizeof(sFireIndicatorGfx), TAG_FIRE_INDICATOR_TILE}, + {sWaterIndicatorGfx, sizeof(sWaterIndicatorGfx), TAG_WATER_INDICATOR_TILE}, + {sGrassIndicatorGfx, sizeof(sGrassIndicatorGfx), TAG_GRASS_INDICATOR_TILE}, + {sElectricIndicatorGfx, sizeof(sElectricIndicatorGfx), TAG_ELECTRIC_INDICATOR_TILE}, + {sPsychicIndicatorGfx, sizeof(sPsychicIndicatorGfx), TAG_PSYCHIC_INDICATOR_TILE}, + {sIceIndicatorGfx, sizeof(sIceIndicatorGfx), TAG_ICE_INDICATOR_TILE}, + {sDragonIndicatorGfx, sizeof(sDragonIndicatorGfx), TAG_DRAGON_INDICATOR_TILE}, + {sDarkIndicatorGfx, sizeof(sDarkIndicatorGfx), TAG_DARK_INDICATOR_TILE}, + {sFairyIndicatorGfx, sizeof(sFairyIndicatorGfx), TAG_FAIRY_INDICATOR_TILE}, + {sStellarIndicatorGfx, sizeof(sStellarIndicatorGfx), TAG_STELLAR_INDICATOR_TILE}, + {0} +}; + +static const struct SpritePalette sSpritePalette_MiscIndicator = {sMiscIndicatorPal, TAG_MISC_INDICATOR_PAL}; +static const struct SpritePalette sSpritePalette_MegaIndicator = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}; +static const struct SpritePalette sSpritePalette_TeraIndicator = {sTeraIndicatorPal, TAG_TERA_INDICATOR_PAL}; + +static const struct OamData sOamData_GimmickIndicator = +{ + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16), + .priority = 1, +}; + +static void SpriteCb_GimmickIndicator(struct Sprite *sprite); +static const struct SpriteTemplate sSpriteTemplate_GimmickIndicator = +{ + .tileTag = TAG_NORMAL_INDICATOR_TILE, // updated dynamically + .paletteTag = TAG_TERA_INDICATOR_PAL, // updated dynamically + .oam = &sOamData_GimmickIndicator, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_GimmickIndicator, +}; diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index fe7078f8e19c..37258b7f540b 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -1,3 +1,9 @@ +// Normally, INCBIN_COMP acts like INCBIN_U32, but appends `.lz` to the file, compressing it; +// If not compressing overworld gfx, make this an alias to INCBIN_32, so gfx will *not* be compressed +#if !(OW_GFX_COMPRESS) +#define INCBIN_COMP INCBIN_U32 +#endif + const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/anim_front.4bpp.lz"); const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/back.4bpp.lz"); const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); @@ -6,6 +12,7 @@ const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/ico #if P_FOOTPRINTS const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp"); #endif //P_FOOTPRINTS +const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_mark/overworld.4bpp"); #if P_FAMILY_BULBASAUR const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz"); @@ -16,6 +23,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bulbasaur[] = INCBIN_COMP("graphics/pokemon/bulbasaur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -25,6 +39,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ivysaur[] = INCBIN_COMP("graphics/pokemon/ivysaur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -34,6 +55,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Venusaur[] = INCBIN_COMP("graphics/pokemon/venusaur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -44,6 +72,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_VenusaurMega[] = INCBIN_COMP("graphics/pokemon/venusaur/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS @@ -52,6 +87,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_VenusaurGigantamax[] = INCBIN_COMP("graphics/pokemon/venusaur/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_BULBASAUR @@ -64,6 +106,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Charmander[] = INCBIN_COMP("graphics/pokemon/charmander/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -73,6 +122,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Charmeleon[] = INCBIN_COMP("graphics/pokemon/charmeleon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -82,6 +138,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Charizard[] = INCBIN_COMP("graphics/pokemon/charizard/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); @@ -89,12 +152,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CharizardMegaX[] = INCBIN_COMP("graphics/pokemon/charizard/mega_x/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CharizardMegaY[] = INCBIN_COMP("graphics/pokemon/charizard/mega_y/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS @@ -103,6 +180,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CharizardGigantamax[] = INCBIN_COMP("graphics/pokemon/charizard/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CHARMANDER @@ -115,6 +199,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Squirtle[] = INCBIN_COMP("graphics/pokemon/squirtle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -124,6 +215,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wartortle[] = INCBIN_COMP("graphics/pokemon/wartortle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -133,6 +231,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blastoise[] = INCBIN_COMP("graphics/pokemon/blastoise/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/front.4bpp.lz"); @@ -140,6 +245,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BlastoiseMega[] = INCBIN_COMP("graphics/pokemon/blastoise/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS @@ -148,6 +260,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BlastoiseGigantamax[] = INCBIN_COMP("graphics/pokemon/blastoise/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SQUIRTLE @@ -160,6 +279,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Caterpie[] = INCBIN_COMP("graphics/pokemon/caterpie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -169,6 +295,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/metapod/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Metapod[] = INCBIN_COMP("graphics/pokemon/metapod/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -178,6 +311,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Butterfree[] = INCBIN_COMP("graphics/pokemon/butterfree/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -188,6 +328,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ButterfreeGigantamax[] = INCBIN_COMP("graphics/pokemon/butterfree/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CATERPIE @@ -200,6 +347,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Weedle[] = INCBIN_COMP("graphics/pokemon/weedle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -209,6 +363,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kakuna[] = INCBIN_COMP("graphics/pokemon/kakuna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -218,6 +379,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Beedrill[] = INCBIN_COMP("graphics/pokemon/beedrill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/front.4bpp.lz"); @@ -225,6 +393,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BeedrillMega[] = INCBIN_COMP("graphics/pokemon/beedrill/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_WEEDLE @@ -237,6 +412,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pidgey[] = INCBIN_COMP("graphics/pokemon/pidgey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -246,6 +428,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pidgeotto[] = INCBIN_COMP("graphics/pokemon/pidgeotto/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -255,6 +444,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pidgeot[] = INCBIN_COMP("graphics/pokemon/pidgeot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/front.4bpp.lz"); @@ -262,6 +458,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PidgeotMega[] = INCBIN_COMP("graphics/pokemon/pidgeot/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_PIDGEY @@ -274,6 +477,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rattata[] = INCBIN_COMP("graphics/pokemon/rattata/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -286,6 +496,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Raticate[] = INCBIN_COMP("graphics/pokemon/raticate/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -296,12 +513,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RattataAlolan[] = INCBIN_COMP("graphics/pokemon/rattata/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RaticateAlolan[] = INCBIN_COMP("graphics/pokemon/raticate/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_RATTATA @@ -314,6 +545,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spearow[] = INCBIN_COMP("graphics/pokemon/spearow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -323,6 +561,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fearow[] = INCBIN_COMP("graphics/pokemon/fearow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPEAROW #if P_FAMILY_EKANS @@ -334,6 +579,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ekans[] = INCBIN_COMP("graphics/pokemon/ekans/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -343,6 +595,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Arbok[] = INCBIN_COMP("graphics/pokemon/arbok/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EKANS #if P_FAMILY_PIKACHU @@ -355,12 +614,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pichu[] = INCBIN_COMP("graphics/pokemon/pichu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PichuSpikyEared[] = INCBIN_COMP("graphics/pokemon/pichu/spiky_eared/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front.4bpp.lz"); @@ -371,6 +644,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pikachu[] = INCBIN_COMP("graphics/pokemon/pikachu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -414,6 +694,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PikachuCosplay[] = INCBIN_COMP("graphics/pokemon/pikachu/cosplay/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuRockStar[] = INCBIN_COMP("graphics/pokemon/pikachu/rock_star/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuBelle[] = INCBIN_COMP("graphics/pokemon/pikachu/belle/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuPopStar[] = INCBIN_COMP("graphics/pokemon/pikachu/pop_star/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuPhD[] = INCBIN_COMP("graphics/pokemon/pikachu/ph_d/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuLibre[] = INCBIN_COMP("graphics/pokemon/pikachu/libre/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_COSPLAY_PIKACHU_FORMS #if P_CAP_PIKACHU_FORMS @@ -464,6 +753,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PikachuOriginalCap[] = INCBIN_COMP("graphics/pokemon/pikachu/original_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuHoennCap[] = INCBIN_COMP("graphics/pokemon/pikachu/hoenn_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuSinnohCap[] = INCBIN_COMP("graphics/pokemon/pikachu/sinnoh_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuUnovaCap[] = INCBIN_COMP("graphics/pokemon/pikachu/unova_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuKalosCap[] = INCBIN_COMP("graphics/pokemon/pikachu/kalos_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuAlolaCap[] = INCBIN_COMP("graphics/pokemon/pikachu/alola_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuPartnerCap[] = INCBIN_COMP("graphics/pokemon/pikachu/partner_cap/overworld.4bpp"); + // const u32 gObjectEventPic_PikachuWorldCap[] = INCBIN_COMP("graphics/pokemon/pikachu/world_cap/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_CAP_PIKACHU_FORMS #if P_GIGANTAMAX_FORMS @@ -472,6 +772,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PikachuGigantamax[] = INCBIN_COMP("graphics/pokemon/pikachu/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS const u8 gMonIcon_PikachuPartner[] = INCBIN_U8("graphics/pokemon/pikachu/partner/icon.4bpp"); @@ -487,6 +794,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Raichu[] = INCBIN_COMP("graphics/pokemon/raichu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_RaichuF[] = INCBIN_U32("graphics/pokemon/raichu/anim_frontf.4bpp.lz"); @@ -496,6 +810,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RaichuAlolan[] = INCBIN_COMP("graphics/pokemon/raichu/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_PIKACHU @@ -508,6 +829,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sandshrew[] = INCBIN_COMP("graphics/pokemon/sandshrew/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -517,6 +845,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sandslash[] = INCBIN_COMP("graphics/pokemon/sandslash/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/front.4bpp.lz"); @@ -524,12 +859,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SandshrewAlolan[] = INCBIN_COMP("graphics/pokemon/sandshrew/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SandslashAlolan[] = INCBIN_COMP("graphics/pokemon/sandslash/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_SANDSHREW @@ -542,6 +891,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NidoranF[] = INCBIN_COMP("graphics/pokemon/nidoran_f/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -551,6 +907,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nidorina[] = INCBIN_COMP("graphics/pokemon/nidorina/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -560,6 +923,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nidoqueen[] = INCBIN_COMP("graphics/pokemon/nidoqueen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -569,6 +939,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NidoranM[] = INCBIN_COMP("graphics/pokemon/nidoran_m/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -578,6 +955,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nidorino[] = INCBIN_COMP("graphics/pokemon/nidorino/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -587,6 +971,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nidoking[] = INCBIN_COMP("graphics/pokemon/nidoking/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NIDORAN #if P_FAMILY_CLEFAIRY @@ -599,6 +990,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cleffa[] = INCBIN_COMP("graphics/pokemon/cleffa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz"); @@ -609,6 +1007,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clefairy[] = INCBIN_COMP("graphics/pokemon/clefairy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -618,6 +1023,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clefable[] = INCBIN_COMP("graphics/pokemon/clefable/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLEFAIRY #if P_FAMILY_VULPIX @@ -629,6 +1041,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vulpix[] = INCBIN_COMP("graphics/pokemon/vulpix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -638,6 +1057,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ninetales[] = INCBIN_COMP("graphics/pokemon/ninetales/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/front.4bpp.lz"); @@ -645,12 +1071,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_VulpixAlolan[] = INCBIN_COMP("graphics/pokemon/vulpix/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NinetalesAlolan[] = INCBIN_COMP("graphics/pokemon/ninetales/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_VULPIX @@ -664,6 +1104,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Igglybuff[] = INCBIN_COMP("graphics/pokemon/igglybuff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz"); @@ -674,6 +1121,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jigglypuff[] = INCBIN_COMP("graphics/pokemon/jigglypuff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -683,6 +1137,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wigglytuff[] = INCBIN_COMP("graphics/pokemon/wigglytuff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JIGGLYPUFF #if P_FAMILY_ZUBAT @@ -694,6 +1155,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zubat[] = INCBIN_COMP("graphics/pokemon/zubat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -706,6 +1174,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golbat[] = INCBIN_COMP("graphics/pokemon/golbat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -719,6 +1194,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Crobat[] = INCBIN_COMP("graphics/pokemon/crobat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ZUBAT @@ -731,6 +1213,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Oddish[] = INCBIN_COMP("graphics/pokemon/oddish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -740,6 +1229,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gloom[] = INCBIN_COMP("graphics/pokemon/gloom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -752,6 +1248,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vileplume[] = INCBIN_COMP("graphics/pokemon/vileplume/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -765,6 +1268,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bellossom[] = INCBIN_COMP("graphics/pokemon/bellossom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ODDISH @@ -777,6 +1287,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/paras/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Paras[] = INCBIN_COMP("graphics/pokemon/paras/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -786,6 +1303,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Parasect[] = INCBIN_COMP("graphics/pokemon/parasect/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PARAS #if P_FAMILY_VENONAT @@ -797,6 +1321,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Venonat[] = INCBIN_COMP("graphics/pokemon/venonat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -806,6 +1337,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Venomoth[] = INCBIN_COMP("graphics/pokemon/venomoth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VENONAT #if P_FAMILY_DIGLETT @@ -817,6 +1355,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Diglett[] = INCBIN_COMP("graphics/pokemon/diglett/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -826,6 +1371,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dugtrio[] = INCBIN_COMP("graphics/pokemon/dugtrio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/front.4bpp.lz"); @@ -833,12 +1385,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DiglettAlolan[] = INCBIN_COMP("graphics/pokemon/diglett/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DugtrioAlolan[] = INCBIN_COMP("graphics/pokemon/dugtrio/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_DIGLETT @@ -851,6 +1417,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Meowth[] = INCBIN_COMP("graphics/pokemon/meowth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -860,6 +1433,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/persian/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Persian[] = INCBIN_COMP("graphics/pokemon/persian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/front.4bpp.lz"); @@ -867,12 +1447,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeowthAlolan[] = INCBIN_COMP("graphics/pokemon/meowth/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PersianAlolan[] = INCBIN_COMP("graphics/pokemon/persian/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #if P_GALARIAN_FORMS @@ -881,6 +1475,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeowthGalarian[] = INCBIN_COMP("graphics/pokemon/meowth/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/front.4bpp.lz"); const u32 gMonPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/normal.gbapal.lz"); @@ -890,6 +1491,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Perrserker[] = INCBIN_COMP("graphics/pokemon/perrserker/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #if P_GIGANTAMAX_FORMS @@ -898,6 +1506,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MeowthGigantamax[] = INCBIN_COMP("graphics/pokemon/meowth/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MEOWTH @@ -910,6 +1525,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Psyduck[] = INCBIN_COMP("graphics/pokemon/psyduck/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -919,6 +1541,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golduck[] = INCBIN_COMP("graphics/pokemon/golduck/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PSYDUCK #if P_FAMILY_MANKEY @@ -930,6 +1559,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mankey[] = INCBIN_COMP("graphics/pokemon/mankey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -939,6 +1575,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Primeape[] = INCBIN_COMP("graphics/pokemon/primeape/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/front.4bpp.lz"); @@ -949,6 +1592,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Annihilape[] = INCBIN_COMP("graphics/pokemon/annihilape/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_MANKEY @@ -961,6 +1611,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Growlithe[] = INCBIN_COMP("graphics/pokemon/growlithe/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -970,6 +1627,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Arcanine[] = INCBIN_COMP("graphics/pokemon/arcanine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/front.4bpp.lz"); @@ -977,12 +1641,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GrowlitheHisuian[] = INCBIN_COMP("graphics/pokemon/growlithe/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ArcanineHisuian[] = INCBIN_COMP("graphics/pokemon/arcanine/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GROWLITHE @@ -995,6 +1673,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Poliwag[] = INCBIN_COMP("graphics/pokemon/poliwag/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1004,6 +1689,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Poliwhirl[] = INCBIN_COMP("graphics/pokemon/poliwhirl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1013,6 +1705,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Poliwrath[] = INCBIN_COMP("graphics/pokemon/poliwrath/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz"); @@ -1023,6 +1722,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Politoed[] = INCBIN_COMP("graphics/pokemon/politoed/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1038,6 +1744,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/abra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Abra[] = INCBIN_COMP("graphics/pokemon/abra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1047,6 +1760,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kadabra[] = INCBIN_COMP("graphics/pokemon/kadabra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1059,6 +1779,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Alakazam[] = INCBIN_COMP("graphics/pokemon/alakazam/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1069,6 +1796,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AlakazamMega[] = INCBIN_COMP("graphics/pokemon/alakazam/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ABRA @@ -1081,6 +1815,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/machop/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Machop[] = INCBIN_COMP("graphics/pokemon/machop/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1090,6 +1831,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Machoke[] = INCBIN_COMP("graphics/pokemon/machoke/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1099,6 +1847,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Machamp[] = INCBIN_COMP("graphics/pokemon/machamp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/front.4bpp.lz"); @@ -1106,6 +1861,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MachampGigantamax[] = INCBIN_COMP("graphics/pokemon/machamp/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MACHOP @@ -1118,6 +1880,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bellsprout[] = INCBIN_COMP("graphics/pokemon/bellsprout/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1127,6 +1896,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Weepinbell[] = INCBIN_COMP("graphics/pokemon/weepinbell/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1136,6 +1912,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Victreebel[] = INCBIN_COMP("graphics/pokemon/victreebel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BELLSPROUT #if P_FAMILY_TENTACOOL @@ -1147,6 +1930,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tentacool[] = INCBIN_COMP("graphics/pokemon/tentacool/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1156,6 +1946,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tentacruel[] = INCBIN_COMP("graphics/pokemon/tentacruel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TENTACOOL #if P_FAMILY_GEODUDE @@ -1167,6 +1964,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Geodude[] = INCBIN_COMP("graphics/pokemon/geodude/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1176,6 +1980,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Graveler[] = INCBIN_COMP("graphics/pokemon/graveler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1185,6 +1996,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/golem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golem[] = INCBIN_COMP("graphics/pokemon/golem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/front.4bpp.lz"); @@ -1192,18 +2010,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GeodudeAlolan[] = INCBIN_COMP("graphics/pokemon/geodude/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GravelerAlolan[] = INCBIN_COMP("graphics/pokemon/graveler/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GolemAlolan[] = INCBIN_COMP("graphics/pokemon/golem/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GEODUDE @@ -1216,6 +2055,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ponyta[] = INCBIN_COMP("graphics/pokemon/ponyta/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1225,6 +2071,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rapidash[] = INCBIN_COMP("graphics/pokemon/rapidash/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/front.4bpp.lz"); @@ -1232,12 +2085,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PonytaGalarian[] = INCBIN_COMP("graphics/pokemon/ponyta/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_RapidashGalarian[] = INCBIN_COMP("graphics/pokemon/rapidash/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_PONYTA @@ -1250,6 +2117,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slowpoke[] = INCBIN_COMP("graphics/pokemon/slowpoke/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1259,6 +2133,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slowbro[] = INCBIN_COMP("graphics/pokemon/slowbro/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz"); @@ -1269,6 +2150,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slowking[] = INCBIN_COMP("graphics/pokemon/slowking/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if P_MEGA_EVOLUTIONS @@ -1277,6 +2165,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SlowbroMega[] = INCBIN_COMP("graphics/pokemon/slowbro/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GALARIAN_FORMS @@ -1285,12 +2180,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SlowpokeGalarian[] = INCBIN_COMP("graphics/pokemon/slowpoke/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SlowbroGalarian[] = INCBIN_COMP("graphics/pokemon/slowbro/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/front.4bpp.lz"); @@ -1298,6 +2207,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SlowkingGalarian[] = INCBIN_COMP("graphics/pokemon/slowking/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_SLOWPOKE @@ -1311,6 +2227,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magnemite[] = INCBIN_COMP("graphics/pokemon/magnemite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1320,6 +2243,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magneton[] = INCBIN_COMP("graphics/pokemon/magneton/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/anim_front.4bpp.lz"); @@ -1330,6 +2260,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magnezone[] = INCBIN_COMP("graphics/pokemon/magnezone/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGNEMITE @@ -1342,6 +2279,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Farfetchd[] = INCBIN_COMP("graphics/pokemon/farfetchd/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/front.4bpp.lz"); @@ -1349,6 +2293,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FarfetchdGalarian[] = INCBIN_COMP("graphics/pokemon/farfetchd/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/front.4bpp.lz"); const u32 gMonPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/normal.gbapal.lz"); @@ -1358,6 +2309,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sirfetchd[] = INCBIN_COMP("graphics/pokemon/sirfetchd/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_FARFETCHD @@ -1370,6 +2328,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Doduo[] = INCBIN_COMP("graphics/pokemon/doduo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1382,6 +2347,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dodrio[] = INCBIN_COMP("graphics/pokemon/dodrio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1396,6 +2368,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/seel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seel[] = INCBIN_COMP("graphics/pokemon/seel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1405,6 +2384,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dewgong[] = INCBIN_COMP("graphics/pokemon/dewgong/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEEL #if P_FAMILY_GRIMER @@ -1416,6 +2402,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grimer[] = INCBIN_COMP("graphics/pokemon/grimer/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1425,6 +2418,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/muk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Muk[] = INCBIN_COMP("graphics/pokemon/muk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/front.4bpp.lz"); @@ -1432,12 +2432,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GrimerAlolan[] = INCBIN_COMP("graphics/pokemon/grimer/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MukAlolan[] = INCBIN_COMP("graphics/pokemon/muk/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GRIMER @@ -1450,6 +2464,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shellder[] = INCBIN_COMP("graphics/pokemon/shellder/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1459,6 +2480,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cloyster[] = INCBIN_COMP("graphics/pokemon/cloyster/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELLDER #if P_FAMILY_GASTLY @@ -1470,6 +2498,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gastly[] = INCBIN_COMP("graphics/pokemon/gastly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1479,6 +2514,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Haunter[] = INCBIN_COMP("graphics/pokemon/haunter/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1488,6 +2530,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gengar[] = INCBIN_COMP("graphics/pokemon/gengar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/front.4bpp.lz"); @@ -1495,6 +2544,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GengarMega[] = INCBIN_COMP("graphics/pokemon/gengar/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GIGANTAMAX_FORMS @@ -1503,6 +2559,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GengarGigantamax[] = INCBIN_COMP("graphics/pokemon/gengar/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_GASTLY @@ -1515,6 +2578,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/onix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Onix[] = INCBIN_COMP("graphics/pokemon/onix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz"); @@ -1525,6 +2595,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Steelix[] = INCBIN_COMP("graphics/pokemon/steelix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1535,6 +2612,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SteelixMega[] = INCBIN_COMP("graphics/pokemon/steelix/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ONIX @@ -1548,6 +2632,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drowzee[] = INCBIN_COMP("graphics/pokemon/drowzee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1557,6 +2648,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hypno[] = INCBIN_COMP("graphics/pokemon/hypno/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1571,6 +2669,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Krabby[] = INCBIN_COMP("graphics/pokemon/krabby/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1580,6 +2685,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kingler[] = INCBIN_COMP("graphics/pokemon/kingler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/front.4bpp.lz"); @@ -1587,6 +2699,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KinglerGigantamax[] = INCBIN_COMP("graphics/pokemon/kingler/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_KRABBY @@ -1599,6 +2718,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Voltorb[] = INCBIN_COMP("graphics/pokemon/voltorb/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1608,6 +2734,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Electrode[] = INCBIN_COMP("graphics/pokemon/electrode/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/front.4bpp.lz"); @@ -1615,12 +2748,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_VoltorbHisuian[] = INCBIN_COMP("graphics/pokemon/voltorb/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ElectrodeHisuian[] = INCBIN_COMP("graphics/pokemon/electrode/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_VOLTORB @@ -1633,6 +2780,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Exeggcute[] = INCBIN_COMP("graphics/pokemon/exeggcute/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1642,6 +2796,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Exeggutor[] = INCBIN_COMP("graphics/pokemon/exeggutor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/anim_front.4bpp.lz"); @@ -1649,6 +2810,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ExeggutorAlolan[] = INCBIN_COMP("graphics/pokemon/exeggutor/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_EXEGGCUTE @@ -1661,6 +2829,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cubone[] = INCBIN_COMP("graphics/pokemon/cubone/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1670,6 +2845,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Marowak[] = INCBIN_COMP("graphics/pokemon/marowak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/front.4bpp.lz"); @@ -1677,6 +2859,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MarowakAlolan[] = INCBIN_COMP("graphics/pokemon/marowak/alolan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ALOLAN_FORMS #endif //P_FAMILY_CUBONE @@ -1690,6 +2879,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tyrogue[] = INCBIN_COMP("graphics/pokemon/tyrogue/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz"); @@ -1700,6 +2896,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hitmonlee[] = INCBIN_COMP("graphics/pokemon/hitmonlee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1709,6 +2912,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hitmonchan[] = INCBIN_COMP("graphics/pokemon/hitmonchan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz"); @@ -1719,6 +2929,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hitmontop[] = INCBIN_COMP("graphics/pokemon/hitmontop/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HITMONS @@ -1731,6 +2948,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lickitung[] = INCBIN_COMP("graphics/pokemon/lickitung/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/anim_front.4bpp.lz"); @@ -1741,6 +2965,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lickilicky[] = INCBIN_COMP("graphics/pokemon/lickilicky/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_LICKITUNG @@ -1753,6 +2984,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Koffing[] = INCBIN_COMP("graphics/pokemon/koffing/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1762,6 +3000,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Weezing[] = INCBIN_COMP("graphics/pokemon/weezing/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/front.4bpp.lz"); @@ -1769,6 +3014,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WeezingGalarian[] = INCBIN_COMP("graphics/pokemon/weezing/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_KOFFING @@ -1781,6 +3033,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rhyhorn[] = INCBIN_COMP("graphics/pokemon/rhyhorn/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1793,6 +3052,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rhydon[] = INCBIN_COMP("graphics/pokemon/rhydon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1806,6 +3072,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rhyperior[] = INCBIN_COMP("graphics/pokemon/rhyperior/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1822,6 +3095,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Happiny[] = INCBIN_COMP("graphics/pokemon/happiny/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz"); @@ -1832,6 +3112,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chansey[] = INCBIN_COMP("graphics/pokemon/chansey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz"); @@ -1842,6 +3129,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blissey[] = INCBIN_COMP("graphics/pokemon/blissey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_CHANSEY @@ -1854,6 +3148,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tangela[] = INCBIN_COMP("graphics/pokemon/tangela/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_front.4bpp.lz"); @@ -1864,6 +3165,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tangrowth[] = INCBIN_COMP("graphics/pokemon/tangrowth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_TangrowthF[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_frontf.4bpp.lz"); #endif //P_GEN_4_CROSS_EVOS @@ -1878,6 +3186,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kangaskhan[] = INCBIN_COMP("graphics/pokemon/kangaskhan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/front.4bpp.lz"); @@ -1885,6 +3200,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KangaskhanMega[] = INCBIN_COMP("graphics/pokemon/kangaskhan/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_KANGASKHAN @@ -1897,6 +3219,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Horsea[] = INCBIN_COMP("graphics/pokemon/horsea/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1906,6 +3235,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seadra[] = INCBIN_COMP("graphics/pokemon/seadra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz"); @@ -1916,6 +3252,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kingdra[] = INCBIN_COMP("graphics/pokemon/kingdra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HORSEA @@ -1928,6 +3271,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Goldeen[] = INCBIN_COMP("graphics/pokemon/goldeen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1940,6 +3290,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seaking[] = INCBIN_COMP("graphics/pokemon/seaking/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1954,6 +3311,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Staryu[] = INCBIN_COMP("graphics/pokemon/staryu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -1963,6 +3327,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Starmie[] = INCBIN_COMP("graphics/pokemon/starmie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STARYU #if P_FAMILY_MR_MIME @@ -1975,6 +3346,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MimeJr[] = INCBIN_COMP("graphics/pokemon/mime_jr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz"); @@ -1985,6 +3363,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MrMime[] = INCBIN_COMP("graphics/pokemon/mr_mime/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/front.4bpp.lz"); @@ -1992,6 +3377,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MrMimeGalarian[] = INCBIN_COMP("graphics/pokemon/mr_mime/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2001,6 +3393,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MrRime[] = INCBIN_COMP("graphics/pokemon/mr_rime/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MR_MIME @@ -2013,6 +3412,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scyther[] = INCBIN_COMP("graphics/pokemon/scyther/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ScytherF[] = INCBIN_U32("graphics/pokemon/scyther/anim_frontf.4bpp.lz"); @@ -2025,6 +3431,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scizor[] = INCBIN_COMP("graphics/pokemon/scizor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ScizorF[] = INCBIN_U32("graphics/pokemon/scizor/anim_frontf.4bpp.lz"); @@ -2034,6 +3447,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ScizorMega[] = INCBIN_COMP("graphics/pokemon/scizor/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_2_CROSS_EVOS @@ -2046,6 +3466,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kleavor[] = INCBIN_COMP("graphics/pokemon/kleavor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_SCYTHER @@ -2059,6 +3486,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Smoochum[] = INCBIN_COMP("graphics/pokemon/smoochum/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz"); @@ -2069,6 +3503,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jynx[] = INCBIN_COMP("graphics/pokemon/jynx/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JYNX #if P_FAMILY_ELECTABUZZ @@ -2081,6 +3522,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Elekid[] = INCBIN_COMP("graphics/pokemon/elekid/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz"); @@ -2091,6 +3539,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Electabuzz[] = INCBIN_COMP("graphics/pokemon/electabuzz/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/anim_front.4bpp.lz"); @@ -2101,6 +3556,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Electivire[] = INCBIN_COMP("graphics/pokemon/electivire/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ELECTABUZZ @@ -2114,6 +3576,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/magby/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magby[] = INCBIN_COMP("graphics/pokemon/magby/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz"); @@ -2124,6 +3593,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magmar[] = INCBIN_COMP("graphics/pokemon/magmar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/anim_front.4bpp.lz"); @@ -2134,6 +3610,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magmortar[] = INCBIN_COMP("graphics/pokemon/magmortar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGMAR @@ -2146,6 +3629,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pinsir[] = INCBIN_COMP("graphics/pokemon/pinsir/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/front.4bpp.lz"); @@ -2153,6 +3643,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PinsirMega[] = INCBIN_COMP("graphics/pokemon/pinsir/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_PINSIR @@ -2165,6 +3662,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tauros[] = INCBIN_COMP("graphics/pokemon/tauros/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_PALDEAN_FORMS const u32 gMonFrontPic_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/front.4bpp.lz"); @@ -2184,6 +3688,12 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TaurosPaldeanCombatBreed[] = INCBIN_COMP("graphics/pokemon/tauros/paldean_combat_breed/overworld.4bpp"); + // const u32 gObjectEventPic_TaurosPaldeanBlazeBreed[] = INCBIN_COMP("graphics/pokemon/tauros/paldean_blaze_breed/overworld.4bpp"); + // const u32 gObjectEventPic_TaurosPaldeanAquaBreed[] = INCBIN_COMP("graphics/pokemon/tauros/paldean_aqua_breed/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PALDEAN_FORMS #endif //P_FAMILY_TAUROS @@ -2196,6 +3706,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magikarp[] = INCBIN_COMP("graphics/pokemon/magikarp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2208,6 +3725,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gyarados[] = INCBIN_COMP("graphics/pokemon/gyarados/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2218,6 +3742,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GyaradosMega[] = INCBIN_COMP("graphics/pokemon/gyarados/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAGIKARP @@ -2230,6 +3761,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lapras[] = INCBIN_COMP("graphics/pokemon/lapras/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/front.4bpp.lz"); @@ -2237,6 +3775,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_LaprasGigantamax[] = INCBIN_COMP("graphics/pokemon/lapras/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_LAPRAS @@ -2249,6 +3794,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ditto[] = INCBIN_COMP("graphics/pokemon/ditto/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DITTO #if P_FAMILY_EEVEE @@ -2260,6 +3812,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Eevee[] = INCBIN_COMP("graphics/pokemon/eevee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2270,6 +3829,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_EeveeGigantamax[] = INCBIN_COMP("graphics/pokemon/eevee/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS const u8 gMonIcon_EeveePartner[] = INCBIN_U8("graphics/pokemon/eevee/partner/icon.4bpp"); @@ -2285,6 +3851,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vaporeon[] = INCBIN_COMP("graphics/pokemon/vaporeon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2294,6 +3867,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jolteon[] = INCBIN_COMP("graphics/pokemon/jolteon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2303,6 +3883,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Flareon[] = INCBIN_COMP("graphics/pokemon/flareon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz"); @@ -2313,6 +3900,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Espeon[] = INCBIN_COMP("graphics/pokemon/espeon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2322,6 +3916,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Umbreon[] = INCBIN_COMP("graphics/pokemon/umbreon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_2_CROSS_EVOS #if P_GEN_4_CROSS_EVOS @@ -2333,6 +3934,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Leafeon[] = INCBIN_COMP("graphics/pokemon/leafeon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2342,6 +3950,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Glaceon[] = INCBIN_COMP("graphics/pokemon/glaceon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #if P_GEN_6_CROSS_EVOS @@ -2353,6 +3968,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sylveon[] = INCBIN_COMP("graphics/pokemon/sylveon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_6_CROSS_EVOS #endif //P_FAMILY_EEVEE @@ -2365,6 +3987,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Porygon[] = INCBIN_COMP("graphics/pokemon/porygon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz"); @@ -2375,6 +4004,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Porygon2[] = INCBIN_COMP("graphics/pokemon/porygon2/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/anim_front.4bpp.lz"); @@ -2385,6 +4021,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PorygonZ[] = INCBIN_COMP("graphics/pokemon/porygon_z/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_PORYGON @@ -2398,6 +4041,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Omanyte[] = INCBIN_COMP("graphics/pokemon/omanyte/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2407,6 +4057,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Omastar[] = INCBIN_COMP("graphics/pokemon/omastar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OMANYTE #if P_FAMILY_KABUTO @@ -2418,6 +4075,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kabuto[] = INCBIN_COMP("graphics/pokemon/kabuto/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2427,6 +4091,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kabutops[] = INCBIN_COMP("graphics/pokemon/kabutops/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KABUTO #if P_FAMILY_AERODACTYL @@ -2438,6 +4109,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aerodactyl[] = INCBIN_COMP("graphics/pokemon/aerodactyl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/front.4bpp.lz"); @@ -2445,6 +4123,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AerodactylMega[] = INCBIN_COMP("graphics/pokemon/aerodactyl/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_AERODACTYL @@ -2458,6 +4143,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Munchlax[] = INCBIN_COMP("graphics/pokemon/munchlax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz"); @@ -2468,6 +4160,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snorlax[] = INCBIN_COMP("graphics/pokemon/snorlax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/front.4bpp.lz"); @@ -2475,6 +4174,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SnorlaxGigantamax[] = INCBIN_COMP("graphics/pokemon/snorlax/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SNORLAX @@ -2487,6 +4193,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Articuno[] = INCBIN_COMP("graphics/pokemon/articuno/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/front.4bpp.lz"); @@ -2494,6 +4207,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ArticunoGalarian[] = INCBIN_COMP("graphics/pokemon/articuno/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ARTICUNO @@ -2506,6 +4226,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zapdos[] = INCBIN_COMP("graphics/pokemon/zapdos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/front.4bpp.lz"); @@ -2513,6 +4240,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZapdosGalarian[] = INCBIN_COMP("graphics/pokemon/zapdos/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZAPDOS @@ -2525,6 +4259,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Moltres[] = INCBIN_COMP("graphics/pokemon/moltres/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/front.4bpp.lz"); @@ -2532,6 +4273,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MoltresGalarian[] = INCBIN_COMP("graphics/pokemon/moltres/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MOLTRES @@ -2544,6 +4292,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dratini[] = INCBIN_COMP("graphics/pokemon/dratini/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2553,6 +4308,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dragonair[] = INCBIN_COMP("graphics/pokemon/dragonair/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2562,6 +4324,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dragonite[] = INCBIN_COMP("graphics/pokemon/dragonite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRATINI #if P_FAMILY_MEWTWO @@ -2573,6 +4342,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mewtwo[] = INCBIN_COMP("graphics/pokemon/mewtwo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/front.4bpp.lz"); @@ -2580,12 +4356,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MewtwoMegaX[] = INCBIN_COMP("graphics/pokemon/mewtwo/mega_x/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MewtwoMegaY[] = INCBIN_COMP("graphics/pokemon/mewtwo/mega_y/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MEWTWO @@ -2598,6 +4388,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/mew/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mew[] = INCBIN_COMP("graphics/pokemon/mew/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MEW #if P_FAMILY_CHIKORITA @@ -2609,6 +4406,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chikorita[] = INCBIN_COMP("graphics/pokemon/chikorita/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2618,6 +4422,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bayleef[] = INCBIN_COMP("graphics/pokemon/bayleef/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2627,6 +4438,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Meganium[] = INCBIN_COMP("graphics/pokemon/meganium/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2641,6 +4459,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cyndaquil[] = INCBIN_COMP("graphics/pokemon/cyndaquil/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2650,6 +4475,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Quilava[] = INCBIN_COMP("graphics/pokemon/quilava/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2659,6 +4491,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Typhlosion[] = INCBIN_COMP("graphics/pokemon/typhlosion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/front.4bpp.lz"); @@ -2666,6 +4505,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TyphlosionHisuian[] = INCBIN_COMP("graphics/pokemon/typhlosion/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_CYNDAQUIL @@ -2678,6 +4524,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Totodile[] = INCBIN_COMP("graphics/pokemon/totodile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2687,6 +4540,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Croconaw[] = INCBIN_COMP("graphics/pokemon/croconaw/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2696,6 +4556,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Feraligatr[] = INCBIN_COMP("graphics/pokemon/feraligatr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOTODILE #if P_FAMILY_SENTRET @@ -2707,6 +4574,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sentret[] = INCBIN_COMP("graphics/pokemon/sentret/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2716,6 +4590,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/furret/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Furret[] = INCBIN_COMP("graphics/pokemon/furret/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SENTRET #if P_FAMILY_HOOTHOOT @@ -2727,6 +4608,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hoothoot[] = INCBIN_COMP("graphics/pokemon/hoothoot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2736,6 +4624,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Noctowl[] = INCBIN_COMP("graphics/pokemon/noctowl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOOTHOOT #if P_FAMILY_LEDYBA @@ -2747,6 +4642,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ledyba[] = INCBIN_COMP("graphics/pokemon/ledyba/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2759,6 +4661,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ledian[] = INCBIN_COMP("graphics/pokemon/ledian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2773,6 +4682,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spinarak[] = INCBIN_COMP("graphics/pokemon/spinarak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2782,6 +4698,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ariados[] = INCBIN_COMP("graphics/pokemon/ariados/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPINARAK #if P_FAMILY_CHINCHOU @@ -2793,6 +4716,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chinchou[] = INCBIN_COMP("graphics/pokemon/chinchou/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2802,6 +4732,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lanturn[] = INCBIN_COMP("graphics/pokemon/lanturn/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHINCHOU #if P_FAMILY_TOGEPI @@ -2813,6 +4750,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Togepi[] = INCBIN_COMP("graphics/pokemon/togepi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2822,6 +4766,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Togetic[] = INCBIN_COMP("graphics/pokemon/togetic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/anim_front.4bpp.lz"); @@ -2832,6 +4783,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Togekiss[] = INCBIN_COMP("graphics/pokemon/togekiss/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TOGEPI @@ -2844,6 +4802,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/natu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Natu[] = INCBIN_COMP("graphics/pokemon/natu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2853,6 +4818,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Xatu[] = INCBIN_COMP("graphics/pokemon/xatu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_XatuF[] = INCBIN_U32("graphics/pokemon/xatu/anim_frontf.4bpp.lz"); #endif //P_FAMILY_NATU @@ -2866,6 +4838,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mareep[] = INCBIN_COMP("graphics/pokemon/mareep/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2875,6 +4854,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Flaaffy[] = INCBIN_COMP("graphics/pokemon/flaaffy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2884,6 +4870,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ampharos[] = INCBIN_COMP("graphics/pokemon/ampharos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/front.4bpp.lz"); @@ -2891,6 +4884,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AmpharosMega[] = INCBIN_COMP("graphics/pokemon/ampharos/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAREEP @@ -2904,6 +4904,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Azurill[] = INCBIN_COMP("graphics/pokemon/azurill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_3_CROSS_EVOS const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz"); @@ -2914,6 +4921,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/marill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Marill[] = INCBIN_COMP("graphics/pokemon/marill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2923,6 +4937,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Azumarill[] = INCBIN_COMP("graphics/pokemon/azumarill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARILL #if P_FAMILY_SUDOWOODO @@ -2935,6 +4956,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bonsly[] = INCBIN_COMP("graphics/pokemon/bonsly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz"); @@ -2945,6 +4973,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sudowoodo[] = INCBIN_COMP("graphics/pokemon/sudowoodo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2959,6 +4994,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hoppip[] = INCBIN_COMP("graphics/pokemon/hoppip/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2968,6 +5010,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skiploom[] = INCBIN_COMP("graphics/pokemon/skiploom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -2977,6 +5026,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jumpluff[] = INCBIN_COMP("graphics/pokemon/jumpluff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOPPIP #if P_FAMILY_AIPOM @@ -2988,6 +5044,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aipom[] = INCBIN_COMP("graphics/pokemon/aipom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3001,6 +5064,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ambipom[] = INCBIN_COMP("graphics/pokemon/ambipom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3016,6 +5086,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sunkern[] = INCBIN_COMP("graphics/pokemon/sunkern/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3025,6 +5102,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sunflora[] = INCBIN_COMP("graphics/pokemon/sunflora/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SUNKERN #if P_FAMILY_YANMA @@ -3036,6 +5120,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yanma[] = INCBIN_COMP("graphics/pokemon/yanma/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/anim_front.4bpp.lz"); @@ -3046,6 +5137,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yanmega[] = INCBIN_COMP("graphics/pokemon/yanmega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_YANMA @@ -3058,6 +5156,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wooper[] = INCBIN_COMP("graphics/pokemon/wooper/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3070,6 +5175,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Quagsire[] = INCBIN_COMP("graphics/pokemon/quagsire/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3080,6 +5192,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_WooperPaldean[] = INCBIN_COMP("graphics/pokemon/wooper/wooper_paldean/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/front.4bpp.lz"); const u32 gMonPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/normal.gbapal.lz"); @@ -3089,6 +5208,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Clodsire[] = INCBIN_COMP("graphics/pokemon/clodsire/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PALDEAN_FORMS #endif //P_FAMILY_WOOPER @@ -3101,6 +5227,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Murkrow[] = INCBIN_COMP("graphics/pokemon/murkrow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3114,6 +5247,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Honchkrow[] = INCBIN_COMP("graphics/pokemon/honchkrow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MURKROW @@ -3126,6 +5266,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Misdreavus[] = INCBIN_COMP("graphics/pokemon/misdreavus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/anim_front.4bpp.lz"); @@ -3136,6 +5283,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mismagius[] = INCBIN_COMP("graphics/pokemon/mismagius/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MISDREAVUS @@ -3257,6 +5411,41 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/question_mark/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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_UnownA[] = INCBIN_COMP("graphics/pokemon/unown/overworld.4bpp"); + const u32 gObjectEventPic_UnownB[] = INCBIN_COMP("graphics/pokemon/unown/b/overworld.4bpp"); + const u32 gObjectEventPic_UnownC[] = INCBIN_COMP("graphics/pokemon/unown/c/overworld.4bpp"); + const u32 gObjectEventPic_UnownD[] = INCBIN_COMP("graphics/pokemon/unown/d/overworld.4bpp"); + const u32 gObjectEventPic_UnownE[] = INCBIN_COMP("graphics/pokemon/unown/e/overworld.4bpp"); + const u32 gObjectEventPic_UnownF[] = INCBIN_COMP("graphics/pokemon/unown/f/overworld.4bpp"); + const u32 gObjectEventPic_UnownG[] = INCBIN_COMP("graphics/pokemon/unown/g/overworld.4bpp"); + const u32 gObjectEventPic_UnownH[] = INCBIN_COMP("graphics/pokemon/unown/h/overworld.4bpp"); + const u32 gObjectEventPic_UnownI[] = INCBIN_COMP("graphics/pokemon/unown/i/overworld.4bpp"); + const u32 gObjectEventPic_UnownJ[] = INCBIN_COMP("graphics/pokemon/unown/j/overworld.4bpp"); + const u32 gObjectEventPic_UnownK[] = INCBIN_COMP("graphics/pokemon/unown/k/overworld.4bpp"); + const u32 gObjectEventPic_UnownL[] = INCBIN_COMP("graphics/pokemon/unown/l/overworld.4bpp"); + const u32 gObjectEventPic_UnownM[] = INCBIN_COMP("graphics/pokemon/unown/m/overworld.4bpp"); + const u32 gObjectEventPic_UnownN[] = INCBIN_COMP("graphics/pokemon/unown/n/overworld.4bpp"); + const u32 gObjectEventPic_UnownO[] = INCBIN_COMP("graphics/pokemon/unown/o/overworld.4bpp"); + const u32 gObjectEventPic_UnownP[] = INCBIN_COMP("graphics/pokemon/unown/p/overworld.4bpp"); + const u32 gObjectEventPic_UnownQ[] = INCBIN_COMP("graphics/pokemon/unown/q/overworld.4bpp"); + const u32 gObjectEventPic_UnownR[] = INCBIN_COMP("graphics/pokemon/unown/r/overworld.4bpp"); + const u32 gObjectEventPic_UnownS[] = INCBIN_COMP("graphics/pokemon/unown/s/overworld.4bpp"); + const u32 gObjectEventPic_UnownT[] = INCBIN_COMP("graphics/pokemon/unown/t/overworld.4bpp"); + const u32 gObjectEventPic_UnownU[] = INCBIN_COMP("graphics/pokemon/unown/u/overworld.4bpp"); + const u32 gObjectEventPic_UnownV[] = INCBIN_COMP("graphics/pokemon/unown/v/overworld.4bpp"); + const u32 gObjectEventPic_UnownW[] = INCBIN_COMP("graphics/pokemon/unown/w/overworld.4bpp"); + const u32 gObjectEventPic_UnownX[] = INCBIN_COMP("graphics/pokemon/unown/x/overworld.4bpp"); + const u32 gObjectEventPic_UnownY[] = INCBIN_COMP("graphics/pokemon/unown/y/overworld.4bpp"); + const u32 gObjectEventPic_UnownZ[] = INCBIN_COMP("graphics/pokemon/unown/z/overworld.4bpp"); + const u32 gObjectEventPic_UnownExclamationMark[] = INCBIN_COMP("graphics/pokemon/unown/exclamation_mark/overworld.4bpp"); + const u32 gObjectEventPic_UnownQuestionMark[] = INCBIN_COMP("graphics/pokemon/unown/question_mark/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_UNOWN #if P_FAMILY_WOBBUFFET @@ -3269,6 +5458,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wynaut[] = INCBIN_COMP("graphics/pokemon/wynaut/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_3_CROSS_EVOS const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz"); @@ -3279,6 +5475,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wobbuffet[] = INCBIN_COMP("graphics/pokemon/wobbuffet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3296,6 +5499,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Girafarig[] = INCBIN_COMP("graphics/pokemon/girafarig/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3309,6 +5519,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Farigiraf[] = INCBIN_COMP("graphics/pokemon/farigiraf/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_GIRAFARIG @@ -3321,6 +5538,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pineco[] = INCBIN_COMP("graphics/pokemon/pineco/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3330,6 +5554,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Forretress[] = INCBIN_COMP("graphics/pokemon/forretress/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PINECO #if P_FAMILY_DUNSPARCE @@ -3341,6 +5572,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dunsparce[] = INCBIN_COMP("graphics/pokemon/dunsparce/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_9_CROSS_EVOS const u32 gMonPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/normal.gbapal.lz"); @@ -3349,6 +5587,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Dudunsparce[] = INCBIN_COMP("graphics/pokemon/dudunsparce/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/front.4bpp.lz"); const u32 gMonBackPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/back.4bpp.lz"); @@ -3367,6 +5612,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gligar[] = INCBIN_COMP("graphics/pokemon/gligar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3380,6 +5632,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gliscor[] = INCBIN_COMP("graphics/pokemon/gliscor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_GLIGAR @@ -3392,6 +5651,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snubbull[] = INCBIN_COMP("graphics/pokemon/snubbull/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3401,6 +5667,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Granbull[] = INCBIN_COMP("graphics/pokemon/granbull/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNUBBULL #if P_FAMILY_QWILFISH @@ -3412,6 +5685,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Qwilfish[] = INCBIN_COMP("graphics/pokemon/qwilfish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); @@ -3419,6 +5699,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_QwilfishHisuian[] = INCBIN_COMP("graphics/pokemon/qwilfish/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); @@ -3428,6 +5715,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Overqwil[] = INCBIN_COMP("graphics/pokemon/overqwil/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_QWILFISH @@ -3440,6 +5734,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shuckle[] = INCBIN_COMP("graphics/pokemon/shuckle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHUCKLE #if P_FAMILY_HERACROSS @@ -3451,6 +5752,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Heracross[] = INCBIN_COMP("graphics/pokemon/heracross/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3461,6 +5769,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_HeracrossMega[] = INCBIN_COMP("graphics/pokemon/heracross/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_HERACROSS @@ -3473,6 +5788,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sneasel[] = INCBIN_COMP("graphics/pokemon/sneasel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3486,6 +5808,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Weavile[] = INCBIN_COMP("graphics/pokemon/weavile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3497,6 +5826,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SneaselHisuian[] = INCBIN_COMP("graphics/pokemon/sneasel/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3509,6 +5845,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sneasler[] = INCBIN_COMP("graphics/pokemon/sneasler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_SNEASEL @@ -3521,6 +5864,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Teddiursa[] = INCBIN_COMP("graphics/pokemon/teddiursa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3530,6 +5880,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ursaring[] = INCBIN_COMP("graphics/pokemon/ursaring/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3543,12 +5900,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ursaluna[] = INCBIN_COMP("graphics/pokemon/ursaluna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_UrsalunaBloodmoon[] = INCBIN_COMP("graphics/pokemon/ursaluna/bloodmoon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_TEDDIURSA @@ -3561,6 +5932,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slugma[] = INCBIN_COMP("graphics/pokemon/slugma/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3570,6 +5948,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magcargo[] = INCBIN_COMP("graphics/pokemon/magcargo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLUGMA #if P_FAMILY_SWINUB @@ -3581,6 +5966,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swinub[] = INCBIN_COMP("graphics/pokemon/swinub/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3590,6 +5982,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Piloswine[] = INCBIN_COMP("graphics/pokemon/piloswine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3603,6 +6002,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mamoswine[] = INCBIN_COMP("graphics/pokemon/mamoswine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MamoswineF[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_frontf.4bpp.lz"); #endif //P_GEN_4_CROSS_EVOS @@ -3617,6 +6023,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Corsola[] = INCBIN_COMP("graphics/pokemon/corsola/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/front.4bpp.lz"); @@ -3624,6 +6037,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CorsolaGalarian[] = INCBIN_COMP("graphics/pokemon/corsola/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/front.4bpp.lz"); const u32 gMonPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/normal.gbapal.lz"); @@ -3633,6 +6053,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cursola[] = INCBIN_COMP("graphics/pokemon/cursola/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_CORSOLA @@ -3645,6 +6072,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Remoraid[] = INCBIN_COMP("graphics/pokemon/remoraid/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3654,6 +6088,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Octillery[] = INCBIN_COMP("graphics/pokemon/octillery/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3668,6 +6109,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Delibird[] = INCBIN_COMP("graphics/pokemon/delibird/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DELIBIRD #if P_FAMILY_MANTINE @@ -3680,6 +6128,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mantyke[] = INCBIN_COMP("graphics/pokemon/mantyke/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz"); @@ -3690,6 +6145,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mantine[] = INCBIN_COMP("graphics/pokemon/mantine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MANTINE #if P_FAMILY_SKARMORY @@ -3701,6 +6163,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skarmory[] = INCBIN_COMP("graphics/pokemon/skarmory/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKARMORY #if P_FAMILY_HOUNDOUR @@ -3712,6 +6181,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Houndour[] = INCBIN_COMP("graphics/pokemon/houndour/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3721,6 +6197,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Houndoom[] = INCBIN_COMP("graphics/pokemon/houndoom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3731,6 +6214,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_HoundoomMega[] = INCBIN_COMP("graphics/pokemon/houndoom/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_HOUNDOUR @@ -3743,6 +6233,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Phanpy[] = INCBIN_COMP("graphics/pokemon/phanpy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3752,6 +6249,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Donphan[] = INCBIN_COMP("graphics/pokemon/donphan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3766,6 +6270,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stantler[] = INCBIN_COMP("graphics/pokemon/stantler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_8_CROSS_EVOS const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); @@ -3776,6 +6287,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wyrdeer[] = INCBIN_COMP("graphics/pokemon/wyrdeer/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_STANTLER @@ -3788,6 +6306,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Smeargle[] = INCBIN_COMP("graphics/pokemon/smeargle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SMEARGLE #if P_FAMILY_MILTANK @@ -3799,6 +6324,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Miltank[] = INCBIN_COMP("graphics/pokemon/miltank/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MILTANK #if P_FAMILY_RAIKOU @@ -3810,6 +6342,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Raikou[] = INCBIN_COMP("graphics/pokemon/raikou/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RAIKOU #if P_FAMILY_ENTEI @@ -3821,6 +6360,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/entei/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Entei[] = INCBIN_COMP("graphics/pokemon/entei/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ENTEI #if P_FAMILY_SUICUNE @@ -3832,6 +6378,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Suicune[] = INCBIN_COMP("graphics/pokemon/suicune/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SUICUNE #if P_FAMILY_LARVITAR @@ -3843,6 +6396,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Larvitar[] = INCBIN_COMP("graphics/pokemon/larvitar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3852,6 +6412,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pupitar[] = INCBIN_COMP("graphics/pokemon/pupitar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3861,6 +6428,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tyranitar[] = INCBIN_COMP("graphics/pokemon/tyranitar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/front.4bpp.lz"); @@ -3868,6 +6442,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TyranitarMega[] = INCBIN_COMP("graphics/pokemon/tyranitar/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LARVITAR @@ -3880,6 +6461,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lugia[] = INCBIN_COMP("graphics/pokemon/lugia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUGIA #if P_FAMILY_HO_OH @@ -3891,6 +6479,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HoOh[] = INCBIN_COMP("graphics/pokemon/ho_oh/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HO_OH #if P_FAMILY_CELEBI @@ -3902,6 +6497,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Celebi[] = INCBIN_COMP("graphics/pokemon/celebi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CELEBI #if P_FAMILY_TREECKO @@ -3913,6 +6515,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Treecko[] = INCBIN_COMP("graphics/pokemon/treecko/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3922,6 +6531,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grovyle[] = INCBIN_COMP("graphics/pokemon/grovyle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3931,6 +6547,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sceptile[] = INCBIN_COMP("graphics/pokemon/sceptile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/front.4bpp.lz"); @@ -3938,6 +6561,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SceptileMega[] = INCBIN_COMP("graphics/pokemon/sceptile/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_TREECKO @@ -3950,6 +6580,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Torchic[] = INCBIN_COMP("graphics/pokemon/torchic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_TorchicF[] = INCBIN_U32("graphics/pokemon/torchic/backf.4bpp.lz"); @@ -3961,6 +6598,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Combusken[] = INCBIN_COMP("graphics/pokemon/combusken/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3973,6 +6617,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blaziken[] = INCBIN_COMP("graphics/pokemon/blaziken/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -3983,6 +6634,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BlazikenMega[] = INCBIN_COMP("graphics/pokemon/blaziken/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_TORCHIC @@ -3995,6 +6653,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mudkip[] = INCBIN_COMP("graphics/pokemon/mudkip/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4004,6 +6669,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Marshtomp[] = INCBIN_COMP("graphics/pokemon/marshtomp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4013,6 +6685,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swampert[] = INCBIN_COMP("graphics/pokemon/swampert/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/front.4bpp.lz"); @@ -4020,6 +6699,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SwampertMega[] = INCBIN_COMP("graphics/pokemon/swampert/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MUDKIP @@ -4032,6 +6718,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Poochyena[] = INCBIN_COMP("graphics/pokemon/poochyena/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4041,6 +6734,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mightyena[] = INCBIN_COMP("graphics/pokemon/mightyena/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POOCHYENA #if P_FAMILY_ZIGZAGOON @@ -4052,6 +6752,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zigzagoon[] = INCBIN_COMP("graphics/pokemon/zigzagoon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4061,6 +6768,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Linoone[] = INCBIN_COMP("graphics/pokemon/linoone/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/front.4bpp.lz"); @@ -4068,12 +6782,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZigzagoonGalarian[] = INCBIN_COMP("graphics/pokemon/zigzagoon/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LinooneGalarian[] = INCBIN_COMP("graphics/pokemon/linoone/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/front.4bpp.lz"); const u32 gMonPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/normal.gbapal.lz"); @@ -4083,6 +6811,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Obstagoon[] = INCBIN_COMP("graphics/pokemon/obstagoon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZIGZAGOON @@ -4095,6 +6830,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wurmple[] = INCBIN_COMP("graphics/pokemon/wurmple/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4104,6 +6846,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Silcoon[] = INCBIN_COMP("graphics/pokemon/silcoon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4113,6 +6862,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Beautifly[] = INCBIN_COMP("graphics/pokemon/beautifly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4125,6 +6881,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cascoon[] = INCBIN_COMP("graphics/pokemon/cascoon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4134,6 +6897,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dustox[] = INCBIN_COMP("graphics/pokemon/dustox/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4148,6 +6918,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lotad[] = INCBIN_COMP("graphics/pokemon/lotad/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4157,6 +6934,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lombre[] = INCBIN_COMP("graphics/pokemon/lombre/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4166,6 +6950,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ludicolo[] = INCBIN_COMP("graphics/pokemon/ludicolo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4180,6 +6971,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seedot[] = INCBIN_COMP("graphics/pokemon/seedot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4189,6 +6987,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nuzleaf[] = INCBIN_COMP("graphics/pokemon/nuzleaf/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4201,6 +7006,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shiftry[] = INCBIN_COMP("graphics/pokemon/shiftry/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4215,6 +7027,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Taillow[] = INCBIN_COMP("graphics/pokemon/taillow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4224,6 +7043,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swellow[] = INCBIN_COMP("graphics/pokemon/swellow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAILLOW #if P_FAMILY_WINGULL @@ -4235,6 +7061,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wingull[] = INCBIN_COMP("graphics/pokemon/wingull/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4244,6 +7077,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pelipper[] = INCBIN_COMP("graphics/pokemon/pelipper/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WINGULL #if P_FAMILY_RALTS @@ -4255,6 +7095,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ralts[] = INCBIN_COMP("graphics/pokemon/ralts/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4264,6 +7111,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kirlia[] = INCBIN_COMP("graphics/pokemon/kirlia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4273,6 +7127,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gardevoir[] = INCBIN_COMP("graphics/pokemon/gardevoir/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/front.4bpp.lz"); @@ -4280,6 +7141,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GardevoirMega[] = INCBIN_COMP("graphics/pokemon/gardevoir/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GEN_4_CROSS_EVOS @@ -4291,6 +7159,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gallade[] = INCBIN_COMP("graphics/pokemon/gallade/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/front.4bpp.lz"); @@ -4298,6 +7173,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GalladeMega[] = INCBIN_COMP("graphics/pokemon/gallade/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_RALTS @@ -4311,6 +7193,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Surskit[] = INCBIN_COMP("graphics/pokemon/surskit/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4320,6 +7209,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Masquerain[] = INCBIN_COMP("graphics/pokemon/masquerain/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SURSKIT #if P_FAMILY_SHROOMISH @@ -4331,6 +7227,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shroomish[] = INCBIN_COMP("graphics/pokemon/shroomish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4340,6 +7243,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Breloom[] = INCBIN_COMP("graphics/pokemon/breloom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHROOMISH #if P_FAMILY_SLAKOTH @@ -4351,6 +7261,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slakoth[] = INCBIN_COMP("graphics/pokemon/slakoth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4360,6 +7277,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vigoroth[] = INCBIN_COMP("graphics/pokemon/vigoroth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4369,6 +7293,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slaking[] = INCBIN_COMP("graphics/pokemon/slaking/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLAKOTH #if P_FAMILY_NINCADA @@ -4380,6 +7311,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nincada[] = INCBIN_COMP("graphics/pokemon/nincada/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4389,6 +7327,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ninjask[] = INCBIN_COMP("graphics/pokemon/ninjask/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4398,6 +7343,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shedinja[] = INCBIN_COMP("graphics/pokemon/shedinja/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NINCADA #if P_FAMILY_WHISMUR @@ -4409,6 +7361,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Whismur[] = INCBIN_COMP("graphics/pokemon/whismur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4418,6 +7377,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Loudred[] = INCBIN_COMP("graphics/pokemon/loudred/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4427,6 +7393,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Exploud[] = INCBIN_COMP("graphics/pokemon/exploud/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WHISMUR #if P_FAMILY_MAKUHITA @@ -4438,6 +7411,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Makuhita[] = INCBIN_COMP("graphics/pokemon/makuhita/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4447,6 +7427,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hariyama[] = INCBIN_COMP("graphics/pokemon/hariyama/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAKUHITA #if P_FAMILY_NOSEPASS @@ -4458,6 +7445,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nosepass[] = INCBIN_COMP("graphics/pokemon/nosepass/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/anim_front.4bpp.lz"); @@ -4468,6 +7462,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Probopass[] = INCBIN_COMP("graphics/pokemon/probopass/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_NOSEPASS @@ -4480,6 +7481,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skitty[] = INCBIN_COMP("graphics/pokemon/skitty/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4489,6 +7497,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Delcatty[] = INCBIN_COMP("graphics/pokemon/delcatty/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKITTY #if P_FAMILY_SABLEYE @@ -4500,6 +7515,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sableye[] = INCBIN_COMP("graphics/pokemon/sableye/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/front.4bpp.lz"); @@ -4507,6 +7529,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SableyeMega[] = INCBIN_COMP("graphics/pokemon/sableye/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SABLEYE @@ -4519,6 +7548,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mawile[] = INCBIN_COMP("graphics/pokemon/mawile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/front.4bpp.lz"); @@ -4526,6 +7562,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MawileMega[] = INCBIN_COMP("graphics/pokemon/mawile/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MAWILE @@ -4538,6 +7581,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/aron/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aron[] = INCBIN_COMP("graphics/pokemon/aron/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4547,6 +7597,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lairon[] = INCBIN_COMP("graphics/pokemon/lairon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4556,6 +7613,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aggron[] = INCBIN_COMP("graphics/pokemon/aggron/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/front.4bpp.lz"); @@ -4563,6 +7627,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AggronMega[] = INCBIN_COMP("graphics/pokemon/aggron/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ARON @@ -4575,6 +7646,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Meditite[] = INCBIN_COMP("graphics/pokemon/meditite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4587,6 +7665,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Medicham[] = INCBIN_COMP("graphics/pokemon/medicham/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4597,6 +7682,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MedichamMega[] = INCBIN_COMP("graphics/pokemon/medicham/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_MEDITITE @@ -4609,6 +7701,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Electrike[] = INCBIN_COMP("graphics/pokemon/electrike/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4618,6 +7717,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Manectric[] = INCBIN_COMP("graphics/pokemon/manectric/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/front.4bpp.lz"); @@ -4625,6 +7731,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ManectricMega[] = INCBIN_COMP("graphics/pokemon/manectric/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ELECTRIKE @@ -4637,6 +7750,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Plusle[] = INCBIN_COMP("graphics/pokemon/plusle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PLUSLE #if P_FAMILY_MINUN @@ -4648,6 +7768,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/minun/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Minun[] = INCBIN_COMP("graphics/pokemon/minun/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINUN #if P_FAMILY_VOLBEAT_ILLUMISE @@ -4659,6 +7786,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Volbeat[] = INCBIN_COMP("graphics/pokemon/volbeat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4668,6 +7802,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Illumise[] = INCBIN_COMP("graphics/pokemon/illumise/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VOLBEAT_ILLUMISE #if P_FAMILY_ROSELIA @@ -4680,6 +7821,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Budew[] = INCBIN_U8("graphics/pokemon/budew/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Budew[] = INCBIN_COMP("graphics/pokemon/budew/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz"); @@ -4690,6 +7838,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Roselia[] = INCBIN_COMP("graphics/pokemon/roselia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4703,6 +7858,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Roserade[] = INCBIN_COMP("graphics/pokemon/roserade/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4718,6 +7880,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gulpin[] = INCBIN_COMP("graphics/pokemon/gulpin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4730,6 +7899,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swalot[] = INCBIN_COMP("graphics/pokemon/swalot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4744,6 +7920,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Carvanha[] = INCBIN_COMP("graphics/pokemon/carvanha/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4753,6 +7936,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sharpedo[] = INCBIN_COMP("graphics/pokemon/sharpedo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/front.4bpp.lz"); @@ -4760,6 +7950,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SharpedoMega[] = INCBIN_COMP("graphics/pokemon/sharpedo/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_CARVANHA @@ -4772,6 +7969,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wailmer[] = INCBIN_COMP("graphics/pokemon/wailmer/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4781,6 +7985,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wailord[] = INCBIN_COMP("graphics/pokemon/wailord/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WAILMER #if P_FAMILY_NUMEL @@ -4792,6 +8003,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/numel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Numel[] = INCBIN_COMP("graphics/pokemon/numel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4804,6 +8022,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Camerupt[] = INCBIN_COMP("graphics/pokemon/camerupt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4814,6 +8039,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CameruptMega[] = INCBIN_COMP("graphics/pokemon/camerupt/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_NUMEL @@ -4826,6 +8058,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Torkoal[] = INCBIN_COMP("graphics/pokemon/torkoal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TORKOAL #if P_FAMILY_SPOINK @@ -4837,6 +8076,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spoink[] = INCBIN_COMP("graphics/pokemon/spoink/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4846,6 +8092,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grumpig[] = INCBIN_COMP("graphics/pokemon/grumpig/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPOINK #if P_FAMILY_SPINDA @@ -4857,6 +8110,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spinda[] = INCBIN_COMP("graphics/pokemon/spinda/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPINDA #if P_FAMILY_TRAPINCH @@ -4868,6 +8128,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Trapinch[] = INCBIN_COMP("graphics/pokemon/trapinch/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4877,6 +8144,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vibrava[] = INCBIN_COMP("graphics/pokemon/vibrava/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4886,6 +8160,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Flygon[] = INCBIN_COMP("graphics/pokemon/flygon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TRAPINCH #if P_FAMILY_CACNEA @@ -4897,6 +8178,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cacnea[] = INCBIN_COMP("graphics/pokemon/cacnea/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4906,6 +8194,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cacturne[] = INCBIN_COMP("graphics/pokemon/cacturne/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_CacturneF[] = INCBIN_U32("graphics/pokemon/cacturne/anim_frontf.4bpp.lz"); #endif //P_FAMILY_CACNEA @@ -4919,6 +8214,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swablu[] = INCBIN_COMP("graphics/pokemon/swablu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -4928,6 +8230,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Altaria[] = INCBIN_COMP("graphics/pokemon/altaria/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/front.4bpp.lz"); @@ -4935,6 +8244,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AltariaMega[] = INCBIN_COMP("graphics/pokemon/altaria/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SWABLU @@ -4947,6 +8263,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zangoose[] = INCBIN_COMP("graphics/pokemon/zangoose/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZANGOOSE #if P_FAMILY_SEVIPER @@ -4958,6 +8281,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seviper[] = INCBIN_COMP("graphics/pokemon/seviper/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEVIPER #if P_FAMILY_LUNATONE @@ -4969,6 +8299,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lunatone[] = INCBIN_COMP("graphics/pokemon/lunatone/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUNATONE #if P_FAMILY_SOLROCK @@ -4980,6 +8317,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Solrock[] = INCBIN_COMP("graphics/pokemon/solrock/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SOLROCK #if P_FAMILY_BARBOACH @@ -4991,6 +8335,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Barboach[] = INCBIN_COMP("graphics/pokemon/barboach/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5000,6 +8351,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Whiscash[] = INCBIN_COMP("graphics/pokemon/whiscash/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BARBOACH #if P_FAMILY_CORPHISH @@ -5011,6 +8369,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Corphish[] = INCBIN_COMP("graphics/pokemon/corphish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5020,6 +8385,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Crawdaunt[] = INCBIN_COMP("graphics/pokemon/crawdaunt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CORPHISH #if P_FAMILY_BALTOY @@ -5031,6 +8403,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Baltoy[] = INCBIN_COMP("graphics/pokemon/baltoy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5040,6 +8419,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Claydol[] = INCBIN_COMP("graphics/pokemon/claydol/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BALTOY #if P_FAMILY_LILEEP @@ -5051,6 +8437,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lileep[] = INCBIN_COMP("graphics/pokemon/lileep/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5060,6 +8453,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cradily[] = INCBIN_COMP("graphics/pokemon/cradily/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LILEEP #if P_FAMILY_ANORITH @@ -5071,6 +8471,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Anorith[] = INCBIN_COMP("graphics/pokemon/anorith/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5080,6 +8487,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Armaldo[] = INCBIN_COMP("graphics/pokemon/armaldo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ANORITH #if P_FAMILY_FEEBAS @@ -5091,6 +8505,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Feebas[] = INCBIN_COMP("graphics/pokemon/feebas/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5100,6 +8521,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Milotic[] = INCBIN_COMP("graphics/pokemon/milotic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5132,6 +8560,23 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CastformNormal[] = INCBIN_COMP("graphics/pokemon/castform/overworld.4bpp"); + const u32 gObjectEventPic_CastformSunny[] = INCBIN_COMP("graphics/pokemon/castform/sunny/overworld.4bpp"); + const u32 gObjectEventPic_CastformRainy[] = INCBIN_COMP("graphics/pokemon/castform/rainy/overworld.4bpp"); + const u32 gObjectEventPic_CastformSnowy[] = INCBIN_COMP("graphics/pokemon/castform/snowy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CASTFORM #if P_FAMILY_KECLEON @@ -5143,6 +8588,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kecleon[] = INCBIN_COMP("graphics/pokemon/kecleon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KECLEON #if P_FAMILY_SHUPPET @@ -5154,6 +8606,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shuppet[] = INCBIN_COMP("graphics/pokemon/shuppet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5163,6 +8622,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/banette/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Banette[] = INCBIN_COMP("graphics/pokemon/banette/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/front.4bpp.lz"); @@ -5170,6 +8636,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BanetteMega[] = INCBIN_COMP("graphics/pokemon/banette/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SHUPPET @@ -5182,6 +8655,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Duskull[] = INCBIN_COMP("graphics/pokemon/duskull/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5191,6 +8671,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dusclops[] = INCBIN_COMP("graphics/pokemon/dusclops/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/anim_front.4bpp.lz"); @@ -5201,6 +8688,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dusknoir[] = INCBIN_COMP("graphics/pokemon/dusknoir/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_DUSKULL @@ -5213,6 +8707,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tropius[] = INCBIN_COMP("graphics/pokemon/tropius/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TROPIUS #if P_FAMILY_CHIMECHO @@ -5225,6 +8726,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chingling[] = INCBIN_COMP("graphics/pokemon/chingling/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz"); @@ -5235,6 +8743,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chimecho[] = INCBIN_COMP("graphics/pokemon/chimecho/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIMECHO #if P_FAMILY_ABSOL @@ -5246,6 +8761,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/absol/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Absol[] = INCBIN_COMP("graphics/pokemon/absol/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/front.4bpp.lz"); @@ -5253,6 +8775,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AbsolMega[] = INCBIN_COMP("graphics/pokemon/absol/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_ABSOL @@ -5265,6 +8794,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snorunt[] = INCBIN_COMP("graphics/pokemon/snorunt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5274,6 +8810,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Glalie[] = INCBIN_COMP("graphics/pokemon/glalie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/front.4bpp.lz"); @@ -5281,6 +8824,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GlalieMega[] = INCBIN_COMP("graphics/pokemon/glalie/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #if P_GEN_4_CROSS_EVOS @@ -5292,6 +8842,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Froslass[] = INCBIN_COMP("graphics/pokemon/froslass/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SNORUNT @@ -5304,6 +8861,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spheal[] = INCBIN_COMP("graphics/pokemon/spheal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5313,6 +8877,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sealeo[] = INCBIN_COMP("graphics/pokemon/sealeo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5322,6 +8893,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Walrein[] = INCBIN_COMP("graphics/pokemon/walrein/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPHEAL #if P_FAMILY_CLAMPERL @@ -5333,6 +8911,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clamperl[] = INCBIN_COMP("graphics/pokemon/clamperl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5342,6 +8927,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Huntail[] = INCBIN_COMP("graphics/pokemon/huntail/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5351,6 +8943,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gorebyss[] = INCBIN_COMP("graphics/pokemon/gorebyss/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLAMPERL #if P_FAMILY_RELICANTH @@ -5362,6 +8961,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Relicanth[] = INCBIN_COMP("graphics/pokemon/relicanth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5376,6 +8982,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Luvdisc[] = INCBIN_COMP("graphics/pokemon/luvdisc/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LUVDISC #if P_FAMILY_BAGON @@ -5387,6 +9000,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bagon[] = INCBIN_COMP("graphics/pokemon/bagon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5396,6 +9016,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shelgon[] = INCBIN_COMP("graphics/pokemon/shelgon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5405,6 +9032,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Salamence[] = INCBIN_COMP("graphics/pokemon/salamence/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/front.4bpp.lz"); @@ -5412,6 +9046,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SalamenceMega[] = INCBIN_COMP("graphics/pokemon/salamence/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BAGON @@ -5424,6 +9065,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Beldum[] = INCBIN_COMP("graphics/pokemon/beldum/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5433,6 +9081,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/metang/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Metang[] = INCBIN_COMP("graphics/pokemon/metang/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5442,6 +9097,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Metagross[] = INCBIN_COMP("graphics/pokemon/metagross/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/front.4bpp.lz"); @@ -5449,6 +9111,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MetagrossMega[] = INCBIN_COMP("graphics/pokemon/metagross/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BELDUM @@ -5461,6 +9130,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Regirock[] = INCBIN_COMP("graphics/pokemon/regirock/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIROCK #if P_FAMILY_REGICE @@ -5472,6 +9148,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/regice/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Regice[] = INCBIN_COMP("graphics/pokemon/regice/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGICE #if P_FAMILY_REGISTEEL @@ -5483,6 +9166,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Registeel[] = INCBIN_COMP("graphics/pokemon/registeel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGISTEEL #if P_FAMILY_LATIAS @@ -5494,6 +9184,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/latias/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Latias[] = INCBIN_COMP("graphics/pokemon/latias/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/front.4bpp.lz"); @@ -5501,6 +9198,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_LatiasMega[] = INCBIN_COMP("graphics/pokemon/latias/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LATIAS @@ -5513,6 +9217,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/latios/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Latios[] = INCBIN_COMP("graphics/pokemon/latios/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/front.4bpp.lz"); @@ -5520,6 +9231,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_LatiosMega[] = INCBIN_COMP("graphics/pokemon/latios/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_LATIOS @@ -5532,6 +9250,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kyogre[] = INCBIN_COMP("graphics/pokemon/kyogre/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_PRIMAL_REVERSIONS const u32 gMonFrontPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/front.4bpp.lz"); @@ -5539,6 +9264,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KyogrePrimal[] = INCBIN_COMP("graphics/pokemon/kyogre/primal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PRIMAL_REVERSIONS #endif //P_FAMILY_KYOGRE @@ -5551,6 +9283,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Groudon[] = INCBIN_COMP("graphics/pokemon/groudon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_PRIMAL_REVERSIONS const u32 gMonFrontPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/front.4bpp.lz"); @@ -5558,6 +9297,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GroudonPrimal[] = INCBIN_COMP("graphics/pokemon/groudon/primal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_PRIMAL_REVERSIONS #endif //P_FAMILY_GROUDON @@ -5570,6 +9316,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rayquaza[] = INCBIN_COMP("graphics/pokemon/rayquaza/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/front.4bpp.lz"); @@ -5577,6 +9330,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_RayquazaMega[] = INCBIN_COMP("graphics/pokemon/rayquaza/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_RAYQUAZA @@ -5589,6 +9349,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jirachi[] = INCBIN_COMP("graphics/pokemon/jirachi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JIRACHI #if P_FAMILY_DEOXYS @@ -5618,6 +9385,23 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DeoxysNormal[] = INCBIN_COMP("graphics/pokemon/deoxys/overworld.4bpp"); + const u32 gObjectEventPic_DeoxysAttack[] = INCBIN_COMP("graphics/pokemon/deoxys/attack/overworld.4bpp"); + const u32 gObjectEventPic_DeoxysDefense[] = INCBIN_COMP("graphics/pokemon/deoxys/defense/overworld.4bpp"); + const u32 gObjectEventPic_DeoxysSpeed[] = INCBIN_COMP("graphics/pokemon/deoxys/speed/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEOXYS #if P_FAMILY_TURTWIG @@ -5629,6 +9413,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Turtwig[] = INCBIN_COMP("graphics/pokemon/turtwig/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5638,6 +9429,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grotle[] = INCBIN_COMP("graphics/pokemon/grotle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5647,6 +9445,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Torterra[] = INCBIN_COMP("graphics/pokemon/torterra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TURTWIG #if P_FAMILY_CHIMCHAR @@ -5658,6 +9463,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chimchar[] = INCBIN_COMP("graphics/pokemon/chimchar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5667,6 +9479,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Monferno[] = INCBIN_COMP("graphics/pokemon/monferno/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5676,6 +9495,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Infernape[] = INCBIN_COMP("graphics/pokemon/infernape/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIMCHAR #if P_FAMILY_PIPLUP @@ -5687,6 +9513,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Piplup[] = INCBIN_COMP("graphics/pokemon/piplup/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5696,6 +9529,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Prinplup[] = INCBIN_COMP("graphics/pokemon/prinplup/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5705,6 +9545,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Empoleon[] = INCBIN_COMP("graphics/pokemon/empoleon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIPLUP #if P_FAMILY_STARLY @@ -5716,6 +9563,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Starly[] = INCBIN_COMP("graphics/pokemon/starly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5728,6 +9582,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Staravia[] = INCBIN_COMP("graphics/pokemon/staravia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5740,6 +9601,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Staraptor[] = INCBIN_COMP("graphics/pokemon/staraptor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_StaraptorF[] = INCBIN_U32("graphics/pokemon/staraptor/anim_frontf.4bpp.lz"); #endif //P_FAMILY_STARLY @@ -5753,6 +9621,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bidoof[] = INCBIN_COMP("graphics/pokemon/bidoof/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5765,6 +9640,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bibarel[] = INCBIN_COMP("graphics/pokemon/bibarel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_BibarelF[] = INCBIN_U32("graphics/pokemon/bibarel/anim_frontf.4bpp.lz"); #endif //P_FAMILY_BIDOOF @@ -5778,6 +9660,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kricketot[] = INCBIN_COMP("graphics/pokemon/kricketot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5790,6 +9679,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kricketune[] = INCBIN_COMP("graphics/pokemon/kricketune/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5804,6 +9700,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shinx[] = INCBIN_COMP("graphics/pokemon/shinx/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5816,6 +9719,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Luxio[] = INCBIN_COMP("graphics/pokemon/luxio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5828,6 +9738,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Luxray[] = INCBIN_COMP("graphics/pokemon/luxray/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5842,6 +9759,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cranidos[] = INCBIN_COMP("graphics/pokemon/cranidos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5851,6 +9775,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rampardos[] = INCBIN_COMP("graphics/pokemon/rampardos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRANIDOS #if P_FAMILY_SHIELDON @@ -5862,6 +9793,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shieldon[] = INCBIN_COMP("graphics/pokemon/shieldon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5871,6 +9809,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bastiodon[] = INCBIN_COMP("graphics/pokemon/bastiodon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHIELDON #if P_FAMILY_BURMY @@ -5895,6 +9840,20 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BurmyPlantCloak[] = INCBIN_COMP("graphics/pokemon/burmy/overworld.4bpp"); + const u32 gObjectEventPic_BurmySandyCloak[] = INCBIN_COMP("graphics/pokemon/burmy/sandy_cloak/overworld.4bpp"); + const u32 gObjectEventPic_BurmyTrashCloak[] = INCBIN_COMP("graphics/pokemon/burmy/trash_cloak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -5916,6 +9875,20 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WormadamPlantCloak[] = INCBIN_COMP("graphics/pokemon/wormadam/overworld.4bpp"); + const u32 gObjectEventPic_WormadamSandyCloak[] = INCBIN_COMP("graphics/pokemon/wormadam/sandy_cloak/overworld.4bpp"); + const u32 gObjectEventPic_WormadamTrashCloak[] = INCBIN_COMP("graphics/pokemon/wormadam/trash_cloak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -5924,6 +9897,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mothim[] = INCBIN_COMP("graphics/pokemon/mothim/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BURMY #if P_FAMILY_COMBEE @@ -5935,9 +9915,19 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Combee[] = INCBIN_U8("graphics/pokemon/combee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Combee[] = INCBIN_COMP("graphics/pokemon/combee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CombeeF[] = INCBIN_COMP("graphics/pokemon/combee/followerf.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -5947,6 +9937,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vespiquen[] = INCBIN_COMP("graphics/pokemon/vespiquen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COMBEE #if P_FAMILY_PACHIRISU @@ -5958,6 +9955,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pachirisu[] = INCBIN_COMP("graphics/pokemon/pachirisu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_frontf.4bpp.lz"); #endif //P_FAMILY_PACHIRISU @@ -5971,6 +9975,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Buizel[] = INCBIN_COMP("graphics/pokemon/buizel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp.lz"); @@ -5982,6 +9993,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Floatzel[] = INCBIN_COMP("graphics/pokemon/floatzel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); #endif //P_FAMILY_BUIZEL @@ -5995,6 +10013,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cherubi[] = INCBIN_COMP("graphics/pokemon/cherubi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6010,6 +10035,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CherrimOvercast[] = INCBIN_COMP("graphics/pokemon/cherrim/overworld.4bpp"); + // const u32 gObjectEventPic_CherrimSunshine[] = INCBIN_COMP("graphics/pokemon/cherrim/sunshine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/overworld_normal.gbapal.lz"); + // const u32 gOverworldPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/overworld_shiny.gbapal.lz"); + // const u32 gShinyOverworldPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHERUBI #if P_FAMILY_SHELLOS @@ -6028,6 +10064,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ShellosWestSea[] = INCBIN_COMP("graphics/pokemon/shellos/overworld.4bpp"); + const u32 gObjectEventPic_ShellosEastSea[] = INCBIN_COMP("graphics/pokemon/shellos/east_sea/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -6042,6 +10089,16 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GastrodonWestSea[] = INCBIN_COMP("graphics/pokemon/gastrodon/overworld.4bpp"); + const u32 gObjectEventPic_GastrodonEastSea[] = INCBIN_COMP("graphics/pokemon/gastrodon/east_sea/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELLOS #if P_FAMILY_DRIFLOON @@ -6053,6 +10110,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drifloon[] = INCBIN_COMP("graphics/pokemon/drifloon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6062,6 +10126,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drifblim[] = INCBIN_COMP("graphics/pokemon/drifblim/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRIFLOON #if P_FAMILY_BUNEARY @@ -6073,6 +10144,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Buneary[] = INCBIN_COMP("graphics/pokemon/buneary/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6082,6 +10160,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lopunny[] = INCBIN_COMP("graphics/pokemon/lopunny/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/front.4bpp.lz"); @@ -6089,6 +10174,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_LopunnyMega[] = INCBIN_COMP("graphics/pokemon/lopunny/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_BUNEARY @@ -6101,6 +10193,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Glameow[] = INCBIN_COMP("graphics/pokemon/glameow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6110,6 +10209,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Purugly[] = INCBIN_COMP("graphics/pokemon/purugly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLAMEOW #if P_FAMILY_STUNKY @@ -6121,6 +10227,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stunky[] = INCBIN_COMP("graphics/pokemon/stunky/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6130,6 +10243,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skuntank[] = INCBIN_COMP("graphics/pokemon/skuntank/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STUNKY #if P_FAMILY_BRONZOR @@ -6141,6 +10261,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bronzor[] = INCBIN_COMP("graphics/pokemon/bronzor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6150,6 +10277,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bronzong[] = INCBIN_COMP("graphics/pokemon/bronzong/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRONZOR #if P_FAMILY_CHATOT @@ -6161,6 +10295,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chatot[] = INCBIN_COMP("graphics/pokemon/chatot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHATOT #if P_FAMILY_SPIRITOMB @@ -6172,6 +10313,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spiritomb[] = INCBIN_COMP("graphics/pokemon/spiritomb/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPIRITOMB #if P_FAMILY_GIBLE @@ -6183,6 +10331,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gible[] = INCBIN_U8("graphics/pokemon/gible/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gible[] = INCBIN_COMP("graphics/pokemon/gible/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6195,6 +10350,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gabite[] = INCBIN_COMP("graphics/pokemon/gabite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6207,6 +10369,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Garchomp[] = INCBIN_COMP("graphics/pokemon/garchomp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_GarchompF[] = INCBIN_U32("graphics/pokemon/garchomp/anim_frontf.4bpp.lz"); @@ -6216,6 +10385,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GarchompMega[] = INCBIN_COMP("graphics/pokemon/garchomp/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_GIBLE @@ -6228,6 +10404,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Riolu[] = INCBIN_COMP("graphics/pokemon/riolu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6237,6 +10420,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lucario[] = INCBIN_COMP("graphics/pokemon/lucario/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/front.4bpp.lz"); @@ -6244,6 +10434,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_LucarioMega[] = INCBIN_COMP("graphics/pokemon/lucario/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_RIOLU @@ -6256,12 +10453,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hippopotas[] = INCBIN_COMP("graphics/pokemon/hippopotas/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HippopotasF[] = INCBIN_COMP("graphics/pokemon/hippopotas/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6271,12 +10482,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hippowdon[] = INCBIN_COMP("graphics/pokemon/hippowdon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HippowdonF[] = INCBIN_COMP("graphics/pokemon/hippowdon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HIPPOPOTAS #if P_FAMILY_SKORUPI @@ -6288,6 +10513,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skorupi[] = INCBIN_COMP("graphics/pokemon/skorupi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6297,6 +10529,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drapion[] = INCBIN_COMP("graphics/pokemon/drapion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKORUPI #if P_FAMILY_CROAGUNK @@ -6308,6 +10547,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Croagunk[] = INCBIN_COMP("graphics/pokemon/croagunk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6320,6 +10566,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Toxicroak[] = INCBIN_COMP("graphics/pokemon/toxicroak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6334,6 +10587,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Carnivine[] = INCBIN_COMP("graphics/pokemon/carnivine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CARNIVINE #if P_FAMILY_FINNEON @@ -6345,6 +10605,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Finneon[] = INCBIN_COMP("graphics/pokemon/finneon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6357,6 +10624,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lumineon[] = INCBIN_COMP("graphics/pokemon/lumineon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6371,6 +10645,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snover[] = INCBIN_U8("graphics/pokemon/snover/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snover[] = INCBIN_COMP("graphics/pokemon/snover/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6383,6 +10664,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Abomasnow[] = INCBIN_COMP("graphics/pokemon/abomasnow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_AbomasnowF[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_frontf.4bpp.lz"); @@ -6392,6 +10680,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AbomasnowMega[] = INCBIN_COMP("graphics/pokemon/abomasnow/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_SNOVER @@ -6434,6 +10729,29 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rotom[] = INCBIN_COMP("graphics/pokemon/rotom/overworld.4bpp"); + const u32 gObjectEventPic_RotomHeat[] = INCBIN_COMP("graphics/pokemon/rotom/heat/overworld.4bpp"); + const u32 gObjectEventPic_RotomWash[] = INCBIN_COMP("graphics/pokemon/rotom/wash/overworld.4bpp"); + const u32 gObjectEventPic_RotomFrost[] = INCBIN_COMP("graphics/pokemon/rotom/frost/overworld.4bpp"); + const u32 gObjectEventPic_RotomFan[] = INCBIN_COMP("graphics/pokemon/rotom/fan/overworld.4bpp"); + const u32 gObjectEventPic_RotomMow[] = INCBIN_COMP("graphics/pokemon/rotom/mow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROTOM #if P_FAMILY_UXIE @@ -6445,6 +10763,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Uxie[] = INCBIN_COMP("graphics/pokemon/uxie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_UXIE #if P_FAMILY_MESPRIT @@ -6456,6 +10781,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mesprit[] = INCBIN_COMP("graphics/pokemon/mesprit/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MESPRIT #if P_FAMILY_AZELF @@ -6467,6 +10799,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Azelf[] = INCBIN_COMP("graphics/pokemon/azelf/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AZELF #if P_FAMILY_DIALGA @@ -6478,12 +10817,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dialga[] = INCBIN_COMP("graphics/pokemon/dialga/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DialgaOrigin[] = INCBIN_COMP("graphics/pokemon/dialga/origin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DIALGA #if P_FAMILY_PALKIA @@ -6495,12 +10848,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Palkia[] = INCBIN_COMP("graphics/pokemon/palkia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PalkiaOrigin[] = INCBIN_COMP("graphics/pokemon/palkia/origin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PALKIA #if P_FAMILY_HEATRAN @@ -6512,6 +10879,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Heatran[] = INCBIN_COMP("graphics/pokemon/heatran/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HEATRAN #if P_FAMILY_REGIGIGAS @@ -6523,6 +10897,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Regigigas[] = INCBIN_COMP("graphics/pokemon/regigigas/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIGIGAS #if P_FAMILY_GIRATINA @@ -6534,6 +10915,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GiratinaAltered[] = INCBIN_COMP("graphics/pokemon/giratina/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6543,6 +10931,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GiratinaOrigin[] = INCBIN_COMP("graphics/pokemon/giratina/origin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GIRATINA #if P_FAMILY_CRESSELIA @@ -6554,6 +10949,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cresselia[] = INCBIN_COMP("graphics/pokemon/cresselia/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRESSELIA #if P_FAMILY_MANAPHY @@ -6565,6 +10967,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Phione[] = INCBIN_U8("graphics/pokemon/phione/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Phione[] = INCBIN_COMP("graphics/pokemon/phione/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6574,6 +10983,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Manaphy[] = INCBIN_COMP("graphics/pokemon/manaphy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MANAPHY #if P_FAMILY_DARKRAI @@ -6585,6 +11001,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Darkrai[] = INCBIN_COMP("graphics/pokemon/darkrai/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DARKRAI #if P_FAMILY_SHAYMIN @@ -6596,24 +11019,38 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ShayminLand[] = INCBIN_COMP("graphics/pokemon/shaymin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ShayminSky[] = INCBIN_COMP("graphics/pokemon/shaymin/sky/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #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"); #if P_FOOTPRINTS const u8 gMonFootprint_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/footprint.1bpp"); #endif //P_FOOTPRINTS const u32 gMonPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); + const u8 gMonIcon_ArceusNormal[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); const u32 gMonPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/shiny.gbapal.lz"); @@ -6665,6 +11102,84 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/shiny.gbapal.lz"); + +#if P_ARCEUS_UNIQUE_FORM_ICONS >= GEN_9 + const u8 gMonIcon_ArceusFighting[] = INCBIN_U8("graphics/pokemon/arceus/fighting/icon.4bpp"); + const u8 gMonIcon_ArceusFlying[] = INCBIN_U8("graphics/pokemon/arceus/flying/icon.4bpp"); + const u8 gMonIcon_ArceusPoison[] = INCBIN_U8("graphics/pokemon/arceus/poison/icon.4bpp"); + const u8 gMonIcon_ArceusGround[] = INCBIN_U8("graphics/pokemon/arceus/ground/icon.4bpp"); + const u8 gMonIcon_ArceusRock[] = INCBIN_U8("graphics/pokemon/arceus/rock/icon.4bpp"); + const u8 gMonIcon_ArceusBug[] = INCBIN_U8("graphics/pokemon/arceus/bug/icon.4bpp"); + const u8 gMonIcon_ArceusGhost[] = INCBIN_U8("graphics/pokemon/arceus/ghost/icon.4bpp"); + const u8 gMonIcon_ArceusSteel[] = INCBIN_U8("graphics/pokemon/arceus/steel/icon.4bpp"); + const u8 gMonIcon_ArceusFire[] = INCBIN_U8("graphics/pokemon/arceus/fire/icon.4bpp"); + const u8 gMonIcon_ArceusWater[] = INCBIN_U8("graphics/pokemon/arceus/water/icon.4bpp"); + const u8 gMonIcon_ArceusGrass[] = INCBIN_U8("graphics/pokemon/arceus/grass/icon.4bpp"); + const u8 gMonIcon_ArceusElectric[] = INCBIN_U8("graphics/pokemon/arceus/electric/icon.4bpp"); + const u8 gMonIcon_ArceusPsychic[] = INCBIN_U8("graphics/pokemon/arceus/psychic/icon.4bpp"); + const u8 gMonIcon_ArceusIce[] = INCBIN_U8("graphics/pokemon/arceus/ice/icon.4bpp"); + const u8 gMonIcon_ArceusDragon[] = INCBIN_U8("graphics/pokemon/arceus/dragon/icon.4bpp"); + const u8 gMonIcon_ArceusDark[] = INCBIN_U8("graphics/pokemon/arceus/dark/icon.4bpp"); + const u8 gMonIcon_ArceusFairy[] = INCBIN_U8("graphics/pokemon/arceus/fairy/icon.4bpp"); +#endif //P_ARCEUS_UNIQUE_FORM_ICONS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ArceusNormal[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusFighting[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusFlying[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusPoison[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusGround[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusRock[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusBug[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusGhost[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusSteel[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusFire[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusWater[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusGrass[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusElectric[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusPsychic[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusIce[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusDragon[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusDark[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); + const u32 gObjectEventPic_ArceusFairy[] = INCBIN_COMP("graphics/pokemon/arceus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCEUS #if P_FAMILY_VICTINI @@ -6676,6 +11191,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Victini[] = INCBIN_U8("graphics/pokemon/victini/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Victini[] = INCBIN_COMP("graphics/pokemon/victini/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VICTINI #if P_FAMILY_SNIVY @@ -6687,6 +11209,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snivy[] = INCBIN_COMP("graphics/pokemon/snivy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6696,6 +11225,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Servine[] = INCBIN_U8("graphics/pokemon/servine/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Servine[] = INCBIN_COMP("graphics/pokemon/servine/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6705,6 +11241,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Serperior[] = INCBIN_COMP("graphics/pokemon/serperior/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNIVY #if P_FAMILY_TEPIG @@ -6716,6 +11259,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tepig[] = INCBIN_COMP("graphics/pokemon/tepig/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6725,6 +11275,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pignite[] = INCBIN_COMP("graphics/pokemon/pignite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6734,6 +11291,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Emboar[] = INCBIN_COMP("graphics/pokemon/emboar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TEPIG #if P_FAMILY_OSHAWOTT @@ -6745,6 +11309,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Oshawott[] = INCBIN_COMP("graphics/pokemon/oshawott/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6754,6 +11325,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dewott[] = INCBIN_COMP("graphics/pokemon/dewott/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6763,6 +11341,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Samurott[] = INCBIN_COMP("graphics/pokemon/samurott/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); @@ -6770,6 +11355,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SamurottHisuian[] = INCBIN_COMP("graphics/pokemon/samurott/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_OSHAWOTT @@ -6782,6 +11374,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Patrat[] = INCBIN_COMP("graphics/pokemon/patrat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6791,6 +11390,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Watchog[] = INCBIN_COMP("graphics/pokemon/watchog/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PATRAT #if P_FAMILY_LILLIPUP @@ -6802,6 +11408,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lillipup[] = INCBIN_COMP("graphics/pokemon/lillipup/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6811,6 +11424,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Herdier[] = INCBIN_COMP("graphics/pokemon/herdier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6820,6 +11440,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stoutland[] = INCBIN_COMP("graphics/pokemon/stoutland/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LILLIPUP #if P_FAMILY_PURRLOIN @@ -6831,6 +11458,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Purrloin[] = INCBIN_COMP("graphics/pokemon/purrloin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6840,6 +11474,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Liepard[] = INCBIN_COMP("graphics/pokemon/liepard/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PURRLOIN #if P_FAMILY_PANSAGE @@ -6851,6 +11492,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pansage[] = INCBIN_COMP("graphics/pokemon/pansage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6860,6 +11508,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Simisage[] = INCBIN_COMP("graphics/pokemon/simisage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANSAGE #if P_FAMILY_PANSEAR @@ -6871,6 +11526,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pansear[] = INCBIN_COMP("graphics/pokemon/pansear/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6880,6 +11542,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Simisear[] = INCBIN_COMP("graphics/pokemon/simisear/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANSEAR #if P_FAMILY_PANPOUR @@ -6891,6 +11560,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Panpour[] = INCBIN_COMP("graphics/pokemon/panpour/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6900,6 +11576,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Simipour[] = INCBIN_COMP("graphics/pokemon/simipour/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANPOUR #if P_FAMILY_MUNNA @@ -6911,6 +11594,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Munna[] = INCBIN_U8("graphics/pokemon/munna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Munna[] = INCBIN_COMP("graphics/pokemon/munna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6920,6 +11610,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Musharna[] = INCBIN_COMP("graphics/pokemon/musharna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUNNA #if P_FAMILY_PIDOVE @@ -6931,6 +11628,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pidove[] = INCBIN_COMP("graphics/pokemon/pidove/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6940,6 +11644,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tranquill[] = INCBIN_COMP("graphics/pokemon/tranquill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6949,12 +11660,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Unfezant[] = INCBIN_COMP("graphics/pokemon/unfezant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_UnfezantF[] = INCBIN_COMP("graphics/pokemon/unfezant_f/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant_f/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant_f/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIDOVE #if P_FAMILY_BLITZLE @@ -6966,6 +11691,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blitzle[] = INCBIN_COMP("graphics/pokemon/blitzle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6975,6 +11707,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zebstrika[] = INCBIN_COMP("graphics/pokemon/zebstrika/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BLITZLE #if P_FAMILY_ROGGENROLA @@ -6986,6 +11725,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Roggenrola[] = INCBIN_COMP("graphics/pokemon/roggenrola/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -6995,6 +11741,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Boldore[] = INCBIN_COMP("graphics/pokemon/boldore/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7004,6 +11757,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gigalith[] = INCBIN_COMP("graphics/pokemon/gigalith/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROGGENROLA #if P_FAMILY_WOOBAT @@ -7015,6 +11775,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Woobat[] = INCBIN_COMP("graphics/pokemon/woobat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7024,6 +11791,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swoobat[] = INCBIN_COMP("graphics/pokemon/swoobat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WOOBAT #if P_FAMILY_DRILBUR @@ -7035,6 +11809,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drilbur[] = INCBIN_COMP("graphics/pokemon/drilbur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7044,6 +11825,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Excadrill[] = INCBIN_COMP("graphics/pokemon/excadrill/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRILBUR #if P_FAMILY_AUDINO @@ -7055,6 +11843,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Audino[] = INCBIN_U8("graphics/pokemon/audino/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Audino[] = INCBIN_COMP("graphics/pokemon/audino/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/front.4bpp.lz"); @@ -7062,6 +11857,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AudinoMega[] = INCBIN_COMP("graphics/pokemon/audino/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_AUDINO @@ -7074,6 +11876,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Timburr[] = INCBIN_COMP("graphics/pokemon/timburr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7083,6 +11892,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gurdurr[] = INCBIN_COMP("graphics/pokemon/gurdurr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7092,6 +11908,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Conkeldurr[] = INCBIN_COMP("graphics/pokemon/conkeldurr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TIMBURR #if P_FAMILY_TYMPOLE @@ -7103,6 +11926,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tympole[] = INCBIN_COMP("graphics/pokemon/tympole/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7112,6 +11942,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Palpitoad[] = INCBIN_COMP("graphics/pokemon/palpitoad/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7121,6 +11958,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Seismitoad[] = INCBIN_COMP("graphics/pokemon/seismitoad/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYMPOLE #if P_FAMILY_THROH @@ -7132,6 +11976,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Throh[] = INCBIN_U8("graphics/pokemon/throh/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Throh[] = INCBIN_COMP("graphics/pokemon/throh/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_THROH #if P_FAMILY_SAWK @@ -7143,6 +11994,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sawk[] = INCBIN_COMP("graphics/pokemon/sawk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SAWK #if P_FAMILY_SEWADDLE @@ -7154,6 +12012,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sewaddle[] = INCBIN_COMP("graphics/pokemon/sewaddle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7163,6 +12028,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swadloon[] = INCBIN_COMP("graphics/pokemon/swadloon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7172,6 +12044,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Leavanny[] = INCBIN_COMP("graphics/pokemon/leavanny/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SEWADDLE #if P_FAMILY_VENIPEDE @@ -7183,6 +12062,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Venipede[] = INCBIN_COMP("graphics/pokemon/venipede/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7192,6 +12078,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Whirlipede[] = INCBIN_COMP("graphics/pokemon/whirlipede/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7201,6 +12094,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scolipede[] = INCBIN_COMP("graphics/pokemon/scolipede/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VENIPEDE #if P_FAMILY_COTTONEE @@ -7212,6 +12112,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cottonee[] = INCBIN_COMP("graphics/pokemon/cottonee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7221,6 +12128,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Whimsicott[] = INCBIN_COMP("graphics/pokemon/whimsicott/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COTTONEE #if P_FAMILY_PETILIL @@ -7232,6 +12146,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Petilil[] = INCBIN_COMP("graphics/pokemon/petilil/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7241,6 +12162,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lilligant[] = INCBIN_COMP("graphics/pokemon/lilligant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); @@ -7248,6 +12176,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LilligantHisuian[] = INCBIN_COMP("graphics/pokemon/lilligant/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_PETILIL @@ -7274,6 +12209,20 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BasculinRedStriped[] = INCBIN_COMP("graphics/pokemon/basculin/overworld.4bpp"); + const u32 gObjectEventPic_BasculinBlueStriped[] = INCBIN_COMP("graphics/pokemon/basculin/blue_striped/overworld.4bpp"); + const u32 gObjectEventPic_BasculinWhiteStriped[] = INCBIN_COMP("graphics/pokemon/basculin/white_striped/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -7288,6 +12237,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BasculegionMale[] = INCBIN_COMP("graphics/pokemon/basculegion/overworld.4bpp"); + const u32 gObjectEventPic_BasculegionFemale[] = INCBIN_COMP("graphics/pokemon/basculegion/female/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BASCULIN @@ -7300,6 +12260,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sandile[] = INCBIN_COMP("graphics/pokemon/sandile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7309,6 +12276,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Krokorok[] = INCBIN_COMP("graphics/pokemon/krokorok/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7318,6 +12292,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Krookodile[] = INCBIN_COMP("graphics/pokemon/krookodile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDILE #if P_FAMILY_DARUMAKA @@ -7329,6 +12310,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Darumaka[] = INCBIN_COMP("graphics/pokemon/darumaka/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7338,12 +12326,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DarmanitanStandardMode[] = INCBIN_COMP("graphics/pokemon/darmanitan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_DarmanitanZenMode[] = INCBIN_COMP("graphics/pokemon/darmanitan/zen_mode/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/front.4bpp.lz"); @@ -7351,18 +12353,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DarumakaGalarian[] = INCBIN_COMP("graphics/pokemon/darumaka/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DarmanitanGalarianStandardMode[] = INCBIN_COMP("graphics/pokemon/darmanitan/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_DarmanitanGalarianZenMode[] = INCBIN_COMP("graphics/pokemon/darmanitan/zen_mode/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_DARUMAKA @@ -7375,6 +12398,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Maractus[] = INCBIN_COMP("graphics/pokemon/maractus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARACTUS #if P_FAMILY_DWEBBLE @@ -7386,6 +12416,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dwebble[] = INCBIN_COMP("graphics/pokemon/dwebble/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7395,6 +12432,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Crustle[] = INCBIN_COMP("graphics/pokemon/crustle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DWEBBLE #if P_FAMILY_SCRAGGY @@ -7406,6 +12450,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scraggy[] = INCBIN_COMP("graphics/pokemon/scraggy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7415,6 +12466,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scrafty[] = INCBIN_COMP("graphics/pokemon/scrafty/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SCRAGGY #if P_FAMILY_SIGILYPH @@ -7426,6 +12484,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sigilyph[] = INCBIN_COMP("graphics/pokemon/sigilyph/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SIGILYPH #if P_FAMILY_YAMASK @@ -7437,6 +12502,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yamask[] = INCBIN_COMP("graphics/pokemon/yamask/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7446,6 +12518,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cofagrigus[] = INCBIN_COMP("graphics/pokemon/cofagrigus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); @@ -7453,6 +12532,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_YamaskGalarian[] = INCBIN_COMP("graphics/pokemon/yamask/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/front.4bpp.lz"); const u32 gMonPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/normal.gbapal.lz"); @@ -7462,6 +12548,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Runerigus[] = INCBIN_COMP("graphics/pokemon/runerigus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_YAMASK @@ -7474,6 +12567,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tirtouga[] = INCBIN_COMP("graphics/pokemon/tirtouga/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7483,6 +12583,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Carracosta[] = INCBIN_COMP("graphics/pokemon/carracosta/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TIRTOUGA #if P_FAMILY_ARCHEN @@ -7494,6 +12601,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Archen[] = INCBIN_U8("graphics/pokemon/archen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Archen[] = INCBIN_COMP("graphics/pokemon/archen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7503,6 +12617,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Archeops[] = INCBIN_COMP("graphics/pokemon/archeops/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCHEN #if P_FAMILY_TRUBBISH @@ -7514,6 +12635,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Trubbish[] = INCBIN_COMP("graphics/pokemon/trubbish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7523,6 +12651,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Garbodor[] = INCBIN_COMP("graphics/pokemon/garbodor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/front.4bpp.lz"); @@ -7530,6 +12665,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GarbodorGigantamax[] = INCBIN_COMP("graphics/pokemon/garbodor/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_TRUBBISH @@ -7542,6 +12684,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zorua[] = INCBIN_COMP("graphics/pokemon/zorua/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7551,6 +12700,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zoroark[] = INCBIN_COMP("graphics/pokemon/zoroark/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); @@ -7558,12 +12714,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZoruaHisuian[] = INCBIN_COMP("graphics/pokemon/zorua/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZoroarkHisuian[] = INCBIN_COMP("graphics/pokemon/zoroark/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ZORUA @@ -7576,6 +12746,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Minccino[] = INCBIN_COMP("graphics/pokemon/minccino/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7585,6 +12762,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cinccino[] = INCBIN_COMP("graphics/pokemon/cinccino/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINCCINO #if P_FAMILY_GOTHITA @@ -7596,6 +12780,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gothita[] = INCBIN_COMP("graphics/pokemon/gothita/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7605,6 +12796,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gothorita[] = INCBIN_COMP("graphics/pokemon/gothorita/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7614,6 +12812,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gothitelle[] = INCBIN_COMP("graphics/pokemon/gothitelle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOTHITA #if P_FAMILY_SOLOSIS @@ -7625,6 +12830,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Solosis[] = INCBIN_COMP("graphics/pokemon/solosis/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7634,6 +12846,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Duosion[] = INCBIN_COMP("graphics/pokemon/duosion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7643,6 +12862,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Reuniclus[] = INCBIN_COMP("graphics/pokemon/reuniclus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SOLOSIS #if P_FAMILY_DUCKLETT @@ -7654,6 +12880,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ducklett[] = INCBIN_COMP("graphics/pokemon/ducklett/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7663,6 +12896,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swanna[] = INCBIN_COMP("graphics/pokemon/swanna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DUCKLETT #if P_FAMILY_VANILLITE @@ -7674,6 +12914,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vanillite[] = INCBIN_COMP("graphics/pokemon/vanillite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7683,6 +12930,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vanillish[] = INCBIN_COMP("graphics/pokemon/vanillish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7692,6 +12946,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vanilluxe[] = INCBIN_COMP("graphics/pokemon/vanilluxe/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VANILLITE #if P_FAMILY_DEERLING @@ -7717,6 +12978,23 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DeerlingSpring[] = INCBIN_COMP("graphics/pokemon/deerling/overworld.4bpp"); + const u32 gObjectEventPic_DeerlingSummer[] = INCBIN_COMP("graphics/pokemon/deerling/summer/overworld.4bpp"); + const u32 gObjectEventPic_DeerlingAutumn[] = INCBIN_COMP("graphics/pokemon/deerling/autumn/overworld.4bpp"); + const u32 gObjectEventPic_DeerlingWinter[] = INCBIN_COMP("graphics/pokemon/deerling/winter/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -7743,6 +13021,23 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SawsbuckSpring[] = INCBIN_COMP("graphics/pokemon/sawsbuck/overworld.4bpp"); + const u32 gObjectEventPic_SawsbuckSummer[] = INCBIN_COMP("graphics/pokemon/sawsbuck/summer/overworld.4bpp"); + const u32 gObjectEventPic_SawsbuckAutumn[] = INCBIN_COMP("graphics/pokemon/sawsbuck/autumn/overworld.4bpp"); + const u32 gObjectEventPic_SawsbuckWinter[] = INCBIN_COMP("graphics/pokemon/sawsbuck/winter/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEERLING #if P_FAMILY_EMOLGA @@ -7754,6 +13049,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Emolga[] = INCBIN_COMP("graphics/pokemon/emolga/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EMOLGA #if P_FAMILY_KARRABLAST @@ -7765,6 +13067,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Karrablast[] = INCBIN_COMP("graphics/pokemon/karrablast/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7774,6 +13083,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Escavalier[] = INCBIN_COMP("graphics/pokemon/escavalier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KARRABLAST #if P_FAMILY_FOONGUS @@ -7785,6 +13101,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Foongus[] = INCBIN_COMP("graphics/pokemon/foongus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7794,6 +13117,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Amoonguss[] = INCBIN_COMP("graphics/pokemon/amoonguss/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FOONGUS #if P_FAMILY_FRILLISH @@ -7805,12 +13135,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Frillish[] = INCBIN_COMP("graphics/pokemon/frillish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FrillishF[] = INCBIN_COMP("graphics/pokemon/frillish/followerf.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_normalf.gbapal.lz"); + // const u32 gShinyOverworldPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/overworld_shinyf.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7820,12 +13164,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Jellicent[] = INCBIN_COMP("graphics/pokemon/jellicent/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_JellicentF[] = INCBIN_COMP("graphics/pokemon/jellicent/followerf.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FRILLISH #if P_FAMILY_ALOMOMOLA @@ -7837,6 +13195,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Alomomola[] = INCBIN_COMP("graphics/pokemon/alomomola/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ALOMOMOLA #if P_FAMILY_JOLTIK @@ -7848,6 +13213,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Joltik[] = INCBIN_COMP("graphics/pokemon/joltik/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7857,6 +13229,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Galvantula[] = INCBIN_COMP("graphics/pokemon/galvantula/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JOLTIK #if P_FAMILY_FERROSEED @@ -7868,6 +13247,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ferroseed[] = INCBIN_COMP("graphics/pokemon/ferroseed/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7877,6 +13263,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ferrothorn[] = INCBIN_COMP("graphics/pokemon/ferrothorn/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FERROSEED #if P_FAMILY_KLINK @@ -7888,6 +13281,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Klink[] = INCBIN_U8("graphics/pokemon/klink/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Klink[] = INCBIN_COMP("graphics/pokemon/klink/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7897,6 +13297,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Klang[] = INCBIN_U8("graphics/pokemon/klang/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Klang[] = INCBIN_COMP("graphics/pokemon/klang/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7906,6 +13313,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Klinklang[] = INCBIN_COMP("graphics/pokemon/klinklang/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLINK #if P_FAMILY_TYNAMO @@ -7917,6 +13331,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tynamo[] = INCBIN_COMP("graphics/pokemon/tynamo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7926,6 +13347,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Eelektrik[] = INCBIN_COMP("graphics/pokemon/eelektrik/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7935,6 +13363,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Eelektross[] = INCBIN_COMP("graphics/pokemon/eelektross/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYNAMO #if P_FAMILY_ELGYEM @@ -7946,6 +13381,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Elgyem[] = INCBIN_COMP("graphics/pokemon/elgyem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7955,6 +13397,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Beheeyem[] = INCBIN_COMP("graphics/pokemon/beheeyem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ELGYEM #if P_FAMILY_LITWICK @@ -7966,6 +13415,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Litwick[] = INCBIN_COMP("graphics/pokemon/litwick/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7975,6 +13431,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lampent[] = INCBIN_COMP("graphics/pokemon/lampent/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -7984,6 +13447,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chandelure[] = INCBIN_COMP("graphics/pokemon/chandelure/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITWICK #if P_FAMILY_AXEW @@ -7995,6 +13465,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Axew[] = INCBIN_U8("graphics/pokemon/axew/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Axew[] = INCBIN_COMP("graphics/pokemon/axew/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8004,6 +13481,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fraxure[] = INCBIN_COMP("graphics/pokemon/fraxure/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8013,6 +13497,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Haxorus[] = INCBIN_COMP("graphics/pokemon/haxorus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AXEW #if P_FAMILY_CUBCHOO @@ -8024,6 +13515,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cubchoo[] = INCBIN_COMP("graphics/pokemon/cubchoo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8033,6 +13531,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Beartic[] = INCBIN_COMP("graphics/pokemon/beartic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CUBCHOO #if P_FAMILY_CRYOGONAL @@ -8044,6 +13549,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cryogonal[] = INCBIN_COMP("graphics/pokemon/cryogonal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRYOGONAL #if P_FAMILY_SHELMET @@ -8055,6 +13567,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shelmet[] = INCBIN_COMP("graphics/pokemon/shelmet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8064,6 +13583,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Accelgor[] = INCBIN_COMP("graphics/pokemon/accelgor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHELMET #if P_FAMILY_STUNFISK @@ -8075,6 +13601,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stunfisk[] = INCBIN_COMP("graphics/pokemon/stunfisk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); @@ -8082,6 +13615,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_StunfiskGalarian[] = INCBIN_COMP("graphics/pokemon/stunfisk/galarian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_STUNFISK @@ -8094,6 +13634,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mienfoo[] = INCBIN_COMP("graphics/pokemon/mienfoo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8103,6 +13650,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mienshao[] = INCBIN_COMP("graphics/pokemon/mienshao/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIENFOO #if P_FAMILY_DRUDDIGON @@ -8114,6 +13668,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Druddigon[] = INCBIN_COMP("graphics/pokemon/druddigon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRUDDIGON #if P_FAMILY_GOLETT @@ -8125,6 +13686,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golett[] = INCBIN_U8("graphics/pokemon/golett/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golett[] = INCBIN_COMP("graphics/pokemon/golett/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8134,6 +13702,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golurk[] = INCBIN_COMP("graphics/pokemon/golurk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOLETT #if P_FAMILY_PAWNIARD @@ -8145,6 +13720,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pawniard[] = INCBIN_COMP("graphics/pokemon/pawniard/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8154,6 +13736,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bisharp[] = INCBIN_COMP("graphics/pokemon/bisharp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/front.4bpp.lz"); @@ -8164,6 +13753,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Kingambit[] = INCBIN_COMP("graphics/pokemon/kingambit/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_PAWNIARD @@ -8176,6 +13772,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bouffalant[] = INCBIN_COMP("graphics/pokemon/bouffalant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOUFFALANT #if P_FAMILY_RUFFLET @@ -8187,6 +13790,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rufflet[] = INCBIN_COMP("graphics/pokemon/rufflet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8196,6 +13806,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Braviary[] = INCBIN_COMP("graphics/pokemon/braviary/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/front.4bpp.lz"); @@ -8203,6 +13820,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_BraviaryHisuian[] = INCBIN_COMP("graphics/pokemon/braviary/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_RUFFLET @@ -8215,6 +13839,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vullaby[] = INCBIN_COMP("graphics/pokemon/vullaby/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8224,6 +13855,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mandibuzz[] = INCBIN_COMP("graphics/pokemon/mandibuzz/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VULLABY #if P_FAMILY_HEATMOR @@ -8235,6 +13873,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Heatmor[] = INCBIN_COMP("graphics/pokemon/heatmor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HEATMOR #if P_FAMILY_DURANT @@ -8246,6 +13891,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Durant[] = INCBIN_U8("graphics/pokemon/durant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Durant[] = INCBIN_COMP("graphics/pokemon/durant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DURANT #if P_FAMILY_DEINO @@ -8257,6 +13909,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Deino[] = INCBIN_U8("graphics/pokemon/deino/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Deino[] = INCBIN_COMP("graphics/pokemon/deino/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8266,6 +13925,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zweilous[] = INCBIN_COMP("graphics/pokemon/zweilous/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8275,6 +13941,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hydreigon[] = INCBIN_COMP("graphics/pokemon/hydreigon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEINO #if P_FAMILY_LARVESTA @@ -8286,6 +13959,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Larvesta[] = INCBIN_COMP("graphics/pokemon/larvesta/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8295,6 +13975,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Volcarona[] = INCBIN_COMP("graphics/pokemon/volcarona/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LARVESTA #if P_FAMILY_COBALION @@ -8306,6 +13993,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cobalion[] = INCBIN_COMP("graphics/pokemon/cobalion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COBALION #if P_FAMILY_TERRAKION @@ -8317,6 +14011,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Terrakion[] = INCBIN_COMP("graphics/pokemon/terrakion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TERRAKION #if P_FAMILY_VIRIZION @@ -8328,6 +14029,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Virizion[] = INCBIN_COMP("graphics/pokemon/virizion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VIRIZION #if P_FAMILY_TORNADUS @@ -8339,12 +14047,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TornadusIncarnate[] = INCBIN_COMP("graphics/pokemon/tornadus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_TornadusTherian[] = INCBIN_COMP("graphics/pokemon/tornadus/therian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + //const u32 gOverworldPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/overworld_normal.gbapal.lz"); + //const u32 gShinyOverworldPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TORNADUS #if P_FAMILY_THUNDURUS @@ -8356,12 +14078,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ThundurusIncarnate[] = INCBIN_COMP("graphics/pokemon/thundurus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_ThundurusTherian[] = INCBIN_COMP("graphics/pokemon/thundurus/therian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + //const u32 gOverworldPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/overworld_normal.gbapal.lz"); + //const u32 gShinyOverworldPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_THUNDURUS #if P_FAMILY_RESHIRAM @@ -8373,6 +14109,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Reshiram[] = INCBIN_COMP("graphics/pokemon/reshiram/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RESHIRAM #if P_FAMILY_ZEKROM @@ -8384,6 +14127,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zekrom[] = INCBIN_COMP("graphics/pokemon/zekrom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZEKROM #if P_FAMILY_LANDORUS @@ -8395,12 +14145,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LandorusIncarnate[] = INCBIN_COMP("graphics/pokemon/landorus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_LandorusTherian[] = INCBIN_COMP("graphics/pokemon/landorus/therian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + //const u32 gOverworldPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/overworld_normal.gbapal.lz"); + //const u32 gShinyOverworldPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LANDORUS #if P_FAMILY_ENAMORUS @@ -8412,12 +14176,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_EnamorusIncarnate[] = INCBIN_COMP("graphics/pokemon/enamorus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_EnamorusTherian[] = INCBIN_COMP("graphics/pokemon/enamorus/therian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ENAMORUS #if P_FAMILY_KYUREM @@ -8429,6 +14207,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kyurem[] = INCBIN_COMP("graphics/pokemon/kyurem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_FUSION_FORMS const u32 gMonFrontPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/anim_front.4bpp.lz"); @@ -8436,12 +14221,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KyuremWhite[] = INCBIN_COMP("graphics/pokemon/kyurem/white/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KyuremBlack[] = INCBIN_COMP("graphics/pokemon/kyurem/black/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS #endif //P_FAMILY_KYUREM @@ -8454,12 +14253,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_KeldeoOrdinary[] = INCBIN_COMP("graphics/pokemon/keldeo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/anim_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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_KeldeoResolute[] = INCBIN_COMP("graphics/pokemon/keldeo/resolute/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KELDEO #if P_FAMILY_MELOETTA @@ -8471,12 +14284,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeloettaAria[] = INCBIN_COMP("graphics/pokemon/meloetta/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/anim_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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeloettaPirouette[] = INCBIN_COMP("graphics/pokemon/meloetta/pirouette/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MELOETTA #if P_FAMILY_GENESECT @@ -8488,6 +14315,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Genesect[] = INCBIN_COMP("graphics/pokemon/genesect/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8511,6 +14345,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chespin[] = INCBIN_COMP("graphics/pokemon/chespin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8520,6 +14361,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Quilladin[] = INCBIN_COMP("graphics/pokemon/quilladin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8529,6 +14377,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chesnaught[] = INCBIN_COMP("graphics/pokemon/chesnaught/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHESPIN #if P_FAMILY_FENNEKIN @@ -8540,6 +14395,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fennekin[] = INCBIN_COMP("graphics/pokemon/fennekin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8549,6 +14411,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Braixen[] = INCBIN_COMP("graphics/pokemon/braixen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8558,6 +14427,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Delphox[] = INCBIN_COMP("graphics/pokemon/delphox/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FENNEKIN #if P_FAMILY_FROAKIE @@ -8569,6 +14445,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Froakie[] = INCBIN_COMP("graphics/pokemon/froakie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8578,6 +14461,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Frogadier[] = INCBIN_COMP("graphics/pokemon/frogadier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8587,12 +14477,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Greninja[] = INCBIN_COMP("graphics/pokemon/greninja/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GreninjaAsh[] = INCBIN_COMP("graphics/pokemon/greninja/ash/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FROAKIE #if P_FAMILY_BUNNELBY @@ -8604,6 +14508,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bunnelby[] = INCBIN_COMP("graphics/pokemon/bunnelby/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8613,6 +14524,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Diggersby[] = INCBIN_COMP("graphics/pokemon/diggersby/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BUNNELBY #if P_FAMILY_FLETCHLING @@ -8624,6 +14542,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fletchling[] = INCBIN_COMP("graphics/pokemon/fletchling/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8633,6 +14558,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fletchinder[] = INCBIN_COMP("graphics/pokemon/fletchinder/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8642,6 +14574,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Talonflame[] = INCBIN_COMP("graphics/pokemon/talonflame/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLETCHLING #if P_FAMILY_SCATTERBUG @@ -8653,6 +14592,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scatterbug[] = INCBIN_COMP("graphics/pokemon/scatterbug/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8662,6 +14608,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spewpa[] = INCBIN_COMP("graphics/pokemon/spewpa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8762,6 +14715,71 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_VivillonIcySnow[] = INCBIN_COMP("graphics/pokemon/vivillon/overworld.4bpp"); + const u32 gObjectEventPic_VivillonPolar[] = INCBIN_COMP("graphics/pokemon/vivillon/polar/overworld.4bpp"); + const u32 gObjectEventPic_VivillonTundra[] = INCBIN_COMP("graphics/pokemon/vivillon/tundra/overworld.4bpp"); + const u32 gObjectEventPic_VivillonContinental[] = INCBIN_COMP("graphics/pokemon/vivillon/continental/overworld.4bpp"); + const u32 gObjectEventPic_VivillonGarden[] = INCBIN_COMP("graphics/pokemon/vivillon/garden/overworld.4bpp"); + const u32 gObjectEventPic_VivillonElegant[] = INCBIN_COMP("graphics/pokemon/vivillon/elegant/overworld.4bpp"); + const u32 gObjectEventPic_VivillonMeadow[] = INCBIN_COMP("graphics/pokemon/vivillon/meadow/overworld.4bpp"); + const u32 gObjectEventPic_VivillonModern[] = INCBIN_COMP("graphics/pokemon/vivillon/modern/overworld.4bpp"); + const u32 gObjectEventPic_VivillonMarine[] = INCBIN_COMP("graphics/pokemon/vivillon/marine/overworld.4bpp"); + const u32 gObjectEventPic_VivillonArchipelago[] = INCBIN_COMP("graphics/pokemon/vivillon/archipelago/overworld.4bpp"); + const u32 gObjectEventPic_VivillonHighPlains[] = INCBIN_COMP("graphics/pokemon/vivillon/high_plains/overworld.4bpp"); + const u32 gObjectEventPic_VivillonSandstorm[] = INCBIN_COMP("graphics/pokemon/vivillon/sandstorm/overworld.4bpp"); + const u32 gObjectEventPic_VivillonRiver[] = INCBIN_COMP("graphics/pokemon/vivillon/river/overworld.4bpp"); + const u32 gObjectEventPic_VivillonMonsoon[] = INCBIN_COMP("graphics/pokemon/vivillon/monsoon/overworld.4bpp"); + const u32 gObjectEventPic_VivillonSavanna[] = INCBIN_COMP("graphics/pokemon/vivillon/savanna/overworld.4bpp"); + const u32 gObjectEventPic_VivillonSun[] = INCBIN_COMP("graphics/pokemon/vivillon/sun/overworld.4bpp"); + const u32 gObjectEventPic_VivillonOcean[] = INCBIN_COMP("graphics/pokemon/vivillon/ocean/overworld.4bpp"); + const u32 gObjectEventPic_VivillonJungle[] = INCBIN_COMP("graphics/pokemon/vivillon/jungle/overworld.4bpp"); + const u32 gObjectEventPic_VivillonFancy[] = INCBIN_COMP("graphics/pokemon/vivillon/fancy/overworld.4bpp"); + const u32 gObjectEventPic_VivillonPokeBall[] = INCBIN_COMP("graphics/pokemon/vivillon/poke_ball/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -8796,6 +14814,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Litleo[] = INCBIN_COMP("graphics/pokemon/litleo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8805,10 +14830,24 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pyroar[] = INCBIN_COMP("graphics/pokemon/pyroar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PyroarF[] = INCBIN_COMP("graphics/pokemon/pyroar/followerf.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_normalf.gbapal.lz"); + // const u32 gShinyOverworldPalette_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/overworld_shinyf.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITLEO #if P_FAMILY_FLABEBE @@ -8838,6 +14877,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FlabebeRedFlower[] = INCBIN_COMP("graphics/pokemon/flabebe/overworld.4bpp"); + const u32 gObjectEventPic_FlabebeYellowFlower[] = INCBIN_COMP("graphics/pokemon/flabebe/yellow_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlabebeOrangeFlower[] = INCBIN_COMP("graphics/pokemon/flabebe/orange_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlabebeBlueFlower[] = INCBIN_COMP("graphics/pokemon/flabebe/blue_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlabebeWhiteFlower[] = INCBIN_COMP("graphics/pokemon/flabebe/white_flower/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); #if P_FOOTPRINTS @@ -8870,6 +14929,29 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FloetteRedFlower[] = INCBIN_COMP("graphics/pokemon/floette/overworld.4bpp"); + const u32 gObjectEventPic_FloetteYellowFlower[] = INCBIN_COMP("graphics/pokemon/floette/yellow_flower/overworld.4bpp"); + const u32 gObjectEventPic_FloetteOrangeFlower[] = INCBIN_COMP("graphics/pokemon/floette/orange_flower/overworld.4bpp"); + const u32 gObjectEventPic_FloetteBlueFlower[] = INCBIN_COMP("graphics/pokemon/floette/blue_flower/overworld.4bpp"); + const u32 gObjectEventPic_FloetteWhiteFlower[] = INCBIN_COMP("graphics/pokemon/floette/white_flower/overworld.4bpp"); + const u32 gObjectEventPic_FloetteEternalFlower[] = INCBIN_COMP("graphics/pokemon/floette/eternal_flower/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); #if P_FOOTPRINTS @@ -8895,6 +14977,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FlorgesRedFlower[] = INCBIN_COMP("graphics/pokemon/florges/overworld.4bpp"); + const u32 gObjectEventPic_FlorgesYellowFlower[] = INCBIN_COMP("graphics/pokemon/florges/yellow_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlorgesOrangeFlower[] = INCBIN_COMP("graphics/pokemon/florges/orange_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlorgesBlueFlower[] = INCBIN_COMP("graphics/pokemon/florges/blue_flower/overworld.4bpp"); + const u32 gObjectEventPic_FlorgesWhiteFlower[] = INCBIN_COMP("graphics/pokemon/florges/white_flower/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLABEBE #if P_FAMILY_SKIDDO @@ -8906,6 +15008,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skiddo[] = INCBIN_COMP("graphics/pokemon/skiddo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8915,6 +15024,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gogoat[] = INCBIN_COMP("graphics/pokemon/gogoat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKIDDO #if P_FAMILY_PANCHAM @@ -8926,6 +15042,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pancham[] = INCBIN_COMP("graphics/pokemon/pancham/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -8935,6 +15058,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pangoro[] = INCBIN_COMP("graphics/pokemon/pangoro/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PANCHAM #if P_FAMILY_FURFROU @@ -9000,6 +15130,41 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_FurfrouNatural[] = INCBIN_COMP("graphics/pokemon/furfrou/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouHeartTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/heart_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouStarTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/star_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouDiamondTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/diamond_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouDebutanteTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/debutante_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouMatronTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/matron_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouDandyTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/dandy_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouLaReineTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/la_reine_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouKabukiTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/kabuki_trim/overworld.4bpp"); + const u32 gObjectEventPic_FurfrouPharaohTrim[] = INCBIN_COMP("graphics/pokemon/furfrou/pharaoh_trim/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/overworld_normal.gbapal.lz"); + const u32 gOverworldPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/overworld_shiny.gbapal.lz"); + const u32 gShinyOverworldPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FURFROU #if P_FAMILY_ESPURR @@ -9011,6 +15176,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Espurr[] = INCBIN_COMP("graphics/pokemon/espurr/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9020,12 +15192,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeowsticMale[] = INCBIN_COMP("graphics/pokemon/meowstic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MeowsticFemale[] = INCBIN_COMP("graphics/pokemon/meowstic/female/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ESPURR #if P_FAMILY_HONEDGE @@ -9037,6 +15223,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Honedge[] = INCBIN_COMP("graphics/pokemon/honedge/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9046,6 +15239,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Doublade[] = INCBIN_COMP("graphics/pokemon/doublade/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9055,12 +15255,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AegislashShield[] = INCBIN_COMP("graphics/pokemon/aegislash/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AegislashBlade[] = INCBIN_COMP("graphics/pokemon/aegislash/blade/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HONEDGE #if P_FAMILY_SPRITZEE @@ -9072,6 +15286,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spritzee[] = INCBIN_COMP("graphics/pokemon/spritzee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9081,6 +15302,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aromatisse[] = INCBIN_COMP("graphics/pokemon/aromatisse/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPRITZEE #if P_FAMILY_SWIRLIX @@ -9092,6 +15320,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Swirlix[] = INCBIN_COMP("graphics/pokemon/swirlix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9101,6 +15336,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Slurpuff[] = INCBIN_COMP("graphics/pokemon/slurpuff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SWIRLIX #if P_FAMILY_INKAY @@ -9112,6 +15354,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Inkay[] = INCBIN_COMP("graphics/pokemon/inkay/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9121,6 +15370,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Malamar[] = INCBIN_COMP("graphics/pokemon/malamar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_INKAY #if P_FAMILY_BINACLE @@ -9132,6 +15388,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Binacle[] = INCBIN_COMP("graphics/pokemon/binacle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9141,6 +15404,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Barbaracle[] = INCBIN_COMP("graphics/pokemon/barbaracle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BINACLE #if P_FAMILY_SKRELP @@ -9152,6 +15422,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skrelp[] = INCBIN_COMP("graphics/pokemon/skrelp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9161,6 +15438,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dragalge[] = INCBIN_COMP("graphics/pokemon/dragalge/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKRELP #if P_FAMILY_CLAUNCHER @@ -9172,6 +15456,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clauncher[] = INCBIN_COMP("graphics/pokemon/clauncher/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9181,6 +15472,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clawitzer[] = INCBIN_COMP("graphics/pokemon/clawitzer/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLAUNCHER #if P_FAMILY_HELIOPTILE @@ -9192,6 +15490,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Helioptile[] = INCBIN_COMP("graphics/pokemon/helioptile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9201,6 +15506,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Heliolisk[] = INCBIN_COMP("graphics/pokemon/heliolisk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HELIOPTILE #if P_FAMILY_TYRUNT @@ -9212,6 +15524,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tyrunt[] = INCBIN_COMP("graphics/pokemon/tyrunt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9221,6 +15540,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tyrantrum[] = INCBIN_COMP("graphics/pokemon/tyrantrum/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TYRUNT #if P_FAMILY_AMAURA @@ -9232,6 +15558,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Amaura[] = INCBIN_COMP("graphics/pokemon/amaura/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9241,6 +15574,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Aurorus[] = INCBIN_COMP("graphics/pokemon/aurorus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_AMAURA #if P_FAMILY_HAWLUCHA @@ -9252,6 +15592,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hawlucha[] = INCBIN_COMP("graphics/pokemon/hawlucha/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HAWLUCHA #if P_FAMILY_DEDENNE @@ -9263,6 +15610,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dedenne[] = INCBIN_COMP("graphics/pokemon/dedenne/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEDENNE #if P_FAMILY_CARBINK @@ -9274,6 +15628,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Carbink[] = INCBIN_COMP("graphics/pokemon/carbink/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CARBINK #if P_FAMILY_GOOMY @@ -9285,6 +15646,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Goomy[] = INCBIN_COMP("graphics/pokemon/goomy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9294,6 +15662,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sliggoo[] = INCBIN_COMP("graphics/pokemon/sliggoo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/front.4bpp.lz"); @@ -9301,6 +15676,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_SliggooHisuian[] = INCBIN_COMP("graphics/pokemon/sliggoo/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS const u32 gMonFrontPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/anim_front.4bpp.lz"); @@ -9311,6 +15693,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Goodra[] = INCBIN_COMP("graphics/pokemon/goodra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/front.4bpp.lz"); @@ -9318,6 +15707,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GoodraHisuian[] = INCBIN_COMP("graphics/pokemon/goodra/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_GOOMY @@ -9330,6 +15726,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Klefki[] = INCBIN_COMP("graphics/pokemon/klefki/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLEFKI #if P_FAMILY_PHANTUMP @@ -9341,6 +15744,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Phantump[] = INCBIN_COMP("graphics/pokemon/phantump/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9350,6 +15760,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Trevenant[] = INCBIN_COMP("graphics/pokemon/trevenant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PHANTUMP #if P_FAMILY_PUMPKABOO @@ -9372,6 +15789,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_PumpkabooAverage[] = INCBIN_COMP("graphics/pokemon/pumpkaboo/overworld.4bpp"); + // const u32 gObjectEventPic_PumpkabooSmall[] = INCBIN_COMP("graphics/pokemon/pumpkaboo/small/overworld.4bpp"); + // const u32 gObjectEventPic_PumpkabooLarge[] = INCBIN_COMP("graphics/pokemon/pumpkaboo/large/overworld.4bpp"); + // const u32 gObjectEventPic_PumpkabooSuper[] = INCBIN_COMP("graphics/pokemon/pumpkaboo/super/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); @@ -9390,6 +15819,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_GourgeistAverage[] = INCBIN_COMP("graphics/pokemon/gourgeist/overworld.4bpp"); + // const u32 gObjectEventPic_GourgeistSmall[] = INCBIN_COMP("graphics/pokemon/gourgeist/small/overworld.4bpp"); + // const u32 gObjectEventPic_GourgeistLarge[] = INCBIN_COMP("graphics/pokemon/gourgeist/large/overworld.4bpp"); + // const u32 gObjectEventPic_GourgeistSuper[] = INCBIN_COMP("graphics/pokemon/gourgeist/super/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PUMPKABOO #if P_FAMILY_BERGMITE @@ -9401,6 +15842,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bergmite[] = INCBIN_COMP("graphics/pokemon/bergmite/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9410,6 +15858,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Avalugg[] = INCBIN_COMP("graphics/pokemon/avalugg/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); @@ -9417,6 +15872,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AvaluggHisuian[] = INCBIN_COMP("graphics/pokemon/avalugg/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_BERGMITE @@ -9429,6 +15891,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Noibat[] = INCBIN_COMP("graphics/pokemon/noibat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9438,6 +15907,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Noivern[] = INCBIN_COMP("graphics/pokemon/noivern/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NOIBAT #if P_FAMILY_XERNEAS @@ -9449,12 +15925,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_XerneasNeutral[] = INCBIN_COMP("graphics/pokemon/xerneas/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_XerneasActive[] = INCBIN_COMP("graphics/pokemon/xerneas/active/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_XERNEAS #if P_FAMILY_YVELTAL @@ -9466,6 +15956,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yveltal[] = INCBIN_COMP("graphics/pokemon/yveltal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE @@ -9478,17 +15975,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u8 gMonFootprint_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zygarde50[] = INCBIN_COMP("graphics/pokemon/zygarde/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_Zygarde10[] = INCBIN_COMP("graphics/pokemon/zygarde/10_percent/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + //const u32 gOverworldPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/overworld_normal.gbapal.lz"); + //const u32 gShinyOverworldPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_ZygardeComplete[] = INCBIN_COMP("graphics/pokemon/zygarde/complete/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + //const u32 gOverworldPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/overworld_normal.gbapal.lz"); + //const u32 gShinyOverworldPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZYGARDE #if P_FAMILY_DIANCIE @@ -9500,6 +16019,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Diancie[] = INCBIN_COMP("graphics/pokemon/diancie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/front.4bpp.lz"); @@ -9507,6 +16033,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_DiancieMega[] = INCBIN_COMP("graphics/pokemon/diancie/mega/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_MEGA_EVOLUTIONS #endif //P_FAMILY_DIANCIE @@ -9519,12 +16052,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HoopaConfined[] = INCBIN_COMP("graphics/pokemon/hoopa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HoopaUnbound[] = INCBIN_COMP("graphics/pokemon/hoopa/unbound/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_HOOPA #if P_FAMILY_VOLCANION @@ -9536,6 +16083,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Volcanion[] = INCBIN_COMP("graphics/pokemon/volcanion/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VOLCANION #if P_FAMILY_ROWLET @@ -9547,6 +16101,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rowlet[] = INCBIN_COMP("graphics/pokemon/rowlet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9556,6 +16117,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dartrix[] = INCBIN_COMP("graphics/pokemon/dartrix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9565,6 +16133,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Decidueye[] = INCBIN_COMP("graphics/pokemon/decidueye/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); @@ -9572,6 +16147,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_DecidueyeHisuian[] = INCBIN_COMP("graphics/pokemon/decidueye/hisuian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_ROWLET @@ -9584,6 +16166,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Litten[] = INCBIN_U8("graphics/pokemon/litten/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Litten[] = INCBIN_COMP("graphics/pokemon/litten/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/front.4bpp.lz"); const u32 gMonPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/normal.gbapal.lz"); @@ -9593,6 +16182,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Torracat[] = INCBIN_COMP("graphics/pokemon/torracat/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/front.4bpp.lz"); const u32 gMonPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/normal.gbapal.lz"); @@ -9602,6 +16198,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Incineroar[] = INCBIN_COMP("graphics/pokemon/incineroar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LITTEN #if P_FAMILY_POPPLIO @@ -9613,6 +16216,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Popplio[] = INCBIN_COMP("graphics/pokemon/popplio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/front.4bpp.lz"); const u32 gMonPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/normal.gbapal.lz"); @@ -9622,6 +16232,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Brionne[] = INCBIN_COMP("graphics/pokemon/brionne/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/front.4bpp.lz"); const u32 gMonPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/normal.gbapal.lz"); @@ -9631,6 +16248,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Primarina[] = INCBIN_COMP("graphics/pokemon/primarina/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POPPLIO #if P_FAMILY_PIKIPEK @@ -9642,6 +16266,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pikipek[] = INCBIN_COMP("graphics/pokemon/pikipek/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9651,6 +16282,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Trumbeak[] = INCBIN_COMP("graphics/pokemon/trumbeak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9660,6 +16298,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Toucannon[] = INCBIN_COMP("graphics/pokemon/toucannon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PIKIPEK #if P_FAMILY_YUNGOOS @@ -9671,6 +16316,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yungoos[] = INCBIN_COMP("graphics/pokemon/yungoos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/front.4bpp.lz"); const u32 gMonPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/normal.gbapal.lz"); @@ -9680,6 +16332,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gumshoos[] = INCBIN_COMP("graphics/pokemon/gumshoos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YUNGOOS #if P_FAMILY_GRUBBIN @@ -9691,6 +16350,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grubbin[] = INCBIN_COMP("graphics/pokemon/grubbin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9700,6 +16366,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Charjabug[] = INCBIN_COMP("graphics/pokemon/charjabug/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9709,6 +16382,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Vikavolt[] = INCBIN_COMP("graphics/pokemon/vikavolt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GRUBBIN #if P_FAMILY_CRABRAWLER @@ -9720,6 +16400,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Crabrawler[] = INCBIN_COMP("graphics/pokemon/crabrawler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); @@ -9729,6 +16416,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Crabominable[] = INCBIN_COMP("graphics/pokemon/crabominable/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRABRAWLER #if P_FAMILY_ORICORIO @@ -9740,24 +16434,52 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_OricorioBaile[] = INCBIN_COMP("graphics/pokemon/oricorio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OricorioPomPom[] = INCBIN_COMP("graphics/pokemon/oricorio/pom_pom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OricorioPau[] = INCBIN_COMP("graphics/pokemon/oricorio/pau/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OricorioSensu[] = INCBIN_COMP("graphics/pokemon/oricorio/sensu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORICORIO #if P_FAMILY_CUTIEFLY @@ -9769,6 +16491,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cutiefly[] = INCBIN_COMP("graphics/pokemon/cutiefly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9778,6 +16507,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Ribombee[] = INCBIN_COMP("graphics/pokemon/ribombee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CUTIEFLY #if P_FAMILY_ROCKRUFF @@ -9789,6 +16525,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rockruff[] = INCBIN_COMP("graphics/pokemon/rockruff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9798,18 +16541,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LycanrocMidday[] = INCBIN_COMP("graphics/pokemon/lycanroc/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LycanrocMidnight[] = INCBIN_COMP("graphics/pokemon/lycanroc/midnight/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_LycanrocDusk[] = INCBIN_COMP("graphics/pokemon/lycanroc/dusk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROCKRUFF #if P_FAMILY_WISHIWASHI @@ -9821,12 +16585,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_WishiwashiSolo[] = INCBIN_COMP("graphics/pokemon/wishiwashi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_WishiwashiSchool[] = INCBIN_COMP("graphics/pokemon/wishiwashi/school/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WISHIWASHI #if P_FAMILY_MAREANIE @@ -9838,6 +16616,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mareanie[] = INCBIN_COMP("graphics/pokemon/mareanie/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); @@ -9847,6 +16632,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Toxapex[] = INCBIN_COMP("graphics/pokemon/toxapex/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAREANIE #if P_FAMILY_MUDBRAY @@ -9858,6 +16650,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mudbray[] = INCBIN_COMP("graphics/pokemon/mudbray/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/front.4bpp.lz"); const u32 gMonPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/normal.gbapal.lz"); @@ -9867,6 +16666,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Mudsdale[] = INCBIN_COMP("graphics/pokemon/mudsdale/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUDBRAY #if P_FAMILY_DEWPIDER @@ -9878,6 +16684,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dewpider[] = INCBIN_COMP("graphics/pokemon/dewpider/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9887,6 +16700,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Araquanid[] = INCBIN_COMP("graphics/pokemon/araquanid/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DEWPIDER #if P_FAMILY_FOMANTIS @@ -9898,6 +16718,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Fomantis[] = INCBIN_COMP("graphics/pokemon/fomantis/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/front.4bpp.lz"); const u32 gMonPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/normal.gbapal.lz"); @@ -9907,6 +16734,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lurantis[] = INCBIN_COMP("graphics/pokemon/lurantis/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FOMANTIS #if P_FAMILY_MORELULL @@ -9918,6 +16752,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Morelull[] = INCBIN_COMP("graphics/pokemon/morelull/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/front.4bpp.lz"); const u32 gMonPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/normal.gbapal.lz"); @@ -9927,6 +16768,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Shiinotic[] = INCBIN_COMP("graphics/pokemon/shiinotic/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MORELULL #if P_FAMILY_SALANDIT @@ -9938,6 +16786,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Salandit[] = INCBIN_COMP("graphics/pokemon/salandit/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9947,6 +16802,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Salazzle[] = INCBIN_COMP("graphics/pokemon/salazzle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SALANDIT #if P_FAMILY_STUFFUL @@ -9958,6 +16820,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stufful[] = INCBIN_COMP("graphics/pokemon/stufful/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -9967,6 +16836,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bewear[] = INCBIN_COMP("graphics/pokemon/bewear/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STUFFUL #if P_FAMILY_BOUNSWEET @@ -9978,6 +16854,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bounsweet[] = INCBIN_COMP("graphics/pokemon/bounsweet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/front.4bpp.lz"); const u32 gMonPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/normal.gbapal.lz"); @@ -9987,6 +16870,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Steenee[] = INCBIN_COMP("graphics/pokemon/steenee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/front.4bpp.lz"); const u32 gMonPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/normal.gbapal.lz"); @@ -9996,6 +16886,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Tsareena[] = INCBIN_COMP("graphics/pokemon/tsareena/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOUNSWEET #if P_FAMILY_COMFEY @@ -10007,6 +16904,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Comfey[] = INCBIN_COMP("graphics/pokemon/comfey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COMFEY #if P_FAMILY_ORANGURU @@ -10018,6 +16922,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Oranguru[] = INCBIN_COMP("graphics/pokemon/oranguru/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORANGURU #if P_FAMILY_PASSIMIAN @@ -10029,6 +16940,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Passimian[] = INCBIN_COMP("graphics/pokemon/passimian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PASSIMIAN #if P_FAMILY_WIMPOD @@ -10040,6 +16958,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wimpod[] = INCBIN_COMP("graphics/pokemon/wimpod/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10049,6 +16974,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Golisopod[] = INCBIN_COMP("graphics/pokemon/golisopod/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WIMPOD #if P_FAMILY_SANDYGAST @@ -10060,6 +16992,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sandygast[] = INCBIN_COMP("graphics/pokemon/sandygast/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/front.4bpp.lz"); const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); @@ -10069,6 +17008,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Palossand[] = INCBIN_COMP("graphics/pokemon/palossand/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDYGAST #if P_FAMILY_PYUKUMUKU @@ -10080,6 +17026,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pyukumuku[] = INCBIN_COMP("graphics/pokemon/pyukumuku/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PYUKUMUKU #if P_FAMILY_TYPE_NULL @@ -10091,6 +17044,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Type_Null[] = INCBIN_U8("graphics/pokemon/type_null/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TypeNull[] = INCBIN_COMP("graphics/pokemon/type_null/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); @@ -10098,6 +17058,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Silvally[] = INCBIN_COMP("graphics/pokemon/silvally/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); const u32 gMonShinyPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); @@ -10188,6 +17155,14 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MiniorMeteor[] = INCBIN_COMP("graphics/pokemon/minior/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MINIOR #if P_FAMILY_KOMALA @@ -10199,6 +17174,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Komala[] = INCBIN_U8("graphics/pokemon/komala/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Komala[] = INCBIN_COMP("graphics/pokemon/komala/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KOMALA #if P_FAMILY_TURTONATOR @@ -10210,6 +17192,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Turtonator[] = INCBIN_COMP("graphics/pokemon/turtonator/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TURTONATOR #if P_FAMILY_TOGEDEMARU @@ -10221,6 +17210,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Togedemaru[] = INCBIN_COMP("graphics/pokemon/togedemaru/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOGEDEMARU #if P_FAMILY_MIMIKYU @@ -10232,12 +17228,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MimikyuDisguised[] = INCBIN_COMP("graphics/pokemon/mimikyu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MimikyuBusted[] = INCBIN_COMP("graphics/pokemon/mimikyu/busted/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIMIKYU #if P_FAMILY_BRUXISH @@ -10249,6 +17259,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Bruxish[] = INCBIN_COMP("graphics/pokemon/bruxish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRUXISH #if P_FAMILY_DRAMPA @@ -10260,6 +17277,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drampa[] = INCBIN_COMP("graphics/pokemon/drampa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRAMPA #if P_FAMILY_DHELMISE @@ -10271,6 +17295,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dhelmise[] = INCBIN_COMP("graphics/pokemon/dhelmise/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DHELMISE #if P_FAMILY_JANGMO_O @@ -10282,6 +17313,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_JangmoO[] = INCBIN_COMP("graphics/pokemon/jangmo_o/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10291,6 +17329,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_HakamoO[] = INCBIN_COMP("graphics/pokemon/hakamo_o/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10300,6 +17345,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_KommoO[] = INCBIN_COMP("graphics/pokemon/kommo_o/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_JANGMO_O #if P_FAMILY_TAPU_KOKO @@ -10309,8 +17361,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); #if P_FOOTPRINTS - const u8 gMonFootprint_Tapu_Koko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); + const u8 gMonFootprint_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TapuKoko[] = INCBIN_COMP("graphics/pokemon/tapu_koko/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_KOKO #if P_FAMILY_TAPU_LELE @@ -10320,8 +17379,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); #if P_FOOTPRINTS - const u8 gMonFootprint_Tapu_Lele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); + const u8 gMonFootprint_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TapuLele[] = INCBIN_COMP("graphics/pokemon/tapu_lele/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_LELE #if P_FAMILY_TAPU_BULU @@ -10331,8 +17397,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); #if P_FOOTPRINTS - const u8 gMonFootprint_Tapu_Bulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); + const u8 gMonFootprint_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TapuBulu[] = INCBIN_COMP("graphics/pokemon/tapu_bulu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_BULU #if P_FAMILY_TAPU_FINI @@ -10342,8 +17415,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); #if P_FOOTPRINTS - const u8 gMonFootprint_Tapu_Fini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); + const u8 gMonFootprint_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_TapuFini[] = INCBIN_COMP("graphics/pokemon/tapu_fini/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAPU_FINI #if P_FAMILY_COSMOG @@ -10355,6 +17435,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cosmog[] = INCBIN_COMP("graphics/pokemon/cosmog/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/front.4bpp.lz"); const u32 gMonPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/normal.gbapal.lz"); @@ -10364,6 +17451,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cosmoem[] = INCBIN_COMP("graphics/pokemon/cosmoem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/front.4bpp.lz"); const u32 gMonPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/normal.gbapal.lz"); @@ -10373,6 +17467,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Solgaleo[] = INCBIN_COMP("graphics/pokemon/solgaleo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/front.4bpp.lz"); const u32 gMonPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/normal.gbapal.lz"); @@ -10382,6 +17483,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Lunala[] = INCBIN_COMP("graphics/pokemon/lunala/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_COSMOG #if P_FAMILY_NIHILEGO @@ -10393,6 +17501,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nihilego[] = INCBIN_COMP("graphics/pokemon/nihilego/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NIHILEGO #if P_FAMILY_BUZZWOLE @@ -10404,6 +17519,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Buzzwole[] = INCBIN_COMP("graphics/pokemon/buzzwole/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BUZZWOLE #if P_FAMILY_PHEROMOSA @@ -10415,6 +17537,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pheromosa[] = INCBIN_COMP("graphics/pokemon/pheromosa/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PHEROMOSA #if P_FAMILY_XURKITREE @@ -10426,6 +17555,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Xurkitree[] = INCBIN_COMP("graphics/pokemon/xurkitree/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_XURKITREE #if P_FAMILY_CELESTEELA @@ -10437,6 +17573,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Celesteela[] = INCBIN_COMP("graphics/pokemon/celesteela/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CELESTEELA #if P_FAMILY_KARTANA @@ -10448,6 +17591,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kartana[] = INCBIN_COMP("graphics/pokemon/kartana/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KARTANA #if P_FAMILY_GUZZLORD @@ -10459,6 +17609,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Guzzlord[] = INCBIN_COMP("graphics/pokemon/guzzlord/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GUZZLORD #if P_FAMILY_NECROZMA @@ -10470,6 +17627,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Necrozma[] = INCBIN_COMP("graphics/pokemon/necrozma/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_FUSION_FORMS const u32 gMonFrontPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/front.4bpp.lz"); @@ -10477,12 +17641,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NecrozmaDuskMane[] = INCBIN_COMP("graphics/pokemon/necrozma/dusk_mane/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_NecrozmaDawnWings[] = INCBIN_COMP("graphics/pokemon/necrozma/dawn_wings/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_ULTRA_BURST_FORMS const u32 gMonFrontPic_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/front.4bpp.lz"); @@ -10490,6 +17668,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_NecrozmaUltra[] = INCBIN_COMP("graphics/pokemon/necrozma/ultra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_ULTRA_BURST_FORMS #endif //P_FUSION_FORMS #endif //P_FAMILY_NECROZMA @@ -10503,12 +17688,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Magearna[] = INCBIN_COMP("graphics/pokemon/magearna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MagearnaOriginalColor[] = INCBIN_COMP("graphics/pokemon/magearna/original_color/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MAGEARNA #if P_FAMILY_MARSHADOW @@ -10520,6 +17719,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Marshadow[] = INCBIN_COMP("graphics/pokemon/marshadow/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MARSHADOW #if P_FAMILY_POIPOLE @@ -10531,6 +17737,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Poipole[] = INCBIN_COMP("graphics/pokemon/poipole/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/front.4bpp.lz"); const u32 gMonPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/normal.gbapal.lz"); @@ -10540,6 +17753,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Naganadel[] = INCBIN_COMP("graphics/pokemon/naganadel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POIPOLE #if P_FAMILY_STAKATAKA @@ -10551,6 +17771,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stakataka[] = INCBIN_COMP("graphics/pokemon/stakataka/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STAKATAKA #if P_FAMILY_BLACEPHALON @@ -10562,6 +17789,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blacephalon[] = INCBIN_COMP("graphics/pokemon/blacephalon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BLACEPHALON #if P_FAMILY_ZERAORA @@ -10573,6 +17807,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zeraora[] = INCBIN_COMP("graphics/pokemon/zeraora/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZERAORA #if P_FAMILY_MELTAN @@ -10584,6 +17825,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Meltan[] = INCBIN_COMP("graphics/pokemon/meltan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/front.4bpp.lz"); const u32 gMonPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/normal.gbapal.lz"); @@ -10593,6 +17841,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Melmetal[] = INCBIN_COMP("graphics/pokemon/melmetal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/front.4bpp.lz"); @@ -10600,6 +17855,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MelmetalGigantamax[] = INCBIN_COMP("graphics/pokemon/melmetal/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MELTAN @@ -10612,6 +17874,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grookey[] = INCBIN_COMP("graphics/pokemon/grookey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/front.4bpp.lz"); const u32 gMonPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/normal.gbapal.lz"); @@ -10621,6 +17890,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Thwackey[] = INCBIN_COMP("graphics/pokemon/thwackey/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/front.4bpp.lz"); const u32 gMonPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/normal.gbapal.lz"); @@ -10630,6 +17906,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rillaboom[] = INCBIN_COMP("graphics/pokemon/rillaboom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/front.4bpp.lz"); @@ -10637,6 +17920,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_RillaboomGigantamax[] = INCBIN_COMP("graphics/pokemon/rillaboom/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_GROOKEY @@ -10649,6 +17939,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Scorbunny[] = INCBIN_COMP("graphics/pokemon/scorbunny/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/front.4bpp.lz"); const u32 gMonPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/normal.gbapal.lz"); @@ -10658,6 +17955,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Raboot[] = INCBIN_COMP("graphics/pokemon/raboot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/front.4bpp.lz"); const u32 gMonPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/normal.gbapal.lz"); @@ -10667,6 +17971,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cinderace[] = INCBIN_COMP("graphics/pokemon/cinderace/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/front.4bpp.lz"); @@ -10674,6 +17985,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CinderaceGigantamax[] = INCBIN_COMP("graphics/pokemon/cinderace/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SCORBUNNY @@ -10686,6 +18004,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sobble[] = INCBIN_COMP("graphics/pokemon/sobble/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/front.4bpp.lz"); const u32 gMonPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/normal.gbapal.lz"); @@ -10695,6 +18020,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drizzile[] = INCBIN_COMP("graphics/pokemon/drizzile/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/front.4bpp.lz"); const u32 gMonPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/normal.gbapal.lz"); @@ -10704,6 +18036,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Inteleon[] = INCBIN_COMP("graphics/pokemon/inteleon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/front.4bpp.lz"); @@ -10711,6 +18050,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_InteleonGigantamax[] = INCBIN_COMP("graphics/pokemon/inteleon/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SOBBLE @@ -10723,6 +18069,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Skwovet[] = INCBIN_COMP("graphics/pokemon/skwovet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/front.4bpp.lz"); const u32 gMonPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/normal.gbapal.lz"); @@ -10732,6 +18085,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Greedent[] = INCBIN_COMP("graphics/pokemon/greedent/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SKWOVET #if P_FAMILY_ROOKIDEE @@ -10743,6 +18103,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rookidee[] = INCBIN_COMP("graphics/pokemon/rookidee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10752,6 +18119,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Corvisquire[] = INCBIN_COMP("graphics/pokemon/corvisquire/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10761,6 +18135,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Corviknight[] = INCBIN_COMP("graphics/pokemon/corviknight/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/front.4bpp.lz"); @@ -10768,6 +18149,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CorviknightGigantamax[] = INCBIN_COMP("graphics/pokemon/corviknight/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_ROOKIDEE @@ -10780,6 +18168,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Blipbug[] = INCBIN_COMP("graphics/pokemon/blipbug/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/front.4bpp.lz"); const u32 gMonPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/normal.gbapal.lz"); @@ -10789,6 +18184,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dottler[] = INCBIN_COMP("graphics/pokemon/dottler/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/front.4bpp.lz"); const u32 gMonPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/normal.gbapal.lz"); @@ -10798,6 +18200,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Orbeetle[] = INCBIN_COMP("graphics/pokemon/orbeetle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/front.4bpp.lz"); @@ -10805,6 +18214,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OrbeetleGigantamax[] = INCBIN_COMP("graphics/pokemon/orbeetle/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_BLIPBUG @@ -10817,6 +18233,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Nickit[] = INCBIN_COMP("graphics/pokemon/nickit/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/front.4bpp.lz"); const u32 gMonPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/normal.gbapal.lz"); @@ -10826,6 +18249,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Thievul[] = INCBIN_COMP("graphics/pokemon/thievul/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NICKIT #if P_FAMILY_GOSSIFLEUR @@ -10837,6 +18267,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Gossifleur[] = INCBIN_COMP("graphics/pokemon/gossifleur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/front.4bpp.lz"); const u32 gMonPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/normal.gbapal.lz"); @@ -10846,6 +18283,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Eldegoss[] = INCBIN_COMP("graphics/pokemon/eldegoss/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOSSIFLEUR #if P_FAMILY_WOOLOO @@ -10857,6 +18301,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Wooloo[] = INCBIN_COMP("graphics/pokemon/wooloo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/front.4bpp.lz"); const u32 gMonPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/normal.gbapal.lz"); @@ -10866,6 +18317,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dubwool[] = INCBIN_COMP("graphics/pokemon/dubwool/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WOOLOO #if P_FAMILY_CHEWTLE @@ -10877,6 +18335,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Chewtle[] = INCBIN_COMP("graphics/pokemon/chewtle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10886,6 +18351,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drednaw[] = INCBIN_COMP("graphics/pokemon/drednaw/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/front.4bpp.lz"); @@ -10893,6 +18365,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_DrednawGigantamax[] = INCBIN_COMP("graphics/pokemon/drednaw/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CHEWTLE @@ -10905,6 +18384,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Yamper[] = INCBIN_COMP("graphics/pokemon/yamper/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/front.4bpp.lz"); const u32 gMonPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/normal.gbapal.lz"); @@ -10914,6 +18400,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Boltund[] = INCBIN_COMP("graphics/pokemon/boltund/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_YAMPER #if P_FAMILY_ROLYCOLY @@ -10925,6 +18418,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Rolycoly[] = INCBIN_COMP("graphics/pokemon/rolycoly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10934,6 +18434,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Carkol[] = INCBIN_COMP("graphics/pokemon/carkol/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10943,6 +18450,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Coalossal[] = INCBIN_COMP("graphics/pokemon/coalossal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/front.4bpp.lz"); @@ -10950,6 +18464,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CoalossalGigantamax[] = INCBIN_COMP("graphics/pokemon/coalossal/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_ROLYCOLY @@ -10962,6 +18483,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Applin[] = INCBIN_U8("graphics/pokemon/applin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Applin[] = INCBIN_COMP("graphics/pokemon/applin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -10971,6 +18499,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Flapple[] = INCBIN_COMP("graphics/pokemon/flapple/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/front.4bpp.lz"); @@ -10978,6 +18513,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_FlappleGigantamax[] = INCBIN_COMP("graphics/pokemon/flapple/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS const u32 gMonFrontPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/anim_front.4bpp.lz"); @@ -10988,6 +18530,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Appletun[] = INCBIN_COMP("graphics/pokemon/appletun/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/front.4bpp.lz"); @@ -10995,6 +18544,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AppletunGigantamax[] = INCBIN_COMP("graphics/pokemon/appletun/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #if P_GEN_9_CROSS_EVOS @@ -11006,6 +18562,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Dipplin[] = INCBIN_COMP("graphics/pokemon/dipplin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/front.4bpp.lz"); const u32 gMonPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/normal.gbapal.lz"); @@ -11015,6 +18578,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Hydrapple[] = INCBIN_COMP("graphics/pokemon/hydrapple/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -11027,6 +18597,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Silicobra[] = INCBIN_COMP("graphics/pokemon/silicobra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/front.4bpp.lz"); const u32 gMonPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/normal.gbapal.lz"); @@ -11036,6 +18613,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sandaconda[] = INCBIN_COMP("graphics/pokemon/sandaconda/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/front.4bpp.lz"); @@ -11043,6 +18627,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SandacondaGigantamax[] = INCBIN_COMP("graphics/pokemon/sandaconda/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SILICOBRA @@ -11055,18 +18646,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cramorant[] = INCBIN_COMP("graphics/pokemon/cramorant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CramorantGulping[] = INCBIN_COMP("graphics/pokemon/cramorant/gulping/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CramorantGorging[] = INCBIN_COMP("graphics/pokemon/cramorant/gorging/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CRAMORANT #if P_FAMILY_ARROKUDA @@ -11078,6 +18690,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Arrokuda[] = INCBIN_COMP("graphics/pokemon/arrokuda/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); @@ -11087,6 +18706,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Barraskewda[] = INCBIN_COMP("graphics/pokemon/barraskewda/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARROKUDA #if P_FAMILY_TOXEL @@ -11098,6 +18724,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Toxel[] = INCBIN_COMP("graphics/pokemon/toxel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); const u32 gMonPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); @@ -11107,12 +18740,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ToxtricityAmped[] = INCBIN_COMP("graphics/pokemon/toxtricity/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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 OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ToxtricityLowKey[] = INCBIN_COMP("graphics/pokemon/toxtricity/low_key/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/front.4bpp.lz"); @@ -11120,6 +18767,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ToxtricityGigantamax[] = INCBIN_COMP("graphics/pokemon/toxtricity/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_TOXEL @@ -11132,6 +18786,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sizzlipede[] = INCBIN_COMP("graphics/pokemon/sizzlipede/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -11141,6 +18802,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Centiskorch[] = INCBIN_COMP("graphics/pokemon/centiskorch/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/front.4bpp.lz"); @@ -11148,6 +18816,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CentiskorchGigantamax[] = INCBIN_COMP("graphics/pokemon/centiskorch/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_SIZZLIPEDE @@ -11160,6 +18835,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Clobbopus[] = INCBIN_COMP("graphics/pokemon/clobbopus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/front.4bpp.lz"); const u32 gMonPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/normal.gbapal.lz"); @@ -11169,6 +18851,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grapploct[] = INCBIN_COMP("graphics/pokemon/grapploct/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CLOBBOPUS #if P_FAMILY_SINISTEA @@ -11180,6 +18869,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Sinistea[] = INCBIN_COMP("graphics/pokemon/sinistea/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/front.4bpp.lz"); const u32 gMonPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/normal.gbapal.lz"); @@ -11189,6 +18885,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Polteageist[] = INCBIN_COMP("graphics/pokemon/polteageist/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SINISTEA #if P_FAMILY_HATENNA @@ -11200,6 +18903,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hatenna[] = INCBIN_COMP("graphics/pokemon/hatenna/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/front.4bpp.lz"); const u32 gMonPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/normal.gbapal.lz"); @@ -11209,6 +18919,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hattrem[] = INCBIN_COMP("graphics/pokemon/hattrem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/front.4bpp.lz"); const u32 gMonPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/normal.gbapal.lz"); @@ -11218,6 +18935,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Hatterene[] = INCBIN_COMP("graphics/pokemon/hatterene/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/front.4bpp.lz"); @@ -11225,6 +18949,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_HattereneGigantamax[] = INCBIN_COMP("graphics/pokemon/hatterene/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_HATENNA @@ -11237,6 +18968,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Impidimp[] = INCBIN_COMP("graphics/pokemon/impidimp/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/front.4bpp.lz"); const u32 gMonPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/normal.gbapal.lz"); @@ -11246,6 +18984,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Morgrem[] = INCBIN_COMP("graphics/pokemon/morgrem/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/front.4bpp.lz"); const u32 gMonPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/normal.gbapal.lz"); @@ -11255,6 +19000,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Grimmsnarl[] = INCBIN_COMP("graphics/pokemon/grimmsnarl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/front.4bpp.lz"); @@ -11262,6 +19014,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GrimmsnarlGigantamax[] = INCBIN_COMP("graphics/pokemon/grimmsnarl/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_IMPIDIMP @@ -11274,6 +19033,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Milcery[] = INCBIN_COMP("graphics/pokemon/milcery/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -11383,12 +19149,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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 OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_AlcremieStrawberry[] = INCBIN_COMP("graphics/pokemon/alcremie/strawberry/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS + #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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_AlcremieGigantamax[] = INCBIN_COMP("graphics/pokemon/alcremie/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_MILCERY @@ -11401,6 +19182,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Falinks[] = INCBIN_COMP("graphics/pokemon/falinks/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FALINKS #if P_FAMILY_PINCURCHIN @@ -11412,6 +19200,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Pincurchin[] = INCBIN_COMP("graphics/pokemon/pincurchin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PINCURCHIN #if P_FAMILY_SNOM @@ -11423,6 +19218,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Snom[] = INCBIN_COMP("graphics/pokemon/snom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); @@ -11432,6 +19234,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Frosmoth[] = INCBIN_COMP("graphics/pokemon/frosmoth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SNOM #if P_FAMILY_STONJOURNER @@ -11443,6 +19252,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Stonjourner[] = INCBIN_COMP("graphics/pokemon/stonjourner/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE @@ -11454,12 +19270,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_EiscueIceFace[] = INCBIN_COMP("graphics/pokemon/eiscue/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_EiscueNoiceFace[] = INCBIN_COMP("graphics/pokemon/eiscue/noice_face/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_EISCUE #if P_FAMILY_INDEEDEE @@ -11471,12 +19301,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_IndeedeeMale[] = INCBIN_COMP("graphics/pokemon/indeedee/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_IndeedeeFemale[] = INCBIN_COMP("graphics/pokemon/indeedee/female/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_INDEEDEE #if P_FAMILY_MORPEKO @@ -11488,12 +19332,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_MorpekoFullBelly[] = INCBIN_COMP("graphics/pokemon/morpeko/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MorpekoHangry[] = INCBIN_COMP("graphics/pokemon/morpeko/hangry/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MORPEKO #if P_FAMILY_CUFANT @@ -11505,6 +19363,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Cufant[] = INCBIN_COMP("graphics/pokemon/cufant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); @@ -11514,6 +19379,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Copperajah[] = INCBIN_COMP("graphics/pokemon/copperajah/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); @@ -11521,6 +19393,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_CopperajahGigantamax[] = INCBIN_COMP("graphics/pokemon/copperajah/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_CUFANT @@ -11533,6 +19412,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dracozolt[] = INCBIN_COMP("graphics/pokemon/dracozolt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRACOZOLT #if P_FAMILY_ARCTOZOLT @@ -11544,6 +19430,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Arctozolt[] = INCBIN_COMP("graphics/pokemon/arctozolt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCTOZOLT #if P_FAMILY_DRACOVISH @@ -11555,6 +19448,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dracovish[] = INCBIN_COMP("graphics/pokemon/dracovish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DRACOVISH #if P_FAMILY_ARCTOVISH @@ -11566,6 +19466,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Arctovish[] = INCBIN_COMP("graphics/pokemon/arctovish/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON @@ -11577,6 +19484,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Duraludon[] = INCBIN_COMP("graphics/pokemon/duraludon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); @@ -11584,6 +19498,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_DuraludonGigantamax[] = INCBIN_COMP("graphics/pokemon/duraludon/gigantamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GIGANTAMAX_FORMS #if P_GEN_9_CROSS_EVOS @@ -11595,6 +19516,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Archaludon[] = INCBIN_COMP("graphics/pokemon/archaludon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON @@ -11607,6 +19535,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dreepy[] = INCBIN_COMP("graphics/pokemon/dreepy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); @@ -11616,6 +19551,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Drakloak[] = INCBIN_COMP("graphics/pokemon/drakloak/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); @@ -11625,6 +19567,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Dragapult[] = INCBIN_COMP("graphics/pokemon/dragapult/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN @@ -11636,12 +19585,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZacianHeroOfManyBattles[] = INCBIN_COMP("graphics/pokemon/zacian/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZacianCrownedSword[] = INCBIN_COMP("graphics/pokemon/zacian/crowned_sword/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZACIAN #if P_FAMILY_ZAMAZENTA @@ -11653,12 +19616,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZamazentaHeroOfManyBattles[] = INCBIN_COMP("graphics/pokemon/zamazenta/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_ZamazentaCrownedShield[] = INCBIN_COMP("graphics/pokemon/zamazenta/crowned_shield/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZAMAZENTA #if P_FAMILY_ETERNATUS @@ -11670,12 +19647,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Eternatus[] = INCBIN_COMP("graphics/pokemon/eternatus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_EternatusEternamax[] = INCBIN_COMP("graphics/pokemon/eternatus/eternamax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ETERNATUS #if P_FAMILY_KUBFU @@ -11687,6 +19678,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Kubfu[] = INCBIN_COMP("graphics/pokemon/kubfu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); const u32 gMonPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); @@ -11696,12 +19694,20 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Urshifu[] = INCBIN_COMP("graphics/pokemon/urshifu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if P_GIGANTAMAX_FORMS 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"); @@ -11713,6 +19719,12 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_COMP("graphics/pokemon/urshifu/single_strike_style_gigantamax/overworld.4bpp"); + // const u32 gObjectEventPic_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_COMP("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS +#endif //P_GIGANTAMAX_FORMS #endif //P_FAMILY_KUBFU #if P_FAMILY_ZARUDE @@ -11724,12 +19736,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Zarude[] = INCBIN_COMP("graphics/pokemon/zarude/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + //const u32 gObjectEventPic_ZarudeDada[] = INCBIN_COMP("graphics/pokemon/zarude/dada/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ZARUDE #if P_FAMILY_REGIELEKI @@ -11741,6 +19767,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Regieleki[] = INCBIN_COMP("graphics/pokemon/regieleki/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIELEKI #if P_FAMILY_REGIDRAGO @@ -11752,6 +19785,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Regidrago[] = INCBIN_COMP("graphics/pokemon/regidrago/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_REGIDRAGO #if P_FAMILY_GLASTRIER @@ -11763,6 +19803,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Glastrier[] = INCBIN_COMP("graphics/pokemon/glastrier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLASTRIER #if P_FAMILY_SPECTRIER @@ -11774,6 +19821,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Spectrier[] = INCBIN_COMP("graphics/pokemon/spectrier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPECTRIER #if P_FAMILY_CALYREX @@ -11785,6 +19839,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_Calyrex[] = INCBIN_COMP("graphics/pokemon/calyrex/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #if P_FUSION_FORMS const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/front.4bpp.lz"); @@ -11792,6 +19853,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CalyrexIceRider[] = INCBIN_COMP("graphics/pokemon/calyrex/ice_rider/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS #if P_FUSION_FORMS @@ -11800,6 +19868,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); +#if OW_POKEMON_OBJECT_EVENTS + const u32 gObjectEventPic_CalyrexShadowRider[] = INCBIN_COMP("graphics/pokemon/calyrex/shadow_rider/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + const u32 gOverworldPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/overworld_normal.gbapal.lz"); + const u32 gShinyOverworldPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FUSION_FORMS #endif //P_FAMILY_CALYREX @@ -11812,6 +19887,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Sprigatito[] = INCBIN_COMP("graphics/pokemon/sprigatito/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/front.4bpp.lz"); const u32 gMonPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/normal.gbapal.lz"); @@ -11821,6 +19903,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Floragato[] = INCBIN_COMP("graphics/pokemon/floragato/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/front.4bpp.lz"); const u32 gMonPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/normal.gbapal.lz"); @@ -11830,6 +19919,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Meowscarada[] = INCBIN_COMP("graphics/pokemon/meowscarada/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SPRIGATITO #if P_FAMILY_FUECOCO @@ -11841,6 +19937,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Fuecoco[] = INCBIN_COMP("graphics/pokemon/fuecoco/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/front.4bpp.lz"); const u32 gMonPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/normal.gbapal.lz"); @@ -11850,6 +19953,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Crocalor[] = INCBIN_COMP("graphics/pokemon/crocalor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/front.4bpp.lz"); const u32 gMonPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/normal.gbapal.lz"); @@ -11859,6 +19969,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Skeledirge[] = INCBIN_COMP("graphics/pokemon/skeledirge/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FUECOCO #if P_FAMILY_QUAXLY @@ -11870,6 +19987,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Quaxly[] = INCBIN_COMP("graphics/pokemon/quaxly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/front.4bpp.lz"); const u32 gMonPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/normal.gbapal.lz"); @@ -11879,6 +20003,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Quaxwell[] = INCBIN_COMP("graphics/pokemon/quaxwell/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/front.4bpp.lz"); const u32 gMonPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/normal.gbapal.lz"); @@ -11888,6 +20019,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Quaquaval[] = INCBIN_COMP("graphics/pokemon/quaquaval/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK @@ -11899,6 +20037,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Lechonk[] = INCBIN_COMP("graphics/pokemon/lechonk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/front.4bpp.lz"); const u32 gMonPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/normal.gbapal.lz"); @@ -11908,12 +20053,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OinkologneMale[] = INCBIN_COMP("graphics/pokemon/oinkologne/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OinkologneFemale[] = INCBIN_COMP("graphics/pokemon/oinkologne/female/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_LECHONK #if P_FAMILY_TAROUNTULA @@ -11925,6 +20084,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tarountula[] = INCBIN_COMP("graphics/pokemon/tarountula/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/front.4bpp.lz"); const u32 gMonPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/normal.gbapal.lz"); @@ -11934,6 +20100,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Spidops[] = INCBIN_COMP("graphics/pokemon/spidops/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TAROUNTULA #if P_FAMILY_NYMBLE @@ -11945,6 +20118,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Nymble[] = INCBIN_COMP("graphics/pokemon/nymble/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/front.4bpp.lz"); const u32 gMonPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/normal.gbapal.lz"); @@ -11954,6 +20134,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Lokix[] = INCBIN_COMP("graphics/pokemon/lokix/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NYMBLE #if P_FAMILY_PAWMI @@ -11965,6 +20152,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Pawmi[] = INCBIN_COMP("graphics/pokemon/pawmi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/front.4bpp.lz"); const u32 gMonPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/normal.gbapal.lz"); @@ -11974,6 +20168,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Pawmo[] = INCBIN_COMP("graphics/pokemon/pawmo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/front.4bpp.lz"); const u32 gMonPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/normal.gbapal.lz"); @@ -11983,6 +20184,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Pawmot[] = INCBIN_COMP("graphics/pokemon/pawmot/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PAWMI #if P_FAMILY_TANDEMAUS @@ -11994,6 +20202,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tandemaus[] = INCBIN_COMP("graphics/pokemon/tandemaus/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/normal.gbapal.lz"); const u32 gMonShinyPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/shiny.gbapal.lz"); @@ -12004,6 +20219,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_MausholdFamilyOfThree[] = INCBIN_U8("graphics/pokemon/maushold/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MausholdFamilyOfThree[] = INCBIN_COMP("graphics/pokemon/maushold/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -12011,6 +20233,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_MausholdFamilyOfFour[] = INCBIN_U8("graphics/pokemon/maushold/four/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_MausholdFamilyOfFour[] = INCBIN_COMP("graphics/pokemon/maushold/four/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_FIDOUGH @@ -12022,6 +20251,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Fidough[] = INCBIN_COMP("graphics/pokemon/fidough/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/front.4bpp.lz"); const u32 gMonPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/normal.gbapal.lz"); @@ -12031,6 +20267,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Dachsbun[] = INCBIN_COMP("graphics/pokemon/dachsbun/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FIDOUGH #if P_FAMILY_SMOLIV @@ -12042,6 +20285,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Smoliv[] = INCBIN_COMP("graphics/pokemon/smoliv/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/front.4bpp.lz"); const u32 gMonPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/normal.gbapal.lz"); @@ -12051,6 +20301,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Dolliv[] = INCBIN_COMP("graphics/pokemon/dolliv/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/front.4bpp.lz"); const u32 gMonPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/normal.gbapal.lz"); @@ -12060,6 +20317,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Arboliva[] = INCBIN_COMP("graphics/pokemon/arboliva/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SMOLIV #if P_FAMILY_SQUAWKABILLY @@ -12072,18 +20336,46 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/normal.gbapal.lz"); const u32 gMonShinyPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/shiny.gbapal.lz"); const u8 gMonIcon_SquawkabillyGreenPlumage[] = INCBIN_U8("graphics/pokemon/squawkabilly/icon.4bpp"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SquawkabillyGreenPlumage[] = INCBIN_COMP("graphics/pokemon/squawkabilly/green_plumage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SquawkabillyBluePlumage[] = INCBIN_COMP("graphics/pokemon/squawkabilly/blue_plumage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SquawkabillyBluePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue_plumage/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SquawkabillyBluePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue_plumage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SquawkabillyYellowPlumage[] = INCBIN_COMP("graphics/pokemon/squawkabilly/yellow_plumage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SquawkabillyYellowPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow_plumage/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SquawkabillyYellowPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow_plumage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SquawkabillyWhitePlumage[] = INCBIN_COMP("graphics/pokemon/squawkabilly/white_plumage/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SquawkabillyWhitePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/white_plumage/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SquawkabillyWhitePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/white_plumage/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SQUAWKABILLY #if P_FAMILY_NACLI @@ -12095,6 +20387,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Nacli[] = INCBIN_COMP("graphics/pokemon/nacli/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/front.4bpp.lz"); const u32 gMonPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/normal.gbapal.lz"); @@ -12104,6 +20403,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Naclstack[] = INCBIN_COMP("graphics/pokemon/naclstack/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/front.4bpp.lz"); const u32 gMonPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/normal.gbapal.lz"); @@ -12113,6 +20419,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Garganacl[] = INCBIN_COMP("graphics/pokemon/garganacl/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_NACLI #if P_FAMILY_CHARCADET @@ -12124,6 +20437,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Charcadet[] = INCBIN_COMP("graphics/pokemon/charcadet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/front.4bpp.lz"); const u32 gMonPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/normal.gbapal.lz"); @@ -12133,6 +20453,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Armarouge[] = INCBIN_COMP("graphics/pokemon/armarouge/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/front.4bpp.lz"); const u32 gMonPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/normal.gbapal.lz"); @@ -12142,6 +20469,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Ceruledge[] = INCBIN_COMP("graphics/pokemon/ceruledge/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHARCADET #if P_FAMILY_TADBULB @@ -12153,6 +20487,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tadbulb[] = INCBIN_COMP("graphics/pokemon/tadbulb/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/front.4bpp.lz"); const u32 gMonPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/normal.gbapal.lz"); @@ -12162,6 +20503,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Bellibolt[] = INCBIN_COMP("graphics/pokemon/bellibolt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TADBULB #if P_FAMILY_WATTREL @@ -12173,6 +20521,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Wattrel[] = INCBIN_COMP("graphics/pokemon/wattrel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/front.4bpp.lz"); const u32 gMonPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/normal.gbapal.lz"); @@ -12182,6 +20537,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Kilowattrel[] = INCBIN_COMP("graphics/pokemon/kilowattrel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WATTREL #if P_FAMILY_MASCHIFF @@ -12193,6 +20555,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Maschiff[] = INCBIN_COMP("graphics/pokemon/maschiff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/front.4bpp.lz"); const u32 gMonPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/normal.gbapal.lz"); @@ -12202,6 +20571,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Mabosstiff[] = INCBIN_COMP("graphics/pokemon/mabosstiff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MASCHIFF #if P_FAMILY_SHROODLE @@ -12213,6 +20589,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Shroodle[] = INCBIN_COMP("graphics/pokemon/shroodle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/front.4bpp.lz"); const u32 gMonPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/normal.gbapal.lz"); @@ -12222,6 +20605,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Grafaiai[] = INCBIN_COMP("graphics/pokemon/grafaiai/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SHROODLE #if P_FAMILY_BRAMBLIN @@ -12233,6 +20623,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Bramblin[] = INCBIN_COMP("graphics/pokemon/bramblin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/front.4bpp.lz"); const u32 gMonPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/normal.gbapal.lz"); @@ -12242,6 +20639,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Brambleghast[] = INCBIN_COMP("graphics/pokemon/brambleghast/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRAMBLIN #if P_FAMILY_TOEDSCOOL @@ -12253,6 +20657,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Toedscool[] = INCBIN_COMP("graphics/pokemon/toedscool/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/front.4bpp.lz"); const u32 gMonPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/normal.gbapal.lz"); @@ -12262,6 +20673,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Toedscruel[] = INCBIN_COMP("graphics/pokemon/toedscruel/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TOEDSCOOL #if P_FAMILY_KLAWF @@ -12273,6 +20691,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Klawf[] = INCBIN_COMP("graphics/pokemon/klawf/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KLAWF #if P_FAMILY_CAPSAKID @@ -12284,6 +20709,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Capsakid[] = INCBIN_COMP("graphics/pokemon/capsakid/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/front.4bpp.lz"); const u32 gMonPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/normal.gbapal.lz"); @@ -12293,6 +20725,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Scovillain[] = INCBIN_COMP("graphics/pokemon/scovillain/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CAPSAKID #if P_FAMILY_RELLOR @@ -12304,6 +20743,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Rellor[] = INCBIN_COMP("graphics/pokemon/rellor/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/front.4bpp.lz"); const u32 gMonPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/normal.gbapal.lz"); @@ -12313,6 +20759,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Rabsca[] = INCBIN_COMP("graphics/pokemon/rabsca/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RELLOR #if P_FAMILY_FLITTLE @@ -12324,6 +20777,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Flittle[] = INCBIN_COMP("graphics/pokemon/flittle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/front.4bpp.lz"); const u32 gMonPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/normal.gbapal.lz"); @@ -12333,6 +20793,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Espathra[] = INCBIN_COMP("graphics/pokemon/espathra/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLITTLE #if P_FAMILY_TINKATINK @@ -12344,6 +20811,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tinkatink[] = INCBIN_COMP("graphics/pokemon/tinkatink/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/front.4bpp.lz"); const u32 gMonPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/normal.gbapal.lz"); @@ -12353,6 +20827,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tinkatuff[] = INCBIN_COMP("graphics/pokemon/tinkatuff/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/front.4bpp.lz"); const u32 gMonPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/normal.gbapal.lz"); @@ -12362,6 +20843,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Tinkaton[] = INCBIN_COMP("graphics/pokemon/tinkaton/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TINKATINK #if P_FAMILY_WIGLETT @@ -12373,6 +20861,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Wiglett[] = INCBIN_COMP("graphics/pokemon/wiglett/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/front.4bpp.lz"); const u32 gMonPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/normal.gbapal.lz"); @@ -12382,6 +20877,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Wugtrio[] = INCBIN_COMP("graphics/pokemon/wugtrio/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WIGLETT #if P_FAMILY_BOMBIRDIER @@ -12393,6 +20895,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Bombirdier[] = INCBIN_COMP("graphics/pokemon/bombirdier/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BOMBIRDIER #if P_FAMILY_FINIZEN @@ -12404,6 +20913,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Finizen[] = INCBIN_COMP("graphics/pokemon/finizen/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/front.4bpp.lz"); const u32 gMonPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/normal.gbapal.lz"); @@ -12413,12 +20929,26 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PalafinZero[] = INCBIN_COMP("graphics/pokemon/palafin/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_PalafinHero[] = INCBIN_COMP("graphics/pokemon/palafin/hero/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FINIZEN #if P_FAMILY_VAROOM @@ -12430,6 +20960,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Varoom[] = INCBIN_COMP("graphics/pokemon/varoom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/front.4bpp.lz"); const u32 gMonPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/normal.gbapal.lz"); @@ -12439,6 +20976,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Revavroom[] = INCBIN_COMP("graphics/pokemon/revavroom/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VAROOM #if P_FAMILY_CYCLIZAR @@ -12450,6 +20994,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Cyclizar[] = INCBIN_COMP("graphics/pokemon/cyclizar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CYCLIZAR #if P_FAMILY_ORTHWORM @@ -12461,6 +21012,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Orthworm[] = INCBIN_COMP("graphics/pokemon/orthworm/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ORTHWORM #if P_FAMILY_GLIMMET @@ -12472,6 +21030,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Glimmet[] = INCBIN_COMP("graphics/pokemon/glimmet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/front.4bpp.lz"); const u32 gMonPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/normal.gbapal.lz"); @@ -12481,6 +21046,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Glimmora[] = INCBIN_COMP("graphics/pokemon/glimmora/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GLIMMET #if P_FAMILY_GREAVARD @@ -12492,6 +21064,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Greavard[] = INCBIN_COMP("graphics/pokemon/greavard/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/front.4bpp.lz"); const u32 gMonPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/normal.gbapal.lz"); @@ -12501,6 +21080,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Houndstone[] = INCBIN_COMP("graphics/pokemon/houndstone/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GREAVARD #if P_FAMILY_FLAMIGO @@ -12512,6 +21098,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Flamigo[] = INCBIN_COMP("graphics/pokemon/flamigo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLAMIGO #if P_FAMILY_CETODDLE @@ -12523,6 +21116,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Cetoddle[] = INCBIN_COMP("graphics/pokemon/cetoddle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/front.4bpp.lz"); const u32 gMonPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/normal.gbapal.lz"); @@ -12532,6 +21132,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Cetitan[] = INCBIN_COMP("graphics/pokemon/cetitan/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CETODDLE #if P_FAMILY_VELUZA @@ -12543,6 +21150,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Veluza[] = INCBIN_COMP("graphics/pokemon/veluza/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_VELUZA #if P_FAMILY_DONDOZO @@ -12554,6 +21168,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Dondozo[] = INCBIN_COMP("graphics/pokemon/dondozo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI @@ -12565,18 +21186,39 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TatsugiriCurly[] = INCBIN_COMP("graphics/pokemon/tatsugiri/curly/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TatsugiriDroopy[] = INCBIN_COMP("graphics/pokemon/tatsugiri/droopy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TatsugiriStretchy[] = INCBIN_COMP("graphics/pokemon/tatsugiri/stretchy/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_DONDOZO #if P_FAMILY_GREAT_TUSK @@ -12588,6 +21230,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GreatTusk[] = INCBIN_COMP("graphics/pokemon/great_tusk/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GREAT_TUSK #if P_FAMILY_SCREAM_TAIL @@ -12599,6 +21248,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ScreamTail[] = INCBIN_COMP("graphics/pokemon/scream_tail/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SCREAM_TAIL #if P_FAMILY_BRUTE_BONNET @@ -12610,6 +21266,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_BruteBonnet[] = INCBIN_COMP("graphics/pokemon/brute_bonnet/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_BRUTE_BONNET #if P_FAMILY_FLUTTER_MANE @@ -12621,6 +21284,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_FlutterMane[] = INCBIN_COMP("graphics/pokemon/flutter_mane/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FLUTTER_MANE #if P_FAMILY_SLITHER_WING @@ -12632,6 +21302,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SlitherWing[] = INCBIN_COMP("graphics/pokemon/slither_wing/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SLITHER_WING #if P_FAMILY_SANDY_SHOCKS @@ -12643,6 +21320,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_SandyShocks[] = INCBIN_COMP("graphics/pokemon/sandy_shocks/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_SANDY_SHOCKS #if P_FAMILY_IRON_TREADS @@ -12654,6 +21338,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronTreads[] = INCBIN_COMP("graphics/pokemon/iron_treads/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_TREADS #if P_FAMILY_IRON_BUNDLE @@ -12665,6 +21356,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronBundle[] = INCBIN_COMP("graphics/pokemon/iron_bundle/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_BUNDLE #if P_FAMILY_IRON_HANDS @@ -12676,6 +21374,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronHands[] = INCBIN_COMP("graphics/pokemon/iron_hands/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_HANDS #if P_FAMILY_IRON_JUGULIS @@ -12687,6 +21392,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronJugulis[] = INCBIN_COMP("graphics/pokemon/iron_jugulis/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_JUGULIS #if P_FAMILY_IRON_MOTH @@ -12698,6 +21410,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronMoth[] = INCBIN_COMP("graphics/pokemon/iron_moth/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_MOTH #if P_FAMILY_IRON_THORNS @@ -12709,6 +21428,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronThorns[] = INCBIN_COMP("graphics/pokemon/iron_thorns/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_THORNS #if P_FAMILY_FRIGIBAX @@ -12720,6 +21446,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Frigibax[] = INCBIN_COMP("graphics/pokemon/frigibax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/front.4bpp.lz"); const u32 gMonPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/normal.gbapal.lz"); @@ -12729,6 +21462,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Arctibax[] = INCBIN_COMP("graphics/pokemon/arctibax/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/front.4bpp.lz"); const u32 gMonPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/normal.gbapal.lz"); @@ -12738,6 +21478,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Baxcalibur[] = INCBIN_COMP("graphics/pokemon/baxcalibur/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FRIGIBAX #if P_FAMILY_GIMMIGHOUL @@ -12749,6 +21496,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GimmighoulChest[] = INCBIN_COMP("graphics/pokemon/gimmighoul/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS 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"); @@ -12758,6 +21512,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GimmighoulRoaming[] = INCBIN_COMP("graphics/pokemon/gimmighoul/roaming/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/front.4bpp.lz"); const u32 gMonPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/normal.gbapal.lz"); @@ -12767,6 +21528,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Gholdengo[] = INCBIN_COMP("graphics/pokemon/gholdengo/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GIMMIGHOUL #if P_FAMILY_WO_CHIEN @@ -12778,6 +21546,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_WoChien[] = INCBIN_COMP("graphics/pokemon/wo_chien/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WO_CHIEN #if P_FAMILY_CHIEN_PAO @@ -12789,6 +21564,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ChienPao[] = INCBIN_COMP("graphics/pokemon/chien_pao/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHIEN_PAO #if P_FAMILY_TING_LU @@ -12800,6 +21582,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TingLu[] = INCBIN_COMP("graphics/pokemon/ting_lu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TING_LU #if P_FAMILY_CHI_YU @@ -12811,6 +21600,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_ChiYu[] = INCBIN_COMP("graphics/pokemon/chi_yu/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_CHI_YU #if P_FAMILY_ROARING_MOON @@ -12822,6 +21618,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_RoaringMoon[] = INCBIN_COMP("graphics/pokemon/roaring_moon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_ROARING_MOON #if P_FAMILY_IRON_VALIANT @@ -12833,6 +21636,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronValiant[] = INCBIN_COMP("graphics/pokemon/iron_valiant/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_VALIANT #if P_FAMILY_KORAIDON @@ -12844,6 +21654,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Koraidon[] = INCBIN_COMP("graphics/pokemon/koraidon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_KORAIDON #if P_FAMILY_MIRAIDON @@ -12855,6 +21672,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Miraidon[] = INCBIN_COMP("graphics/pokemon/miraidon/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MIRAIDON #if P_FAMILY_WALKING_WAKE @@ -12866,6 +21690,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_WalkingWake[] = INCBIN_COMP("graphics/pokemon/walking_wake/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_WALKING_WAKE #if P_FAMILY_IRON_LEAVES @@ -12877,6 +21708,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronLeaves[] = INCBIN_COMP("graphics/pokemon/iron_leaves/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_LEAVES #if P_FAMILY_POLTCHAGEIST @@ -12888,6 +21726,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Poltchageist[] = INCBIN_COMP("graphics/pokemon/poltchageist/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/front.4bpp.lz"); const u32 gMonPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/normal.gbapal.lz"); @@ -12897,6 +21742,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Sinistcha[] = INCBIN_COMP("graphics/pokemon/sinistcha/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_POLTCHAGEIST #if P_FAMILY_OKIDOGI @@ -12908,6 +21760,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Okidogi[] = INCBIN_COMP("graphics/pokemon/okidogi/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OKIDOGI #if P_FAMILY_MUNKIDORI @@ -12919,6 +21778,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Munkidori[] = INCBIN_COMP("graphics/pokemon/munkidori/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_MUNKIDORI #if P_FAMILY_FEZANDIPITI @@ -12930,6 +21796,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Fezandipiti[] = INCBIN_COMP("graphics/pokemon/fezandipiti/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON @@ -12979,6 +21852,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar 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"); + +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_OgerponTealMask[] = INCBIN_COMP("graphics/pokemon/ogerpon/overworld.4bpp"); + // const u32 gObjectEventPic_OgerponWellspringMask[] = INCBIN_COMP("graphics/pokemon/ogerpon/wellspring/overworld.4bpp"); + // const u32 gObjectEventPic_OgerponHearthflameMask[] = INCBIN_COMP("graphics/pokemon/ogerpon/hearthflame/overworld.4bpp"); + // const u32 gObjectEventPic_OgerponCornerstoneMask[] = INCBIN_COMP("graphics/pokemon/ogerpon/cornerstone/overworld.4bpp"); +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_OGERPON #if P_FAMILY_GOUGING_FIRE @@ -12990,6 +21870,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_GougingFire[] = INCBIN_COMP("graphics/pokemon/gouging_fire/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_GOUGING_FIRE #if P_FAMILY_RAGING_BOLT @@ -13001,6 +21888,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_RagingBolt[] = INCBIN_COMP("graphics/pokemon/raging_bolt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_RAGING_BOLT #if P_FAMILY_IRON_BOULDER @@ -13012,6 +21906,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronBoulder[] = INCBIN_COMP("graphics/pokemon/iron_boulder/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_BOULDER #if P_FAMILY_IRON_CROWN @@ -13023,6 +21924,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_IronCrown[] = INCBIN_COMP("graphics/pokemon/iron_crown/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_IRON_CROWN #if P_FAMILY_TERAPAGOS @@ -13034,6 +21942,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TerapagosNormal[] = INCBIN_COMP("graphics/pokemon/terapagos/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/anim_front.4bpp.lz"); const u32 gMonPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/normal.gbapal.lz"); @@ -13043,6 +21958,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TerapagosTerastal[] = INCBIN_COMP("graphics/pokemon/terapagos/terastal/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz"); const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); @@ -13052,6 +21974,13 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_TerapagosStellar[] = INCBIN_COMP("graphics/pokemon/terapagos/stellar/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_TERAPAGOS #if P_FAMILY_PECHARUNT @@ -13063,9 +21992,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FOOTPRINTS const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); #endif //P_FOOTPRINTS +#if OW_POKEMON_OBJECT_EVENTS + // const u32 gObjectEventPic_Pecharunt[] = INCBIN_COMP("graphics/pokemon/pecharunt/overworld.4bpp"); +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + // const u32 gOverworldPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/overworld_normal.gbapal.lz"); + // const u32 gShinyOverworldPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/overworld_shiny.gbapal.lz"); +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES +#endif //OW_POKEMON_OBJECT_EVENTS #endif //P_FAMILY_PECHARUNT 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/graphics/trainers.h b/src/data/graphics/trainers.h index 309fd0b80c98..2a7baf1bc8ab 100644 --- a/src/data/graphics/trainers.h +++ b/src/data/graphics/trainers.h @@ -423,16 +423,38 @@ static const union AnimCmd sAnimCmd_Kanto[] = ANIMCMD_END, }; +static const union AnimCmd sAnimCmd_Point_HGSS[] = +{ + ANIMCMD_FRAME(3, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +static const union AnimCmd sAnimCmd_Point_HGSS_Red_Leaf[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(3, 24), + ANIMCMD_FRAME(3, 24), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + static const union AnimCmd *const sBackAnims_Hoenn[] = { sAnim_GeneralFrame3, sAnimCmd_Hoenn, + sAnimCmd_Point_HGSS, }; static const union AnimCmd *const sBackAnims_Kanto[] = { sAnim_GeneralFrame0, sAnimCmd_Kanto, + sAnimCmd_Point_HGSS_Red_Leaf, }; const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] = diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index d452612c1ba0..8b137891791f 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -1,878 +1 @@ -const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = -{ - [ITEM_NONE] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, - // Poké Balls - [ITEM_POKE_BALL] = {gItemIcon_PokeBall, gItemIconPalette_PokeBall}, - [ITEM_GREAT_BALL] = {gItemIcon_GreatBall, gItemIconPalette_GreatBall}, - [ITEM_ULTRA_BALL] = {gItemIcon_UltraBall, gItemIconPalette_UltraBall}, - [ITEM_MASTER_BALL] = {gItemIcon_MasterBall, gItemIconPalette_MasterBall}, - [ITEM_PREMIER_BALL] = {gItemIcon_PremierBall, gItemIconPalette_LuxuryBall}, - [ITEM_HEAL_BALL] = {gItemIcon_HealBall, gItemIconPalette_HealBall}, - [ITEM_NET_BALL] = {gItemIcon_NetBall, gItemIconPalette_NetBall}, - [ITEM_NEST_BALL] = {gItemIcon_NestBall, gItemIconPalette_NestBall}, - [ITEM_DIVE_BALL] = {gItemIcon_DiveBall, gItemIconPalette_DiveBall}, - [ITEM_DUSK_BALL] = {gItemIcon_DuskBall, gItemIconPalette_DuskBall}, - [ITEM_TIMER_BALL] = {gItemIcon_TimerBall, gItemIconPalette_RepeatBall}, - [ITEM_QUICK_BALL] = {gItemIcon_QuickBall, gItemIconPalette_QuickBall}, - [ITEM_REPEAT_BALL] = {gItemIcon_RepeatBall, gItemIconPalette_RepeatBall}, - [ITEM_LUXURY_BALL] = {gItemIcon_LuxuryBall, gItemIconPalette_LuxuryBall}, - [ITEM_LEVEL_BALL] = {gItemIcon_LevelBall, gItemIconPalette_LevelBall}, - [ITEM_LURE_BALL] = {gItemIcon_LureBall, gItemIconPalette_LureBall}, - [ITEM_MOON_BALL] = {gItemIcon_MoonBall, gItemIconPalette_MoonBall}, - [ITEM_FRIEND_BALL] = {gItemIcon_FriendBall, gItemIconPalette_FriendBall}, - [ITEM_LOVE_BALL] = {gItemIcon_LoveBall, gItemIconPalette_LoveBall}, - [ITEM_FAST_BALL] = {gItemIcon_FastBall, gItemIconPalette_FastBall}, - [ITEM_HEAVY_BALL] = {gItemIcon_HeavyBall, gItemIconPalette_HeavyBall}, - [ITEM_DREAM_BALL] = {gItemIcon_DreamBall, gItemIconPalette_DreamBall}, - [ITEM_SAFARI_BALL] = {gItemIcon_SafariBall, gItemIconPalette_SafariBall}, - [ITEM_SPORT_BALL] = {gItemIcon_SportBall, gItemIconPalette_SportBall}, - [ITEM_PARK_BALL] = {gItemIcon_ParkBall, gItemIconPalette_ParkBall}, - [ITEM_BEAST_BALL] = {gItemIcon_BeastBall, gItemIconPalette_BeastBall}, - [ITEM_CHERISH_BALL] = {gItemIcon_CherishBall, gItemIconPalette_CherishBall}, - // Medicine - [ITEM_POTION] = {gItemIcon_Potion, gItemIconPalette_Potion}, - [ITEM_SUPER_POTION] = {gItemIcon_Potion, gItemIconPalette_SuperPotion}, - [ITEM_HYPER_POTION] = {gItemIcon_Potion, gItemIconPalette_HyperPotion}, - [ITEM_MAX_POTION] = {gItemIcon_LargePotion, gItemIconPalette_MaxPotion}, - [ITEM_FULL_RESTORE] = {gItemIcon_LargePotion, gItemIconPalette_FullRestore}, - [ITEM_REVIVE] = {gItemIcon_Revive, gItemIconPalette_Revive}, - [ITEM_MAX_REVIVE] = {gItemIcon_MaxRevive, gItemIconPalette_Revive}, - [ITEM_FRESH_WATER] = {gItemIcon_FreshWater, gItemIconPalette_FreshWater}, - [ITEM_SODA_POP] = {gItemIcon_SodaPop, gItemIconPalette_SodaPop}, - [ITEM_LEMONADE] = {gItemIcon_Lemonade, gItemIconPalette_Lemonade}, - [ITEM_MOOMOO_MILK] = {gItemIcon_MoomooMilk, gItemIconPalette_MoomooMilk}, - [ITEM_ENERGY_POWDER] = {gItemIcon_Powder, gItemIconPalette_EnergyPowder}, - [ITEM_ENERGY_ROOT] = {gItemIcon_EnergyRoot, gItemIconPalette_EnergyRoot}, - [ITEM_HEAL_POWDER] = {gItemIcon_Powder, gItemIconPalette_HealPowder}, - [ITEM_REVIVAL_HERB] = {gItemIcon_RevivalHerb, gItemIconPalette_RevivalHerb}, - [ITEM_ANTIDOTE] = {gItemIcon_Antidote, gItemIconPalette_Antidote}, - [ITEM_PARALYZE_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_ParalyzeHeal}, - [ITEM_BURN_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_BurnHeal}, - [ITEM_ICE_HEAL] = {gItemIcon_StatusHeal, gItemIconPalette_IceHeal}, - [ITEM_AWAKENING] = {gItemIcon_StatusHeal, gItemIconPalette_Awakening}, - [ITEM_FULL_HEAL] = {gItemIcon_FullHeal, gItemIconPalette_FullHeal}, - [ITEM_ETHER] = {gItemIcon_Ether, gItemIconPalette_Ether}, - [ITEM_MAX_ETHER] = {gItemIcon_Ether, gItemIconPalette_MaxEther}, - [ITEM_ELIXIR] = {gItemIcon_Ether, gItemIconPalette_Elixir}, - [ITEM_MAX_ELIXIR] = {gItemIcon_Ether, gItemIconPalette_MaxElixir}, - [ITEM_BERRY_JUICE] = {gItemIcon_BerryJuice, gItemIconPalette_BerryJuice}, - [ITEM_SACRED_ASH] = {gItemIcon_SacredAsh, gItemIconPalette_SacredAsh}, - [ITEM_SWEET_HEART] = {gItemIcon_SweetHeart, gItemIconPalette_SweetHeart}, - [ITEM_MAX_HONEY] = {gItemIcon_MaxHoney, gItemIconPalette_MaxHoney}, - // Regional Specialties - [ITEM_PEWTER_CRUNCHIES] = {gItemIcon_PewterCrunchies, gItemIconPalette_PewterCrunchies}, - [ITEM_RAGE_CANDY_BAR] = {gItemIcon_RageCandyBar, gItemIconPalette_RageCandyBar}, - [ITEM_LAVA_COOKIE] = {gItemIcon_LavaCookie, gItemIconPalette_LavaCookieAndLetter}, - [ITEM_OLD_GATEAU] = {gItemIcon_OldGateau, gItemIconPalette_OldGateau}, - [ITEM_CASTELIACONE] = {gItemIcon_Casteliacone, gItemIconPalette_Casteliacone}, - [ITEM_LUMIOSE_GALETTE] = {gItemIcon_LumioseGalette, gItemIconPalette_LumioseGalette}, - [ITEM_SHALOUR_SABLE] = {gItemIcon_ShalourSable, gItemIconPalette_ShalourSable}, - [ITEM_BIG_MALASADA] = {gItemIcon_BigMalasada, gItemIconPalette_BigMalasada}, - // Vitamins - [ITEM_HP_UP] = {gItemIcon_HPUp, gItemIconPalette_HPUp}, - [ITEM_PROTEIN] = {gItemIcon_Vitamin, gItemIconPalette_Protein}, - [ITEM_IRON] = {gItemIcon_Vitamin, gItemIconPalette_Iron}, - [ITEM_CALCIUM] = {gItemIcon_Vitamin, gItemIconPalette_Calcium}, - [ITEM_ZINC] = {gItemIcon_Vitamin, gItemIconPalette_Zinc}, - [ITEM_CARBOS] = {gItemIcon_Vitamin, gItemIconPalette_Carbos}, - [ITEM_PP_UP] = {gItemIcon_PPUp, gItemIconPalette_PPUp}, - [ITEM_PP_MAX] = {gItemIcon_PPMax, gItemIconPalette_PPMax}, - // EV Feathers - [ITEM_HEALTH_FEATHER] = {gItemIcon_HealthFeather, gItemIconPalette_HealthFeather}, - [ITEM_MUSCLE_FEATHER] = {gItemIcon_MuscleFeather, gItemIconPalette_MuscleFeather}, - [ITEM_RESIST_FEATHER] = {gItemIcon_ResistFeather, gItemIconPalette_ResistFeather}, - [ITEM_GENIUS_FEATHER] = {gItemIcon_GeniusFeather, gItemIconPalette_GeniusFeather}, - [ITEM_CLEVER_FEATHER] = {gItemIcon_CleverFeather, gItemIconPalette_CleverFeather}, - [ITEM_SWIFT_FEATHER] = {gItemIcon_SwiftFeather, gItemIconPalette_SwiftFeather}, - // Ability Modifiers - [ITEM_ABILITY_CAPSULE] = {gItemIcon_AbilityCapsule, gItemIconPalette_AbilityCapsule}, - [ITEM_ABILITY_PATCH] = {gItemIcon_AbilityPatch, gItemIconPalette_AbilityPatch}, - // Mints - [ITEM_LONELY_MINT] = {gItemIcon_Mint, gItemIconPalette_RedMint}, - [ITEM_ADAMANT_MINT] = {gItemIcon_Mint, gItemIconPalette_RedMint}, - [ITEM_NAUGHTY_MINT] = {gItemIcon_Mint, gItemIconPalette_RedMint}, - [ITEM_BRAVE_MINT] = {gItemIcon_Mint, gItemIconPalette_RedMint}, - [ITEM_BOLD_MINT] = {gItemIcon_Mint, gItemIconPalette_BlueMint}, - [ITEM_IMPISH_MINT] = {gItemIcon_Mint, gItemIconPalette_BlueMint}, - [ITEM_LAX_MINT] = {gItemIcon_Mint, gItemIconPalette_BlueMint}, - [ITEM_RELAXED_MINT] = {gItemIcon_Mint, gItemIconPalette_BlueMint}, - [ITEM_MODEST_MINT] = {gItemIcon_Mint, gItemIconPalette_LightBlueMint}, - [ITEM_MILD_MINT] = {gItemIcon_Mint, gItemIconPalette_LightBlueMint}, - [ITEM_RASH_MINT] = {gItemIcon_Mint, gItemIconPalette_LightBlueMint}, - [ITEM_QUIET_MINT] = {gItemIcon_Mint, gItemIconPalette_LightBlueMint}, - [ITEM_CALM_MINT] = {gItemIcon_Mint, gItemIconPalette_PinkMint}, - [ITEM_GENTLE_MINT] = {gItemIcon_Mint, gItemIconPalette_PinkMint}, - [ITEM_CAREFUL_MINT] = {gItemIcon_Mint, gItemIconPalette_PinkMint}, - [ITEM_SASSY_MINT] = {gItemIcon_Mint, gItemIconPalette_PinkMint}, - [ITEM_TIMID_MINT] = {gItemIcon_Mint, gItemIconPalette_GreenMint}, - [ITEM_HASTY_MINT] = {gItemIcon_Mint, gItemIconPalette_GreenMint}, - [ITEM_JOLLY_MINT] = {gItemIcon_Mint, gItemIconPalette_GreenMint}, - [ITEM_NAIVE_MINT] = {gItemIcon_Mint, gItemIconPalette_GreenMint}, - [ITEM_SERIOUS_MINT] = {gItemIcon_Mint, gItemIconPalette_YellowMint}, - // Candy - [ITEM_RARE_CANDY] = {gItemIcon_RareCandy, gItemIconPalette_RareCandy}, - [ITEM_EXP_CANDY_XS] = {gItemIcon_ExpCandyXS, gItemIconPalette_ExpCandies}, - [ITEM_EXP_CANDY_S] = {gItemIcon_ExpCandyS, gItemIconPalette_ExpCandies}, - [ITEM_EXP_CANDY_M] = {gItemIcon_ExpCandyM, gItemIconPalette_ExpCandies}, - [ITEM_EXP_CANDY_L] = {gItemIcon_ExpCandyL, gItemIconPalette_ExpCandies}, - [ITEM_EXP_CANDY_XL] = {gItemIcon_ExpCandyXL, gItemIconPalette_ExpCandies}, - [ITEM_DYNAMAX_CANDY] = {gItemIcon_DynamaxCandy, gItemIconPalette_DynamaxCandy}, - // Medicinal Flutes - [ITEM_BLUE_FLUTE] = {gItemIcon_Flute, gItemIconPalette_BlueFlute}, - [ITEM_YELLOW_FLUTE] = {gItemIcon_Flute, gItemIconPalette_YellowFlute}, - [ITEM_RED_FLUTE] = {gItemIcon_Flute, gItemIconPalette_RedFlute}, - // Encounter-modifying Flutes - [ITEM_BLACK_FLUTE] = {gItemIcon_Flute, gItemIconPalette_BlackFlute}, - [ITEM_WHITE_FLUTE] = {gItemIcon_Flute, gItemIconPalette_WhiteFlute}, - // Encounter Modifiers - [ITEM_REPEL] = {gItemIcon_Repel, gItemIconPalette_Repel}, - [ITEM_SUPER_REPEL] = {gItemIcon_Repel, gItemIconPalette_SuperRepel}, - [ITEM_MAX_REPEL] = {gItemIcon_Repel, gItemIconPalette_MaxRepel}, - [ITEM_LURE] = {gItemIcon_Lure, gItemIconPalette_Lure}, - [ITEM_SUPER_LURE] = {gItemIcon_Lure, gItemIconPalette_SuperLure}, - [ITEM_MAX_LURE] = {gItemIcon_Lure, gItemIconPalette_MaxLure}, - [ITEM_ESCAPE_ROPE] = {gItemIcon_EscapeRope, gItemIconPalette_EscapeRope}, - // X Items - [ITEM_X_ATTACK] = {gItemIcon_BattleStatItem, gItemIconPalette_XAttack}, - [ITEM_X_DEFENSE] = {gItemIcon_BattleStatItem, gItemIconPalette_XDefend}, - [ITEM_X_SP_ATK] = {gItemIcon_BattleStatItem, gItemIconPalette_XSpecial}, - [ITEM_X_SP_DEF] = {gItemIcon_XSpecialDefense, gItemIconPalette_XSpecialDefense}, - [ITEM_X_SPEED] = {gItemIcon_BattleStatItem, gItemIconPalette_XSpeed}, - [ITEM_X_ACCURACY] = {gItemIcon_BattleStatItem, gItemIconPalette_XAccuracy}, - [ITEM_DIRE_HIT] = {gItemIcon_BattleStatItem, gItemIconPalette_DireHit}, - [ITEM_GUARD_SPEC] = {gItemIcon_BattleStatItem, gItemIconPalette_GuardSpec}, - // Escape Items - [ITEM_POKE_DOLL] = {gItemIcon_PokeDoll, gItemIconPalette_PokeDoll}, - [ITEM_FLUFFY_TAIL] = {gItemIcon_FluffyTail, gItemIconPalette_FluffyTail}, - [ITEM_POKE_TOY] = {gItemIcon_PokeToy, gItemIconPalette_PokeToy}, - [ITEM_MAX_MUSHROOMS] = {gItemIcon_MaxMushrooms, gItemIconPalette_MaxMushrooms}, - // Treasures - [ITEM_BOTTLE_CAP] = {gItemIcon_BottleCap, gItemIconPalette_BottleCap}, - [ITEM_GOLD_BOTTLE_CAP] = {gItemIcon_BottleCap, gItemIconPalette_GoldBottleCap}, - [ITEM_NUGGET] = {gItemIcon_Nugget, gItemIconPalette_Nugget}, - [ITEM_BIG_NUGGET] = {gItemIcon_BigNugget, gItemIconPalette_BigNugget}, - [ITEM_TINY_MUSHROOM] = {gItemIcon_TinyMushroom, gItemIconPalette_Mushroom}, - [ITEM_BIG_MUSHROOM] = {gItemIcon_BigMushroom, gItemIconPalette_Mushroom}, - [ITEM_BALM_MUSHROOM] = {gItemIcon_BalmMushroom, gItemIconPalette_BalmMushroom}, - [ITEM_PEARL] = {gItemIcon_Pearl, gItemIconPalette_Pearl}, - [ITEM_BIG_PEARL] = {gItemIcon_BigPearl, gItemIconPalette_Pearl}, - [ITEM_PEARL_STRING] = {gItemIcon_PearlString, gItemIconPalette_PearlString}, - [ITEM_STARDUST] = {gItemIcon_Stardust, gItemIconPalette_Star}, - [ITEM_STAR_PIECE] = {gItemIcon_StarPiece, gItemIconPalette_Star}, - [ITEM_COMET_SHARD] = {gItemIcon_CometShard, gItemIconPalette_CometShard}, - [ITEM_SHOAL_SALT] = {gItemIcon_Powder, gItemIconPalette_ShoalSalt}, - [ITEM_SHOAL_SHELL] = {gItemIcon_ShoalShell, gItemIconPalette_Shell}, - [ITEM_RED_SHARD] = {gItemIcon_Shard, gItemIconPalette_RedShard}, - [ITEM_BLUE_SHARD] = {gItemIcon_Shard, gItemIconPalette_BlueShard}, - [ITEM_YELLOW_SHARD] = {gItemIcon_Shard, gItemIconPalette_YellowShard}, - [ITEM_GREEN_SHARD] = {gItemIcon_Shard, gItemIconPalette_GreenShard}, - [ITEM_HEART_SCALE] = {gItemIcon_HeartScale, gItemIconPalette_HeartScale}, - [ITEM_HONEY] = {gItemIcon_Honey, gItemIconPalette_Honey}, - [ITEM_RARE_BONE] = {gItemIcon_RareBone, gItemIconPalette_RareBone}, - [ITEM_ODD_KEYSTONE] = {gItemIcon_OddKeystone, gItemIconPalette_OddKeystone}, - [ITEM_PRETTY_FEATHER] = {gItemIcon_PrettyFeather, gItemIconPalette_PrettyFeather}, - [ITEM_RELIC_COPPER] = {gItemIcon_RelicCoin, gItemIconPalette_RelicCopper}, - [ITEM_RELIC_SILVER] = {gItemIcon_RelicCoin, gItemIconPalette_RelicSilver}, - [ITEM_RELIC_GOLD] = {gItemIcon_RelicCoin, gItemIconPalette_RelicGold}, - [ITEM_RELIC_VASE] = {gItemIcon_RelicVase, gItemIconPalette_Relics}, - [ITEM_RELIC_BAND] = {gItemIcon_RelicBand, gItemIconPalette_Relics}, - [ITEM_RELIC_STATUE] = {gItemIcon_RelicStatue, gItemIconPalette_Relics}, - [ITEM_RELIC_CROWN] = {gItemIcon_RelicCrown, gItemIconPalette_Relics}, - [ITEM_STRANGE_SOUVENIR] = {gItemIcon_StrangeSouvenir, gItemIconPalette_StrangeSouvenir}, - // Fossils - [ITEM_HELIX_FOSSIL] = {gItemIcon_HelixFossil, gItemIconPalette_KantoFossil}, - [ITEM_DOME_FOSSIL] = {gItemIcon_DomeFossil, gItemIconPalette_KantoFossil}, - [ITEM_OLD_AMBER] = {gItemIcon_OldAmber, gItemIconPalette_OldAmber}, - [ITEM_ROOT_FOSSIL] = {gItemIcon_RootFossil, gItemIconPalette_HoennFossil}, - [ITEM_CLAW_FOSSIL] = {gItemIcon_ClawFossil, gItemIconPalette_HoennFossil}, - [ITEM_ARMOR_FOSSIL] = {gItemIcon_ArmorFossil, gItemIconPalette_ArmorFossil}, - [ITEM_SKULL_FOSSIL] = {gItemIcon_SkullFossil, gItemIconPalette_SkullFossil}, - [ITEM_COVER_FOSSIL] = {gItemIcon_CoverFossil, gItemIconPalette_CoverFossil}, - [ITEM_PLUME_FOSSIL] = {gItemIcon_PlumeFossil, gItemIconPalette_PlumeFossil}, - [ITEM_JAW_FOSSIL] = {gItemIcon_JawFossil, gItemIconPalette_JawFossil}, - [ITEM_SAIL_FOSSIL] = {gItemIcon_SailFossil, gItemIconPalette_SailFossil}, - [ITEM_FOSSILIZED_BIRD] = {gItemIcon_FossilizedBird, gItemIconPalette_FossilizedBird}, - [ITEM_FOSSILIZED_FISH] = {gItemIcon_FossilizedFish, gItemIconPalette_FossilizedFish}, - [ITEM_FOSSILIZED_DRAKE] = {gItemIcon_FossilizedDrake, gItemIconPalette_FossilizedDrake}, - [ITEM_FOSSILIZED_DINO] = {gItemIcon_FossilizedDino, gItemIconPalette_FossilizedDino}, - // Mulch - [ITEM_GROWTH_MULCH] = {gItemIcon_Mulch, gItemIconPalette_GrowthMulch}, - [ITEM_DAMP_MULCH] = {gItemIcon_Mulch, gItemIconPalette_DampMulch}, - [ITEM_STABLE_MULCH] = {gItemIcon_StableMulch, gItemIconPalette_StableMulch}, - [ITEM_GOOEY_MULCH] = {gItemIcon_Mulch, gItemIconPalette_GooeyMulch}, - [ITEM_RICH_MULCH] = {gItemIcon_Mulch, gItemIconPalette_RichMulch}, - [ITEM_SURPRISE_MULCH] = {gItemIcon_Mulch, gItemIconPalette_SurpriseMulch}, - [ITEM_BOOST_MULCH] = {gItemIcon_Mulch, gItemIconPalette_BoostMulch}, - [ITEM_AMAZE_MULCH] = {gItemIcon_Mulch, gItemIconPalette_AmazeMulch}, - // Apricorns - [ITEM_RED_APRICORN] = {gItemIcon_RedApricorn, gItemIconPalette_RedApricorn}, - [ITEM_BLUE_APRICORN] = {gItemIcon_BlueApricorn, gItemIconPalette_BlueApricorn}, - [ITEM_YELLOW_APRICORN] = {gItemIcon_YellowApricorn, gItemIconPalette_YellowApricorn}, - [ITEM_GREEN_APRICORN] = {gItemIcon_GreenApricorn, gItemIconPalette_GreenApricorn}, - [ITEM_PINK_APRICORN] = {gItemIcon_PinkApricorn, gItemIconPalette_PinkApricorn}, - [ITEM_WHITE_APRICORN] = {gItemIcon_WhiteApricorn, gItemIconPalette_WhiteApricorn}, - [ITEM_BLACK_APRICORN] = {gItemIcon_BlackApricorn, gItemIconPalette_BlackApricorn}, - [ITEM_WISHING_PIECE] = {gItemIcon_WishingPiece, gItemIconPalette_WishingPiece}, - [ITEM_GALARICA_TWIG] = {gItemIcon_GalaricaTwig, gItemIconPalette_GalaricaItem}, - [ITEM_ARMORITE_ORE] = {gItemIcon_ArmoriteOre, gItemIconPalette_ArmoriteOre}, - [ITEM_DYNITE_ORE] = {gItemIcon_DyniteOre, gItemIconPalette_DyniteOre}, - // Mail - [ITEM_ORANGE_MAIL] = {gItemIcon_OrangeMail, gItemIconPalette_OrangeMail}, - [ITEM_HARBOR_MAIL] = {gItemIcon_HarborMail, gItemIconPalette_HarborMail}, - [ITEM_GLITTER_MAIL] = {gItemIcon_GlitterMail, gItemIconPalette_GlitterMail}, - [ITEM_MECH_MAIL] = {gItemIcon_MechMail, gItemIconPalette_MechMail}, - [ITEM_WOOD_MAIL] = {gItemIcon_WoodMail, gItemIconPalette_WoodMail}, - [ITEM_WAVE_MAIL] = {gItemIcon_WaveMail, gItemIconPalette_WaveMail}, - [ITEM_BEAD_MAIL] = {gItemIcon_BeadMail, gItemIconPalette_BeadMail}, - [ITEM_SHADOW_MAIL] = {gItemIcon_ShadowMail, gItemIconPalette_ShadowMail}, - [ITEM_TROPIC_MAIL] = {gItemIcon_TropicMail, gItemIconPalette_TropicMail}, - [ITEM_DREAM_MAIL] = {gItemIcon_DreamMail, gItemIconPalette_DreamMail}, - [ITEM_FAB_MAIL] = {gItemIcon_FabMail, gItemIconPalette_FabMail}, - [ITEM_RETRO_MAIL] = {gItemIcon_RetroMail, gItemIconPalette_RetroMail}, - // Evolution Items - [ITEM_FIRE_STONE] = {gItemIcon_FireStone, gItemIconPalette_FireStone}, - [ITEM_WATER_STONE] = {gItemIcon_WaterStone, gItemIconPalette_WaterStone}, - [ITEM_THUNDER_STONE] = {gItemIcon_ThunderStone, gItemIconPalette_ThunderStone}, - [ITEM_LEAF_STONE] = {gItemIcon_LeafStone, gItemIconPalette_LeafStone}, - [ITEM_ICE_STONE] = {gItemIcon_IceStone, gItemIconPalette_IceStone}, - [ITEM_SUN_STONE] = {gItemIcon_SunStone, gItemIconPalette_SunStone}, - [ITEM_MOON_STONE] = {gItemIcon_MoonStone, gItemIconPalette_MoonStone}, - [ITEM_SHINY_STONE] = {gItemIcon_ShinyStone, gItemIconPalette_ShinyStone}, - [ITEM_DUSK_STONE] = {gItemIcon_DuskStone, gItemIconPalette_DuskStone}, - [ITEM_DAWN_STONE] = {gItemIcon_DawnStone, gItemIconPalette_DawnStone}, - [ITEM_SWEET_APPLE] = {gItemIcon_SweetApple, gItemIconPalette_SweetApple}, - [ITEM_TART_APPLE] = {gItemIcon_TartApple, gItemIconPalette_TartApple}, - [ITEM_CRACKED_POT] = {gItemIcon_CrackedPot, gItemIconPalette_Pot}, - [ITEM_CHIPPED_POT] = {gItemIcon_ChippedPot, gItemIconPalette_Pot}, - [ITEM_GALARICA_CUFF] = {gItemIcon_GalaricaCuff, gItemIconPalette_GalaricaItem}, - [ITEM_GALARICA_WREATH] = {gItemIcon_GalaricaWreath, gItemIconPalette_GalaricaItem}, - [ITEM_DRAGON_SCALE] = {gItemIcon_DragonScale, gItemIconPalette_DragonScale}, - [ITEM_UPGRADE] = {gItemIcon_Upgrade, gItemIconPalette_Upgrade}, - [ITEM_PROTECTOR] = {gItemIcon_Protector, gItemIconPalette_Protector}, - [ITEM_ELECTIRIZER] = {gItemIcon_Electirizer, gItemIconPalette_Electirizer}, - [ITEM_MAGMARIZER] = {gItemIcon_Magmarizer, gItemIconPalette_Magmarizer}, - [ITEM_DUBIOUS_DISC] = {gItemIcon_DubiousDisc, gItemIconPalette_DubiousDisc}, - [ITEM_REAPER_CLOTH] = {gItemIcon_ReaperCloth, gItemIconPalette_ReaperCloth}, - [ITEM_PRISM_SCALE] = {gItemIcon_PrismScale, gItemIconPalette_PrismScale}, - [ITEM_WHIPPED_DREAM] = {gItemIcon_WhippedDream, gItemIconPalette_WhippedDream}, - [ITEM_SACHET] = {gItemIcon_Sachet, gItemIconPalette_Sachet}, - [ITEM_OVAL_STONE] = {gItemIcon_OvalStone, gItemIconPalette_OvalStone}, - [ITEM_STRAWBERRY_SWEET] = {gItemIcon_StrawberrySweet, gItemIconPalette_StrawberrySweet}, - [ITEM_LOVE_SWEET] = {gItemIcon_LoveSweet, gItemIconPalette_LoveSweet}, - [ITEM_BERRY_SWEET] = {gItemIcon_BerrySweet, gItemIconPalette_BerrySweet}, - [ITEM_CLOVER_SWEET] = {gItemIcon_CloverSweet, gItemIconPalette_CloverSweet}, - [ITEM_FLOWER_SWEET] = {gItemIcon_FlowerSweet, gItemIconPalette_FlowerSweet}, - [ITEM_STAR_SWEET] = {gItemIcon_StarSweet, gItemIconPalette_StarSweet}, - [ITEM_RIBBON_SWEET] = {gItemIcon_RibbonSweet, gItemIconPalette_RibbonSweet}, - [ITEM_EVERSTONE] = {gItemIcon_Everstone, gItemIconPalette_Everstone}, - // Nectars - [ITEM_RED_NECTAR] = {gItemIcon_RedNectar, gItemIconPalette_RedNectar}, - [ITEM_YELLOW_NECTAR] = {gItemIcon_YellowNectar, gItemIconPalette_YellowNectar}, - [ITEM_PINK_NECTAR] = {gItemIcon_PinkNectar, gItemIconPalette_PinkNectar}, - [ITEM_PURPLE_NECTAR] = {gItemIcon_PurpleNectar, gItemIconPalette_PurpleNectar}, - // Plates - [ITEM_FLAME_PLATE] = {gItemIcon_FlamePlate, gItemIconPalette_FlamePlate}, - [ITEM_SPLASH_PLATE] = {gItemIcon_SplashPlate, gItemIconPalette_SplashPlate}, - [ITEM_ZAP_PLATE] = {gItemIcon_ZapPlate, gItemIconPalette_ZapPlate}, - [ITEM_MEADOW_PLATE] = {gItemIcon_MeadowPlate, gItemIconPalette_MeadowPlate}, - [ITEM_ICICLE_PLATE] = {gItemIcon_IciclePlate, gItemIconPalette_IciclePlate}, - [ITEM_FIST_PLATE] = {gItemIcon_FistPlate, gItemIconPalette_FistPlate}, - [ITEM_TOXIC_PLATE] = {gItemIcon_ToxicPlate, gItemIconPalette_ToxicPlate}, - [ITEM_EARTH_PLATE] = {gItemIcon_EarthPlate, gItemIconPalette_EarthPlate}, - [ITEM_SKY_PLATE] = {gItemIcon_SkyPlate, gItemIconPalette_SkyPlate}, - [ITEM_MIND_PLATE] = {gItemIcon_MindPlate, gItemIconPalette_MindPlate}, - [ITEM_INSECT_PLATE] = {gItemIcon_InsectPlate, gItemIconPalette_InsectPlate}, - [ITEM_STONE_PLATE] = {gItemIcon_StonePlate, gItemIconPalette_StonePlate}, - [ITEM_SPOOKY_PLATE] = {gItemIcon_SpookyPlate, gItemIconPalette_SpookyPlate}, - [ITEM_DRACO_PLATE] = {gItemIcon_DracoPlate, gItemIconPalette_DracoPlate}, - [ITEM_DREAD_PLATE] = {gItemIcon_DreadPlate, gItemIconPalette_DreadPlate}, - [ITEM_IRON_PLATE] = {gItemIcon_IronPlate, gItemIconPalette_IronPlate}, - [ITEM_PIXIE_PLATE] = {gItemIcon_PixiePlate, gItemIconPalette_PixiePlate}, - // Drives - [ITEM_DOUSE_DRIVE] = {gItemIcon_DouseDrive, gItemIconPalette_DouseDrive}, - [ITEM_SHOCK_DRIVE] = {gItemIcon_ShockDrive, gItemIconPalette_ShockDrive}, - [ITEM_BURN_DRIVE] = {gItemIcon_BurnDrive, gItemIconPalette_BurnDrive}, - [ITEM_CHILL_DRIVE] = {gItemIcon_ChillDrive, gItemIconPalette_ChillDrive}, - // Memories - [ITEM_FIRE_MEMORY] = {gItemIcon_FireMemory, gItemIconPalette_FireMemory}, - [ITEM_WATER_MEMORY] = {gItemIcon_WaterMemory, gItemIconPalette_WaterMemory}, - [ITEM_ELECTRIC_MEMORY] = {gItemIcon_ElectricMemory, gItemIconPalette_ElectricMemory}, - [ITEM_GRASS_MEMORY] = {gItemIcon_GrassMemory, gItemIconPalette_GrassMemory}, - [ITEM_ICE_MEMORY] = {gItemIcon_IceMemory, gItemIconPalette_IceMemory}, - [ITEM_FIGHTING_MEMORY] = {gItemIcon_FightingMemory, gItemIconPalette_FightingMemory}, - [ITEM_POISON_MEMORY] = {gItemIcon_PoisonMemory, gItemIconPalette_PoisonMemory}, - [ITEM_GROUND_MEMORY] = {gItemIcon_GroundMemory, gItemIconPalette_GroundMemory}, - [ITEM_FLYING_MEMORY] = {gItemIcon_FlyingMemory, gItemIconPalette_FlyingMemory}, - [ITEM_PSYCHIC_MEMORY] = {gItemIcon_PsychicMemory, gItemIconPalette_PsychicMemory}, - [ITEM_BUG_MEMORY] = {gItemIcon_BugMemory, gItemIconPalette_BugMemory}, - [ITEM_ROCK_MEMORY] = {gItemIcon_RockMemory, gItemIconPalette_RockMemory}, - [ITEM_GHOST_MEMORY] = {gItemIcon_GhostMemory, gItemIconPalette_GhostMemory}, - [ITEM_DRAGON_MEMORY] = {gItemIcon_DragonMemory, gItemIconPalette_DragonMemory}, - [ITEM_DARK_MEMORY] = {gItemIcon_DarkMemory, gItemIconPalette_DarkMemory}, - [ITEM_STEEL_MEMORY] = {gItemIcon_SteelMemory, gItemIconPalette_SteelMemory}, - [ITEM_FAIRY_MEMORY] = {gItemIcon_FairyMemory, gItemIconPalette_FairyMemory}, - [ITEM_RUSTED_SWORD] = {gItemIcon_RustedSword, gItemIconPalette_RustedWeapons}, - [ITEM_RUSTED_SHIELD] = {gItemIcon_RustedShield, gItemIconPalette_RustedWeapons}, - // Colored Orbs - [ITEM_RED_ORB] = {gItemIcon_RedOrb, gItemIconPalette_RedOrb}, - [ITEM_BLUE_ORB] = {gItemIcon_BlueOrb, gItemIconPalette_BlueOrb}, - // Mega Stones - [ITEM_VENUSAURITE] = {gItemIcon_Venusaurite, gItemIconPalette_Venusaurite}, - [ITEM_CHARIZARDITE_X] = {gItemIcon_CharizarditeX, gItemIconPalette_CharizarditeX}, - [ITEM_CHARIZARDITE_Y] = {gItemIcon_CharizarditeY, gItemIconPalette_CharizarditeY}, - [ITEM_BLASTOISINITE] = {gItemIcon_Blastoisinite, gItemIconPalette_Blastoisinite}, - [ITEM_BEEDRILLITE] = {gItemIcon_Beedrillite, gItemIconPalette_Beedrillite}, - [ITEM_PIDGEOTITE] = {gItemIcon_Pidgeotite, gItemIconPalette_Pidgeotite}, - [ITEM_ALAKAZITE] = {gItemIcon_Alakazite, gItemIconPalette_Alakazite}, - [ITEM_SLOWBRONITE] = {gItemIcon_Slowbronite, gItemIconPalette_Slowbronite}, - [ITEM_GENGARITE] = {gItemIcon_Gengarite, gItemIconPalette_Gengarite}, - [ITEM_KANGASKHANITE] = {gItemIcon_Kangaskhanite, gItemIconPalette_Kangaskhanite}, - [ITEM_PINSIRITE] = {gItemIcon_Pinsirite, gItemIconPalette_Pinsirite}, - [ITEM_GYARADOSITE] = {gItemIcon_Gyaradosite, gItemIconPalette_Gyaradosite}, - [ITEM_AERODACTYLITE] = {gItemIcon_Aerodactylite, gItemIconPalette_Aerodactylite}, - [ITEM_MEWTWONITE_X] = {gItemIcon_MewtwoniteX, gItemIconPalette_MewtwoniteX}, - [ITEM_MEWTWONITE_Y] = {gItemIcon_MewtwoniteY, gItemIconPalette_MewtwoniteY}, - [ITEM_AMPHAROSITE] = {gItemIcon_Ampharosite, gItemIconPalette_Ampharosite}, - [ITEM_STEELIXITE] = {gItemIcon_Steelixite, gItemIconPalette_Steelixite}, - [ITEM_SCIZORITE] = {gItemIcon_Scizorite, gItemIconPalette_Scizorite}, - [ITEM_HERACRONITE] = {gItemIcon_Heracronite, gItemIconPalette_Heracronite}, - [ITEM_HOUNDOOMINITE] = {gItemIcon_Houndoominite, gItemIconPalette_Houndoominite}, - [ITEM_TYRANITARITE] = {gItemIcon_Tyranitarite, gItemIconPalette_Tyranitarite}, - [ITEM_SCEPTILITE] = {gItemIcon_Sceptilite, gItemIconPalette_Sceptilite}, - [ITEM_BLAZIKENITE] = {gItemIcon_Blazikenite, gItemIconPalette_Blazikenite}, - [ITEM_SWAMPERTITE] = {gItemIcon_Swampertite, gItemIconPalette_Swampertite}, - [ITEM_GARDEVOIRITE] = {gItemIcon_Gardevoirite, gItemIconPalette_Gardevoirite}, - [ITEM_SABLENITE] = {gItemIcon_Sablenite, gItemIconPalette_Sablenite}, - [ITEM_MAWILITE] = {gItemIcon_Mawilite, gItemIconPalette_Mawilite}, - [ITEM_AGGRONITE] = {gItemIcon_Aggronite, gItemIconPalette_Aggronite}, - [ITEM_MEDICHAMITE] = {gItemIcon_Medichamite, gItemIconPalette_Medichamite}, - [ITEM_MANECTITE] = {gItemIcon_Manectite, gItemIconPalette_Manectite}, - [ITEM_SHARPEDONITE] = {gItemIcon_Sharpedonite, gItemIconPalette_Sharpedonite}, - [ITEM_CAMERUPTITE] = {gItemIcon_Cameruptite, gItemIconPalette_Cameruptite}, - [ITEM_ALTARIANITE] = {gItemIcon_Altarianite, gItemIconPalette_Altarianite}, - [ITEM_BANETTITE] = {gItemIcon_Banettite, gItemIconPalette_Banettite}, - [ITEM_ABSOLITE] = {gItemIcon_Absolite, gItemIconPalette_Absolite}, - [ITEM_GLALITITE] = {gItemIcon_Glalitite, gItemIconPalette_Glalitite}, - [ITEM_SALAMENCITE] = {gItemIcon_Salamencite, gItemIconPalette_Salamencite}, - [ITEM_METAGROSSITE] = {gItemIcon_Metagrossite, gItemIconPalette_Metagrossite}, - [ITEM_LATIASITE] = {gItemIcon_Latiasite, gItemIconPalette_Latiasite}, - [ITEM_LATIOSITE] = {gItemIcon_Latiosite, gItemIconPalette_Latiosite}, - [ITEM_LOPUNNITE] = {gItemIcon_Lopunnite, gItemIconPalette_Lopunnite}, - [ITEM_GARCHOMPITE] = {gItemIcon_Garchompite, gItemIconPalette_Garchompite}, - [ITEM_LUCARIONITE] = {gItemIcon_Lucarionite, gItemIconPalette_Lucarionite}, - [ITEM_ABOMASITE] = {gItemIcon_Abomasite, gItemIconPalette_Abomasite}, - [ITEM_GALLADITE] = {gItemIcon_Galladite, gItemIconPalette_Galladite}, - [ITEM_AUDINITE] = {gItemIcon_Audinite, gItemIconPalette_Audinite}, - [ITEM_DIANCITE] = {gItemIcon_Diancite, gItemIconPalette_Diancite}, - // Gems - [ITEM_NORMAL_GEM] = {gItemIcon_NormalGem, gItemIconPalette_NormalGem}, - [ITEM_FIRE_GEM] = {gItemIcon_FireGem, gItemIconPalette_FireGem}, - [ITEM_WATER_GEM] = {gItemIcon_WaterGem, gItemIconPalette_WaterGem}, - [ITEM_ELECTRIC_GEM] = {gItemIcon_ElectricGem, gItemIconPalette_ElectricGem}, - [ITEM_GRASS_GEM] = {gItemIcon_GrassGem, gItemIconPalette_GrassGem}, - [ITEM_ICE_GEM] = {gItemIcon_IceGem, gItemIconPalette_IceGem}, - [ITEM_FIGHTING_GEM] = {gItemIcon_FightingGem, gItemIconPalette_FightingGem}, - [ITEM_POISON_GEM] = {gItemIcon_PoisonGem, gItemIconPalette_PoisonGem}, - [ITEM_GROUND_GEM] = {gItemIcon_GroundGem, gItemIconPalette_GroundGem}, - [ITEM_FLYING_GEM] = {gItemIcon_FlyingGem, gItemIconPalette_FlyingGem}, - [ITEM_PSYCHIC_GEM] = {gItemIcon_PsychicGem, gItemIconPalette_PsychicGem}, - [ITEM_BUG_GEM] = {gItemIcon_BugGem, gItemIconPalette_BugGem}, - [ITEM_ROCK_GEM] = {gItemIcon_RockGem, gItemIconPalette_RockGem}, - [ITEM_GHOST_GEM] = {gItemIcon_GhostGem, gItemIconPalette_GhostGem}, - [ITEM_DRAGON_GEM] = {gItemIcon_DragonGem, gItemIconPalette_DragonGem}, - [ITEM_DARK_GEM] = {gItemIcon_DarkGem, gItemIconPalette_DarkGem}, - [ITEM_STEEL_GEM] = {gItemIcon_SteelGem, gItemIconPalette_SteelGem}, - [ITEM_FAIRY_GEM] = {gItemIcon_FairyGem, gItemIconPalette_FairyGem}, - // Z-Crystals - [ITEM_NORMALIUM_Z] = {gItemIcon_NormaliumZ, gItemIconPalette_NormaliumZ}, - [ITEM_FIRIUM_Z] = {gItemIcon_FiriumZ, gItemIconPalette_FiriumZ}, - [ITEM_WATERIUM_Z] = {gItemIcon_WateriumZ, gItemIconPalette_WateriumZ}, - [ITEM_ELECTRIUM_Z] = {gItemIcon_ElectriumZ, gItemIconPalette_ElectriumZ}, - [ITEM_GRASSIUM_Z] = {gItemIcon_GrassiumZ, gItemIconPalette_GrassiumZ}, - [ITEM_ICIUM_Z] = {gItemIcon_IciumZ, gItemIconPalette_IciumZ}, - [ITEM_FIGHTINIUM_Z] = {gItemIcon_FightiniumZ, gItemIconPalette_FightiniumZ}, - [ITEM_POISONIUM_Z] = {gItemIcon_PoisoniumZ, gItemIconPalette_PoisoniumZ}, - [ITEM_GROUNDIUM_Z] = {gItemIcon_GroundiumZ, gItemIconPalette_GroundiumZ}, - [ITEM_FLYINIUM_Z] = {gItemIcon_FlyiniumZ, gItemIconPalette_FlyiniumZ}, - [ITEM_PSYCHIUM_Z] = {gItemIcon_PsychiumZ, gItemIconPalette_PsychiumZ}, - [ITEM_BUGINIUM_Z] = {gItemIcon_BuginiumZ, gItemIconPalette_BuginiumZ}, - [ITEM_ROCKIUM_Z] = {gItemIcon_RockiumZ, gItemIconPalette_RockiumZ}, - [ITEM_GHOSTIUM_Z] = {gItemIcon_GhostiumZ, gItemIconPalette_GhostiumZ}, - [ITEM_DRAGONIUM_Z] = {gItemIcon_DragoniumZ, gItemIconPalette_DragoniumZ}, - [ITEM_DARKINIUM_Z] = {gItemIcon_DarkiniumZ, gItemIconPalette_DarkiniumZ}, - [ITEM_STEELIUM_Z] = {gItemIcon_SteeliumZ, gItemIconPalette_SteeliumZ}, - [ITEM_FAIRIUM_Z] = {gItemIcon_FairiumZ, gItemIconPalette_FairiumZ}, - [ITEM_PIKANIUM_Z] = {gItemIcon_PikaniumZ, gItemIconPalette_PikaniumZ}, - [ITEM_EEVIUM_Z] = {gItemIcon_EeviumZ, gItemIconPalette_EeviumZ}, - [ITEM_SNORLIUM_Z] = {gItemIcon_SnorliumZ, gItemIconPalette_SnorliumZ}, - [ITEM_MEWNIUM_Z] = {gItemIcon_MewniumZ, gItemIconPalette_MewniumZ}, - [ITEM_DECIDIUM_Z] = {gItemIcon_DecidiumZ, gItemIconPalette_DecidiumZ}, - [ITEM_INCINIUM_Z] = {gItemIcon_InciniumZ, gItemIconPalette_InciniumZ}, - [ITEM_PRIMARIUM_Z] = {gItemIcon_PrimariumZ, gItemIconPalette_PrimariumZ}, - [ITEM_LYCANIUM_Z] = {gItemIcon_LycaniumZ, gItemIconPalette_LycaniumZ}, - [ITEM_MIMIKIUM_Z] = {gItemIcon_MimikiumZ, gItemIconPalette_MimikiumZ}, - [ITEM_KOMMONIUM_Z] = {gItemIcon_KommoniumZ, gItemIconPalette_KommoniumZ}, - [ITEM_TAPUNIUM_Z] = {gItemIcon_TapuniumZ, gItemIconPalette_TapuniumZ}, - [ITEM_SOLGANIUM_Z] = {gItemIcon_SolganiumZ, gItemIconPalette_SolganiumZ}, - [ITEM_LUNALIUM_Z] = {gItemIcon_LunaliumZ, gItemIconPalette_LunaliumZ}, - [ITEM_MARSHADIUM_Z] = {gItemIcon_MarshadiumZ, gItemIconPalette_MarshadiumZ}, - [ITEM_ALORAICHIUM_Z] = {gItemIcon_AloraichiumZ, gItemIconPalette_AloraichiumZ}, - [ITEM_PIKASHUNIUM_Z] = {gItemIcon_PikashuniumZ, gItemIconPalette_PikashuniumZ}, - [ITEM_ULTRANECROZIUM_Z] = {gItemIcon_UltranecroziumZ, gItemIconPalette_UltranecroziumZ}, - // Species-specific Held Items - [ITEM_LIGHT_BALL] = {gItemIcon_LightBall, gItemIconPalette_LightBall}, - [ITEM_LEEK] = {gItemIcon_Leek, gItemIconPalette_Leek}, - [ITEM_THICK_CLUB] = {gItemIcon_ThickClub, gItemIconPalette_ThickClub}, - [ITEM_LUCKY_PUNCH] = {gItemIcon_LuckyPunch, gItemIconPalette_LuckyPunch}, - [ITEM_METAL_POWDER] = {gItemIcon_MetalPowder, gItemIconPalette_MetalPowder}, - [ITEM_QUICK_POWDER] = {gItemIcon_QuickPowder, gItemIconPalette_QuickPowder}, - [ITEM_DEEP_SEA_SCALE] = {gItemIcon_DeepSeaScale, gItemIconPalette_DeepSeaScale}, - [ITEM_DEEP_SEA_TOOTH] = {gItemIcon_DeepSeaTooth, gItemIconPalette_DeepSeaTooth}, - [ITEM_SOUL_DEW] = {gItemIcon_SoulDew, gItemIconPalette_SoulDew}, - [ITEM_ADAMANT_ORB] = {gItemIcon_AdamantOrb, gItemIconPalette_AdamantOrb}, - [ITEM_LUSTROUS_ORB] = {gItemIcon_LustrousOrb, gItemIconPalette_LustrousOrb}, - [ITEM_GRISEOUS_ORB] = {gItemIcon_GriseousOrb, gItemIconPalette_GriseousOrb}, - // Incenses - [ITEM_SEA_INCENSE] = {gItemIcon_SeaIncense, gItemIconPalette_SeaIncense}, - [ITEM_LAX_INCENSE] = {gItemIcon_LaxIncense, gItemIconPalette_LaxIncense}, - [ITEM_ODD_INCENSE] = {gItemIcon_OddIncense, gItemIconPalette_OddIncense}, - [ITEM_ROCK_INCENSE] = {gItemIcon_RockIncense, gItemIconPalette_RockIncense}, - [ITEM_FULL_INCENSE] = {gItemIcon_FullIncense, gItemIconPalette_FullIncense}, - [ITEM_WAVE_INCENSE] = {gItemIcon_WaveIncense, gItemIconPalette_WaveIncense}, - [ITEM_ROSE_INCENSE] = {gItemIcon_RoseIncense, gItemIconPalette_RoseIncense}, - [ITEM_LUCK_INCENSE] = {gItemIcon_LuckIncense, gItemIconPalette_LuckIncense}, - [ITEM_PURE_INCENSE] = {gItemIcon_PureIncense, gItemIconPalette_PureIncense}, - // Contest Scarves - [ITEM_RED_SCARF] = {gItemIcon_Scarf, gItemIconPalette_RedScarf}, - [ITEM_BLUE_SCARF] = {gItemIcon_Scarf, gItemIconPalette_BlueScarf}, - [ITEM_PINK_SCARF] = {gItemIcon_Scarf, gItemIconPalette_PinkScarf}, - [ITEM_GREEN_SCARF] = {gItemIcon_Scarf, gItemIconPalette_GreenScarf}, - [ITEM_YELLOW_SCARF] = {gItemIcon_Scarf, gItemIconPalette_YellowScarf}, - // EV Gain Modifiers - [ITEM_MACHO_BRACE] = {gItemIcon_MachoBrace, gItemIconPalette_MachoBrace}, - [ITEM_POWER_WEIGHT] = {gItemIcon_PowerWeight, gItemIconPalette_PowerWeight}, - [ITEM_POWER_BRACER] = {gItemIcon_PowerBracer, gItemIconPalette_PowerBracer}, - [ITEM_POWER_BELT] = {gItemIcon_PowerBelt, gItemIconPalette_PowerBelt}, - [ITEM_POWER_LENS] = {gItemIcon_PowerLens, gItemIconPalette_PowerLens}, - [ITEM_POWER_BAND] = {gItemIcon_PowerBand, gItemIconPalette_PowerBand}, - [ITEM_POWER_ANKLET] = {gItemIcon_PowerAnklet, gItemIconPalette_PowerAnklet}, - // Type-boosting Held Items - [ITEM_SILK_SCARF] = {gItemIcon_SilkScarf, gItemIconPalette_SilkScarf}, - [ITEM_CHARCOAL] = {gItemIcon_Charcoal, gItemIconPalette_Charcoal}, - [ITEM_MYSTIC_WATER] = {gItemIcon_MysticWater, gItemIconPalette_MysticWater}, - [ITEM_MAGNET] = {gItemIcon_Magnet, gItemIconPalette_Magnet}, - [ITEM_MIRACLE_SEED] = {gItemIcon_MiracleSeed, gItemIconPalette_MiracleSeed}, - [ITEM_NEVER_MELT_ICE] = {gItemIcon_NeverMeltIce, gItemIconPalette_NeverMeltIce}, - [ITEM_BLACK_BELT] = {gItemIcon_BlackBelt, gItemIconPalette_BlackTypeEnhancingItem}, - [ITEM_POISON_BARB] = {gItemIcon_PoisonBarb, gItemIconPalette_PoisonBarb}, - [ITEM_SOFT_SAND] = {gItemIcon_SoftSand, gItemIconPalette_SoftSand}, - [ITEM_SHARP_BEAK] = {gItemIcon_SharpBeak, gItemIconPalette_SharpBeak}, - [ITEM_TWISTED_SPOON] = {gItemIcon_TwistedSpoon, gItemIconPalette_TwistedSpoon}, - [ITEM_SILVER_POWDER] = {gItemIcon_SilverPowder, gItemIconPalette_SilverPowder}, - [ITEM_HARD_STONE] = {gItemIcon_HardStone, gItemIconPalette_HardStone}, - [ITEM_SPELL_TAG] = {gItemIcon_SpellTag, gItemIconPalette_SpellTag}, - [ITEM_DRAGON_FANG] = {gItemIcon_DragonFang, gItemIconPalette_DragonFang}, - [ITEM_BLACK_GLASSES] = {gItemIcon_BlackGlasses, gItemIconPalette_BlackTypeEnhancingItem}, - [ITEM_METAL_COAT] = {gItemIcon_MetalCoat, gItemIconPalette_MetalCoat}, - // Choice Items - [ITEM_CHOICE_BAND] = {gItemIcon_ChoiceBand, gItemIconPalette_ChoiceBand}, - [ITEM_CHOICE_SPECS] = {gItemIcon_ChoiceSpecs, gItemIconPalette_ChoiceSpecs}, - [ITEM_CHOICE_SCARF] = {gItemIcon_ChoiceScarf, gItemIconPalette_ChoiceScarf}, - // Status Orbs - [ITEM_FLAME_ORB] = {gItemIcon_FlameOrb, gItemIconPalette_FlameOrb}, - [ITEM_TOXIC_ORB] = {gItemIcon_ToxicOrb, gItemIconPalette_ToxicOrb}, - // Weather Rocks - [ITEM_DAMP_ROCK] = {gItemIcon_DampRock, gItemIconPalette_DampRock}, - [ITEM_HEAT_ROCK] = {gItemIcon_HeatRock, gItemIconPalette_HeatRock}, - [ITEM_SMOOTH_ROCK] = {gItemIcon_SmoothRock, gItemIconPalette_SmoothRock}, - [ITEM_ICY_ROCK] = {gItemIcon_IcyRock, gItemIconPalette_IcyRock}, - // Terrain Seeds - [ITEM_ELECTRIC_SEED] = {gItemIcon_ElectricSeed, gItemIconPalette_ElectricSeed}, - [ITEM_PSYCHIC_SEED] = {gItemIcon_PsychicSeed, gItemIconPalette_PsychicSeed}, - [ITEM_MISTY_SEED] = {gItemIcon_MistySeed, gItemIconPalette_MistySeed}, - [ITEM_GRASSY_SEED] = {gItemIcon_GrassySeed, gItemIconPalette_GrassySeed}, - // Type-activated Stat Modifiers - [ITEM_ABSORB_BULB] = {gItemIcon_AbsorbBulb, gItemIconPalette_AbsorbBulb}, - [ITEM_CELL_BATTERY] = {gItemIcon_CellBattery, gItemIconPalette_CellBattery}, - [ITEM_LUMINOUS_MOSS] = {gItemIcon_LuminousMoss, gItemIconPalette_LuminousMoss}, - [ITEM_SNOWBALL] = {gItemIcon_Snowball, gItemIconPalette_Snowball}, - // Misc. Held Items - [ITEM_BRIGHT_POWDER] = {gItemIcon_BrightPowder, gItemIconPalette_BrightPowder}, - [ITEM_WHITE_HERB] = {gItemIcon_InBattleHerb, gItemIconPalette_WhiteHerb}, - [ITEM_EXP_SHARE] = {gItemIcon_ExpShare, gItemIconPalette_ExpShare}, - [ITEM_QUICK_CLAW] = {gItemIcon_QuickClaw, gItemIconPalette_QuickClaw}, - [ITEM_SOOTHE_BELL] = {gItemIcon_SootheBell, gItemIconPalette_SootheBell}, - [ITEM_MENTAL_HERB] = {gItemIcon_InBattleHerb, gItemIconPalette_MentalHerb}, - [ITEM_KINGS_ROCK] = {gItemIcon_KingsRock, gItemIconPalette_KingsRock}, - [ITEM_AMULET_COIN] = {gItemIcon_AmuletCoin, gItemIconPalette_AmuletCoin}, - [ITEM_CLEANSE_TAG] = {gItemIcon_CleanseTag, gItemIconPalette_CleanseTag}, - [ITEM_SMOKE_BALL] = {gItemIcon_SmokeBall, gItemIconPalette_SmokeBall}, - [ITEM_FOCUS_BAND] = {gItemIcon_FocusBand, gItemIconPalette_FocusBand}, - [ITEM_LUCKY_EGG] = {gItemIcon_LuckyEgg, gItemIconPalette_LuckyEgg}, - [ITEM_SCOPE_LENS] = {gItemIcon_ScopeLens, gItemIconPalette_ScopeLens}, - [ITEM_LEFTOVERS] = {gItemIcon_Leftovers, gItemIconPalette_Leftovers}, - [ITEM_SHELL_BELL] = {gItemIcon_ShellBell, gItemIconPalette_Shell}, - [ITEM_WIDE_LENS] = {gItemIcon_WideLens, gItemIconPalette_WideLens}, - [ITEM_MUSCLE_BAND] = {gItemIcon_MuscleBand, gItemIconPalette_MuscleBand}, - [ITEM_WISE_GLASSES] = {gItemIcon_WiseGlasses, gItemIconPalette_WiseGlasses}, - [ITEM_EXPERT_BELT] = {gItemIcon_ExpertBelt, gItemIconPalette_ExpertBelt}, - [ITEM_LIGHT_CLAY] = {gItemIcon_LightClay, gItemIconPalette_LightClay}, - [ITEM_LIFE_ORB] = {gItemIcon_LifeOrb, gItemIconPalette_LifeOrb}, - [ITEM_POWER_HERB] = {gItemIcon_PowerHerb, gItemIconPalette_PowerHerb}, - [ITEM_FOCUS_SASH] = {gItemIcon_FocusSash, gItemIconPalette_FocusSash}, - [ITEM_ZOOM_LENS] = {gItemIcon_ZoomLens, gItemIconPalette_ZoomLens}, - [ITEM_METRONOME] = {gItemIcon_Metronome, gItemIconPalette_Metronome}, - [ITEM_IRON_BALL] = {gItemIcon_IronBall, gItemIconPalette_IronBall}, - [ITEM_LAGGING_TAIL] = {gItemIcon_LaggingTail, gItemIconPalette_LaggingTail}, - [ITEM_DESTINY_KNOT] = {gItemIcon_DestinyKnot, gItemIconPalette_DestinyKnot}, - [ITEM_BLACK_SLUDGE] = {gItemIcon_BlackSludge, gItemIconPalette_BlackSludge}, - [ITEM_GRIP_CLAW] = {gItemIcon_GripClaw, gItemIconPalette_GripClaw}, - [ITEM_STICKY_BARB] = {gItemIcon_StickyBarb, gItemIconPalette_StickyBarb}, - [ITEM_SHED_SHELL] = {gItemIcon_ShedShell, gItemIconPalette_ShedShell}, - [ITEM_BIG_ROOT] = {gItemIcon_BigRoot, gItemIconPalette_BigRoot}, - [ITEM_RAZOR_CLAW] = {gItemIcon_RazorClaw, gItemIconPalette_RazorClaw}, - [ITEM_RAZOR_FANG] = {gItemIcon_RazorFang, gItemIconPalette_RazorFang}, - [ITEM_EVIOLITE] = {gItemIcon_Eviolite, gItemIconPalette_Eviolite}, - [ITEM_FLOAT_STONE] = {gItemIcon_FloatStone, gItemIconPalette_FloatStone}, - [ITEM_ROCKY_HELMET] = {gItemIcon_RockyHelmet, gItemIconPalette_RockyHelmet}, - [ITEM_AIR_BALLOON] = {gItemIcon_AirBalloon, gItemIconPalette_AirBalloon}, - [ITEM_RED_CARD] = {gItemIcon_RedCard, gItemIconPalette_RedCard}, - [ITEM_RING_TARGET] = {gItemIcon_RingTarget, gItemIconPalette_RingTarget}, - [ITEM_BINDING_BAND] = {gItemIcon_BindingBand, gItemIconPalette_BindingBand}, - [ITEM_EJECT_BUTTON] = {gItemIcon_EjectButton, gItemIconPalette_EjectButton}, - [ITEM_WEAKNESS_POLICY] = {gItemIcon_WeaknessPolicy, gItemIconPalette_WeaknessPolicy}, - [ITEM_ASSAULT_VEST] = {gItemIcon_AssaultVest, gItemIconPalette_AssaultVest}, - [ITEM_SAFETY_GOGGLES] = {gItemIcon_SafetyGoggles, gItemIconPalette_SafetyGoggles}, - [ITEM_ADRENALINE_ORB] = {gItemIcon_AdrenalineOrb, gItemIconPalette_AdrenalineOrb}, - [ITEM_TERRAIN_EXTENDER] = {gItemIcon_TerrainExtender, gItemIconPalette_TerrainExtender}, - [ITEM_PROTECTIVE_PADS] = {gItemIcon_ProtectivePads, gItemIconPalette_ProtectivePads}, - [ITEM_THROAT_SPRAY] = {gItemIcon_ThroatSpray, gItemIconPalette_ThroatSpray}, - [ITEM_EJECT_PACK] = {gItemIcon_EjectPack, gItemIconPalette_EjectPack}, - [ITEM_HEAVY_DUTY_BOOTS] = {gItemIcon_HeavyDutyBoots, gItemIconPalette_HeavyDutyBoots}, - [ITEM_BLUNDER_POLICY] = {gItemIcon_BlunderPolicy, gItemIconPalette_BlunderPolicy}, - [ITEM_ROOM_SERVICE] = {gItemIcon_RoomService, gItemIconPalette_RoomService}, - [ITEM_UTILITY_UMBRELLA] = {gItemIcon_UtilityUmbrella, gItemIconPalette_UtilityUmbrella}, - // Berries - [ITEM_CHERI_BERRY] = {gItemIcon_CheriBerry, gItemIconPalette_CheriBerry}, - [ITEM_CHESTO_BERRY] = {gItemIcon_ChestoBerry, gItemIconPalette_ChestoBerry}, - [ITEM_PECHA_BERRY] = {gItemIcon_PechaBerry, gItemIconPalette_PechaBerry}, - [ITEM_RAWST_BERRY] = {gItemIcon_RawstBerry, gItemIconPalette_RawstBerry}, - [ITEM_ASPEAR_BERRY] = {gItemIcon_AspearBerry, gItemIconPalette_AspearBerry}, - [ITEM_LEPPA_BERRY] = {gItemIcon_LeppaBerry, gItemIconPalette_LeppaBerry}, - [ITEM_ORAN_BERRY] = {gItemIcon_OranBerry, gItemIconPalette_OranBerry}, - [ITEM_PERSIM_BERRY] = {gItemIcon_PersimBerry, gItemIconPalette_PersimBerry}, - [ITEM_LUM_BERRY] = {gItemIcon_LumBerry, gItemIconPalette_LumBerry}, - [ITEM_SITRUS_BERRY] = {gItemIcon_SitrusBerry, gItemIconPalette_SitrusBerry}, - [ITEM_FIGY_BERRY] = {gItemIcon_FigyBerry, gItemIconPalette_FigyBerry}, - [ITEM_WIKI_BERRY] = {gItemIcon_WikiBerry, gItemIconPalette_WikiBerry}, - [ITEM_MAGO_BERRY] = {gItemIcon_MagoBerry, gItemIconPalette_MagoBerry}, - [ITEM_AGUAV_BERRY] = {gItemIcon_AguavBerry, gItemIconPalette_AguavBerry}, - [ITEM_IAPAPA_BERRY] = {gItemIcon_IapapaBerry, gItemIconPalette_IapapaBerry}, - [ITEM_RAZZ_BERRY] = {gItemIcon_RazzBerry, gItemIconPalette_RazzBerry}, - [ITEM_BLUK_BERRY] = {gItemIcon_BlukBerry, gItemIconPalette_BlukBerry}, - [ITEM_NANAB_BERRY] = {gItemIcon_NanabBerry, gItemIconPalette_NanabBerry}, - [ITEM_WEPEAR_BERRY] = {gItemIcon_WepearBerry, gItemIconPalette_WepearBerry}, - [ITEM_PINAP_BERRY] = {gItemIcon_PinapBerry, gItemIconPalette_PinapBerry}, - [ITEM_POMEG_BERRY] = {gItemIcon_PomegBerry, gItemIconPalette_PomegBerry}, - [ITEM_KELPSY_BERRY] = {gItemIcon_KelpsyBerry, gItemIconPalette_KelpsyBerry}, - [ITEM_QUALOT_BERRY] = {gItemIcon_QualotBerry, gItemIconPalette_QualotBerry}, - [ITEM_HONDEW_BERRY] = {gItemIcon_HondewBerry, gItemIconPalette_HondewBerry}, - [ITEM_GREPA_BERRY] = {gItemIcon_GrepaBerry, gItemIconPalette_GrepaBerry}, - [ITEM_TAMATO_BERRY] = {gItemIcon_TamatoBerry, gItemIconPalette_TamatoBerry}, - [ITEM_CORNN_BERRY] = {gItemIcon_CornnBerry, gItemIconPalette_CornnBerry}, - [ITEM_MAGOST_BERRY] = {gItemIcon_MagostBerry, gItemIconPalette_MagostBerry}, - [ITEM_RABUTA_BERRY] = {gItemIcon_RabutaBerry, gItemIconPalette_RabutaBerry}, - [ITEM_NOMEL_BERRY] = {gItemIcon_NomelBerry, gItemIconPalette_NomelBerry}, - [ITEM_SPELON_BERRY] = {gItemIcon_SpelonBerry, gItemIconPalette_SpelonBerry}, - [ITEM_PAMTRE_BERRY] = {gItemIcon_PamtreBerry, gItemIconPalette_PamtreBerry}, - [ITEM_WATMEL_BERRY] = {gItemIcon_WatmelBerry, gItemIconPalette_WatmelBerry}, - [ITEM_DURIN_BERRY] = {gItemIcon_DurinBerry, gItemIconPalette_DurinBerry}, - [ITEM_BELUE_BERRY] = {gItemIcon_BelueBerry, gItemIconPalette_BelueBerry}, - [ITEM_CHILAN_BERRY] = {gItemIcon_ChilanBerry, gItemIconPalette_ChilanBerry}, - [ITEM_OCCA_BERRY] = {gItemIcon_OccaBerry, gItemIconPalette_OccaBerry}, - [ITEM_PASSHO_BERRY] = {gItemIcon_PasshoBerry, gItemIconPalette_PasshoBerry}, - [ITEM_WACAN_BERRY] = {gItemIcon_WacanBerry, gItemIconPalette_WacanBerry}, - [ITEM_RINDO_BERRY] = {gItemIcon_RindoBerry, gItemIconPalette_RindoBerry}, - [ITEM_YACHE_BERRY] = {gItemIcon_YacheBerry, gItemIconPalette_YacheBerry}, - [ITEM_CHOPLE_BERRY] = {gItemIcon_ChopleBerry, gItemIconPalette_ChopleBerry}, - [ITEM_KEBIA_BERRY] = {gItemIcon_KebiaBerry, gItemIconPalette_KebiaBerry}, - [ITEM_SHUCA_BERRY] = {gItemIcon_ShucaBerry, gItemIconPalette_ShucaBerry}, - [ITEM_COBA_BERRY] = {gItemIcon_CobaBerry, gItemIconPalette_CobaBerry}, - [ITEM_PAYAPA_BERRY] = {gItemIcon_PayapaBerry, gItemIconPalette_PayapaBerry}, - [ITEM_TANGA_BERRY] = {gItemIcon_TangaBerry, gItemIconPalette_TangaBerry}, - [ITEM_CHARTI_BERRY] = {gItemIcon_ChartiBerry, gItemIconPalette_ChartiBerry}, - [ITEM_KASIB_BERRY] = {gItemIcon_KasibBerry, gItemIconPalette_KasibBerry}, - [ITEM_HABAN_BERRY] = {gItemIcon_HabanBerry, gItemIconPalette_HabanBerry}, - [ITEM_COLBUR_BERRY] = {gItemIcon_ColburBerry, gItemIconPalette_ColburBerry}, - [ITEM_BABIRI_BERRY] = {gItemIcon_BabiriBerry, gItemIconPalette_BabiriBerry}, - [ITEM_ROSELI_BERRY] = {gItemIcon_RoseliBerry, gItemIconPalette_RoseliBerry}, - [ITEM_LIECHI_BERRY] = {gItemIcon_LiechiBerry, gItemIconPalette_LiechiBerry}, - [ITEM_GANLON_BERRY] = {gItemIcon_GanlonBerry, gItemIconPalette_GanlonBerry}, - [ITEM_SALAC_BERRY] = {gItemIcon_SalacBerry, gItemIconPalette_SalacBerry}, - [ITEM_PETAYA_BERRY] = {gItemIcon_PetayaBerry, gItemIconPalette_PetayaBerry}, - [ITEM_APICOT_BERRY] = {gItemIcon_ApicotBerry, gItemIconPalette_ApicotBerry}, - [ITEM_LANSAT_BERRY] = {gItemIcon_LansatBerry, gItemIconPalette_LansatBerry}, - [ITEM_STARF_BERRY] = {gItemIcon_StarfBerry, gItemIconPalette_StarfBerry}, - [ITEM_ENIGMA_BERRY] = {gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry}, - [ITEM_MICLE_BERRY] = {gItemIcon_MicleBerry, gItemIconPalette_MicleBerry}, - [ITEM_CUSTAP_BERRY] = {gItemIcon_CustapBerry, gItemIconPalette_CustapBerry}, - [ITEM_JABOCA_BERRY] = {gItemIcon_JabocaBerry, gItemIconPalette_JabocaBerry}, - [ITEM_ROWAP_BERRY] = {gItemIcon_RowapBerry, gItemIconPalette_RowapBerry}, - [ITEM_KEE_BERRY] = {gItemIcon_KeeBerry, gItemIconPalette_KeeBerry}, - [ITEM_MARANGA_BERRY] = {gItemIcon_MarangaBerry, gItemIconPalette_MarangaBerry}, - [ITEM_ENIGMA_BERRY_E_READER] = {gItemIcon_EnigmaBerry, gItemIconPalette_EnigmaBerry}, - // TMs/HMs - [ITEM_TM01] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM02] = {gItemIcon_TM, gItemIconPalette_DragonTMHM}, - [ITEM_TM03] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, - [ITEM_TM04] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM05] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM06] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, - [ITEM_TM07] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM08] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM09] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM10] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM11] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM12] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM13] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM14] = {gItemIcon_TM, gItemIconPalette_IceTMHM}, - [ITEM_TM15] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM16] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM17] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM18] = {gItemIcon_TM, gItemIconPalette_WaterTMHM}, - [ITEM_TM19] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM20] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM21] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM22] = {gItemIcon_TM, gItemIconPalette_GrassTMHM}, - [ITEM_TM23] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, - [ITEM_TM24] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM25] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM26] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, - [ITEM_TM27] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM28] = {gItemIcon_TM, gItemIconPalette_GroundTMHM}, - [ITEM_TM29] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM30] = {gItemIcon_TM, gItemIconPalette_GhostTMHM}, - [ITEM_TM31] = {gItemIcon_TM, gItemIconPalette_FightingTMHM}, - [ITEM_TM32] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM33] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM34] = {gItemIcon_TM, gItemIconPalette_ElectricTMHM}, - [ITEM_TM35] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM36] = {gItemIcon_TM, gItemIconPalette_PoisonTMHM}, - [ITEM_TM37] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, - [ITEM_TM38] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM39] = {gItemIcon_TM, gItemIconPalette_RockTMHM}, - [ITEM_TM40] = {gItemIcon_TM, gItemIconPalette_FlyingTMHM}, - [ITEM_TM41] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM42] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM43] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM44] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM45] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, - [ITEM_TM46] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM47] = {gItemIcon_TM, gItemIconPalette_SteelTMHM}, - [ITEM_TM48] = {gItemIcon_TM, gItemIconPalette_PsychicTMHM}, - [ITEM_TM49] = {gItemIcon_TM, gItemIconPalette_DarkTMHM}, - [ITEM_TM50] = {gItemIcon_TM, gItemIconPalette_FireTMHM}, - [ITEM_TM51] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM52] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM53] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM54] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM55] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM56] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM57] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM58] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM59] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM60] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM61] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM62] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM63] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM64] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM65] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM66] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM67] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM68] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM69] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM70] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM71] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM72] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM73] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM74] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM75] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM76] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM77] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM78] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM79] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM80] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM81] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM82] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM83] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM84] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM85] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM86] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM87] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM88] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM89] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM90] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM91] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM92] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM93] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM94] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM95] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM96] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM97] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM98] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM99] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_TM100] = {gItemIcon_TM, gItemIconPalette_NormalTMHM}, // Todo - [ITEM_HM01] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM02] = {gItemIcon_HM, gItemIconPalette_FlyingTMHM}, - [ITEM_HM03] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, - [ITEM_HM04] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM05] = {gItemIcon_HM, gItemIconPalette_NormalTMHM}, - [ITEM_HM06] = {gItemIcon_HM, gItemIconPalette_FightingTMHM}, - [ITEM_HM07] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, - [ITEM_HM08] = {gItemIcon_HM, gItemIconPalette_WaterTMHM}, - // Charms - [ITEM_OVAL_CHARM] = {gItemIcon_OvalCharm, gItemIconPalette_OvalCharm}, - [ITEM_SHINY_CHARM] = {gItemIcon_ShinyCharm, gItemIconPalette_ShinyCharm}, - [ITEM_CATCHING_CHARM] = {gItemIcon_CatchingCharm, gItemIconPalette_CatchingCharm}, - [ITEM_EXP_CHARM] = {gItemIcon_ExpCharm, gItemIconPalette_ExpCharm}, - // Form-changing Key Items - [ITEM_ROTOM_CATALOG] = {gItemIcon_RotomCatalog, gItemIconPalette_RotomCatalog}, - [ITEM_GRACIDEA] = {gItemIcon_Gracidea, gItemIconPalette_Gracidea}, - [ITEM_REVEAL_GLASS] = {gItemIcon_RevealGlass, gItemIconPalette_RevealGlass}, - [ITEM_DNA_SPLICERS] = {gItemIcon_DNASplicers, gItemIconPalette_DNASplicers}, - [ITEM_ZYGARDE_CUBE] = {gItemIcon_ZygardeCube, gItemIconPalette_ZygardeCube}, - [ITEM_PRISON_BOTTLE] = {gItemIcon_PrisonBottle, gItemIconPalette_PrisonBottle}, - [ITEM_N_SOLARIZER] = {gItemIcon_NecrozmaFuser, gItemIconPalette_NSolarizer}, - [ITEM_N_LUNARIZER] = {gItemIcon_NecrozmaFuser, gItemIconPalette_NLunarizer}, - [ITEM_REINS_OF_UNITY] = {gItemIcon_ReinsOfUnity, gItemIconPalette_ReinsOfUnity}, - // Battle Mechanic Key Items - [ITEM_MEGA_RING] = {gItemIcon_MegaRing, gItemIconPalette_MegaRing}, - [ITEM_Z_POWER_RING] = {gItemIcon_ZPowerRing, gItemIconPalette_ZPowerRing}, - [ITEM_DYNAMAX_BAND] = {gItemIcon_DynamaxBand, gItemIconPalette_DynamaxBand}, - // Misc. Key Items - [ITEM_BICYCLE] = {gItemIcon_Bicycle, gItemIconPalette_Bicycle}, - [ITEM_MACH_BIKE] = {gItemIcon_MachBike, gItemIconPalette_MachBike}, - [ITEM_ACRO_BIKE] = {gItemIcon_AcroBike, gItemIconPalette_AcroBike}, - [ITEM_OLD_ROD] = {gItemIcon_OldRod, gItemIconPalette_OldRod}, - [ITEM_GOOD_ROD] = {gItemIcon_GoodRod, gItemIconPalette_GoodRod}, - [ITEM_SUPER_ROD] = {gItemIcon_SuperRod, gItemIconPalette_SuperRod}, - [ITEM_DOWSING_MACHINE] = {gItemIcon_DowsingMachine, gItemIconPalette_DowsingMachine}, - [ITEM_TOWN_MAP] = {gItemIcon_TownMap, gItemIconPalette_TownMap}, - [ITEM_VS_SEEKER] = {gItemIcon_VsSeeker, gItemIconPalette_VsSeeker}, - [ITEM_TM_CASE] = {gItemIcon_TMCase, gItemIconPalette_TMCase}, - [ITEM_BERRY_POUCH] = {gItemIcon_BerryPouch, gItemIconPalette_BerryPouch}, - [ITEM_POKEMON_BOX_LINK] = {gItemIcon_PokemonBoxLink, gItemIconPalette_PokemonBoxLink}, - [ITEM_COIN_CASE] = {gItemIcon_CoinCase, gItemIconPalette_CoinCase}, - [ITEM_POWDER_JAR] = {gItemIcon_PowderJar, gItemIconPalette_PowderJar}, - [ITEM_WAILMER_PAIL] = {gItemIcon_WailmerPail, gItemIconPalette_WailmerPail}, - [ITEM_POKE_RADAR] = {gItemIcon_PokeRadar, gItemIconPalette_PokeRadar}, - [ITEM_POKEBLOCK_CASE] = {gItemIcon_PokeblockCase, gItemIconPalette_PokeblockCase}, - [ITEM_SOOT_SACK] = {gItemIcon_SootSack, gItemIconPalette_SootSack}, - [ITEM_POKE_FLUTE] = {gItemIcon_PokeFlute, gItemIconPalette_PokeFlute}, - [ITEM_FAME_CHECKER] = {gItemIcon_FameChecker, gItemIconPalette_FameChecker}, - [ITEM_TEACHY_TV] = {gItemIcon_TeachyTV, gItemIconPalette_TeachyTV}, - // Story Key Items - [ITEM_SS_TICKET] = {gItemIcon_SSTicket, gItemIconPalette_SSTicket}, - [ITEM_EON_TICKET] = {gItemIcon_EonTicket, gItemIconPalette_EonTicket}, - [ITEM_MYSTIC_TICKET] = {gItemIcon_MysticTicket, gItemIconPalette_MysticTicket}, - [ITEM_AURORA_TICKET] = {gItemIcon_AuroraTicket, gItemIconPalette_AuroraTicket}, - [ITEM_OLD_SEA_MAP] = {gItemIcon_OldSeaMap, gItemIconPalette_OldSeaMap}, - [ITEM_LETTER] = {gItemIcon_Letter, gItemIconPalette_LavaCookieAndLetter}, - [ITEM_DEVON_PARTS] = {gItemIcon_DevonParts, gItemIconPalette_DevonParts}, - [ITEM_GO_GOGGLES] = {gItemIcon_GoGoggles, gItemIconPalette_GoGoggles}, - [ITEM_DEVON_SCOPE] = {gItemIcon_DevonScope, gItemIconPalette_DevonScope}, - [ITEM_BASEMENT_KEY] = {gItemIcon_BasementKey, gItemIconPalette_OldKey}, - [ITEM_SCANNER] = {gItemIcon_Scanner, gItemIconPalette_Scanner}, - [ITEM_STORAGE_KEY] = {gItemIcon_StorageKey, gItemIconPalette_OldKey}, - [ITEM_KEY_TO_ROOM_1] = {gItemIcon_KeyToRoom1, gItemIconPalette_Key}, - [ITEM_KEY_TO_ROOM_2] = {gItemIcon_KeyToRoom2, gItemIconPalette_Key}, - [ITEM_KEY_TO_ROOM_4] = {gItemIcon_KeyToRoom4, gItemIconPalette_Key}, - [ITEM_KEY_TO_ROOM_6] = {gItemIcon_KeyToRoom6, gItemIconPalette_Key}, - [ITEM_METEORITE] = {gItemIcon_Meteorite, gItemIconPalette_Meteorite}, - [ITEM_MAGMA_EMBLEM] = {gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem}, - [ITEM_CONTEST_PASS] = {gItemIcon_ContestPass, gItemIconPalette_ContestPass}, - [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}, - [ITEM_CARD_KEY] = {gItemIcon_CardKey, gItemIconPalette_CardKey}, - [ITEM_LIFT_KEY] = {gItemIcon_LiftKey, gItemIconPalette_Key}, - [ITEM_SILPH_SCOPE] = {gItemIcon_SilphScope, gItemIconPalette_SilphScope}, - [ITEM_TRI_PASS] = {gItemIcon_TriPass, gItemIconPalette_TriPass}, - [ITEM_RAINBOW_PASS] = {gItemIcon_RainbowPass, gItemIconPalette_RainbowPass}, - [ITEM_TEA] = {gItemIcon_Tea, gItemIconPalette_Tea}, - [ITEM_RUBY] = {gItemIcon_Gem, gItemIconPalette_Ruby}, - [ITEM_SAPPHIRE] = {gItemIcon_Gem, gItemIconPalette_Sapphire}, - [ITEM_ABILITY_SHIELD] = {gItemIcon_AbilityShield, gItemIconPalette_AbilityShield}, - [ITEM_CLEAR_AMULET] = {gItemIcon_ClearAmulet, gItemIconPalette_ClearAmulet}, - [ITEM_PUNCHING_GLOVE] = {gItemIcon_PunchingGlove, gItemIconPalette_PunchingGlove}, - [ITEM_COVERT_CLOAK] = {gItemIcon_CovertCloak, gItemIconPalette_CovertCloak}, - [ITEM_LOADED_DICE] = {gItemIcon_LoadedDice, gItemIconPalette_LoadedDice}, - [ITEM_AUSPICIOUS_ARMOR] = {gItemIcon_AuspiciousArmor, gItemIconPalette_AuspiciousArmor}, - [ITEM_BOOSTER_ENERGY] = {gItemIcon_BoosterEnergy, gItemIconPalette_BoosterEnergy}, - [ITEM_BIG_BAMBOO_SHOOT] = {gItemIcon_BigBambooShoot, gItemIconPalette_BigBambooShoot}, - [ITEM_GIMMIGHOUL_COIN] = {gItemIcon_GimmighoulCoin, gItemIconPalette_GimmighoulCoin}, - [ITEM_LEADERS_CREST] = {gItemIcon_LeadersCrest, gItemIconPalette_LeadersCrest}, - [ITEM_MALICIOUS_ARMOR] = {gItemIcon_MaliciousArmor, gItemIconPalette_MaliciousArmor}, - [ITEM_MIRROR_HERB] = {gItemIcon_MirrorHerb, gItemIconPalette_MirrorHerb}, - [ITEM_SCROLL_OF_DARKNESS] = {gItemIcon_ScrollOfDarkness, gItemIconPalette_ScrollOfDarkness}, - [ITEM_SCROLL_OF_WATERS] = {gItemIcon_ScrollOfWaters, gItemIconPalette_ScrollOfWaters}, - [ITEM_TERA_ORB] = {gItemIcon_TeraOrb, gItemIconPalette_TeraOrb}, - [ITEM_TINY_BAMBOO_SHOOT] = {gItemIcon_TinyBambooShoot, gItemIconPalette_TinyBambooShoot}, - [ITEM_BUG_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_BugTeraShard}, - [ITEM_DARK_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_DarkTeraShard}, - [ITEM_DRAGON_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_DragonTeraShard}, - [ITEM_ELECTRIC_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_ElectricTeraShard}, - [ITEM_FAIRY_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_FairyTeraShard}, - [ITEM_FIGHTING_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_FightingTeraShard}, - [ITEM_FIRE_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_FireTeraShard}, - [ITEM_FLYING_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_FlyingTeraShard}, - [ITEM_GHOST_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_GhostTeraShard}, - [ITEM_GRASS_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_GrassTeraShard}, - [ITEM_GROUND_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_GroundTeraShard}, - [ITEM_ICE_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_IceTeraShard}, - [ITEM_NORMAL_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_NormalTeraShard}, - [ITEM_POISON_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_PoisonTeraShard}, - [ITEM_PSYCHIC_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_PsychicTeraShard}, - [ITEM_ROCK_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_RockTeraShard}, - [ITEM_STEEL_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_SteelTeraShard}, - [ITEM_WATER_TERA_SHARD] = {gItemIcon_TeraShard, gItemIconPalette_WaterTeraShard}, - [ITEM_ADAMANT_CRYSTAL] = {gItemIcon_AdamantCrystal, gItemIconPalette_AdamantCrystal}, - [ITEM_GRISEOUS_CORE] = {gItemIcon_GriseousCore, gItemIconPalette_GriseousCore}, - [ITEM_LUSTROUS_GLOBE] = {gItemIcon_LustrousGlobe, gItemIconPalette_LustrousGlobe}, - [ITEM_BLACK_AUGURITE] = {gItemIcon_BlackAugurite, gItemIconPalette_BlackAugurite}, - [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}, - [ITEM_METAL_ALLOY] = {gItemIcon_MetalAlloy, gItemIconPalette_MetalAlloy}, - [ITEM_STELLAR_TERA_SHARD] = {gItemIcon_StellarTeraShard, gItemIconPalette_StellarTeraShard}, - [ITEM_JUBILIFE_MUFFIN] = {gItemIcon_JubilifeMuffin, gItemIconPalette_JubilifeMuffin}, - [ITEM_REMEDY] = {gItemIcon_Remedy, gItemIconPalette_Remedy}, - [ITEM_FINE_REMEDY] = {gItemIcon_FineRemedy, gItemIconPalette_FineRemedy}, - [ITEM_SUPERB_REMEDY] = {gItemIcon_SuperbRemedy, gItemIconPalette_SuperbRemedy}, - [ITEM_AUX_EVASION] = {gItemIcon_AuxBottle, gItemIconPalette_AuxEvasion}, - [ITEM_AUX_GUARD] = {gItemIcon_AuxBottle, gItemIconPalette_AuxGuard}, - [ITEM_AUX_POWER] = {gItemIcon_AuxBottle, gItemIconPalette_AuxPower}, - [ITEM_AUX_POWERGUARD] = {gItemIcon_AuxPowerguard, gItemIconPalette_AuxPowerguard}, - [ITEM_CHOICE_DUMPLING] = {gItemIcon_ChoiceDumpling, gItemIconPalette_ChoiceDumpling}, - [ITEM_SWAP_SNACK] = {gItemIcon_SwapSnack, gItemIconPalette_SwapSnack}, - [ITEM_TWICE_SPICED_RADISH] = {gItemIcon_TwiceSpicedRadish, gItemIconPalette_TwiceSpicedRadish}, - [ITEM_POKESHI_DOLL] = {gItemIcon_PokeshiDoll, gItemIconPalette_PokeshiDoll}, - // Return to field arrow - [ITEMS_COUNT] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow}, -}; + diff --git a/src/data/items.h b/src/data/items.h index 27103202a21a..daf1f9b95708 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1,4 +1,8 @@ -#include "constants/moves.h" +#if I_EXPANDED_ITEM_NAMES == TRUE +#define HANDLE_EXPANDED_ITEM_NAME(_name, ...) _(DEFAULT(_name, __VA_ARGS__)) +#else +#define HANDLE_EXPANDED_ITEM_NAME(_name, ...) _(_name) +#endif #if I_USE_EVO_HELD_ITEMS_FROM_BAG == TRUE #define EVO_HELD_ITEM_TYPE ITEM_USE_PARTY_MENU @@ -150,6 +154,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_QuestionMark, + .iconPalette = gItemIconPalette_QuestionMark, }, // Poké Balls @@ -166,6 +172,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_POKE_BALL - FIRST_BALL, + .iconPic = gItemIcon_PokeBall, + .iconPalette = gItemIconPalette_PokeBall, }, [ITEM_GREAT_BALL] = @@ -180,6 +188,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_GREAT_BALL - FIRST_BALL, + .iconPic = gItemIcon_GreatBall, + .iconPalette = gItemIconPalette_GreatBall, }, [ITEM_ULTRA_BALL] = @@ -194,6 +204,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_ULTRA_BALL - FIRST_BALL, + .iconPic = gItemIcon_UltraBall, + .iconPalette = gItemIconPalette_UltraBall, }, [ITEM_MASTER_BALL] = @@ -208,6 +220,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_MASTER_BALL - FIRST_BALL, + .iconPic = gItemIcon_MasterBall, + .iconPalette = gItemIconPalette_MasterBall, }, [ITEM_PREMIER_BALL] = @@ -222,6 +236,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_PREMIER_BALL - FIRST_BALL, + .iconPic = gItemIcon_PremierBall, + .iconPalette = gItemIconPalette_LuxuryBall, }, [ITEM_HEAL_BALL] = @@ -236,6 +252,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_HEAL_BALL - FIRST_BALL, + .iconPic = gItemIcon_HealBall, + .iconPalette = gItemIconPalette_HealBall, }, [ITEM_NET_BALL] = @@ -250,6 +268,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_NET_BALL - FIRST_BALL, + .iconPic = gItemIcon_NetBall, + .iconPalette = gItemIconPalette_NetBall, }, [ITEM_NEST_BALL] = @@ -264,6 +284,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_NEST_BALL - FIRST_BALL, + .iconPic = gItemIcon_NestBall, + .iconPalette = gItemIconPalette_NestBall, }, [ITEM_DIVE_BALL] = @@ -278,6 +300,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DIVE_BALL - FIRST_BALL, + .iconPic = gItemIcon_DiveBall, + .iconPalette = gItemIconPalette_DiveBall, }, [ITEM_DUSK_BALL] = @@ -292,6 +316,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DUSK_BALL - FIRST_BALL, + .iconPic = gItemIcon_DuskBall, + .iconPalette = gItemIconPalette_DuskBall, }, [ITEM_TIMER_BALL] = @@ -306,6 +332,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_TIMER_BALL - FIRST_BALL, + .iconPic = gItemIcon_TimerBall, + .iconPalette = gItemIconPalette_RepeatBall, }, [ITEM_QUICK_BALL] = @@ -320,6 +348,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_QUICK_BALL - FIRST_BALL, + .iconPic = gItemIcon_QuickBall, + .iconPalette = gItemIconPalette_QuickBall, }, [ITEM_REPEAT_BALL] = @@ -334,6 +364,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_REPEAT_BALL - FIRST_BALL, + .iconPic = gItemIcon_RepeatBall, + .iconPalette = gItemIconPalette_RepeatBall, }, [ITEM_LUXURY_BALL] = @@ -348,6 +380,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LUXURY_BALL - FIRST_BALL, + .iconPic = gItemIcon_LuxuryBall, + .iconPalette = gItemIconPalette_LuxuryBall, }, [ITEM_LEVEL_BALL] = @@ -362,6 +396,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LEVEL_BALL - FIRST_BALL, + .iconPic = gItemIcon_LevelBall, + .iconPalette = gItemIconPalette_LevelBall, }, [ITEM_LURE_BALL] = @@ -376,6 +412,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LURE_BALL - FIRST_BALL, + .iconPic = gItemIcon_LureBall, + .iconPalette = gItemIconPalette_LureBall, }, [ITEM_MOON_BALL] = @@ -390,6 +428,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_MOON_BALL - FIRST_BALL, + .iconPic = gItemIcon_MoonBall, + .iconPalette = gItemIconPalette_MoonBall, }, [ITEM_FRIEND_BALL] = @@ -404,6 +444,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_FRIEND_BALL - FIRST_BALL, + .iconPic = gItemIcon_FriendBall, + .iconPalette = gItemIconPalette_FriendBall, }, [ITEM_LOVE_BALL] = @@ -418,6 +460,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_LOVE_BALL - FIRST_BALL, + .iconPic = gItemIcon_LoveBall, + .iconPalette = gItemIconPalette_LoveBall, }, [ITEM_FAST_BALL] = @@ -432,6 +476,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_FAST_BALL - FIRST_BALL, + .iconPic = gItemIcon_FastBall, + .iconPalette = gItemIconPalette_FastBall, }, [ITEM_HEAVY_BALL] = @@ -446,6 +492,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_HEAVY_BALL - FIRST_BALL, + .iconPic = gItemIcon_HeavyBall, + .iconPalette = gItemIconPalette_HeavyBall, }, [ITEM_DREAM_BALL] = @@ -465,6 +513,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_DREAM_BALL - FIRST_BALL, + .iconPic = gItemIcon_DreamBall, + .iconPalette = gItemIconPalette_DreamBall, }, [ITEM_SAFARI_BALL] = @@ -479,6 +529,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_SAFARI_BALL - FIRST_BALL, + .iconPic = gItemIcon_SafariBall, + .iconPalette = gItemIconPalette_SafariBall, }, [ITEM_SPORT_BALL] = @@ -493,6 +545,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_SPORT_BALL - FIRST_BALL, + .iconPic = gItemIcon_SportBall, + .iconPalette = gItemIconPalette_SportBall, }, [ITEM_PARK_BALL] = @@ -506,6 +560,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_PARK_BALL - FIRST_BALL, + .iconPic = gItemIcon_ParkBall, + .iconPalette = gItemIconPalette_ParkBall, }, [ITEM_BEAST_BALL] = @@ -519,6 +575,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_BEAST_BALL - FIRST_BALL, + .iconPic = gItemIcon_BeastBall, + .iconPalette = gItemIconPalette_BeastBall, }, [ITEM_CHERISH_BALL] = @@ -533,6 +591,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .battleUsage = EFFECT_ITEM_THROW_BALL, .secondaryId = ITEM_CHERISH_BALL - FIRST_BALL, + .iconPic = gItemIcon_CherishBall, + .iconPalette = gItemIconPalette_CherishBall, }, // Medicine @@ -552,6 +612,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_Potion, .flingPower = 30, + .iconPic = gItemIcon_Potion, + .iconPalette = gItemIconPalette_Potion, }, [ITEM_SUPER_POTION] = @@ -573,6 +635,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_SuperPotion, .flingPower = 30, + .iconPic = gItemIcon_Potion, + .iconPalette = gItemIconPalette_SuperPotion, }, [ITEM_HYPER_POTION] = @@ -594,6 +658,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_HyperPotion, .flingPower = 30, + .iconPic = gItemIcon_Potion, + .iconPalette = gItemIconPalette_HyperPotion, }, [ITEM_MAX_POTION] = @@ -610,6 +676,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_MaxPotion, .flingPower = 30, + .iconPic = gItemIcon_LargePotion, + .iconPalette = gItemIconPalette_MaxPotion, }, [ITEM_FULL_RESTORE] = @@ -627,6 +695,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_HEAL_AND_CURE_STATUS, .effect = gItemEffect_FullRestore, .flingPower = 30, + .iconPic = gItemIcon_LargePotion, + .iconPalette = gItemIconPalette_FullRestore, }, [ITEM_REVIVE] = @@ -643,6 +713,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_REVIVE, .effect = gItemEffect_Revive, .flingPower = 30, + .iconPic = gItemIcon_Revive, + .iconPalette = gItemIconPalette_Revive, }, [ITEM_MAX_REVIVE] = @@ -656,6 +728,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_REVIVE, .effect = gItemEffect_MaxRevive, .flingPower = 30, + .iconPic = gItemIcon_MaxRevive, + .iconPalette = gItemIconPalette_Revive, }, [ITEM_FRESH_WATER] = @@ -677,6 +751,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_FreshWater, .flingPower = 30, + .iconPic = gItemIcon_FreshWater, + .iconPalette = gItemIconPalette_FreshWater, }, [ITEM_SODA_POP] = @@ -698,6 +774,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_SodaPop, .flingPower = 30, + .iconPic = gItemIcon_SodaPop, + .iconPalette = gItemIconPalette_SodaPop, }, [ITEM_LEMONADE] = @@ -722,6 +800,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_Lemonade, .flingPower = 30, + .iconPic = gItemIcon_Lemonade, + .iconPalette = gItemIconPalette_Lemonade, }, [ITEM_MOOMOO_MILK] = @@ -740,6 +820,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_MoomooMilk, .flingPower = 30, + .iconPic = gItemIcon_MoomooMilk, + .iconPalette = gItemIconPalette_MoomooMilk, }, [ITEM_ENERGY_POWDER] = @@ -761,6 +843,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_EnergyPowder, .flingPower = 30, + .iconPic = gItemIcon_Powder, + .iconPalette = gItemIconPalette_EnergyPowder, }, [ITEM_ENERGY_ROOT] = @@ -781,6 +865,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_EnergyRoot, .flingPower = 30, + .iconPic = gItemIcon_EnergyRoot, + .iconPalette = gItemIconPalette_EnergyRoot, }, [ITEM_HEAL_POWDER] = @@ -798,6 +884,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_HealPowder, .flingPower = 30, + .iconPic = gItemIcon_Powder, + .iconPalette = gItemIconPalette_HealPowder, }, [ITEM_REVIVAL_HERB] = @@ -814,6 +902,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_REVIVE, .effect = gItemEffect_RevivalHerb, .flingPower = 30, + .iconPic = gItemIcon_RevivalHerb, + .iconPalette = gItemIconPalette_RevivalHerb, }, [ITEM_ANTIDOTE] = @@ -829,6 +919,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_Antidote, .flingPower = 30, + .iconPic = gItemIcon_Antidote, + .iconPalette = gItemIconPalette_Antidote, }, [ITEM_PARALYZE_HEAL] = @@ -844,6 +936,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_ParalyzeHeal, .flingPower = 30, + .iconPic = gItemIcon_StatusHeal, + .iconPalette = gItemIconPalette_ParalyzeHeal, }, [ITEM_BURN_HEAL] = @@ -859,6 +953,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_BurnHeal, .flingPower = 30, + .iconPic = gItemIcon_StatusHeal, + .iconPalette = gItemIconPalette_BurnHeal, }, [ITEM_ICE_HEAL] = @@ -874,6 +970,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_IceHeal, .flingPower = 30, + .iconPic = gItemIcon_StatusHeal, + .iconPalette = gItemIconPalette_IceHeal, }, [ITEM_AWAKENING] = @@ -889,6 +987,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_Awakening, .flingPower = 30, + .iconPic = gItemIcon_StatusHeal, + .iconPalette = gItemIconPalette_Awakening, }, [ITEM_FULL_HEAL] = @@ -902,6 +1002,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_FullHeal, + .iconPalette = gItemIconPalette_FullHeal, }, [ITEM_ETHER] = @@ -919,6 +1021,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_PP, .effect = gItemEffect_Ether, .flingPower = 30, + .iconPic = gItemIcon_Ether, + .iconPalette = gItemIconPalette_Ether, }, [ITEM_MAX_ETHER] = @@ -936,6 +1040,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_PP, .effect = gItemEffect_MaxEther, .flingPower = 30, + .iconPic = gItemIcon_Ether, + .iconPalette = gItemIconPalette_MaxEther, }, [ITEM_ELIXIR] = @@ -952,6 +1058,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_PP, .effect = gItemEffect_Elixir, .flingPower = 30, + .iconPic = gItemIcon_Ether, + .iconPalette = gItemIconPalette_Elixir, }, [ITEM_MAX_ELIXIR] = @@ -969,6 +1077,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_PP, .effect = gItemEffect_MaxElixir, .flingPower = 30, + .iconPic = gItemIcon_Ether, + .iconPalette = gItemIconPalette_MaxElixir, }, [ITEM_BERRY_JUICE] = @@ -988,6 +1098,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_Potion, .flingPower = 30, + .iconPic = gItemIcon_BerryJuice, + .iconPalette = gItemIconPalette_BerryJuice, }, [ITEM_SACRED_ASH] = @@ -1004,6 +1116,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_SacredAsh, .effect = gItemEffect_SacredAsh, .flingPower = 30, + .iconPic = gItemIcon_SacredAsh, + .iconPalette = gItemIconPalette_SacredAsh, }, [ITEM_SWEET_HEART] = @@ -1021,6 +1135,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_Potion, .flingPower = 30, + .iconPic = gItemIcon_SweetHeart, + .iconPalette = gItemIconPalette_SweetHeart, }, [ITEM_MAX_HONEY] = @@ -1035,14 +1151,16 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_REVIVE, .effect = gItemEffect_MaxRevive, .flingPower = 30, + .iconPic = gItemIcon_MaxHoney, + .iconPalette = gItemIconPalette_MaxHoney, }, // Regional Specialties [ITEM_PEWTER_CRUNCHIES] = { - .name = _("PewtrCrnches"), - .pluralName = _("PewtrCrnches"), + .name = HANDLE_EXPANDED_ITEM_NAME("PewtrCrnches", "Pewter Crunchies"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("PewtrCrnches", "Pewter Crunchies"), .price = 250, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1051,11 +1169,13 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_PewterCrunchies, + .iconPalette = gItemIconPalette_PewterCrunchies, }, [ITEM_RAGE_CANDY_BAR] = { - .name = _("RageCandyBar"), + .name = HANDLE_EXPANDED_ITEM_NAME("RageCandyBar", "Rage Candy Bar"), .price = (I_PRICE >= GEN_7) ? 350 : 300, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1064,6 +1184,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_RageCandyBar, + .iconPalette = gItemIconPalette_RageCandyBar, }, [ITEM_LAVA_COOKIE] = @@ -1080,6 +1202,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_LavaCookie, + .iconPalette = gItemIconPalette_LavaCookieAndLetter, }, [ITEM_OLD_GATEAU] = @@ -1094,6 +1218,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_OldGateau, + .iconPalette = gItemIconPalette_OldGateau, }, [ITEM_CASTELIACONE] = @@ -1107,11 +1233,13 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_Casteliacone, + .iconPalette = gItemIconPalette_Casteliacone, }, [ITEM_LUMIOSE_GALETTE] = { - .name = _("LumioseGlete"), + .name = HANDLE_EXPANDED_ITEM_NAME("LumioseGlete", "Lumiose Galette"), .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1120,11 +1248,13 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_LumioseGalette, + .iconPalette = gItemIconPalette_LumioseGalette, }, [ITEM_SHALOUR_SABLE] = { - .name = _("ShalourSable"), + .name = HANDLE_EXPANDED_ITEM_NAME("ShalourSable", "Shalour Sable"), .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1133,6 +1263,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_ShalourSable, + .iconPalette = gItemIconPalette_ShalourSable, }, [ITEM_BIG_MALASADA] = @@ -1146,6 +1278,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 30, + .iconPic = gItemIcon_BigMalasada, + .iconPalette = gItemIconPalette_BigMalasada, }, // Vitamins @@ -1162,6 +1296,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_HPUp, .flingPower = 30, + .iconPic = gItemIcon_HPUp, + .iconPalette = gItemIconPalette_HPUp, }, [ITEM_PROTEIN] = @@ -1177,6 +1313,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_Protein, .flingPower = 30, + .iconPic = gItemIcon_Vitamin, + .iconPalette = gItemIconPalette_Protein, }, [ITEM_IRON] = @@ -1192,6 +1330,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_Iron, .flingPower = 30, + .iconPic = gItemIcon_Vitamin, + .iconPalette = gItemIconPalette_Iron, }, [ITEM_CALCIUM] = @@ -1207,6 +1347,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_Calcium, .flingPower = 30, + .iconPic = gItemIcon_Vitamin, + .iconPalette = gItemIconPalette_Calcium, }, [ITEM_ZINC] = @@ -1222,6 +1364,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_Zinc, .flingPower = 30, + .iconPic = gItemIcon_Vitamin, + .iconPalette = gItemIconPalette_Zinc, }, [ITEM_CARBOS] = @@ -1238,6 +1382,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_Carbos, .flingPower = 30, + .iconPic = gItemIcon_Vitamin, + .iconPalette = gItemIconPalette_Carbos, }, [ITEM_PP_UP] = @@ -1253,6 +1399,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_PPUp, .effect = gItemEffect_PPUp, .flingPower = 30, + .iconPic = gItemIcon_PPUp, + .iconPalette = gItemIconPalette_PPUp, }, [ITEM_PP_MAX] = @@ -1269,13 +1417,15 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_PPUp, .effect = gItemEffect_PPMax, .flingPower = 30, + .iconPic = gItemIcon_PPMax, + .iconPalette = gItemIconPalette_PPMax, }, // EV Feathers [ITEM_HEALTH_FEATHER] = { - .name = _("HealthFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("HealthFeather", "Health Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sHealthFeatherDesc, .pocket = POCKET_ITEMS, @@ -1283,11 +1433,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_HpFeather, .flingPower = 20, + .iconPic = gItemIcon_HealthFeather, + .iconPalette = gItemIconPalette_HealthFeather, }, [ITEM_MUSCLE_FEATHER] = { - .name = _("MuscleFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("MuscleFeather", "Muscle Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sMuscleFeatherDesc, .pocket = POCKET_ITEMS, @@ -1295,11 +1447,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_AtkFeather, .flingPower = 20, + .iconPic = gItemIcon_MuscleFeather, + .iconPalette = gItemIconPalette_MuscleFeather, }, [ITEM_RESIST_FEATHER] = { - .name = _("ResistFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("ResistFeather", "Resist Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sResistFeatherDesc, .pocket = POCKET_ITEMS, @@ -1307,11 +1461,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_DefFeather, .flingPower = 20, + .iconPic = gItemIcon_ResistFeather, + .iconPalette = gItemIconPalette_ResistFeather, }, [ITEM_GENIUS_FEATHER] = { - .name = _("GeniusFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("GeniusFeather", "Genius Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sGeniusFeatherDesc, .pocket = POCKET_ITEMS, @@ -1319,11 +1475,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpatkFeather, .flingPower = 20, + .iconPic = gItemIcon_GeniusFeather, + .iconPalette = gItemIconPalette_GeniusFeather, }, [ITEM_CLEVER_FEATHER] = { - .name = _("CleverFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("CleverFeather", "Clever Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sCleverFeatherDesc, .pocket = POCKET_ITEMS, @@ -1331,11 +1489,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpdefFeather, .flingPower = 20, + .iconPic = gItemIcon_CleverFeather, + .iconPalette = gItemIconPalette_CleverFeather, }, [ITEM_SWIFT_FEATHER] = { - .name = _("SwiftFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("SwiftFeather", "Swift Feather"), .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sSwiftFeatherDesc, .pocket = POCKET_ITEMS, @@ -1343,13 +1503,15 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpeedFeather, .flingPower = 20, + .iconPic = gItemIcon_SwiftFeather, + .iconPalette = gItemIconPalette_SwiftFeather, }, // Ability Modifiers [ITEM_ABILITY_CAPSULE] = { - .name = _("AbilityCapsle"), + .name = HANDLE_EXPANDED_ITEM_NAME("AbilityCapsle", "Ability Capsule"), .price = (I_PRICE < GEN_7) ? 1000 : ((I_PRICE < GEN_9) ? 10000 : 100000), .holdEffectParam = 0, .description = COMPOUND_STRING( @@ -1358,12 +1520,14 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_AbilityCapsule, + .iconPic = gItemIcon_AbilityCapsule, + .iconPalette = gItemIconPalette_AbilityCapsule, }, [ITEM_ABILITY_PATCH] = { - .name = _("AbilityPatch"), - .pluralName = _("AbilityPatches"), + .name = HANDLE_EXPANDED_ITEM_NAME("AbilityPatch", "Ability Patch"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("AbilityPatches", "Ability Patches"), .price = (I_PRICE >= GEN_9) ? 250000 : 20, .holdEffectParam = 0, .description = COMPOUND_STRING( @@ -1373,6 +1537,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_AbilityPatch, + .iconPic = gItemIcon_AbilityPatch, + .iconPalette = gItemIconPalette_AbilityPatch, }, // Mints @@ -1390,6 +1556,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_LONELY, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_RedMint, }, [ITEM_ADAMANT_MINT] = @@ -1405,6 +1573,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_ADAMANT, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_RedMint, }, [ITEM_NAUGHTY_MINT] = @@ -1420,6 +1590,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_NAUGHTY, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_RedMint, }, [ITEM_BRAVE_MINT] = @@ -1435,6 +1607,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_BRAVE, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_RedMint, }, [ITEM_BOLD_MINT] = @@ -1450,6 +1624,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_BOLD, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_BlueMint, }, [ITEM_IMPISH_MINT] = @@ -1465,6 +1641,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_IMPISH, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_BlueMint, }, [ITEM_LAX_MINT] = @@ -1480,6 +1658,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_LAX, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_BlueMint, }, [ITEM_RELAXED_MINT] = @@ -1495,6 +1675,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_RELAXED, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_BlueMint, }, [ITEM_MODEST_MINT] = @@ -1510,6 +1692,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_MODEST, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_LightBlueMint, }, [ITEM_MILD_MINT] = @@ -1525,6 +1709,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_MILD, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_LightBlueMint, }, [ITEM_RASH_MINT] = @@ -1540,6 +1726,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_RASH, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_LightBlueMint, }, [ITEM_QUIET_MINT] = @@ -1555,6 +1743,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_QUIET, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_LightBlueMint, }, [ITEM_CALM_MINT] = @@ -1570,6 +1760,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_CALM, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_PinkMint, }, [ITEM_GENTLE_MINT] = @@ -1585,6 +1777,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_GENTLE, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_PinkMint, }, [ITEM_CAREFUL_MINT] = @@ -1600,6 +1794,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_CAREFUL, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_PinkMint, }, [ITEM_SASSY_MINT] = @@ -1615,6 +1811,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_SASSY, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_PinkMint, }, [ITEM_TIMID_MINT] = @@ -1630,6 +1828,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_TIMID, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_GreenMint, }, [ITEM_HASTY_MINT] = @@ -1645,6 +1845,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_HASTY, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_GreenMint, }, [ITEM_JOLLY_MINT] = @@ -1660,6 +1862,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_JOLLY, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_GreenMint, }, [ITEM_NAIVE_MINT] = @@ -1675,6 +1879,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_NAIVE, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_GreenMint, }, [ITEM_SERIOUS_MINT] = @@ -1690,6 +1896,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Mint, .secondaryId = NATURE_SERIOUS, .flingPower = 10, + .iconPic = gItemIcon_Mint, + .iconPalette = gItemIconPalette_YellowMint, }, // Candy @@ -1708,12 +1916,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_RareCandy, + .iconPalette = gItemIconPalette_RareCandy, }, [ITEM_EXP_CANDY_XS] = { - .name = _("Exp.Candy XS"), - .pluralName = _("Exp.Candies XS"), + .name = HANDLE_EXPANDED_ITEM_NAME("Exp.Candy XS", "Exp. Candy XS"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Exp.Candies XS", "Exp. Candies XS"), .price = 20, .holdEffectParam = EXP_100, .description = COMPOUND_STRING( @@ -1725,12 +1935,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_ExpCandyXS, + .iconPalette = gItemIconPalette_ExpCandies, }, [ITEM_EXP_CANDY_S] = { - .name = _("Exp.Candy S"), - .pluralName = _("Exp.Candies S"), + .name = HANDLE_EXPANDED_ITEM_NAME("Exp.Candy S", "Exp. Candy S"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Exp.Candies S", "Exp. Candies S"), .price = 240, .holdEffectParam = EXP_800, .description = COMPOUND_STRING( @@ -1742,12 +1954,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_ExpCandyS, + .iconPalette = gItemIconPalette_ExpCandies, }, [ITEM_EXP_CANDY_M] = { - .name = _("Exp.Candy M"), - .pluralName = _("Exp.Candies M"), + .name = HANDLE_EXPANDED_ITEM_NAME("Exp.Candy M", "Exp. Candy M"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Exp.Candies M", "Exp. Candies M"), .price = 1000, .holdEffectParam = EXP_3000, .description = COMPOUND_STRING( @@ -1759,12 +1973,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_ExpCandyM, + .iconPalette = gItemIconPalette_ExpCandies, }, [ITEM_EXP_CANDY_L] = { - .name = _("Exp.Candy L"), - .pluralName = _("Exp.Candies L"), + .name = HANDLE_EXPANDED_ITEM_NAME("Exp.Candy L", "Exp. Candy L"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Exp.Candies L", "Exp. Candies L"), .price = 3000, .holdEffectParam = EXP_10000, .description = COMPOUND_STRING( @@ -1776,12 +1992,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_ExpCandyL, + .iconPalette = gItemIconPalette_ExpCandies, }, [ITEM_EXP_CANDY_XL] = { - .name = _("Exp.Candy XL"), - .pluralName = _("Exp.Candies XL"), + .name = HANDLE_EXPANDED_ITEM_NAME("Exp.Candy XL", "Exp. Candy XL"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Exp.Candies XL", "Exp. Candies XL"), .price = 10000, .holdEffectParam = EXP_30000, .description = COMPOUND_STRING( @@ -1793,12 +2011,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .effect = gItemEffect_RareCandy, .flingPower = 30, + .iconPic = gItemIcon_ExpCandyXL, + .iconPalette = gItemIconPalette_ExpCandies, }, [ITEM_DYNAMAX_CANDY] = { - .name = _("DynamaxCandy"), - .pluralName = _("DynamaxCandies"), + .name = HANDLE_EXPANDED_ITEM_NAME("DynamaxCandy", "Dynamax Candy"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("DynamaxCandies", "Dynamax Candies"), .price = 0, .description = COMPOUND_STRING( "Raises the Dynamax\n" @@ -1808,6 +2028,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_DynamaxCandy, .flingPower = 30, + .iconPic = gItemIcon_DynamaxCandy, + .iconPalette = gItemIconPalette_DynamaxCandy, }, // Medicinal Flutes @@ -1826,6 +2048,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_Awakening, .flingPower = 30, + .iconPic = gItemIcon_Flute, + .iconPalette = gItemIconPalette_BlueFlute, }, [ITEM_YELLOW_FLUTE] = @@ -1842,6 +2066,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_YellowFlute, .flingPower = 30, + .iconPic = gItemIcon_Flute, + .iconPalette = gItemIconPalette_YellowFlute, }, [ITEM_RED_FLUTE] = @@ -1858,6 +2084,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_RedFlute, .flingPower = 30, + .iconPic = gItemIcon_Flute, + .iconPalette = gItemIconPalette_RedFlute, }, // Encounter-modifying Flutes @@ -1875,6 +2103,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, .flingPower = 30, + .iconPic = gItemIcon_Flute, + .iconPalette = gItemIconPalette_BlackFlute, }, [ITEM_WHITE_FLUTE] = @@ -1889,6 +2119,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute, .flingPower = 30, + .iconPic = gItemIcon_Flute, + .iconPalette = gItemIconPalette_WhiteFlute, }, // Encounter Modifiers @@ -1906,6 +2138,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_Repel, .flingPower = 30, + .iconPic = gItemIcon_Repel, + .iconPalette = gItemIconPalette_Repel, }, [ITEM_SUPER_REPEL] = @@ -1921,6 +2155,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_Repel, .flingPower = 30, + .iconPic = gItemIcon_Repel, + .iconPalette = gItemIconPalette_SuperRepel, }, [ITEM_MAX_REPEL] = @@ -1936,6 +2172,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_Repel, .flingPower = 30, + .iconPic = gItemIcon_Repel, + .iconPalette = gItemIconPalette_MaxRepel, }, [ITEM_LURE] = @@ -1952,6 +2190,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Lure, .secondaryId = 0, .flingPower = 30, + .iconPic = gItemIcon_Lure, + .iconPalette = gItemIconPalette_Lure, }, [ITEM_SUPER_LURE] = @@ -1968,6 +2208,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Lure, .secondaryId = 0, .flingPower = 30, + .iconPic = gItemIcon_Lure, + .iconPalette = gItemIconPalette_SuperLure, }, [ITEM_MAX_LURE] = @@ -1984,6 +2226,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Lure, .secondaryId = 0, .flingPower = 30, + .iconPic = gItemIcon_Lure, + .iconPalette = gItemIconPalette_MaxLure, }, [ITEM_ESCAPE_ROPE] = @@ -2004,6 +2248,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_EscapeRope, .flingPower = 30, + .iconPic = gItemIcon_EscapeRope, + .iconPalette = gItemIconPalette_EscapeRope, }, // X Items @@ -2029,6 +2275,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XAttack, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_XAttack, }, [ITEM_X_DEFENSE] = @@ -2052,6 +2300,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XDefense, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_XDefend, }, [ITEM_X_SP_ATK] = @@ -2075,6 +2325,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XSpecialAttack, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_XSpecial, }, [ITEM_X_SP_DEF] = @@ -2098,6 +2350,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XSpecialDefense, .flingPower = 30, + .iconPic = gItemIcon_XSpecialDefense, + .iconPalette = gItemIconPalette_XSpecialDefense, }, [ITEM_X_SPEED] = @@ -2121,6 +2375,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XSpeed, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_XSpeed, }, [ITEM_X_ACCURACY] = @@ -2145,6 +2401,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_INCREASE_STAT, .effect = gItemEffect_XAccuracy, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_XAccuracy, }, [ITEM_DIRE_HIT] = @@ -2161,6 +2419,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_SET_FOCUS_ENERGY, .effect = gItemEffect_DireHit, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_DireHit, }, [ITEM_GUARD_SPEC] = @@ -2178,6 +2438,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_SET_MIST, .effect = gItemEffect_GuardSpec, .flingPower = 30, + .iconPic = gItemIcon_BattleStatItem, + .iconPalette = gItemIconPalette_GuardSpec, }, [ITEM_POKE_DOLL] = @@ -2190,6 +2452,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, + .iconPic = gItemIcon_PokeDoll, + .iconPalette = gItemIconPalette_PokeDoll, }, [ITEM_FLUFFY_TAIL] = @@ -2202,6 +2466,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, + .iconPic = gItemIcon_FluffyTail, + .iconPalette = gItemIconPalette_FluffyTail, }, [ITEM_POKE_TOY] = @@ -2214,12 +2480,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .battleUsage = EFFECT_ITEM_ESCAPE, .flingPower = 30, + .iconPic = gItemIcon_PokeToy, + .iconPalette = gItemIconPalette_PokeToy, }, [ITEM_MAX_MUSHROOMS] = { - .name = _("MaxMushrooms"), - .pluralName = _("MaxMushrooms"), + .name = HANDLE_EXPANDED_ITEM_NAME("MaxMushrooms", "Max Mushrooms"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("MaxMushrooms", "Max Mushrooms"), .price = 8000, .description = COMPOUND_STRING( "Raises every stat\n" @@ -2230,6 +2498,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .battleUsage = EFFECT_ITEM_INCREASE_ALL_STATS, .flingPower = 30, + .iconPic = gItemIcon_MaxMushrooms, + .iconPalette = gItemIconPalette_MaxMushrooms, }, // Treasures @@ -2246,11 +2516,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BottleCap, + .iconPalette = gItemIconPalette_BottleCap, }, [ITEM_GOLD_BOTTLE_CAP] = { - .name = _("GoldBottlCap"), + .name = HANDLE_EXPANDED_ITEM_NAME("GoldBottlCap", "Gold Bottle Cap"), .price = (I_PRICE >= GEN_9) ? 60000 : 10000, .description = COMPOUND_STRING( "A beautiful bottle\n" @@ -2260,6 +2532,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BottleCap, + .iconPalette = gItemIconPalette_GoldBottleCap, }, [ITEM_NUGGET] = @@ -2274,6 +2548,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Nugget, + .iconPalette = gItemIconPalette_Nugget, }, [ITEM_BIG_NUGGET] = @@ -2288,6 +2564,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 130, + .iconPic = gItemIcon_BigNugget, + .iconPalette = gItemIconPalette_BigNugget, }, [ITEM_TINY_MUSHROOM] = @@ -2302,6 +2580,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_TinyMushroom, + .iconPalette = gItemIconPalette_Mushroom, }, [ITEM_BIG_MUSHROOM] = @@ -2313,6 +2593,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BigMushroom, + .iconPalette = gItemIconPalette_Mushroom, }, [ITEM_BALM_MUSHROOM] = @@ -2324,6 +2606,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BalmMushroom, + .iconPalette = gItemIconPalette_BalmMushroom, }, [ITEM_PEARL] = @@ -2338,6 +2622,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Pearl, + .iconPalette = gItemIconPalette_Pearl, }, [ITEM_BIG_PEARL] = @@ -2352,6 +2638,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BigPearl, + .iconPalette = gItemIconPalette_Pearl, }, [ITEM_PEARL_STRING] = @@ -2366,6 +2654,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_PearlString, + .iconPalette = gItemIconPalette_PearlString, }, [ITEM_STARDUST] = @@ -2381,6 +2671,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Stardust, + .iconPalette = gItemIconPalette_Star, }, [ITEM_STAR_PIECE] = @@ -2395,6 +2687,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_StarPiece, + .iconPalette = gItemIconPalette_Star, }, [ITEM_COMET_SHARD] = @@ -2409,6 +2703,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_CometShard, + .iconPalette = gItemIconPalette_CometShard, }, [ITEM_SHOAL_SALT] = @@ -2424,6 +2720,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Powder, + .iconPalette = gItemIconPalette_ShoalSalt, }, [ITEM_SHOAL_SHELL] = @@ -2438,6 +2736,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ShoalShell, + .iconPalette = gItemIconPalette_Shell, }, [ITEM_RED_SHARD] = @@ -2449,6 +2749,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Shard, + .iconPalette = gItemIconPalette_RedShard, }, [ITEM_BLUE_SHARD] = @@ -2460,6 +2762,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Shard, + .iconPalette = gItemIconPalette_BlueShard, }, [ITEM_YELLOW_SHARD] = @@ -2471,6 +2775,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Shard, + .iconPalette = gItemIconPalette_YellowShard, }, [ITEM_GREEN_SHARD] = @@ -2482,6 +2788,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Shard, + .iconPalette = gItemIconPalette_GreenShard, }, [ITEM_HEART_SCALE] = @@ -2496,6 +2804,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_HeartScale, + .iconPalette = gItemIconPalette_HeartScale, }, [ITEM_HONEY] = @@ -2511,6 +2821,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Honey, .flingPower = 30, + .iconPic = gItemIcon_Honey, + .iconPalette = gItemIconPalette_Honey, }, [ITEM_RARE_BONE] = @@ -2525,6 +2837,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_RareBone, + .iconPalette = gItemIconPalette_RareBone, }, [ITEM_ODD_KEYSTONE] = @@ -2539,11 +2853,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_OddKeystone, + .iconPalette = gItemIconPalette_OddKeystone, }, [ITEM_PRETTY_FEATHER] = { - .name = _("PrettyFeather"), + .name = HANDLE_EXPANDED_ITEM_NAME("PrettyFeather", "Pretty Feather"), .price = (I_PRICE >= GEN_7) ? 1000 * TREASURE_FACTOR: 200, .description = COMPOUND_STRING( "A beautiful yet\n" @@ -2553,6 +2869,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 20, + .iconPic = gItemIcon_PrettyFeather, + .iconPalette = gItemIconPalette_PrettyFeather, }, [ITEM_RELIC_COPPER] = @@ -2567,6 +2885,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicCoin, + .iconPalette = gItemIconPalette_RelicCopper, }, [ITEM_RELIC_SILVER] = @@ -2581,6 +2901,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicCoin, + .iconPalette = gItemIconPalette_RelicSilver, }, [ITEM_RELIC_GOLD] = @@ -2595,6 +2917,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicCoin, + .iconPalette = gItemIconPalette_RelicGold, }, [ITEM_RELIC_VASE] = @@ -2609,6 +2933,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicVase, + .iconPalette = gItemIconPalette_Relics, }, [ITEM_RELIC_BAND] = @@ -2623,6 +2949,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicBand, + .iconPalette = gItemIconPalette_Relics, }, [ITEM_RELIC_STATUE] = @@ -2637,6 +2965,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicStatue, + .iconPalette = gItemIconPalette_Relics, }, [ITEM_RELIC_CROWN] = @@ -2651,11 +2981,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_RelicCrown, + .iconPalette = gItemIconPalette_Relics, }, [ITEM_STRANGE_SOUVENIR] = { - .name = _("StrngeSouvnr"), + .name = HANDLE_EXPANDED_ITEM_NAME("StrngeSouvnr", "Strange Souvenir"), .price = (I_PRICE >= GEN_7) ? 3000 : 10, .description = COMPOUND_STRING( "An ornament that\n" @@ -2665,6 +2997,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_StrangeSouvenir, + .iconPalette = gItemIconPalette_StrangeSouvenir, }, // Fossils @@ -2687,6 +3021,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_HelixFossil, + .iconPalette = gItemIconPalette_KantoFossil, }, [ITEM_DOME_FOSSIL] = @@ -2707,6 +3043,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_DomeFossil, + .iconPalette = gItemIconPalette_KantoFossil, }, [ITEM_OLD_AMBER] = @@ -2727,6 +3065,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_OldAmber, + .iconPalette = gItemIconPalette_OldAmber, }, [ITEM_ROOT_FOSSIL] = @@ -2744,6 +3084,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_RootFossil, + .iconPalette = gItemIconPalette_HoennFossil, }, [ITEM_CLAW_FOSSIL] = @@ -2761,6 +3103,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_ClawFossil, + .iconPalette = gItemIconPalette_HoennFossil, }, [ITEM_ARMOR_FOSSIL] = @@ -2775,6 +3119,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_ArmorFossil, + .iconPalette = gItemIconPalette_ArmorFossil, }, [ITEM_SKULL_FOSSIL] = @@ -2789,6 +3135,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_SkullFossil, + .iconPalette = gItemIconPalette_SkullFossil, }, [ITEM_COVER_FOSSIL] = @@ -2803,6 +3151,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_CoverFossil, + .iconPalette = gItemIconPalette_CoverFossil, }, [ITEM_PLUME_FOSSIL] = @@ -2817,6 +3167,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_PlumeFossil, + .iconPalette = gItemIconPalette_PlumeFossil, }, [ITEM_JAW_FOSSIL] = @@ -2831,6 +3183,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_JawFossil, + .iconPalette = gItemIconPalette_JawFossil, }, [ITEM_SAIL_FOSSIL] = @@ -2845,11 +3199,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_SailFossil, + .iconPalette = gItemIconPalette_SailFossil, }, [ITEM_FOSSILIZED_BIRD] = { - .name = _("FosslzedBird"), + .name = HANDLE_EXPANDED_ITEM_NAME("FosslzedBird", "Fossilized Bird"), .price = 5000, .description = COMPOUND_STRING( "A fossil of an\n" @@ -2859,23 +3215,27 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_FossilizedBird, + .iconPalette = gItemIconPalette_FossilizedBird, }, [ITEM_FOSSILIZED_FISH] = { - .name = _("FosslzedFish"), - .pluralName = _("FosslzedFishes"), + .name = HANDLE_EXPANDED_ITEM_NAME("FosslzedFish", "Fossilized Fish"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("FosslzedFishes", "Fossilized Fishes"), .price = 5000, .description = sFossilizedFishDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_FossilizedFish, + .iconPalette = gItemIconPalette_FossilizedFish, }, [ITEM_FOSSILIZED_DRAKE] = { - .name = _("FosslzedDrke"), + .name = HANDLE_EXPANDED_ITEM_NAME("FosslzedDrke", "Fossilized Drake"), .price = 5000, .description = COMPOUND_STRING( "A fossil of an\n" @@ -2885,17 +3245,21 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_FossilizedDrake, + .iconPalette = gItemIconPalette_FossilizedDrake, }, [ITEM_FOSSILIZED_DINO] = { - .name = _("FosslzedDino"), + .name = HANDLE_EXPANDED_ITEM_NAME("FosslzedDino", "Fossilized Dino"), .price = 5000, .description = sFossilizedFishDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_FossilizedDino, + .iconPalette = gItemIconPalette_FossilizedDino, }, // Mulch @@ -2918,6 +3282,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_GROWTH_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_GrowthMulch, }, [ITEM_DAMP_MULCH] = @@ -2938,6 +3304,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_DAMP_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_DampMulch, }, [ITEM_STABLE_MULCH] = @@ -2958,6 +3326,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_STABLE_MULCH), .flingPower = 30, + .iconPic = gItemIcon_StableMulch, + .iconPalette = gItemIconPalette_StableMulch, }, [ITEM_GOOEY_MULCH] = @@ -2978,6 +3348,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_GOOEY_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_GooeyMulch, }, [ITEM_RICH_MULCH] = @@ -2998,12 +3370,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_RICH_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_RichMulch, }, [ITEM_SURPRISE_MULCH] = { - .name = _("SurprseMulch"), - .pluralName = _("SurprseMulch"), + .name = HANDLE_EXPANDED_ITEM_NAME("SurprseMulch", "Surprise Mulch"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("SurprseMulch", "Surprise Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING( @@ -3018,6 +3392,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_SURPRISE_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_SurpriseMulch, }, [ITEM_BOOST_MULCH] = @@ -3038,6 +3414,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_BOOST_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_BoostMulch, }, [ITEM_AMAZE_MULCH] = @@ -3058,6 +3436,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = ITEM_TO_MULCH(ITEM_AMAZE_MULCH), .flingPower = 30, + .iconPic = gItemIcon_Mulch, + .iconPalette = gItemIconPalette_AmazeMulch, }, // Apricorns @@ -3073,6 +3453,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_RedApricorn, + .iconPalette = gItemIconPalette_RedApricorn, }, [ITEM_BLUE_APRICORN] = @@ -3086,11 +3468,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BlueApricorn, + .iconPalette = gItemIconPalette_BlueApricorn, }, [ITEM_YELLOW_APRICORN] = { - .name = _("YellwApricorn"), + .name = HANDLE_EXPANDED_ITEM_NAME("YellwApricorn", "Yellow Apricorn"), .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING( "A yellow apricorn.\n" @@ -3099,11 +3483,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_YellowApricorn, + .iconPalette = gItemIconPalette_YellowApricorn, }, [ITEM_GREEN_APRICORN] = { - .name = _("GreenApricorn"), + .name = HANDLE_EXPANDED_ITEM_NAME("GreenApricorn", "Green Apricorn"), .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING( "A green apricorn.\n" @@ -3112,6 +3498,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_GreenApricorn, + .iconPalette = gItemIconPalette_GreenApricorn, }, [ITEM_PINK_APRICORN] = @@ -3125,11 +3513,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_PinkApricorn, + .iconPalette = gItemIconPalette_PinkApricorn, }, [ITEM_WHITE_APRICORN] = { - .name = _("WhiteApricorn"), + .name = HANDLE_EXPANDED_ITEM_NAME("WhiteApricorn", "White Apricorn"), .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING( "A white apricorn.\n" @@ -3138,11 +3528,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_WhiteApricorn, + .iconPalette = gItemIconPalette_WhiteApricorn, }, [ITEM_BLACK_APRICORN] = { - .name = _("BlackApricorn"), + .name = HANDLE_EXPANDED_ITEM_NAME("BlackApricorn", "Black Apricorn"), .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING( "A black apricorn.\n" @@ -3151,11 +3543,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BlackApricorn, + .iconPalette = gItemIconPalette_BlackApricorn, }, [ITEM_WISHING_PIECE] = { - .name = _("WishingPiece"), + .name = HANDLE_EXPANDED_ITEM_NAME("WishingPiece", "Wishing Piece"), .price = 20, .description = COMPOUND_STRING( "Throw into a\n" @@ -3165,11 +3559,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 50, + .iconPic = gItemIcon_WishingPiece, + .iconPalette = gItemIconPalette_WishingPiece, }, [ITEM_GALARICA_TWIG] = { - .name = _("GalaricaTwig"), + .name = HANDLE_EXPANDED_ITEM_NAME("GalaricaTwig", "Galarica Twig"), .price = 20 * TREASURE_FACTOR, .description = COMPOUND_STRING( "A twig from a tree\n" @@ -3179,6 +3575,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_GalaricaTwig, + .iconPalette = gItemIconPalette_GalaricaItem, }, [ITEM_ARMORITE_ORE] = @@ -3194,6 +3592,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ArmoriteOre, + .iconPalette = gItemIconPalette_ArmoriteOre, }, [ITEM_DYNITE_ORE] = @@ -3209,6 +3609,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_DyniteOre, + .iconPalette = gItemIconPalette_DyniteOre, }, // Mail @@ -3226,6 +3628,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_ORANGE_MAIL), + .iconPic = gItemIcon_OrangeMail, + .iconPalette = gItemIconPalette_OrangeMail, }, [ITEM_HARBOR_MAIL] = @@ -3241,6 +3645,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_HARBOR_MAIL), + .iconPic = gItemIcon_HarborMail, + .iconPalette = gItemIconPalette_HarborMail, }, [ITEM_GLITTER_MAIL] = @@ -3256,6 +3662,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_GLITTER_MAIL), + .iconPic = gItemIcon_GlitterMail, + .iconPalette = gItemIconPalette_GlitterMail, }, [ITEM_MECH_MAIL] = @@ -3271,6 +3679,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_MECH_MAIL), + .iconPic = gItemIcon_MechMail, + .iconPalette = gItemIconPalette_MechMail, }, [ITEM_WOOD_MAIL] = @@ -3286,6 +3696,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_WOOD_MAIL), + .iconPic = gItemIcon_WoodMail, + .iconPalette = gItemIconPalette_WoodMail, }, [ITEM_WAVE_MAIL] = @@ -3301,6 +3713,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_WAVE_MAIL), + .iconPic = gItemIcon_WaveMail, + .iconPalette = gItemIconPalette_WaveMail, }, [ITEM_BEAD_MAIL] = @@ -3313,6 +3727,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_BEAD_MAIL), + .iconPic = gItemIcon_BeadMail, + .iconPalette = gItemIconPalette_BeadMail, }, [ITEM_SHADOW_MAIL] = @@ -3328,6 +3744,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_SHADOW_MAIL), + .iconPic = gItemIcon_ShadowMail, + .iconPalette = gItemIconPalette_ShadowMail, }, [ITEM_TROPIC_MAIL] = @@ -3343,6 +3761,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_TROPIC_MAIL), + .iconPic = gItemIcon_TropicMail, + .iconPalette = gItemIconPalette_TropicMail, }, [ITEM_DREAM_MAIL] = @@ -3355,6 +3775,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_DREAM_MAIL), + .iconPic = gItemIcon_DreamMail, + .iconPalette = gItemIconPalette_DreamMail, }, [ITEM_FAB_MAIL] = @@ -3370,6 +3792,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_FAB_MAIL), + .iconPic = gItemIcon_FabMail, + .iconPalette = gItemIconPalette_FabMail, }, [ITEM_RETRO_MAIL] = @@ -3385,6 +3809,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_MAIL, .fieldUseFunc = ItemUseOutOfBattle_Mail, .secondaryId = ITEM_TO_MAIL(ITEM_RETRO_MAIL), + .iconPic = gItemIcon_RetroMail, + .iconPalette = gItemIconPalette_RetroMail, }, // Evolution Items @@ -3399,6 +3825,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_FireStone, + .iconPalette = gItemIconPalette_FireStone, }, [ITEM_WATER_STONE] = @@ -3411,6 +3839,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_WaterStone, + .iconPalette = gItemIconPalette_WaterStone, }, [ITEM_THUNDER_STONE] = @@ -3423,6 +3853,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_ThunderStone, + .iconPalette = gItemIconPalette_ThunderStone, }, [ITEM_LEAF_STONE] = @@ -3435,6 +3867,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_LeafStone, + .iconPalette = gItemIconPalette_LeafStone, }, [ITEM_ICE_STONE] = @@ -3447,6 +3881,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_IceStone, + .iconPalette = gItemIconPalette_IceStone, }, [ITEM_SUN_STONE] = @@ -3459,6 +3895,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_SunStone, + .iconPalette = gItemIconPalette_SunStone, }, [ITEM_MOON_STONE] = @@ -3471,6 +3909,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_MoonStone, + .iconPalette = gItemIconPalette_MoonStone, }, [ITEM_SHINY_STONE] = @@ -3483,6 +3923,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_ShinyStone, + .iconPalette = gItemIconPalette_ShinyStone, }, [ITEM_DUSK_STONE] = @@ -3495,6 +3937,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_DuskStone, + .iconPalette = gItemIconPalette_DuskStone, }, [ITEM_DAWN_STONE] = @@ -3507,6 +3951,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_DawnStone, + .iconPalette = gItemIconPalette_DawnStone, }, [ITEM_SWEET_APPLE] = @@ -3522,6 +3968,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_SweetApple, + .iconPalette = gItemIconPalette_SweetApple, }, [ITEM_TART_APPLE] = @@ -3537,6 +3985,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_TartApple, + .iconPalette = gItemIconPalette_TartApple, }, [ITEM_CRACKED_POT] = @@ -3552,6 +4002,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_CrackedPot, + .iconPalette = gItemIconPalette_Pot, }, [ITEM_CHIPPED_POT] = @@ -3567,11 +4019,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_ChippedPot, + .iconPalette = gItemIconPalette_Pot, }, [ITEM_GALARICA_CUFF] = { - .name = _("GalaricaCuff"), + .name = HANDLE_EXPANDED_ITEM_NAME("GalaricaCuff", "Galarica Cuff"), .price = (I_PRICE >= GEN_9) ? 3000 : 6000, .description = COMPOUND_STRING( "A cuff from Galar\n" @@ -3582,12 +4036,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_GalaricaCuff, + .iconPalette = gItemIconPalette_GalaricaItem, }, [ITEM_GALARICA_WREATH] = { - .name = _("GalrcaWreath"), - .pluralName = _("GalrcaWreathes"), + .name = HANDLE_EXPANDED_ITEM_NAME("GalrcaWreath", "Galarica Wreath"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("GalrcaWreathes", "Galarica Wreathes"), .price = (I_PRICE >= GEN_9) ? 3000 : 6000, .description = COMPOUND_STRING( "A wreath made in\n" @@ -3598,6 +4054,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_GalaricaWreath, + .iconPalette = gItemIconPalette_GalaricaItem, }, [ITEM_DRAGON_SCALE] = @@ -3615,6 +4073,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_DragonScale, + .iconPalette = gItemIconPalette_DragonScale, }, [ITEM_UPGRADE] = @@ -3630,6 +4090,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_Upgrade, + .iconPalette = gItemIconPalette_Upgrade, }, [ITEM_PROTECTOR] = @@ -3645,6 +4107,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_Protector, + .iconPalette = gItemIconPalette_Protector, }, [ITEM_ELECTIRIZER] = @@ -3660,6 +4124,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_Electirizer, + .iconPalette = gItemIconPalette_Electirizer, }, [ITEM_MAGMARIZER] = @@ -3675,6 +4141,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_Magmarizer, + .iconPalette = gItemIconPalette_Magmarizer, }, [ITEM_DUBIOUS_DISC] = @@ -3690,6 +4158,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 50, + .iconPic = gItemIcon_DubiousDisc, + .iconPalette = gItemIconPalette_DubiousDisc, }, [ITEM_REAPER_CLOTH] = @@ -3706,6 +4176,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 10, + .iconPic = gItemIcon_ReaperCloth, + .iconPalette = gItemIconPalette_ReaperCloth, }, [ITEM_PRISM_SCALE] = @@ -3721,6 +4193,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_PrismScale, + .iconPalette = gItemIconPalette_PrismScale, }, [ITEM_WHIPPED_DREAM] = @@ -3737,6 +4211,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_WhippedDream, + .iconPalette = gItemIconPalette_WhippedDream, }, [ITEM_SACHET] = @@ -3752,6 +4228,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_Sachet, + .iconPalette = gItemIconPalette_Sachet, }, [ITEM_OVAL_STONE] = @@ -3767,11 +4245,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_OvalStone, + .iconPalette = gItemIconPalette_OvalStone, }, [ITEM_STRAWBERRY_SWEET] = { - .name = _("StrwbrySweet"), + .name = HANDLE_EXPANDED_ITEM_NAME("StrwbrySweet", "Strawberry Sweet"), .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING( "Strawberry-shaped\n" @@ -3781,6 +4261,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_StrawberrySweet, + .iconPalette = gItemIconPalette_StrawberrySweet, }, [ITEM_LOVE_SWEET] = @@ -3795,6 +4277,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LoveSweet, + .iconPalette = gItemIconPalette_LoveSweet, }, [ITEM_BERRY_SWEET] = @@ -3809,6 +4293,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BerrySweet, + .iconPalette = gItemIconPalette_BerrySweet, }, [ITEM_CLOVER_SWEET] = @@ -3823,6 +4309,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_CloverSweet, + .iconPalette = gItemIconPalette_CloverSweet, }, [ITEM_FLOWER_SWEET] = @@ -3837,6 +4325,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FlowerSweet, + .iconPalette = gItemIconPalette_FlowerSweet, }, [ITEM_STAR_SWEET] = @@ -3851,6 +4341,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_StarSweet, + .iconPalette = gItemIconPalette_StarSweet, }, [ITEM_RIBBON_SWEET] = @@ -3865,6 +4357,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RibbonSweet, + .iconPalette = gItemIconPalette_RibbonSweet, }, [ITEM_EVERSTONE] = @@ -3880,6 +4374,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Everstone, + .iconPalette = gItemIconPalette_Everstone, }, // Nectars @@ -3894,6 +4390,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, .flingPower = 10, + .iconPic = gItemIcon_RedNectar, + .iconPalette = gItemIconPalette_RedNectar, }, [ITEM_YELLOW_NECTAR] = @@ -3906,6 +4404,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, .flingPower = 10, + .iconPic = gItemIcon_YellowNectar, + .iconPalette = gItemIconPalette_YellowNectar, }, [ITEM_PINK_NECTAR] = @@ -3918,6 +4418,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, .flingPower = 10, + .iconPic = gItemIcon_PinkNectar, + .iconPalette = gItemIconPalette_PinkNectar, }, [ITEM_PURPLE_NECTAR] = @@ -3930,6 +4432,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange_ConsumedOnUse, .flingPower = 10, + .iconPic = gItemIcon_PurpleNectar, + .iconPalette = gItemIconPalette_PurpleNectar, }, // Plates @@ -3949,6 +4453,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIRE, .flingPower = 90, + .iconPic = gItemIcon_FlamePlate, + .iconPalette = gItemIconPalette_FlamePlate, }, [ITEM_SPLASH_PLATE] = @@ -3966,6 +4472,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_WATER, .flingPower = 90, + .iconPic = gItemIcon_SplashPlate, + .iconPalette = gItemIconPalette_SplashPlate, }, [ITEM_ZAP_PLATE] = @@ -3983,6 +4491,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ELECTRIC, .flingPower = 90, + .iconPic = gItemIcon_ZapPlate, + .iconPalette = gItemIconPalette_ZapPlate, }, [ITEM_MEADOW_PLATE] = @@ -4000,6 +4510,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GRASS, .flingPower = 90, + .iconPic = gItemIcon_MeadowPlate, + .iconPalette = gItemIconPalette_MeadowPlate, }, [ITEM_ICICLE_PLATE] = @@ -4017,6 +4529,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ICE, .flingPower = 90, + .iconPic = gItemIcon_IciclePlate, + .iconPalette = gItemIconPalette_IciclePlate, }, [ITEM_FIST_PLATE] = @@ -4034,6 +4548,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIGHTING, .flingPower = 90, + .iconPic = gItemIcon_FistPlate, + .iconPalette = gItemIconPalette_FistPlate, }, [ITEM_TOXIC_PLATE] = @@ -4051,6 +4567,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_POISON, .flingPower = 90, + .iconPic = gItemIcon_ToxicPlate, + .iconPalette = gItemIconPalette_ToxicPlate, }, [ITEM_EARTH_PLATE] = @@ -4068,6 +4586,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GROUND, .flingPower = 90, + .iconPic = gItemIcon_EarthPlate, + .iconPalette = gItemIconPalette_EarthPlate, }, [ITEM_SKY_PLATE] = @@ -4085,6 +4605,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FLYING, .flingPower = 90, + .iconPic = gItemIcon_SkyPlate, + .iconPalette = gItemIconPalette_SkyPlate, }, [ITEM_MIND_PLATE] = @@ -4102,6 +4624,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_PSYCHIC, .flingPower = 90, + .iconPic = gItemIcon_MindPlate, + .iconPalette = gItemIconPalette_MindPlate, }, [ITEM_INSECT_PLATE] = @@ -4119,6 +4643,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_BUG, .flingPower = 90, + .iconPic = gItemIcon_InsectPlate, + .iconPalette = gItemIconPalette_InsectPlate, }, [ITEM_STONE_PLATE] = @@ -4136,6 +4662,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ROCK, .flingPower = 90, + .iconPic = gItemIcon_StonePlate, + .iconPalette = gItemIconPalette_StonePlate, }, [ITEM_SPOOKY_PLATE] = @@ -4153,6 +4681,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GHOST, .flingPower = 90, + .iconPic = gItemIcon_SpookyPlate, + .iconPalette = gItemIconPalette_SpookyPlate, }, [ITEM_DRACO_PLATE] = @@ -4170,6 +4700,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DRAGON, .flingPower = 90, + .iconPic = gItemIcon_DracoPlate, + .iconPalette = gItemIconPalette_DracoPlate, }, [ITEM_DREAD_PLATE] = @@ -4187,6 +4719,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DARK, .flingPower = 90, + .iconPic = gItemIcon_DreadPlate, + .iconPalette = gItemIconPalette_DreadPlate, }, [ITEM_IRON_PLATE] = @@ -4204,6 +4738,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_STEEL, .flingPower = 90, + .iconPic = gItemIcon_IronPlate, + .iconPalette = gItemIconPalette_IronPlate, }, [ITEM_PIXIE_PLATE] = @@ -4221,6 +4757,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FAIRY, .flingPower = 90, + .iconPic = gItemIcon_PixiePlate, + .iconPalette = gItemIconPalette_PixiePlate, }, // Drives @@ -4239,6 +4777,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_WATER, .flingPower = 70, + .iconPic = gItemIcon_DouseDrive, + .iconPalette = gItemIconPalette_DouseDrive, }, [ITEM_SHOCK_DRIVE] = @@ -4255,6 +4795,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ELECTRIC, .flingPower = 70, + .iconPic = gItemIcon_ShockDrive, + .iconPalette = gItemIconPalette_ShockDrive, }, [ITEM_BURN_DRIVE] = @@ -4271,6 +4813,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIRE, .flingPower = 70, + .iconPic = gItemIcon_BurnDrive, + .iconPalette = gItemIconPalette_BurnDrive, }, [ITEM_CHILL_DRIVE] = @@ -4287,6 +4831,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ICE, .flingPower = 70, + .iconPic = gItemIcon_ChillDrive, + .iconPalette = gItemIconPalette_ChillDrive, }, // Memories @@ -4307,6 +4853,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIRE, .flingPower = 50, + .iconPic = gItemIcon_FireMemory, + .iconPalette = gItemIconPalette_FireMemory, }, [ITEM_WATER_MEMORY] = @@ -4325,12 +4873,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_WATER, .flingPower = 50, + .iconPic = gItemIcon_WaterMemory, + .iconPalette = gItemIconPalette_WaterMemory, }, [ITEM_ELECTRIC_MEMORY] = { - .name = _("ElectrcMemory"), - .pluralName = _("ElectrcMemories"), + .name = HANDLE_EXPANDED_ITEM_NAME("ElectrcMemory", "Electric Memory"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("ElectrcMemories", "Electric Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4343,6 +4893,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ELECTRIC, .flingPower = 50, + .iconPic = gItemIcon_ElectricMemory, + .iconPalette = gItemIconPalette_ElectricMemory, }, [ITEM_GRASS_MEMORY] = @@ -4361,6 +4913,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GRASS, .flingPower = 50, + .iconPic = gItemIcon_GrassMemory, + .iconPalette = gItemIconPalette_GrassMemory, }, [ITEM_ICE_MEMORY] = @@ -4379,12 +4933,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ICE, .flingPower = 50, + .iconPic = gItemIcon_IceMemory, + .iconPalette = gItemIconPalette_IceMemory, }, [ITEM_FIGHTING_MEMORY] = { - .name = _("FightngMemory"), - .pluralName = _("FightngMemories"), + .name = HANDLE_EXPANDED_ITEM_NAME("FightngMemory", "Fighting Memory"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("FightngMemories", "Fighting Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4397,6 +4953,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIGHTING, .flingPower = 50, + .iconPic = gItemIcon_FightingMemory, + .iconPalette = gItemIconPalette_FightingMemory, }, [ITEM_POISON_MEMORY] = @@ -4415,6 +4973,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_POISON, .flingPower = 50, + .iconPic = gItemIcon_PoisonMemory, + .iconPalette = gItemIconPalette_PoisonMemory, }, [ITEM_GROUND_MEMORY] = @@ -4433,6 +4993,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GROUND, .flingPower = 50, + .iconPic = gItemIcon_GroundMemory, + .iconPalette = gItemIconPalette_GroundMemory, }, [ITEM_FLYING_MEMORY] = @@ -4451,12 +5013,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FLYING, .flingPower = 50, + .iconPic = gItemIcon_FlyingMemory, + .iconPalette = gItemIconPalette_FlyingMemory, }, [ITEM_PSYCHIC_MEMORY] = { - .name = _("PsychicMemory"), - .pluralName = _("PsychicMemories"), + .name = HANDLE_EXPANDED_ITEM_NAME("PsychicMemory", "Psychic Memory"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("PsychicMemories", "Psychic Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4469,6 +5033,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_PSYCHIC, .flingPower = 50, + .iconPic = gItemIcon_PsychicMemory, + .iconPalette = gItemIconPalette_PsychicMemory, }, [ITEM_BUG_MEMORY] = @@ -4487,6 +5053,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_BUG, .flingPower = 50, + .iconPic = gItemIcon_BugMemory, + .iconPalette = gItemIconPalette_BugMemory, }, [ITEM_ROCK_MEMORY] = @@ -4505,6 +5073,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ROCK, .flingPower = 50, + .iconPic = gItemIcon_RockMemory, + .iconPalette = gItemIconPalette_RockMemory, }, [ITEM_GHOST_MEMORY] = @@ -4523,6 +5093,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GHOST, .flingPower = 50, + .iconPic = gItemIcon_GhostMemory, + .iconPalette = gItemIconPalette_GhostMemory, }, [ITEM_DRAGON_MEMORY] = @@ -4541,6 +5113,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DRAGON, .flingPower = 50, + .iconPic = gItemIcon_DragonMemory, + .iconPalette = gItemIconPalette_DragonMemory, }, [ITEM_DARK_MEMORY] = @@ -4559,6 +5133,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DARK, .flingPower = 50, + .iconPic = gItemIcon_DarkMemory, + .iconPalette = gItemIconPalette_DarkMemory, }, [ITEM_STEEL_MEMORY] = @@ -4577,6 +5153,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_STEEL, .flingPower = 50, + .iconPic = gItemIcon_SteelMemory, + .iconPalette = gItemIconPalette_SteelMemory, }, [ITEM_FAIRY_MEMORY] = @@ -4595,11 +5173,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FAIRY, .flingPower = 50, + .iconPic = gItemIcon_FairyMemory, + .iconPalette = gItemIconPalette_FairyMemory, }, [ITEM_RUSTED_SWORD] = { - .name = _("RustedSword"), + .name = HANDLE_EXPANDED_ITEM_NAME("RustedSword", "Rusted Sword"), .price = 0, .description = COMPOUND_STRING( "A rusty sword. A\n" @@ -4608,11 +5188,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_RustedSword, + .iconPalette = gItemIconPalette_RustedWeapons, }, [ITEM_RUSTED_SHIELD] = { - .name = _("RustedShield"), + .name = HANDLE_EXPANDED_ITEM_NAME("RustedShield", "Rusted Shield"), .price = 0, .description = COMPOUND_STRING( "A rusty shield. A\n" @@ -4621,6 +5203,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_RustedShield, + .iconPalette = gItemIconPalette_RustedWeapons, }, // Colored Orbs @@ -4637,6 +5221,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_RedOrb, + .iconPalette = gItemIconPalette_RedOrb, }, [ITEM_BLUE_ORB] = @@ -4651,6 +5237,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BlueOrb, + .iconPalette = gItemIconPalette_BlueOrb, }, // Mega Stones @@ -4668,11 +5256,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Venusaurite, + .iconPalette = gItemIconPalette_Venusaurite, }, [ITEM_CHARIZARDITE_X] = { - .name = _("CharizarditeX"), + .name = HANDLE_EXPANDED_ITEM_NAME("CharizarditeX", "Charizardite X"), .pluralName = _("Charizardites X"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, @@ -4681,11 +5271,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_CharizarditeX, + .iconPalette = gItemIconPalette_CharizarditeX, }, [ITEM_CHARIZARDITE_Y] = { - .name = _("CharizarditeY"), + .name = HANDLE_EXPANDED_ITEM_NAME("CharizarditeY", "Charizardite Y"), .pluralName = _("Charizardites Y"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, @@ -4694,6 +5286,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_CharizarditeY, + .iconPalette = gItemIconPalette_CharizarditeY, }, [ITEM_BLASTOISINITE] = @@ -4709,6 +5303,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Blastoisinite, + .iconPalette = gItemIconPalette_Blastoisinite, }, [ITEM_BEEDRILLITE] = @@ -4724,6 +5320,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Beedrillite, + .iconPalette = gItemIconPalette_Beedrillite, }, [ITEM_PIDGEOTITE] = @@ -4739,6 +5337,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Pidgeotite, + .iconPalette = gItemIconPalette_Pidgeotite, }, [ITEM_ALAKAZITE] = @@ -4754,6 +5354,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Alakazite, + .iconPalette = gItemIconPalette_Alakazite, }, [ITEM_SLOWBRONITE] = @@ -4769,6 +5371,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Slowbronite, + .iconPalette = gItemIconPalette_Slowbronite, }, [ITEM_GENGARITE] = @@ -4784,6 +5388,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Gengarite, + .iconPalette = gItemIconPalette_Gengarite, }, [ITEM_KANGASKHANITE] = @@ -4799,6 +5405,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Kangaskhanite, + .iconPalette = gItemIconPalette_Kangaskhanite, }, [ITEM_PINSIRITE] = @@ -4814,6 +5422,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Pinsirite, + .iconPalette = gItemIconPalette_Pinsirite, }, [ITEM_GYARADOSITE] = @@ -4829,6 +5439,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Gyaradosite, + .iconPalette = gItemIconPalette_Gyaradosite, }, [ITEM_AERODACTYLITE] = @@ -4844,6 +5456,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Aerodactylite, + .iconPalette = gItemIconPalette_Aerodactylite, }, [ITEM_MEWTWONITE_X] = @@ -4857,6 +5471,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_MewtwoniteX, + .iconPalette = gItemIconPalette_MewtwoniteX, }, [ITEM_MEWTWONITE_Y] = @@ -4870,6 +5486,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_MewtwoniteY, + .iconPalette = gItemIconPalette_MewtwoniteY, }, [ITEM_AMPHAROSITE] = @@ -4885,6 +5503,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Ampharosite, + .iconPalette = gItemIconPalette_Ampharosite, }, [ITEM_STEELIXITE] = @@ -4900,6 +5520,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Steelixite, + .iconPalette = gItemIconPalette_Steelixite, }, [ITEM_SCIZORITE] = @@ -4915,6 +5537,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Scizorite, + .iconPalette = gItemIconPalette_Scizorite, }, [ITEM_HERACRONITE] = @@ -4930,6 +5554,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Heracronite, + .iconPalette = gItemIconPalette_Heracronite, }, [ITEM_HOUNDOOMINITE] = @@ -4945,6 +5571,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Houndoominite, + .iconPalette = gItemIconPalette_Houndoominite, }, [ITEM_TYRANITARITE] = @@ -4960,6 +5588,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Tyranitarite, + .iconPalette = gItemIconPalette_Tyranitarite, }, [ITEM_SCEPTILITE] = @@ -4975,6 +5605,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Sceptilite, + .iconPalette = gItemIconPalette_Sceptilite, }, [ITEM_BLAZIKENITE] = @@ -4990,6 +5622,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Blazikenite, + .iconPalette = gItemIconPalette_Blazikenite, }, [ITEM_SWAMPERTITE] = @@ -5005,6 +5639,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Swampertite, + .iconPalette = gItemIconPalette_Swampertite, }, [ITEM_GARDEVOIRITE] = @@ -5020,6 +5656,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Gardevoirite, + .iconPalette = gItemIconPalette_Gardevoirite, }, [ITEM_SABLENITE] = @@ -5035,6 +5673,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Sablenite, + .iconPalette = gItemIconPalette_Sablenite, }, [ITEM_MAWILITE] = @@ -5050,6 +5690,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Mawilite, + .iconPalette = gItemIconPalette_Mawilite, }, [ITEM_AGGRONITE] = @@ -5065,6 +5707,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Aggronite, + .iconPalette = gItemIconPalette_Aggronite, }, [ITEM_MEDICHAMITE] = @@ -5080,6 +5724,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Medichamite, + .iconPalette = gItemIconPalette_Medichamite, }, [ITEM_MANECTITE] = @@ -5095,6 +5741,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Manectite, + .iconPalette = gItemIconPalette_Manectite, }, [ITEM_SHARPEDONITE] = @@ -5110,6 +5758,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Sharpedonite, + .iconPalette = gItemIconPalette_Sharpedonite, }, [ITEM_CAMERUPTITE] = @@ -5125,6 +5775,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Cameruptite, + .iconPalette = gItemIconPalette_Cameruptite, }, [ITEM_ALTARIANITE] = @@ -5140,6 +5792,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Altarianite, + .iconPalette = gItemIconPalette_Altarianite, }, [ITEM_BANETTITE] = @@ -5155,6 +5809,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Banettite, + .iconPalette = gItemIconPalette_Banettite, }, [ITEM_ABSOLITE] = @@ -5170,6 +5826,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Absolite, + .iconPalette = gItemIconPalette_Absolite, }, [ITEM_GLALITITE] = @@ -5185,6 +5843,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Glalitite, + .iconPalette = gItemIconPalette_Glalitite, }, [ITEM_SALAMENCITE] = @@ -5200,6 +5860,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Salamencite, + .iconPalette = gItemIconPalette_Salamencite, }, [ITEM_METAGROSSITE] = @@ -5215,6 +5877,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Metagrossite, + .iconPalette = gItemIconPalette_Metagrossite, }, [ITEM_LATIASITE] = @@ -5230,6 +5894,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Latiasite, + .iconPalette = gItemIconPalette_Latiasite, }, [ITEM_LATIOSITE] = @@ -5245,6 +5911,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Latiosite, + .iconPalette = gItemIconPalette_Latiosite, }, [ITEM_LOPUNNITE] = @@ -5260,6 +5928,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Lopunnite, + .iconPalette = gItemIconPalette_Lopunnite, }, [ITEM_GARCHOMPITE] = @@ -5275,6 +5945,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Garchompite, + .iconPalette = gItemIconPalette_Garchompite, }, [ITEM_LUCARIONITE] = @@ -5290,6 +5962,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Lucarionite, + .iconPalette = gItemIconPalette_Lucarionite, }, [ITEM_ABOMASITE] = @@ -5305,6 +5979,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Abomasite, + .iconPalette = gItemIconPalette_Abomasite, }, [ITEM_GALLADITE] = @@ -5320,6 +5996,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Galladite, + .iconPalette = gItemIconPalette_Galladite, }, [ITEM_AUDINITE] = @@ -5335,6 +6013,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Audinite, + .iconPalette = gItemIconPalette_Audinite, }, [ITEM_DIANCITE] = @@ -5350,6 +6030,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_Diancite, + .iconPalette = gItemIconPalette_Diancite, }, // Gems @@ -5368,6 +6050,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_NORMAL, + .iconPic = gItemIcon_NormalGem, + .iconPalette = gItemIconPalette_NormalGem, }, [ITEM_FIRE_GEM] = @@ -5384,6 +6068,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIRE, + .iconPic = gItemIcon_FireGem, + .iconPalette = gItemIconPalette_FireGem, }, [ITEM_WATER_GEM] = @@ -5400,6 +6086,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_WATER, + .iconPic = gItemIcon_WaterGem, + .iconPalette = gItemIconPalette_WaterGem, }, [ITEM_ELECTRIC_GEM] = @@ -5416,6 +6104,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ELECTRIC, + .iconPic = gItemIcon_ElectricGem, + .iconPalette = gItemIconPalette_ElectricGem, }, [ITEM_GRASS_GEM] = @@ -5432,6 +6122,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GRASS, + .iconPic = gItemIcon_GrassGem, + .iconPalette = gItemIconPalette_GrassGem, }, [ITEM_ICE_GEM] = @@ -5448,6 +6140,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ICE, + .iconPic = gItemIcon_IceGem, + .iconPalette = gItemIconPalette_IceGem, }, [ITEM_FIGHTING_GEM] = @@ -5464,6 +6158,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FIGHTING, + .iconPic = gItemIcon_FightingGem, + .iconPalette = gItemIconPalette_FightingGem, }, [ITEM_POISON_GEM] = @@ -5480,6 +6176,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_POISON, + .iconPic = gItemIcon_PoisonGem, + .iconPalette = gItemIconPalette_PoisonGem, }, [ITEM_GROUND_GEM] = @@ -5496,6 +6194,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GROUND, + .iconPic = gItemIcon_GroundGem, + .iconPalette = gItemIconPalette_GroundGem, }, [ITEM_FLYING_GEM] = @@ -5512,6 +6212,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FLYING, + .iconPic = gItemIcon_FlyingGem, + .iconPalette = gItemIconPalette_FlyingGem, }, [ITEM_PSYCHIC_GEM] = @@ -5528,6 +6230,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_PSYCHIC, + .iconPic = gItemIcon_PsychicGem, + .iconPalette = gItemIconPalette_PsychicGem, }, [ITEM_BUG_GEM] = @@ -5544,6 +6248,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_BUG, + .iconPic = gItemIcon_BugGem, + .iconPalette = gItemIconPalette_BugGem, }, [ITEM_ROCK_GEM] = @@ -5560,6 +6266,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_ROCK, + .iconPic = gItemIcon_RockGem, + .iconPalette = gItemIconPalette_RockGem, }, [ITEM_GHOST_GEM] = @@ -5576,6 +6284,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_GHOST, + .iconPic = gItemIcon_GhostGem, + .iconPalette = gItemIconPalette_GhostGem, }, [ITEM_DRAGON_GEM] = @@ -5592,6 +6302,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DRAGON, + .iconPic = gItemIcon_DragonGem, + .iconPalette = gItemIconPalette_DragonGem, }, [ITEM_DARK_GEM] = @@ -5608,6 +6320,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_DARK, + .iconPic = gItemIcon_DarkGem, + .iconPalette = gItemIconPalette_DarkGem, }, [ITEM_STEEL_GEM] = @@ -5624,6 +6338,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_STEEL, + .iconPic = gItemIcon_SteelGem, + .iconPalette = gItemIconPalette_SteelGem, }, [ITEM_FAIRY_GEM] = @@ -5640,6 +6356,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = TYPE_FAIRY, + .iconPic = gItemIcon_FairyGem, + .iconPalette = gItemIconPalette_FairyGem, }, // Z-Crystals @@ -5656,7 +6374,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_NORMAL + .secondaryId = TYPE_NORMAL, + .iconPic = gItemIcon_NormaliumZ, + .iconPalette = gItemIconPalette_NormaliumZ, }, [ITEM_FIRIUM_Z] = @@ -5671,7 +6391,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_FIRE + .secondaryId = TYPE_FIRE, + .iconPic = gItemIcon_FiriumZ, + .iconPalette = gItemIconPalette_FiriumZ, }, [ITEM_WATERIUM_Z] = @@ -5686,7 +6408,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_WATER + .secondaryId = TYPE_WATER, + .iconPic = gItemIcon_WateriumZ, + .iconPalette = gItemIconPalette_WateriumZ, }, [ITEM_ELECTRIUM_Z] = @@ -5701,7 +6425,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_ELECTRIC + .secondaryId = TYPE_ELECTRIC, + .iconPic = gItemIcon_ElectriumZ, + .iconPalette = gItemIconPalette_ElectriumZ, }, [ITEM_GRASSIUM_Z] = @@ -5716,7 +6442,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_GRASS + .secondaryId = TYPE_GRASS, + .iconPic = gItemIcon_GrassiumZ, + .iconPalette = gItemIconPalette_GrassiumZ, }, [ITEM_ICIUM_Z] = @@ -5731,7 +6459,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_ICE + .secondaryId = TYPE_ICE, + .iconPic = gItemIcon_IciumZ, + .iconPalette = gItemIconPalette_IciumZ, }, [ITEM_FIGHTINIUM_Z] = @@ -5746,7 +6476,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_FIGHTING + .secondaryId = TYPE_FIGHTING, + .iconPic = gItemIcon_FightiniumZ, + .iconPalette = gItemIconPalette_FightiniumZ, }, [ITEM_POISONIUM_Z] = @@ -5761,7 +6493,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_POISON + .secondaryId = TYPE_POISON, + .iconPic = gItemIcon_PoisoniumZ, + .iconPalette = gItemIconPalette_PoisoniumZ, }, [ITEM_GROUNDIUM_Z] = @@ -5776,7 +6510,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_GROUND + .secondaryId = TYPE_GROUND, + .iconPic = gItemIcon_GroundiumZ, + .iconPalette = gItemIconPalette_GroundiumZ, }, [ITEM_FLYINIUM_Z] = @@ -5791,7 +6527,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_FLYING + .secondaryId = TYPE_FLYING, + .iconPic = gItemIcon_FlyiniumZ, + .iconPalette = gItemIconPalette_FlyiniumZ, }, [ITEM_PSYCHIUM_Z] = @@ -5806,7 +6544,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_PSYCHIC + .secondaryId = TYPE_PSYCHIC, + .iconPic = gItemIcon_PsychiumZ, + .iconPalette = gItemIconPalette_PsychiumZ, }, [ITEM_BUGINIUM_Z] = @@ -5821,7 +6561,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_BUG + .secondaryId = TYPE_BUG, + .iconPic = gItemIcon_BuginiumZ, + .iconPalette = gItemIconPalette_BuginiumZ, }, [ITEM_ROCKIUM_Z] = @@ -5836,7 +6578,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_ROCK + .secondaryId = TYPE_ROCK, + .iconPic = gItemIcon_RockiumZ, + .iconPalette = gItemIconPalette_RockiumZ, }, [ITEM_GHOSTIUM_Z] = @@ -5851,7 +6595,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_GHOST + .secondaryId = TYPE_GHOST, + .iconPic = gItemIcon_GhostiumZ, + .iconPalette = gItemIconPalette_GhostiumZ, }, [ITEM_DRAGONIUM_Z] = @@ -5866,7 +6612,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_DRAGON + .secondaryId = TYPE_DRAGON, + .iconPic = gItemIcon_DragoniumZ, + .iconPalette = gItemIconPalette_DragoniumZ, }, [ITEM_DARKINIUM_Z] = @@ -5881,7 +6629,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_DARK + .secondaryId = TYPE_DARK, + .iconPic = gItemIcon_DarkiniumZ, + .iconPalette = gItemIconPalette_DarkiniumZ, }, [ITEM_STEELIUM_Z] = @@ -5896,7 +6646,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_STEEL + .secondaryId = TYPE_STEEL, + .iconPic = gItemIcon_SteeliumZ, + .iconPalette = gItemIconPalette_SteeliumZ, }, [ITEM_FAIRIUM_Z] = @@ -5911,7 +6663,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_FAIRY + .secondaryId = TYPE_FAIRY, + .iconPic = gItemIcon_FairiumZ, + .iconPalette = gItemIconPalette_FairiumZ, }, [ITEM_PIKANIUM_Z] = @@ -5926,7 +6680,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_PikaniumZ, + .iconPalette = gItemIconPalette_PikaniumZ, }, [ITEM_EEVIUM_Z] = @@ -5941,7 +6697,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_EeviumZ, + .iconPalette = gItemIconPalette_EeviumZ, }, [ITEM_SNORLIUM_Z] = @@ -5956,7 +6714,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_SnorliumZ, + .iconPalette = gItemIconPalette_SnorliumZ, }, [ITEM_MEWNIUM_Z] = @@ -5971,7 +6731,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_MewniumZ, + .iconPalette = gItemIconPalette_MewniumZ, }, [ITEM_DECIDIUM_Z] = @@ -5986,7 +6748,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_DecidiumZ, + .iconPalette = gItemIconPalette_DecidiumZ, }, [ITEM_INCINIUM_Z] = @@ -6001,7 +6765,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_InciniumZ, + .iconPalette = gItemIconPalette_InciniumZ, }, [ITEM_PRIMARIUM_Z] = @@ -6016,7 +6782,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_PrimariumZ, + .iconPalette = gItemIconPalette_PrimariumZ, }, [ITEM_LYCANIUM_Z] = @@ -6031,7 +6799,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_LycaniumZ, + .iconPalette = gItemIconPalette_LycaniumZ, }, [ITEM_MIMIKIUM_Z] = @@ -6046,7 +6816,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_MimikiumZ, + .iconPalette = gItemIconPalette_MimikiumZ, }, [ITEM_KOMMONIUM_Z] = @@ -6061,7 +6833,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_KommoniumZ, + .iconPalette = gItemIconPalette_KommoniumZ, }, [ITEM_TAPUNIUM_Z] = @@ -6076,7 +6850,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 //signature z move + .secondaryId = 255, //signature z move + .iconPic = gItemIcon_TapuniumZ, + .iconPalette = gItemIconPalette_TapuniumZ, }, [ITEM_SOLGANIUM_Z] = @@ -6091,7 +6867,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_SolganiumZ, + .iconPalette = gItemIconPalette_SolganiumZ, }, [ITEM_LUNALIUM_Z] = @@ -6106,7 +6884,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_LunaliumZ, + .iconPalette = gItemIconPalette_LunaliumZ, }, [ITEM_MARSHADIUM_Z] = @@ -6121,7 +6901,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_MarshadiumZ, + .iconPalette = gItemIconPalette_MarshadiumZ, }, [ITEM_ALORAICHIUM_Z] = @@ -6136,7 +6918,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_AloraichiumZ, + .iconPalette = gItemIconPalette_AloraichiumZ, }, [ITEM_PIKASHUNIUM_Z] = @@ -6151,12 +6935,14 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 // signature z move + .secondaryId = 255, // signature z move + .iconPic = gItemIcon_PikashuniumZ, + .iconPalette = gItemIconPalette_PikashuniumZ, }, [ITEM_ULTRANECROZIUM_Z] = { - .name = _("U-Necrozium Z"), + .name = HANDLE_EXPANDED_ITEM_NAME("U-Necrozium Z", "Ultranecrozium Z"), .price = 0, .holdEffect = HOLD_EFFECT_Z_CRYSTAL, .description = COMPOUND_STRING( @@ -6166,7 +6952,9 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = 255 //signature z move + .secondaryId = 255, //signature z move + .iconPic = gItemIcon_UltranecroziumZ, + .iconPalette = gItemIconPalette_UltranecroziumZ, }, // Species-specific Held Items @@ -6184,6 +6972,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LightBall, + .iconPalette = gItemIconPalette_LightBall, }, [ITEM_LEEK] = @@ -6199,6 +6989,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_Leek, + .iconPalette = gItemIconPalette_Leek, }, [ITEM_THICK_CLUB] = @@ -6214,6 +7006,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 90, + .iconPic = gItemIcon_ThickClub, + .iconPalette = gItemIconPalette_ThickClub, }, [ITEM_LUCKY_PUNCH] = @@ -6230,6 +7024,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 40, + .iconPic = gItemIcon_LuckyPunch, + .iconPalette = gItemIconPalette_LuckyPunch, }, [ITEM_METAL_POWDER] = @@ -6246,6 +7042,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MetalPowder, + .iconPalette = gItemIconPalette_MetalPowder, }, [ITEM_QUICK_POWDER] = @@ -6262,11 +7060,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_QuickPowder, + .iconPalette = gItemIconPalette_QuickPowder, }, [ITEM_DEEP_SEA_SCALE] = { - .name = _("DeepSeaScale"), + .name = HANDLE_EXPANDED_ITEM_NAME("DeepSeaScale", "Deep Sea Scale"), .price = (I_PRICE >= GEN_7) ? 2000 : 200, .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, .description = COMPOUND_STRING( @@ -6278,12 +7078,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_DeepSeaScale, + .iconPalette = gItemIconPalette_DeepSeaScale, }, [ITEM_DEEP_SEA_TOOTH] = { - .name = _("DeepSeaTooth"), - .pluralName = _("DeepSeaTeeth"), + .name = HANDLE_EXPANDED_ITEM_NAME("DeepSeaTooth", "Deep Sea Tooth"), + .pluralName = _("Deep Sea Teeth"), .price = (I_PRICE >= GEN_7) ? 2000 : 200, .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, .description = COMPOUND_STRING( @@ -6295,6 +7097,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 90, + .iconPic = gItemIcon_DeepSeaTooth, + .iconPalette = gItemIconPalette_DeepSeaTooth, }, [ITEM_SOUL_DEW] = @@ -6317,6 +7121,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_SoulDew, + .iconPalette = gItemIconPalette_SoulDew, }, [ITEM_ADAMANT_ORB] = @@ -6333,6 +7139,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_AdamantOrb, + .iconPalette = gItemIconPalette_AdamantOrb, }, [ITEM_LUSTROUS_ORB] = @@ -6349,6 +7157,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_LustrousOrb, + .iconPalette = gItemIconPalette_LustrousOrb, }, [ITEM_GRISEOUS_ORB] = @@ -6365,6 +7175,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_GriseousOrb, + .iconPalette = gItemIconPalette_GriseousOrb, }, // Incenses @@ -6380,6 +7192,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SeaIncense, + .iconPalette = gItemIconPalette_SeaIncense, }, [ITEM_LAX_INCENSE] = @@ -6396,6 +7210,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LaxIncense, + .iconPalette = gItemIconPalette_LaxIncense, }, [ITEM_ODD_INCENSE] = @@ -6409,6 +7225,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_OddIncense, + .iconPalette = gItemIconPalette_OddIncense, }, [ITEM_ROCK_INCENSE] = @@ -6422,6 +7240,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RockIncense, + .iconPalette = gItemIconPalette_RockIncense, }, [ITEM_FULL_INCENSE] = @@ -6435,6 +7255,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FullIncense, + .iconPalette = gItemIconPalette_FullIncense, }, [ITEM_WAVE_INCENSE] = @@ -6448,6 +7270,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WaveIncense, + .iconPalette = gItemIconPalette_WaveIncense, }, [ITEM_ROSE_INCENSE] = @@ -6461,6 +7285,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RoseIncense, + .iconPalette = gItemIconPalette_RoseIncense, }, [ITEM_LUCK_INCENSE] = @@ -6473,6 +7299,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LuckIncense, + .iconPalette = gItemIconPalette_LuckIncense, }, [ITEM_PURE_INCENSE] = @@ -6485,6 +7313,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PureIncense, + .iconPalette = gItemIconPalette_PureIncense, }, // Contest Scarves @@ -6502,6 +7332,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Scarf, + .iconPalette = gItemIconPalette_RedScarf, }, [ITEM_BLUE_SCARF] = @@ -6517,6 +7349,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Scarf, + .iconPalette = gItemIconPalette_BlueScarf, }, [ITEM_PINK_SCARF] = @@ -6532,6 +7366,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Scarf, + .iconPalette = gItemIconPalette_PinkScarf, }, [ITEM_GREEN_SCARF] = @@ -6547,6 +7383,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Scarf, + .iconPalette = gItemIconPalette_GreenScarf, }, [ITEM_YELLOW_SCARF] = @@ -6562,6 +7400,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Scarf, + .iconPalette = gItemIconPalette_YellowScarf, }, // EV Gain Modifiers @@ -6579,6 +7419,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_MachoBrace, + .iconPalette = gItemIconPalette_MachoBrace, }, [ITEM_POWER_WEIGHT] = @@ -6596,6 +7438,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_HP, .flingPower = 70, + .iconPic = gItemIcon_PowerWeight, + .iconPalette = gItemIconPalette_PowerWeight, }, [ITEM_POWER_BRACER] = @@ -6613,6 +7457,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_ATK, .flingPower = 70, + .iconPic = gItemIcon_PowerBracer, + .iconPalette = gItemIconPalette_PowerBracer, }, [ITEM_POWER_BELT] = @@ -6630,6 +7476,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_DEF, .flingPower = 70, + .iconPic = gItemIcon_PowerBelt, + .iconPalette = gItemIconPalette_PowerBelt, }, [ITEM_POWER_LENS] = @@ -6648,6 +7496,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_SPATK, .flingPower = 70, + .iconPic = gItemIcon_PowerLens, + .iconPalette = gItemIconPalette_PowerLens, }, [ITEM_POWER_BAND] = @@ -6665,6 +7515,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_SPDEF, .flingPower = 70, + .iconPic = gItemIcon_PowerBand, + .iconPalette = gItemIconPalette_PowerBand, }, [ITEM_POWER_ANKLET] = @@ -6682,6 +7534,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = STAT_SPEED, .flingPower = 70, + .iconPic = gItemIcon_PowerAnklet, + .iconPalette = gItemIconPalette_PowerAnklet, }, // Type-boosting Held Items @@ -6701,6 +7555,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SilkScarf, + .iconPalette = gItemIconPalette_SilkScarf, }, [ITEM_CHARCOAL] = @@ -6717,6 +7573,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Charcoal, + .iconPalette = gItemIconPalette_Charcoal, }, [ITEM_MYSTIC_WATER] = @@ -6734,6 +7592,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_MysticWater, + .iconPalette = gItemIconPalette_MysticWater, }, [ITEM_MAGNET] = @@ -6750,6 +7610,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Magnet, + .iconPalette = gItemIconPalette_Magnet, }, [ITEM_MIRACLE_SEED] = @@ -6763,12 +7625,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_MiracleSeed, + .iconPalette = gItemIconPalette_MiracleSeed, }, [ITEM_NEVER_MELT_ICE] = { - .name = _("Never-MeltIce"), - .pluralName = _("Never-MeltIce"), + .name = HANDLE_EXPANDED_ITEM_NAME("Never-MeltIce", "Never-Melt Ice"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Never-MeltIce", "Never-Melt Ice"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_ICE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6780,6 +7644,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_NeverMeltIce, + .iconPalette = gItemIconPalette_NeverMeltIce, }, [ITEM_BLACK_BELT] = @@ -6796,6 +7662,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BlackBelt, + .iconPalette = gItemIconPalette_BlackTypeEnhancingItem, }, [ITEM_POISON_BARB] = @@ -6812,6 +7680,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 70, + .iconPic = gItemIcon_PoisonBarb, + .iconPalette = gItemIconPalette_PoisonBarb, }, [ITEM_SOFT_SAND] = @@ -6829,6 +7699,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SoftSand, + .iconPalette = gItemIconPalette_SoftSand, }, [ITEM_SHARP_BEAK] = @@ -6845,6 +7717,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 50, + .iconPic = gItemIcon_SharpBeak, + .iconPalette = gItemIconPalette_SharpBeak, }, [ITEM_TWISTED_SPOON] = @@ -6858,6 +7732,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_TwistedSpoon, + .iconPalette = gItemIconPalette_TwistedSpoon, }, [ITEM_SILVER_POWDER] = @@ -6875,6 +7751,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SilverPowder, + .iconPalette = gItemIconPalette_SilverPowder, }, [ITEM_HARD_STONE] = @@ -6888,6 +7766,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_HardStone, + .iconPalette = gItemIconPalette_HardStone, }, [ITEM_SPELL_TAG] = @@ -6904,6 +7784,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_SpellTag, + .iconPalette = gItemIconPalette_SpellTag, }, [ITEM_DRAGON_FANG] = @@ -6920,6 +7802,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 70, + .iconPic = gItemIcon_DragonFang, + .iconPalette = gItemIconPalette_DragonFang, }, [ITEM_BLACK_GLASSES] = @@ -6937,6 +7821,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BlackGlasses, + .iconPalette = gItemIconPalette_BlackTypeEnhancingItem, }, [ITEM_METAL_COAT] = @@ -6954,6 +7840,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_MetalCoat, + .iconPalette = gItemIconPalette_MetalCoat, }, // Choice Items @@ -6971,6 +7859,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChoiceBand, + .iconPalette = gItemIconPalette_ChoiceBand, }, [ITEM_CHOICE_SPECS] = @@ -6987,6 +7877,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChoiceSpecs, + .iconPalette = gItemIconPalette_ChoiceSpecs, }, [ITEM_CHOICE_SCARF] = @@ -7003,6 +7895,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChoiceScarf, + .iconPalette = gItemIconPalette_ChoiceScarf, }, // Status Orbs @@ -7020,6 +7914,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_FlameOrb, + .iconPalette = gItemIconPalette_FlameOrb, }, [ITEM_TOXIC_ORB] = @@ -7035,6 +7931,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ToxicOrb, + .iconPalette = gItemIconPalette_ToxicOrb, }, // Weather Rocks @@ -7052,6 +7950,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_DampRock, + .iconPalette = gItemIconPalette_DampRock, }, [ITEM_HEAT_ROCK] = @@ -7067,6 +7967,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_HeatRock, + .iconPalette = gItemIconPalette_HeatRock, }, [ITEM_SMOOTH_ROCK] = @@ -7082,6 +7984,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SmoothRock, + .iconPalette = gItemIconPalette_SmoothRock, }, [ITEM_ICY_ROCK] = @@ -7097,6 +8001,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 40, + .iconPic = gItemIcon_IcyRock, + .iconPalette = gItemIconPalette_IcyRock, }, // Terrain Seeds @@ -7115,6 +8021,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ElectricSeed, + .iconPalette = gItemIconPalette_ElectricSeed, }, [ITEM_PSYCHIC_SEED] = @@ -7131,6 +8039,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PsychicSeed, + .iconPalette = gItemIconPalette_PsychicSeed, }, [ITEM_MISTY_SEED] = @@ -7147,6 +8057,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MistySeed, + .iconPalette = gItemIconPalette_MistySeed, }, [ITEM_GRASSY_SEED] = @@ -7163,6 +8075,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_GrassySeed, + .iconPalette = gItemIconPalette_GrassySeed, }, // Type-activated Stat Modifiers @@ -7181,6 +8095,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_AbsorbBulb, + .iconPalette = gItemIconPalette_AbsorbBulb, }, [ITEM_CELL_BATTERY] = @@ -7198,6 +8114,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_CellBattery, + .iconPalette = gItemIconPalette_CellBattery, }, [ITEM_LUMINOUS_MOSS] = @@ -7215,6 +8133,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LuminousMoss, + .iconPalette = gItemIconPalette_LuminousMoss, }, [ITEM_SNOWBALL] = @@ -7231,6 +8151,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Snowball, + .iconPalette = gItemIconPalette_Snowball, }, // Misc. Held Items @@ -7250,6 +8172,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BrightPowder, + .iconPalette = gItemIconPalette_BrightPowder, }, [ITEM_WHITE_HERB] = @@ -7265,6 +8189,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_InBattleHerb, + .iconPalette = gItemIconPalette_WhiteHerb, }, [ITEM_EXP_SHARE] = @@ -7288,6 +8214,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_ExpShare, .flingPower = 30, + .iconPic = gItemIcon_ExpShare, + .iconPalette = gItemIconPalette_ExpShare, }, [ITEM_QUICK_CLAW] = @@ -7304,6 +8232,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_QuickClaw, + .iconPalette = gItemIconPalette_QuickClaw, }, [ITEM_SOOTHE_BELL] = @@ -7319,6 +8249,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SootheBell, + .iconPalette = gItemIconPalette_SootheBell, }, [ITEM_MENTAL_HERB] = @@ -7340,6 +8272,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_InBattleHerb, + .iconPalette = gItemIconPalette_MentalHerb, }, [ITEM_KINGS_ROCK] = @@ -7354,6 +8288,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_KingsRock, + .iconPalette = gItemIconPalette_KingsRock, }, [ITEM_AMULET_COIN] = @@ -7366,6 +8302,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_AmuletCoin, + .iconPalette = gItemIconPalette_AmuletCoin, }, [ITEM_CLEANSE_TAG] = @@ -7378,6 +8316,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_CleanseTag, + .iconPalette = gItemIconPalette_CleanseTag, }, [ITEM_SMOKE_BALL] = @@ -7393,6 +8333,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_SmokeBall, + .iconPalette = gItemIconPalette_SmokeBall, }, [ITEM_FOCUS_BAND] = @@ -7409,6 +8351,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FocusBand, + .iconPalette = gItemIconPalette_FocusBand, }, [ITEM_LUCKY_EGG] = @@ -7424,6 +8368,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LuckyEgg, + .iconPalette = gItemIconPalette_LuckyEgg, }, [ITEM_SCOPE_LENS] = @@ -7440,6 +8386,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ScopeLens, + .iconPalette = gItemIconPalette_ScopeLens, }, [ITEM_LEFTOVERS] = @@ -7457,6 +8405,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_Leftovers, + .iconPalette = gItemIconPalette_Leftovers, }, [ITEM_SHELL_BELL] = @@ -7473,6 +8423,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ShellBell, + .iconPalette = gItemIconPalette_Shell, }, [ITEM_WIDE_LENS] = @@ -7490,6 +8442,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WideLens, + .iconPalette = gItemIconPalette_WideLens, }, [ITEM_MUSCLE_BAND] = @@ -7506,6 +8460,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MuscleBand, + .iconPalette = gItemIconPalette_MuscleBand, }, [ITEM_WISE_GLASSES] = @@ -7523,6 +8479,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WiseGlasses, + .iconPalette = gItemIconPalette_WiseGlasses, }, [ITEM_EXPERT_BELT] = @@ -7539,6 +8497,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ExpertBelt, + .iconPalette = gItemIconPalette_ExpertBelt, }, [ITEM_LIGHT_CLAY] = @@ -7555,6 +8515,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LightClay, + .iconPalette = gItemIconPalette_LightClay, }, [ITEM_LIFE_ORB] = @@ -7570,6 +8532,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LifeOrb, + .iconPalette = gItemIconPalette_LifeOrb, }, [ITEM_POWER_HERB] = @@ -7585,6 +8549,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PowerHerb, + .iconPalette = gItemIconPalette_PowerHerb, }, [ITEM_FOCUS_SASH] = @@ -7601,6 +8567,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FocusSash, + .iconPalette = gItemIconPalette_FocusSash, }, [ITEM_ZOOM_LENS] = @@ -7618,6 +8586,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ZoomLens, + .iconPalette = gItemIconPalette_ZoomLens, }, [ITEM_METRONOME] = @@ -7634,6 +8604,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_Metronome, + .iconPalette = gItemIconPalette_Metronome, }, [ITEM_IRON_BALL] = @@ -7649,6 +8621,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 130, + .iconPic = gItemIcon_IronBall, + .iconPalette = gItemIconPalette_IronBall, }, [ITEM_LAGGING_TAIL] = @@ -7661,6 +8635,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LaggingTail, + .iconPalette = gItemIconPalette_LaggingTail, }, [ITEM_DESTINY_KNOT] = @@ -7676,6 +8652,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_DestinyKnot, + .iconPalette = gItemIconPalette_DestinyKnot, }, [ITEM_BLACK_SLUDGE] = @@ -7692,6 +8670,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BlackSludge, + .iconPalette = gItemIconPalette_BlackSludge, }, [ITEM_GRIP_CLAW] = @@ -7707,6 +8687,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 90, + .iconPic = gItemIcon_GripClaw, + .iconPalette = gItemIconPalette_GripClaw, }, [ITEM_STICKY_BARB] = @@ -7722,6 +8704,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_StickyBarb, + .iconPalette = gItemIconPalette_StickyBarb, }, [ITEM_SHED_SHELL] = @@ -7737,6 +8721,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ShedShell, + .iconPalette = gItemIconPalette_ShedShell, }, [ITEM_BIG_ROOT] = @@ -7753,6 +8739,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BigRoot, + .iconPalette = gItemIconPalette_BigRoot, }, [ITEM_RAZOR_CLAW] = @@ -7769,6 +8757,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_RazorClaw, + .iconPalette = gItemIconPalette_RazorClaw, }, [ITEM_RAZOR_FANG] = @@ -7783,6 +8773,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_RazorFang, + .iconPalette = gItemIconPalette_RazorFang, }, [ITEM_EVIOLITE] = @@ -7799,6 +8791,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 40, + .iconPic = gItemIcon_Eviolite, + .iconPalette = gItemIconPalette_Eviolite, }, [ITEM_FLOAT_STONE] = @@ -7814,6 +8808,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_FloatStone, + .iconPalette = gItemIconPalette_FloatStone, }, [ITEM_ROCKY_HELMET] = @@ -7830,6 +8826,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_RockyHelmet, + .iconPalette = gItemIconPalette_RockyHelmet, }, [ITEM_AIR_BALLOON] = @@ -7846,6 +8844,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_AirBalloon, + .iconPalette = gItemIconPalette_AirBalloon, }, [ITEM_RED_CARD] = @@ -7862,6 +8862,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RedCard, + .iconPalette = gItemIconPalette_RedCard, }, [ITEM_RING_TARGET] = @@ -7878,6 +8880,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RingTarget, + .iconPalette = gItemIconPalette_RingTarget, }, [ITEM_BINDING_BAND] = @@ -7893,6 +8897,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BindingBand, + .iconPalette = gItemIconPalette_BindingBand, }, [ITEM_EJECT_BUTTON] = @@ -7909,12 +8915,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_EjectButton, + .iconPalette = gItemIconPalette_EjectButton, }, [ITEM_WEAKNESS_POLICY] = { - .name = _("WeaknssPolicy"), - .pluralName = _("WeaknssPolicies"), + .name = HANDLE_EXPANDED_ITEM_NAME("WeaknssPolicy", "Weakness Policy"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("WeaknssPolicies", "Weakness Policies"), .price = (I_PRICE >= GEN_9) ? 50000 : 1000, .holdEffect = HOLD_EFFECT_WEAKNESS_POLICY, .holdEffectParam = 0, @@ -7926,6 +8934,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_WeaknessPolicy, + .iconPalette = gItemIconPalette_WeaknessPolicy, }, [ITEM_ASSAULT_VEST] = @@ -7942,12 +8952,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_AssaultVest, + .iconPalette = gItemIconPalette_AssaultVest, }, [ITEM_SAFETY_GOGGLES] = { - .name = _("SafetyGoggles"), - .pluralName = _("SafetyGoggles"), + .name = HANDLE_EXPANDED_ITEM_NAME("SafetyGoggles", "Safety Goggles"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("SafetyGoggles", "Safety Goggles"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 1000), .holdEffect = HOLD_EFFECT_SAFETY_GOGGLES, .description = COMPOUND_STRING( @@ -7958,11 +8970,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_SafetyGoggles, + .iconPalette = gItemIconPalette_SafetyGoggles, }, [ITEM_ADRENALINE_ORB] = { - .name = _("AdrenalineOrb"), + .name = HANDLE_EXPANDED_ITEM_NAME("AdrenalineOrb", "Adrenaline Orb"), .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_8) ? 4000 : 300), .holdEffect = HOLD_EFFECT_ADRENALINE_ORB, .description = COMPOUND_STRING( @@ -7973,11 +8987,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_AdrenalineOrb, + .iconPalette = gItemIconPalette_AdrenalineOrb, }, [ITEM_TERRAIN_EXTENDER] = { - .name = _("TerainExtendr"), + .name = HANDLE_EXPANDED_ITEM_NAME("TerainExtendr", "Terrain Extender"), .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_TERRAIN_EXTENDER, .description = COMPOUND_STRING( @@ -7988,12 +9004,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_TerrainExtender, + .iconPalette = gItemIconPalette_TerrainExtender, }, [ITEM_PROTECTIVE_PADS] = { - .name = _("ProtectvePads"), - .pluralName = _("ProtectvePads"), + .name = HANDLE_EXPANDED_ITEM_NAME("ProtectvePads", "Protective Pads"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("ProtectvePads", "Protective Pads"), .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_PROTECTIVE_PADS, .description = COMPOUND_STRING( @@ -8004,6 +9022,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ProtectivePads, + .iconPalette = gItemIconPalette_ProtectivePads, }, [ITEM_THROAT_SPRAY] = @@ -8019,6 +9039,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ThroatSpray, + .iconPalette = gItemIconPalette_ThroatSpray, }, [ITEM_EJECT_PACK] = @@ -8034,12 +9056,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 50, + .iconPic = gItemIcon_EjectPack, + .iconPalette = gItemIconPalette_EjectPack, }, [ITEM_HEAVY_DUTY_BOOTS] = { - .name = _("Heavy-DtyBts"), - .pluralName = _("Heavy-DtyBts"), + .name = HANDLE_EXPANDED_ITEM_NAME("Heavy-DtyBts", "Heavy-Duty Boots"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("Heavy-DtyBts", "Heavy-Duty Boots"), .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_HEAVY_DUTY_BOOTS, .description = COMPOUND_STRING( @@ -8050,12 +9074,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_HeavyDutyBoots, + .iconPalette = gItemIconPalette_HeavyDutyBoots, }, [ITEM_BLUNDER_POLICY] = { - .name = _("BlundrPolicy"), - .pluralName = _("BlundrPolicies"), + .name = HANDLE_EXPANDED_ITEM_NAME("BlundrPolicy", "Blunder Policy"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("BlundrPolicies", "Blunder Policies"), .price = (I_PRICE >= GEN_9) ? 30000 : 4000, .holdEffect = HOLD_EFFECT_BLUNDER_POLICY, .description = COMPOUND_STRING( @@ -8066,6 +9092,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 80, + .iconPic = gItemIcon_BlunderPolicy, + .iconPalette = gItemIconPalette_BlunderPolicy, }, [ITEM_ROOM_SERVICE] = @@ -8081,11 +9109,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 100, + .iconPic = gItemIcon_RoomService, + .iconPalette = gItemIconPalette_RoomService, }, [ITEM_UTILITY_UMBRELLA] = { - .name = _("UtltyUmbrlla"), + .name = HANDLE_EXPANDED_ITEM_NAME("UtltyUmbrlla", "Utility Umbrella"), .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_UTILITY_UMBRELLA, .description = COMPOUND_STRING( @@ -8096,6 +9126,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_UtilityUmbrella, + .iconPalette = gItemIconPalette_UtilityUmbrella, }, // Berries @@ -8116,6 +9148,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_ParalyzeHeal, .flingPower = 10, + .iconPic = gItemIcon_CheriBerry, + .iconPalette = gItemIconPalette_CheriBerry, }, [ITEM_CHESTO_BERRY] = @@ -8134,6 +9168,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_Awakening, .flingPower = 10, + .iconPic = gItemIcon_ChestoBerry, + .iconPalette = gItemIconPalette_ChestoBerry, }, [ITEM_PECHA_BERRY] = @@ -8152,6 +9188,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_Antidote, .flingPower = 10, + .iconPic = gItemIcon_PechaBerry, + .iconPalette = gItemIconPalette_PechaBerry, }, [ITEM_RAWST_BERRY] = @@ -8170,6 +9208,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_BurnHeal, .flingPower = 10, + .iconPic = gItemIcon_RawstBerry, + .iconPalette = gItemIconPalette_RawstBerry, }, [ITEM_ASPEAR_BERRY] = @@ -8188,6 +9228,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_IceHeal, .flingPower = 10, + .iconPic = gItemIcon_AspearBerry, + .iconPalette = gItemIconPalette_AspearBerry, }, [ITEM_LEPPA_BERRY] = @@ -8207,6 +9249,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_PP, .effect = gItemEffect_LeppaBerry, .flingPower = 10, + .iconPic = gItemIcon_LeppaBerry, + .iconPalette = gItemIconPalette_LeppaBerry, }, [ITEM_ORAN_BERRY] = @@ -8226,6 +9270,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_OranBerry, .flingPower = 10, + .iconPic = gItemIcon_OranBerry, + .iconPalette = gItemIconPalette_OranBerry, }, [ITEM_PERSIM_BERRY] = @@ -8244,6 +9290,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_PersimBerry, .flingPower = 10, + .iconPic = gItemIcon_PersimBerry, + .iconPalette = gItemIconPalette_PersimBerry, }, [ITEM_LUM_BERRY] = @@ -8262,6 +9310,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_CURE_STATUS, .effect = gItemEffect_FullHeal, .flingPower = 10, + .iconPic = gItemIcon_LumBerry, + .iconPalette = gItemIconPalette_LumBerry, }, [ITEM_SITRUS_BERRY] = @@ -8290,6 +9340,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_SitrusBerry, .flingPower = 10, + .iconPic = gItemIcon_SitrusBerry, + .iconPalette = gItemIconPalette_SitrusBerry, }, [ITEM_FIGY_BERRY] = @@ -8304,6 +9356,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FigyBerry, + .iconPalette = gItemIconPalette_FigyBerry, }, [ITEM_WIKI_BERRY] = @@ -8318,6 +9372,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WikiBerry, + .iconPalette = gItemIconPalette_WikiBerry, }, [ITEM_MAGO_BERRY] = @@ -8332,6 +9388,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MagoBerry, + .iconPalette = gItemIconPalette_MagoBerry, }, [ITEM_AGUAV_BERRY] = @@ -8346,6 +9404,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_AguavBerry, + .iconPalette = gItemIconPalette_AguavBerry, }, [ITEM_IAPAPA_BERRY] = @@ -8360,6 +9420,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_IapapaBerry, + .iconPalette = gItemIconPalette_IapapaBerry, }, [ITEM_RAZZ_BERRY] = @@ -8375,6 +9437,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RazzBerry, + .iconPalette = gItemIconPalette_RazzBerry, }, [ITEM_BLUK_BERRY] = @@ -8390,6 +9454,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BlukBerry, + .iconPalette = gItemIconPalette_BlukBerry, }, [ITEM_NANAB_BERRY] = @@ -8405,6 +9471,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_NanabBerry, + .iconPalette = gItemIconPalette_NanabBerry, }, [ITEM_WEPEAR_BERRY] = @@ -8420,6 +9488,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WepearBerry, + .iconPalette = gItemIconPalette_WepearBerry, }, [ITEM_PINAP_BERRY] = @@ -8435,6 +9505,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PinapBerry, + .iconPalette = gItemIconPalette_PinapBerry, }, [ITEM_POMEG_BERRY] = @@ -8451,6 +9523,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_PomegBerry, .flingPower = 10, + .iconPic = gItemIcon_PomegBerry, + .iconPalette = gItemIconPalette_PomegBerry, }, [ITEM_KELPSY_BERRY] = @@ -8467,6 +9541,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_KelpsyBerry, .flingPower = 10, + .iconPic = gItemIcon_KelpsyBerry, + .iconPalette = gItemIconPalette_KelpsyBerry, }, [ITEM_QUALOT_BERRY] = @@ -8483,6 +9559,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_QualotBerry, .flingPower = 10, + .iconPic = gItemIcon_QualotBerry, + .iconPalette = gItemIconPalette_QualotBerry, }, [ITEM_HONDEW_BERRY] = @@ -8499,6 +9577,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_HondewBerry, .flingPower = 10, + .iconPic = gItemIcon_HondewBerry, + .iconPalette = gItemIconPalette_HondewBerry, }, [ITEM_GREPA_BERRY] = @@ -8515,6 +9595,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_GrepaBerry, .flingPower = 10, + .iconPic = gItemIcon_GrepaBerry, + .iconPalette = gItemIconPalette_GrepaBerry, }, [ITEM_TAMATO_BERRY] = @@ -8531,6 +9613,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ReduceEV, .effect = gItemEffect_TamatoBerry, .flingPower = 10, + .iconPic = gItemIcon_TamatoBerry, + .iconPalette = gItemIconPalette_TamatoBerry, }, [ITEM_CORNN_BERRY] = @@ -8546,6 +9630,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_CornnBerry, + .iconPalette = gItemIconPalette_CornnBerry, }, [ITEM_MAGOST_BERRY] = @@ -8561,6 +9647,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MagostBerry, + .iconPalette = gItemIconPalette_MagostBerry, }, [ITEM_RABUTA_BERRY] = @@ -8576,6 +9664,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RabutaBerry, + .iconPalette = gItemIconPalette_RabutaBerry, }, [ITEM_NOMEL_BERRY] = @@ -8591,6 +9681,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_NomelBerry, + .iconPalette = gItemIconPalette_NomelBerry, }, [ITEM_SPELON_BERRY] = @@ -8606,6 +9698,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SpelonBerry, + .iconPalette = gItemIconPalette_SpelonBerry, }, [ITEM_PAMTRE_BERRY] = @@ -8621,6 +9715,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PamtreBerry, + .iconPalette = gItemIconPalette_PamtreBerry, }, [ITEM_WATMEL_BERRY] = @@ -8636,6 +9732,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WatmelBerry, + .iconPalette = gItemIconPalette_WatmelBerry, }, [ITEM_DURIN_BERRY] = @@ -8651,6 +9749,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_DurinBerry, + .iconPalette = gItemIconPalette_DurinBerry, }, [ITEM_BELUE_BERRY] = @@ -8666,6 +9766,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BelueBerry, + .iconPalette = gItemIconPalette_BelueBerry, }, [ITEM_CHILAN_BERRY] = @@ -8683,6 +9785,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChilanBerry, + .iconPalette = gItemIconPalette_ChilanBerry, }, [ITEM_OCCA_BERRY] = @@ -8700,6 +9804,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_OccaBerry, + .iconPalette = gItemIconPalette_OccaBerry, }, [ITEM_PASSHO_BERRY] = @@ -8717,6 +9823,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PasshoBerry, + .iconPalette = gItemIconPalette_PasshoBerry, }, [ITEM_WACAN_BERRY] = @@ -8734,6 +9842,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_WacanBerry, + .iconPalette = gItemIconPalette_WacanBerry, }, [ITEM_RINDO_BERRY] = @@ -8751,6 +9861,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RindoBerry, + .iconPalette = gItemIconPalette_RindoBerry, }, [ITEM_YACHE_BERRY] = @@ -8768,6 +9880,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_YacheBerry, + .iconPalette = gItemIconPalette_YacheBerry, }, [ITEM_CHOPLE_BERRY] = @@ -8785,6 +9899,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChopleBerry, + .iconPalette = gItemIconPalette_ChopleBerry, }, [ITEM_KEBIA_BERRY] = @@ -8802,6 +9918,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_KebiaBerry, + .iconPalette = gItemIconPalette_KebiaBerry, }, [ITEM_SHUCA_BERRY] = @@ -8819,6 +9937,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ShucaBerry, + .iconPalette = gItemIconPalette_ShucaBerry, }, [ITEM_COBA_BERRY] = @@ -8836,6 +9956,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_CobaBerry, + .iconPalette = gItemIconPalette_CobaBerry, }, [ITEM_PAYAPA_BERRY] = @@ -8853,6 +9975,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PayapaBerry, + .iconPalette = gItemIconPalette_PayapaBerry, }, [ITEM_TANGA_BERRY] = @@ -8870,6 +9994,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_TangaBerry, + .iconPalette = gItemIconPalette_TangaBerry, }, [ITEM_CHARTI_BERRY] = @@ -8887,6 +10013,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ChartiBerry, + .iconPalette = gItemIconPalette_ChartiBerry, }, [ITEM_KASIB_BERRY] = @@ -8904,6 +10032,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_KasibBerry, + .iconPalette = gItemIconPalette_KasibBerry, }, [ITEM_HABAN_BERRY] = @@ -8921,6 +10051,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_HabanBerry, + .iconPalette = gItemIconPalette_HabanBerry, }, [ITEM_COLBUR_BERRY] = @@ -8938,6 +10070,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ColburBerry, + .iconPalette = gItemIconPalette_ColburBerry, }, [ITEM_BABIRI_BERRY] = @@ -8955,6 +10089,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BabiriBerry, + .iconPalette = gItemIconPalette_BabiriBerry, }, [ITEM_ROSELI_BERRY] = @@ -8972,6 +10108,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RoseliBerry, + .iconPalette = gItemIconPalette_RoseliBerry, }, [ITEM_LIECHI_BERRY] = @@ -8989,6 +10127,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LiechiBerry, + .iconPalette = gItemIconPalette_LiechiBerry, }, [ITEM_GANLON_BERRY] = @@ -9006,6 +10146,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_GanlonBerry, + .iconPalette = gItemIconPalette_GanlonBerry, }, [ITEM_SALAC_BERRY] = @@ -9023,6 +10165,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_SalacBerry, + .iconPalette = gItemIconPalette_SalacBerry, }, [ITEM_PETAYA_BERRY] = @@ -9040,6 +10184,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_PetayaBerry, + .iconPalette = gItemIconPalette_PetayaBerry, }, [ITEM_APICOT_BERRY] = @@ -9057,6 +10203,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_ApicotBerry, + .iconPalette = gItemIconPalette_ApicotBerry, }, [ITEM_LANSAT_BERRY] = @@ -9074,6 +10222,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_LansatBerry, + .iconPalette = gItemIconPalette_LansatBerry, }, [ITEM_STARF_BERRY] = @@ -9091,6 +10241,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_StarfBerry, + .iconPalette = gItemIconPalette_StarfBerry, }, [ITEM_ENIGMA_BERRY] = @@ -9107,6 +10259,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_EnigmaBerry, + .iconPalette = gItemIconPalette_EnigmaBerry, }, [ITEM_MICLE_BERRY] = @@ -9124,6 +10278,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MicleBerry, + .iconPalette = gItemIconPalette_MicleBerry, }, [ITEM_CUSTAP_BERRY] = @@ -9141,6 +10297,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_CustapBerry, + .iconPalette = gItemIconPalette_CustapBerry, }, [ITEM_JABOCA_BERRY] = @@ -9157,6 +10315,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_JabocaBerry, + .iconPalette = gItemIconPalette_JabocaBerry, }, [ITEM_ROWAP_BERRY] = @@ -9173,6 +10333,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_RowapBerry, + .iconPalette = gItemIconPalette_RowapBerry, }, [ITEM_KEE_BERRY] = @@ -9189,6 +10351,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_KeeBerry, + .iconPalette = gItemIconPalette_KeeBerry, }, [ITEM_MARANGA_BERRY] = @@ -9205,6 +10369,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_MarangaBerry, + .iconPalette = gItemIconPalette_MarangaBerry, }, [ITEM_ENIGMA_BERRY_E_READER] = @@ -9221,6 +10387,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry, .battleUsage = EFFECT_ITEM_ENIGMA_BERRY_EREADER, .flingPower = 10, + .iconPic = gItemIcon_EnigmaBerry, + .iconPalette = gItemIconPalette_EnigmaBerry, }, // TMs/HMs. They don't have a set flingPower, as that's handled by GetFlingPowerFromItemId. @@ -10720,6 +11888,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_OvalCharm, + .iconPalette = gItemIconPalette_OvalCharm, }, [ITEM_SHINY_CHARM] = @@ -10734,11 +11904,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_ShinyCharm, + .iconPalette = gItemIconPalette_ShinyCharm, }, [ITEM_CATCHING_CHARM] = { - .name = _("CatchngCharm"), + .name = HANDLE_EXPANDED_ITEM_NAME("CatchngCharm", "Catching Charm"), .price = 0, .importance = 1, .description = COMPOUND_STRING( @@ -10748,6 +11920,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_CatchingCharm, + .iconPalette = gItemIconPalette_CatchingCharm, }, [ITEM_EXP_CHARM] = @@ -10762,13 +11936,15 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_ExpCharm, + .iconPalette = gItemIconPalette_ExpCharm, }, // Form-changing Key Items [ITEM_ROTOM_CATALOG] = { - .name = _("RotomCatalog"), + .name = HANDLE_EXPANDED_ITEM_NAME("RotomCatalog", "Rotom Catalog"), .price = 0, .importance = 1, .description = COMPOUND_STRING( @@ -10778,6 +11954,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_RotomCatalog, + .iconPic = gItemIcon_RotomCatalog, + .iconPalette = gItemIconPalette_RotomCatalog, }, [ITEM_GRACIDEA] = @@ -10792,6 +11970,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, + .iconPic = gItemIcon_Gracidea, + .iconPalette = gItemIconPalette_Gracidea, }, [ITEM_REVEAL_GLASS] = @@ -10807,6 +11987,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, + .iconPic = gItemIcon_RevealGlass, + .iconPalette = gItemIconPalette_RevealGlass, }, [ITEM_DNA_SPLICERS] = @@ -10822,6 +12004,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Fusion, + .iconPic = gItemIcon_DNASplicers, + .iconPalette = gItemIconPalette_DNASplicers, }, [ITEM_ZYGARDE_CUBE] = @@ -10836,6 +12020,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_ZygardeCube, + .iconPic = gItemIcon_ZygardeCube, + .iconPalette = gItemIconPalette_ZygardeCube, }, [ITEM_PRISON_BOTTLE] = @@ -10850,6 +12036,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, + .iconPic = gItemIcon_PrisonBottle, + .iconPalette = gItemIconPalette_PrisonBottle, }, [ITEM_N_SOLARIZER] = @@ -10864,6 +12052,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Fusion, + .iconPic = gItemIcon_NecrozmaFuser, + .iconPalette = gItemIconPalette_NSolarizer, }, [ITEM_N_LUNARIZER] = @@ -10878,12 +12068,14 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Fusion, + .iconPic = gItemIcon_NecrozmaFuser, + .iconPalette = gItemIconPalette_NLunarizer, }, [ITEM_REINS_OF_UNITY] = { - .name = _("ReinsOfUnity"), - .pluralName = _("ReinsOfUnity"), + .name = HANDLE_EXPANDED_ITEM_NAME("ReinsOfUnity", "Reins of Unity"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("ReinsOfUnity", "Reins of Unity"), .price = 0, .importance = 1, .description = COMPOUND_STRING( @@ -10893,6 +12085,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_Fusion, + .iconPic = gItemIcon_ReinsOfUnity, + .iconPalette = gItemIconPalette_ReinsOfUnity, }, // Battle Mechanic Key Items @@ -10909,6 +12103,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_MegaRing, + .iconPalette = gItemIconPalette_MegaRing, }, [ITEM_Z_POWER_RING] = @@ -10923,6 +12119,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_ZPowerRing, + .iconPalette = gItemIconPalette_ZPowerRing, }, [ITEM_DYNAMAX_BAND] = @@ -10936,6 +12134,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_DynamaxBand, + .iconPalette = gItemIconPalette_DynamaxBand, }, // Misc. Key Items @@ -10952,6 +12152,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Bicycle, + .iconPalette = gItemIconPalette_Bicycle, }, [ITEM_MACH_BIKE] = @@ -10967,6 +12169,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Bike, .secondaryId = MACH_BIKE, + .iconPic = gItemIcon_MachBike, + .iconPalette = gItemIconPalette_MachBike, }, [ITEM_ACRO_BIKE] = @@ -10982,6 +12186,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Bike, .secondaryId = ACRO_BIKE, + .iconPic = gItemIcon_AcroBike, + .iconPalette = gItemIconPalette_AcroBike, }, [ITEM_OLD_ROD] = @@ -10997,6 +12203,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Rod, .secondaryId = OLD_ROD, + .iconPic = gItemIcon_OldRod, + .iconPalette = gItemIconPalette_OldRod, }, [ITEM_GOOD_ROD] = @@ -11012,6 +12220,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Rod, .secondaryId = GOOD_ROD, + .iconPic = gItemIcon_GoodRod, + .iconPalette = gItemIconPalette_GoodRod, }, [ITEM_SUPER_ROD] = @@ -11027,6 +12237,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Rod, .secondaryId = SUPER_ROD, + .iconPic = gItemIcon_SuperRod, + .iconPalette = gItemIconPalette_SuperRod, }, [ITEM_DOWSING_MACHINE] = @@ -11041,6 +12253,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_Itemfinder, + .iconPic = gItemIcon_DowsingMachine, + .iconPalette = gItemIconPalette_DowsingMachine, }, [ITEM_TOWN_MAP] = @@ -11055,6 +12269,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TownMap, + .iconPalette = gItemIconPalette_TownMap, }, [ITEM_VS_SEEKER] = @@ -11073,6 +12289,8 @@ const struct Item gItemsInfo[] = #else .fieldUseFunc = ItemUseOutOfBattle_CannotUse, #endif + .iconPic = gItemIcon_VsSeeker, + .iconPalette = gItemIconPalette_VsSeeker, }, [ITEM_TM_CASE] = @@ -11087,6 +12305,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TMCase, + .iconPalette = gItemIconPalette_TMCase, }, [ITEM_BERRY_POUCH] = @@ -11102,6 +12322,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BerryPouch, + .iconPalette = gItemIconPalette_BerryPouch, }, [ITEM_POKEMON_BOX_LINK] = @@ -11116,6 +12338,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_PokemonBoxLink, + .iconPic = gItemIcon_PokemonBoxLink, + .iconPalette = gItemIconPalette_PokemonBoxLink, }, [ITEM_COIN_CASE] = @@ -11129,6 +12353,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CoinCase, + .iconPic = gItemIcon_CoinCase, + .iconPalette = gItemIconPalette_CoinCase, }, [ITEM_POWDER_JAR] = @@ -11143,6 +12369,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_PowderJar, + .iconPic = gItemIcon_PowderJar, + .iconPalette = gItemIconPalette_PowderJar, }, [ITEM_WAILMER_PAIL] = @@ -11157,6 +12385,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_WailmerPail, + .iconPic = gItemIcon_WailmerPail, + .iconPalette = gItemIconPalette_WailmerPail, }, [ITEM_POKE_RADAR] = @@ -11171,6 +12401,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .iconPic = gItemIcon_PokeRadar, + .iconPalette = gItemIconPalette_PokeRadar, }, [ITEM_POKEBLOCK_CASE] = @@ -11185,6 +12417,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PBLOCK_CASE, .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase, + .iconPic = gItemIcon_PokeblockCase, + .iconPalette = gItemIconPalette_PokeblockCase, }, [ITEM_SOOT_SACK] = @@ -11199,6 +12433,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_SootSack, + .iconPalette = gItemIconPalette_SootSack, }, [ITEM_POKE_FLUTE] = @@ -11213,6 +12449,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_PokeFlute, + .iconPalette = gItemIconPalette_PokeFlute, }, [ITEM_FAME_CHECKER] = @@ -11227,6 +12465,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_FameChecker, + .iconPalette = gItemIconPalette_FameChecker, }, [ITEM_TEACHY_TV] = @@ -11241,6 +12481,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeachyTV, + .iconPalette = gItemIconPalette_TeachyTV, }, // Story Key Items @@ -11257,6 +12499,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_SSTicket, + .iconPalette = gItemIconPalette_SSTicket, }, [ITEM_EON_TICKET] = @@ -11272,6 +12516,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .secondaryId = 1, + .iconPic = gItemIcon_EonTicket, + .iconPalette = gItemIconPalette_EonTicket, }, [ITEM_MYSTIC_TICKET] = @@ -11286,6 +12532,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_MysticTicket, + .iconPalette = gItemIconPalette_MysticTicket, }, [ITEM_AURORA_TICKET] = @@ -11300,6 +12548,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_AuroraTicket, + .iconPalette = gItemIconPalette_AuroraTicket, }, [ITEM_OLD_SEA_MAP] = @@ -11314,6 +12564,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_OldSeaMap, + .iconPalette = gItemIconPalette_OldSeaMap, }, [ITEM_LETTER] = @@ -11328,6 +12580,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Letter, + .iconPalette = gItemIconPalette_LavaCookieAndLetter, }, [ITEM_DEVON_PARTS] = @@ -11343,6 +12597,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_DevonParts, + .iconPalette = gItemIconPalette_DevonParts, }, [ITEM_GO_GOGGLES] = @@ -11358,6 +12614,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_GoGoggles, + .iconPalette = gItemIconPalette_GoGoggles, }, [ITEM_DEVON_SCOPE] = @@ -11372,6 +12630,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_DevonScope, + .iconPalette = gItemIconPalette_DevonScope, }, [ITEM_BASEMENT_KEY] = @@ -11386,6 +12646,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BasementKey, + .iconPalette = gItemIconPalette_OldKey, }, [ITEM_SCANNER] = @@ -11400,6 +12662,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Scanner, + .iconPalette = gItemIconPalette_Scanner, }, [ITEM_STORAGE_KEY] = @@ -11414,6 +12678,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_StorageKey, + .iconPalette = gItemIconPalette_OldKey, }, [ITEM_KEY_TO_ROOM_1] = @@ -11426,6 +12692,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_KeyToRoom1, + .iconPalette = gItemIconPalette_Key, }, [ITEM_KEY_TO_ROOM_2] = @@ -11438,6 +12706,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_KeyToRoom2, + .iconPalette = gItemIconPalette_Key, }, [ITEM_KEY_TO_ROOM_4] = @@ -11450,6 +12720,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_KeyToRoom4, + .iconPalette = gItemIconPalette_Key, }, [ITEM_KEY_TO_ROOM_6] = @@ -11462,6 +12734,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_KeyToRoom6, + .iconPalette = gItemIconPalette_Key, }, [ITEM_METEORITE] = @@ -11475,6 +12749,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, + .iconPic = gItemIcon_Meteorite, + .iconPalette = gItemIconPalette_Meteorite, }, [ITEM_MAGMA_EMBLEM] = @@ -11489,6 +12765,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_MagmaEmblem, + .iconPalette = gItemIconPalette_MagmaEmblem, }, [ITEM_CONTEST_PASS] = @@ -11504,6 +12782,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_ContestPass, + .iconPalette = gItemIconPalette_ContestPass, }, [ITEM_PARCEL] = @@ -11518,6 +12798,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Parcel, + .iconPalette = gItemIconPalette_Parcel, }, [ITEM_SECRET_KEY] = @@ -11532,6 +12814,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_SecretKey, + .iconPalette = gItemIconPalette_SecretKey, }, [ITEM_BIKE_VOUCHER] = @@ -11546,6 +12830,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_BikeVoucher, + .iconPalette = gItemIconPalette_BikeVoucher, }, [ITEM_GOLD_TEETH] = @@ -11561,6 +12847,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_GoldTeeth, + .iconPalette = gItemIconPalette_GoldTeeth, }, [ITEM_CARD_KEY] = @@ -11575,6 +12863,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_CardKey, + .iconPalette = gItemIconPalette_CardKey, }, [ITEM_LIFT_KEY] = @@ -11589,6 +12879,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_LiftKey, + .iconPalette = gItemIconPalette_Key, }, [ITEM_SILPH_SCOPE] = @@ -11603,6 +12895,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_SilphScope, + .iconPalette = gItemIconPalette_SilphScope, }, [ITEM_TRI_PASS] = @@ -11618,6 +12912,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TriPass, + .iconPalette = gItemIconPalette_TriPass, }, [ITEM_RAINBOW_PASS] = @@ -11633,6 +12929,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_RainbowPass, + .iconPalette = gItemIconPalette_RainbowPass, }, [ITEM_TEA] = @@ -11648,6 +12946,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Tea, + .iconPalette = gItemIconPalette_Tea, }, [ITEM_RUBY] = @@ -11663,6 +12963,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Gem, + .iconPalette = gItemIconPalette_Ruby, }, [ITEM_SAPPHIRE] = @@ -11677,11 +12979,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_Gem, + .iconPalette = gItemIconPalette_Sapphire, }, [ITEM_ABILITY_SHIELD] = { - .name = _("AbilityShield"), + .name = HANDLE_EXPANDED_ITEM_NAME("AbilityShield", "Ability Shield"), .price = 20000, .holdEffect = HOLD_EFFECT_ABILITY_SHIELD, .description = COMPOUND_STRING( @@ -11692,6 +12996,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_AbilityShield, + .iconPalette = gItemIconPalette_AbilityShield, }, // GEN 9 ITEMS @@ -11709,11 +13015,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_ClearAmulet, + .iconPalette = gItemIconPalette_ClearAmulet, }, [ITEM_PUNCHING_GLOVE] = { - .name = _("PunchingGlove"), + .name = HANDLE_EXPANDED_ITEM_NAME("PunchingGlove", "Punching Glove"), .price = 15000, .holdEffect = HOLD_EFFECT_PUNCHING_GLOVE, .description = COMPOUND_STRING( @@ -11724,6 +13032,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_PunchingGlove, + .iconPalette = gItemIconPalette_PunchingGlove, }, [ITEM_COVERT_CLOAK] = @@ -11739,6 +13049,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_CovertCloak, + .iconPalette = gItemIconPalette_CovertCloak, }, [ITEM_LOADED_DICE] = @@ -11755,11 +13067,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_LoadedDice, + .iconPalette = gItemIconPalette_LoadedDice, }, [ITEM_AUSPICIOUS_ARMOR] = { - .name = _("AuspciousArmr"), + .name = HANDLE_EXPANDED_ITEM_NAME("AuspciousArmr", "Auspicious Armor"), .price = 3000, .description = COMPOUND_STRING( "Armor inhabited by\n" @@ -11770,12 +13084,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_AuspiciousArmor, + .iconPalette = gItemIconPalette_AuspiciousArmor, }, [ITEM_BOOSTER_ENERGY] = { - .name = _("BoosterEnergy"), - .pluralName = _("BoosterEnergies"), + .name = HANDLE_EXPANDED_ITEM_NAME("BoosterEnergy", "Booster Energy"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("BoosterEnergies", "Booster Energies"), .price = 0, .holdEffect = HOLD_EFFECT_BOOSTER_ENERGY, .description = COMPOUND_STRING( @@ -11786,11 +13102,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BoosterEnergy, + .iconPalette = gItemIconPalette_BoosterEnergy, }, [ITEM_BIG_BAMBOO_SHOOT] = { - .name = _("BigBmbooShoot"), + .name = HANDLE_EXPANDED_ITEM_NAME("BigBmbooShoot", "Big Bamboo Shoot"), .price = 3000, .description = COMPOUND_STRING( "A large and rare\n" @@ -11800,11 +13118,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_BigBambooShoot, + .iconPalette = gItemIconPalette_BigBambooShoot, }, [ITEM_GIMMIGHOUL_COIN] = { - .name = _("GimighoulCoin"), + .name = HANDLE_EXPANDED_ITEM_NAME("GimighoulCoin", "Gimmighoul Coin"), .price = 400, .description = COMPOUND_STRING( "Gimmighoul hoard\n" @@ -11813,11 +13133,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_GimmighoulCoin, + .iconPalette = gItemIconPalette_GimmighoulCoin, }, [ITEM_LEADERS_CREST] = { - .name = _("Leader'sCrest"), + .name = HANDLE_EXPANDED_ITEM_NAME("Leader'sCrest", "Leader's Crest"), .price = 3000, .description = COMPOUND_STRING( "A shard of an old\n" @@ -11826,11 +13148,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_LeadersCrest, + .iconPalette = gItemIconPalette_LeadersCrest, }, [ITEM_MALICIOUS_ARMOR] = { - .name = _("MaliciousArmr"), + .name = HANDLE_EXPANDED_ITEM_NAME("MaliciousArmr", "Malicious Armor"), .price = 3000, .description = COMPOUND_STRING( "Armor inhabited by\n" @@ -11841,6 +13165,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_MaliciousArmor, + .iconPalette = gItemIconPalette_MaliciousArmor, }, [ITEM_MIRROR_HERB] = @@ -11856,12 +13182,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_MirrorHerb, + .iconPalette = gItemIconPalette_MirrorHerb, }, [ITEM_SCROLL_OF_DARKNESS] = { - .name = _("ScrllOfDrknss"), - .pluralName = _("ScrllsOfDrknss"), + .name = HANDLE_EXPANDED_ITEM_NAME("ScrllOfDrknss", "Scroll of Darkness"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("ScrllsOfDrknss", "Scrolls of Darkness"), .price = 0, .description = COMPOUND_STRING( "A peculiar scroll\n" @@ -11872,12 +13200,14 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, + .iconPic = gItemIcon_ScrollOfDarkness, + .iconPalette = gItemIconPalette_ScrollOfDarkness, }, [ITEM_SCROLL_OF_WATERS] = { - .name = _("ScrollOfWatrs"), - .pluralName = _("ScrollsOfWatrs"), + .name = HANDLE_EXPANDED_ITEM_NAME("ScrollOfWatrs", "Scroll of Waters"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("ScrollsOfWatrs", "Scrolls of Waters"), .price = 0, .description = COMPOUND_STRING( "A peculiar scroll\n" @@ -11888,6 +13218,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, + .iconPic = gItemIcon_ScrollOfWaters, + .iconPalette = gItemIconPalette_ScrollOfWaters, }, [ITEM_TERA_ORB] = @@ -11902,11 +13234,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraOrb, + .iconPalette = gItemIconPalette_TeraOrb, }, [ITEM_TINY_BAMBOO_SHOOT] = { - .name = _("TinyBmbooShot"), + .name = HANDLE_EXPANDED_ITEM_NAME("TinyBmbooShot", "Tiny Bamboo Shoot"), .price = 750, .description = COMPOUND_STRING( "A small and rare\n" @@ -11916,191 +13250,229 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, + .iconPic = gItemIcon_TinyBambooShoot, + .iconPalette = gItemIconPalette_TinyBambooShoot, }, [ITEM_BUG_TERA_SHARD] = { - .name = _("Bug TeraShard"), + .name = HANDLE_EXPANDED_ITEM_NAME("Bug TeraShard", "Bug Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_BugTeraShard, }, [ITEM_DARK_TERA_SHARD] = { - .name = _("DarkTeraShard"), + .name = HANDLE_EXPANDED_ITEM_NAME("DarkTeraShard", "Dark Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_DarkTeraShard, }, [ITEM_DRAGON_TERA_SHARD] = { - .name = _("DragnTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("DragnTeraShrd", "Dragon Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_DragonTeraShard, }, [ITEM_ELECTRIC_TERA_SHARD] = { - .name = _("EltrcTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("EltrcTeraShrd", "Electric Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_ElectricTeraShard, }, [ITEM_FAIRY_TERA_SHARD] = { - .name = _("FairyTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("FairyTeraShrd", "Fairy Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_FairyTeraShard, }, [ITEM_FIGHTING_TERA_SHARD] = { - .name = _("FghtngTerShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("FghtngTerShrd", "Fighting Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_FightingTeraShard, }, [ITEM_FIRE_TERA_SHARD] = { - .name = _("FireTeraShard"), + .name = HANDLE_EXPANDED_ITEM_NAME("FireTeraShard", "Fire Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_FireTeraShard, }, [ITEM_FLYING_TERA_SHARD] = { - .name = _("FlyngTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("FlyngTeraShrd", "Flying Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_FlyingTeraShard, }, [ITEM_GHOST_TERA_SHARD] = { - .name = _("GhostTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("GhostTeraShrd", "Ghost Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_GhostTeraShard, }, [ITEM_GRASS_TERA_SHARD] = { - .name = _("GrassTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("GrassTeraShrd", "Grass Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_GrassTeraShard, }, [ITEM_GROUND_TERA_SHARD] = { - .name = _("GrondTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("GrondTeraShrd", "Ground Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_GroundTeraShard, }, [ITEM_ICE_TERA_SHARD] = { - .name = _("Ice TeraShard"), + .name = HANDLE_EXPANDED_ITEM_NAME("Ice TeraShard", "Ice Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_IceTeraShard, }, [ITEM_NORMAL_TERA_SHARD] = { - .name = _("NormlTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("NormlTeraShrd", "Normal Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_NormalTeraShard, }, [ITEM_POISON_TERA_SHARD] = { - .name = _("PoisnTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("PoisnTeraShrd", "Poison Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_PoisonTeraShard, }, [ITEM_PSYCHIC_TERA_SHARD] = { - .name = _("PschcTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("PschcTeraShrd", "Psychic Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_PsychicTeraShard, }, [ITEM_ROCK_TERA_SHARD] = { - .name = _("RockTeraShard"), + .name = HANDLE_EXPANDED_ITEM_NAME("RockTeraShard", "Rock Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_RockTeraShard, }, [ITEM_STEEL_TERA_SHARD] = { - .name = _("SteelTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("SteelTeraShrd", "Steel Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_SteelTeraShard, }, [ITEM_WATER_TERA_SHARD] = { - .name = _("WaterTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("WaterTeraShrd", "Water Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_TeraShard, + .iconPalette = gItemIconPalette_WaterTeraShard, }, [ITEM_ADAMANT_CRYSTAL] = { - .name = _("AdamantCrystl"), + .name = HANDLE_EXPANDED_ITEM_NAME("AdamantCrystl", "Adamant Crystal"), .price = 0, .description = COMPOUND_STRING( "A large, glowing gem\n" @@ -12110,6 +13482,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_AdamantCrystal, + .iconPalette = gItemIconPalette_AdamantCrystal, }, [ITEM_GRISEOUS_CORE] = @@ -12124,11 +13498,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_GriseousCore, + .iconPalette = gItemIconPalette_GriseousCore, }, [ITEM_LUSTROUS_GLOBE] = { - .name = _("LustrousGlobe"), + .name = HANDLE_EXPANDED_ITEM_NAME("LustrousGlobe", "Lustrous Globe"), .price = 0, .description = COMPOUND_STRING( "A large, glowing gem\n" @@ -12138,11 +13514,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 60, + .iconPic = gItemIcon_LustrousGlobe, + .iconPalette = gItemIconPalette_LustrousGlobe, }, [ITEM_BLACK_AUGURITE] = { - .name = _("BlackAugurite"), + .name = HANDLE_EXPANDED_ITEM_NAME("BlackAugurite", "Black Augurite"), .price = 8000, .description = COMPOUND_STRING( "A black stone that\n" @@ -12153,6 +13531,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_BlackAugurite, + .iconPalette = gItemIconPalette_BlackAugurite, }, [ITEM_LINKING_CORD] = @@ -12168,6 +13548,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_LinkingCord, + .iconPalette = gItemIconPalette_LinkingCord, }, [ITEM_PEAT_BLOCK] = @@ -12183,6 +13565,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_PeatBlock, + .iconPalette = gItemIconPalette_PeatBlock, }, [ITEM_BERSERK_GENE] = @@ -12198,6 +13582,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_BerserkGene, + .iconPalette = gItemIconPalette_BerserkGene, }, [ITEM_FAIRY_FEATHER] = @@ -12214,6 +13600,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, + .iconPic = gItemIcon_FairyFeather, + .iconPalette = gItemIconPalette_FairyFeather, }, [ITEM_SYRUPY_APPLE] = @@ -12229,11 +13617,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 30, + .iconPic = gItemIcon_SyrupyApple, + .iconPalette = gItemIconPalette_SyrupyApple, }, [ITEM_UNREMARKABLE_TEACUP] = { - .name = _("UnrmkblTeacup"), + .name = HANDLE_EXPANDED_ITEM_NAME("UnrmkblTeacup", "Unremarkable Teacup"), .price = 1600, .description = COMPOUND_STRING( "A cracked teacup\n" @@ -12244,11 +13634,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_UnremarkableTeacup, + .iconPalette = gItemIconPalette_UnremarkableTeacup, }, [ITEM_MASTERPIECE_TEACUP] = { - .name = _("MstrpceTeacup"), + .name = HANDLE_EXPANDED_ITEM_NAME("MstrpceTeacup", "Masterpiece Teacup"), .price = 38000, .description = COMPOUND_STRING( "A chipped teacup\n" @@ -12259,11 +13651,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, .flingPower = 80, + .iconPic = gItemIcon_MasterpieceTeacup, + .iconPalette = gItemIconPalette_MasterpieceTeacup, }, [ITEM_CORNERSTONE_MASK] = { - .name = _("CornrstneMask"), + .name = HANDLE_EXPANDED_ITEM_NAME("CornrstneMask", "Cornerstone Mask"), .price = 0, .description = COMPOUND_STRING( "Allows Ogerpon to\n" @@ -12272,11 +13666,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_CornerstoneMask, + .iconPalette = gItemIconPalette_CornerstoneMask, }, [ITEM_WELLSPRING_MASK] = { - .name = _("WellsprngMask"), + .name = HANDLE_EXPANDED_ITEM_NAME("WellsprngMask", "Wellspring Mask"), .price = 0, .description = COMPOUND_STRING( "Allows Ogerpon to\n" @@ -12285,11 +13681,13 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_WellspringMask, + .iconPalette = gItemIconPalette_WellspringMask, }, [ITEM_HEARTHFLAME_MASK] = { - .name = _("HrthflameMask"), + .name = HANDLE_EXPANDED_ITEM_NAME("HrthflameMask", "Hearthflame Mask"), .price = 0, .description = COMPOUND_STRING( "Allows Ogerpon to\n" @@ -12298,6 +13696,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_HearthflameMask, + .iconPalette = gItemIconPalette_HearthflameMask, }, [ITEM_HEALTH_MOCHI] = @@ -12311,6 +13711,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_HpMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_HealthMochi, }, [ITEM_MUSCLE_MOCHI] = @@ -12324,6 +13726,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_AtkMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_MuscleMochi, }, [ITEM_RESIST_MOCHI] = @@ -12337,6 +13741,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_DefMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_ResistMochi, }, [ITEM_GENIUS_MOCHI] = @@ -12350,6 +13756,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpatkMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_GeniusMochi, }, [ITEM_CLEVER_MOCHI] = @@ -12363,6 +13771,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpdefMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_CleverMochi, }, [ITEM_SWIFT_MOCHI] = @@ -12376,12 +13786,14 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .effect = gItemEffect_SpeedMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_SwiftMochi, }, [ITEM_FRESH_START_MOCHI] = { - .name = _("FrshStrtMochi"), - .pluralName = _("FrshStrtMochi"), + .name = HANDLE_EXPANDED_ITEM_NAME("FrshStrtMochi", "Fresh Start Mochi"), + .pluralName = HANDLE_EXPANDED_ITEM_NAME("FrshStrtMochi", "Fresh Start Mochi"), .price = 300, .description = COMPOUND_STRING( "An item that resets\n" @@ -12392,11 +13804,13 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_ResetEVs, .effect = gItemEffect_ResetMochi, .flingPower = 30, + .iconPic = gItemIcon_Mochi, + .iconPalette = gItemIconPalette_FreshStartMochi, }, [ITEM_GLIMMERING_CHARM] = { - .name = _("GlmmringCharm"), + .name = HANDLE_EXPANDED_ITEM_NAME("GlmmringCharm", "Glimmering Charm"), .price = 0, .importance = 1, .description = COMPOUND_STRING( @@ -12406,6 +13820,8 @@ const struct Item gItemsInfo[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_GlimmeringCharm, + .iconPalette = gItemIconPalette_GlimmeringCharm, }, [ITEM_METAL_ALLOY] = @@ -12420,21 +13836,25 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, .effect = gItemEffect_EvoItem, + .iconPic = gItemIcon_MetalAlloy, + .iconPalette = gItemIconPalette_MetalAlloy, }, [ITEM_STELLAR_TERA_SHARD] = { - .name = _("StllrTeraShrd"), + .name = HANDLE_EXPANDED_ITEM_NAME("StllrTeraShrd", "Stellar Tera Shard"), .price = 0, .description = sTeraShardDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_StellarTeraShard, + .iconPalette = gItemIconPalette_StellarTeraShard, }, [ITEM_JUBILIFE_MUFFIN] = { - .name = _("JublifeMuffin"), + .name = HANDLE_EXPANDED_ITEM_NAME("JublifeMuffin", "Jubilife Muffin"), .price = 250, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -12442,6 +13862,8 @@ const struct Item gItemsInfo[] = .fieldUseFunc = ItemUseOutOfBattle_Medicine, .battleUsage = EFFECT_ITEM_CURE_STATUS, .flingPower = 30, + .iconPic = gItemIcon_JubilifeMuffin, + .iconPalette = gItemIconPalette_JubilifeMuffin, }, [ITEM_REMEDY] = @@ -12458,6 +13880,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_Remedy, .flingPower = 30, + .iconPic = gItemIcon_Remedy, + .iconPalette = gItemIconPalette_Remedy, }, [ITEM_FINE_REMEDY] = @@ -12478,6 +13902,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_FineRemedy, .flingPower = 30, + .iconPic = gItemIcon_FineRemedy, + .iconPalette = gItemIconPalette_FineRemedy, }, [ITEM_SUPERB_REMEDY] = @@ -12498,6 +13924,8 @@ const struct Item gItemsInfo[] = .battleUsage = EFFECT_ITEM_RESTORE_HP, .effect = gItemEffect_SuperbRemedy, .flingPower = 30, + .iconPic = gItemIcon_SuperbRemedy, + .iconPalette = gItemIconPalette_SuperbRemedy, }, [ITEM_AUX_EVASION] = @@ -12518,6 +13946,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_AuxBottle, + .iconPalette = gItemIconPalette_AuxEvasion, }, [ITEM_AUX_GUARD] = @@ -12538,6 +13968,8 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_AuxBottle, + .iconPalette = gItemIconPalette_AuxGuard, }, [ITEM_AUX_POWER] = @@ -12558,11 +13990,13 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_AuxBottle, + .iconPalette = gItemIconPalette_AuxPower, }, [ITEM_AUX_POWERGUARD] = { - .name = _("AuxPowerguard"), + .name = HANDLE_EXPANDED_ITEM_NAME("AuxPowerguard", "Aux Powerguard"), .price = 1200, .holdEffectParam = X_ITEM_STAGES, .description = COMPOUND_STRING( @@ -12579,17 +14013,21 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_AuxPowerguard, + .iconPalette = gItemIconPalette_AuxPowerguard, }, [ITEM_CHOICE_DUMPLING] = { - .name = _("ChoiceDumplng"), + .name = HANDLE_EXPANDED_ITEM_NAME("ChoiceDumplng", "Choice Dumpling"), .price = 1200, .description = sQuestionMarksDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_ChoiceDumpling, + .iconPalette = gItemIconPalette_ChoiceDumpling, }, [ITEM_SWAP_SNACK] = @@ -12601,17 +14039,21 @@ const struct Item gItemsInfo[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_SwapSnack, + .iconPalette = gItemIconPalette_SwapSnack, }, [ITEM_TWICE_SPICED_RADISH] = { - .name = _("2xSpicedRadsh"), + .name = HANDLE_EXPANDED_ITEM_NAME("2xSpicedRadsh", "Twice-Spiced Radish"), .price = 1600, .description = sQuestionMarksDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, //.effect = currently missing + .iconPic = gItemIcon_TwiceSpicedRadish, + .iconPalette = gItemIconPalette_TwiceSpicedRadish, }, [ITEM_POKESHI_DOLL] = @@ -12625,5 +14067,7 @@ const struct Item gItemsInfo[] = .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .iconPic = gItemIcon_PokeshiDoll, + .iconPalette = gItemIconPalette_PokeshiDoll, }, }; diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h index 09586ccd6b03..de9f5f212e29 100644 --- a/src/data/lilycove_lady.h +++ b/src/data/lilycove_lady.h @@ -2,13 +2,52 @@ #include "constants/items.h" #include "constants/moves.h" -static const u16 sContestLadyMonGfxId[] = -{ - [CONTEST_CATEGORY_COOL] = OBJ_EVENT_GFX_ZIGZAGOON_1, - [CONTEST_CATEGORY_BEAUTY] = OBJ_EVENT_GFX_SKITTY, - [CONTEST_CATEGORY_CUTE] = OBJ_EVENT_GFX_POOCHYENA, - [CONTEST_CATEGORY_SMART] = OBJ_EVENT_GFX_KECLEON, - [CONTEST_CATEGORY_TOUGH] = OBJ_EVENT_GFX_PIKACHU +struct LilycoveContestLadyValues +{ + u16 monGfxId; + u16 monSpecies; + const u8 *monName; + const u8 *categoryName; + const u8 *contestName; +}; + +static const struct LilycoveContestLadyValues sContestLadyValues[] = +{ + [CONTEST_CATEGORY_COOL] = { + .monGfxId = OBJ_EVENT_GFX_ZIGZAGOON_1, + .monSpecies = SPECIES_ZIGZAGOON, + .monName = COMPOUND_STRING("HANDSOME"), + .categoryName = COMPOUND_STRING("coolness"), + .contestName = gText_CoolnessContest, + }, + [CONTEST_CATEGORY_BEAUTY] = { + .monGfxId = OBJ_EVENT_GFX_SKITTY, + .monSpecies = SPECIES_SKITTY, + .monName = COMPOUND_STRING("VINNY"), + .categoryName = COMPOUND_STRING("beauty"), + .contestName = gText_BeautyContest, + }, + [CONTEST_CATEGORY_CUTE] = { + .monGfxId = OBJ_EVENT_GFX_POOCHYENA, + .monSpecies = SPECIES_POOCHYENA, + .monName = COMPOUND_STRING("MOREME"), + .categoryName = COMPOUND_STRING("cuteness"), + .contestName = gText_CutenessContest, + }, + [CONTEST_CATEGORY_SMART] = { + .monGfxId = OBJ_EVENT_GFX_KECLEON, + .monSpecies = SPECIES_KECLEON, + .monName = COMPOUND_STRING("IRONHARD"), + .categoryName = COMPOUND_STRING("smartness"), + .contestName = gText_SmartnessContest, + }, + [CONTEST_CATEGORY_TOUGH] = { + .monGfxId = OBJ_EVENT_GFX_PIKACHU, + .monSpecies = SPECIES_PIKACHU, + .monName = COMPOUND_STRING("MUSCLE"), + .categoryName = COMPOUND_STRING("toughness"), + .contestName = gText_ToughnessContest, + }, }; static const u16 sLilycoveLadyGfxId[] = @@ -290,12 +329,12 @@ static const u16 sQuizLadyPrizes[] = // Favor Lady data static const u8 *const sFavorLadyRequests[] = { - gText_FavorLady_Slippery, - gText_FavorLady_Roundish, - gText_FavorLady_Whamish, - gText_FavorLady_Shiny, - gText_FavorLady_Sticky, - gText_FavorLady_Pointy + COMPOUND_STRING("slippery"), + COMPOUND_STRING("roundish"), + COMPOUND_STRING("wham-ish"), + COMPOUND_STRING("shiny"), + COMPOUND_STRING("sticky"), + COMPOUND_STRING("pointy"), }; static const u16 sFavorLadyAcceptedItems_Slippery[] = @@ -429,40 +468,3 @@ static const u16 sFavorLadyPrizes[] = ITEM_RARE_CANDY, ITEM_PP_MAX }; - - -static const u8 *const sContestLadyMonNames[] = -{ - [CONTEST_CATEGORY_COOL] = gText_ContestLady_Handsome, - [CONTEST_CATEGORY_BEAUTY] = gText_ContestLady_Vinny, - [CONTEST_CATEGORY_CUTE] = gText_ContestLady_Moreme, - [CONTEST_CATEGORY_SMART] = gText_ContestLady_Ironhard, - [CONTEST_CATEGORY_TOUGH] = gText_ContestLady_Muscle -}; - -static const u8 *const sContestLadyCategoryNames[] = -{ - [CONTEST_CATEGORY_COOL] = gText_ContestLady_Coolness, - [CONTEST_CATEGORY_BEAUTY] = gText_ContestLady_Beauty, - [CONTEST_CATEGORY_CUTE] = gText_ContestLady_Cuteness, - [CONTEST_CATEGORY_SMART] = gText_ContestLady_Smartness, - [CONTEST_CATEGORY_TOUGH] = gText_ContestLady_Toughness -}; - -static const u8 *const sContestNames[] = -{ - [CONTEST_CATEGORY_COOL] = gText_CoolnessContest, - [CONTEST_CATEGORY_BEAUTY] = gText_BeautyContest, - [CONTEST_CATEGORY_CUTE] = gText_CutenessContest, - [CONTEST_CATEGORY_SMART] = gText_SmartnessContest, - [CONTEST_CATEGORY_TOUGH] = gText_ToughnessContest -}; - -static const u16 sContestLadyMonSpecies[] = -{ - [CONTEST_CATEGORY_COOL] = SPECIES_ZIGZAGOON, - [CONTEST_CATEGORY_BEAUTY] = SPECIES_SKITTY, - [CONTEST_CATEGORY_CUTE] = SPECIES_POOCHYENA, - [CONTEST_CATEGORY_SMART] = SPECIES_KECLEON, - [CONTEST_CATEGORY_TOUGH] = SPECIES_PIKACHU -}; diff --git a/src/data/map_group_count.h b/src/data/map_group_count.h deleted file mode 100644 index 4fe8a21b3b91..000000000000 --- a/src/data/map_group_count.h +++ /dev/null @@ -1 +0,0 @@ -static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; diff --git a/src/data/moves_info.h b/src/data/moves_info.h index 3865f0b0c6a4..e79f804bb18d 100644 --- a/src/data/moves_info.h +++ b/src/data/moves_info.h @@ -1,4 +1,5 @@ #include "battle_dynamax.h" +#include "battle_anim_scripts.h" #include "constants/battle.h" #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" @@ -133,6 +134,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = TRUE, .sketchBanned = TRUE, .assistBanned = TRUE, + .battleAnimScript = Move_NONE, }, [MOVE_POUND] = @@ -154,7 +156,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_POUND, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POUND, }, [MOVE_KARATE_CHOP] = @@ -177,6 +180,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_KARATE_CHOP, }, [MOVE_DOUBLE_SLAP] = @@ -198,6 +202,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_POUND}, + .battleAnimScript = Move_DOUBLE_SLAP, }, [MOVE_COMET_PUNCH] = @@ -219,7 +224,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COMET_PUNCH, }, [MOVE_MEGA_PUNCH] = @@ -242,6 +248,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_MEGA_PUNCH, }, [MOVE_PAY_DAY] = @@ -264,7 +271,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PAY_DAY, }, [MOVE_FIRE_PUNCH] = @@ -291,6 +299,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_FIRE_PUNCH, .contestComboMoves = {COMBO_STARTER_ICE_PUNCH, COMBO_STARTER_SUNNY_DAY, COMBO_STARTER_THUNDER_PUNCH}, + .battleAnimScript = Move_FIRE_PUNCH, }, [MOVE_ICE_PUNCH] = @@ -321,6 +330,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_ICE_PUNCH, .contestComboMoves = {COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_THUNDER_PUNCH}, + .battleAnimScript = Move_ICE_PUNCH, }, [MOVE_THUNDER_PUNCH] = @@ -347,6 +357,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_THUNDER_PUNCH, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_PUNCH, COMBO_STARTER_ICE_PUNCH}, + .battleAnimScript = Move_THUNDER_PUNCH, }, [MOVE_SCRATCH] = @@ -368,6 +379,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SCRATCH, .contestComboMoves = {COMBO_STARTER_LEER}, + .battleAnimScript = Move_SCRATCH, }, [MOVE_VISE_GRIP] = @@ -388,7 +400,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_VICE_GRIP, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_VISE_GRIP, }, [MOVE_GUILLOTINE] = @@ -410,6 +423,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_VICE_GRIP}, + .battleAnimScript = Move_GUILLOTINE, }, [MOVE_RAZOR_WIND] = @@ -434,7 +448,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAZOR_WIND, }, [MOVE_SWORDS_DANCE] = @@ -457,7 +472,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SWORDS_DANCE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SWORDS_DANCE, }, [MOVE_CUT] = @@ -480,6 +496,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_CUT, }, [MOVE_GUST] = @@ -502,7 +519,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GUST, }, [MOVE_WING_ATTACK] = @@ -523,7 +541,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WING_ATTACK, }, [MOVE_WHIRLWIND] = @@ -550,7 +569,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WHIRLWIND, }, [MOVE_FLY] = @@ -576,7 +596,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLY, }, [MOVE_BIND] = @@ -602,6 +623,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_VICE_GRIP}, + .battleAnimScript = Move_BIND, }, [MOVE_SLAM] = @@ -624,6 +646,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_POUND}, + .battleAnimScript = Move_SLAM, }, [MOVE_VINE_WHIP] = @@ -651,6 +674,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_VINE_WHIP, }, [MOVE_STOMP] = @@ -678,6 +702,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER}, + .battleAnimScript = Move_STOMP, }, [MOVE_DOUBLE_KICK] = @@ -699,7 +724,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DOUBLE_KICK, }, [MOVE_MEGA_KICK] = @@ -721,6 +747,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_MEGA_KICK, }, [MOVE_JUMP_KICK] = @@ -749,6 +776,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_JUMP_KICK, }, [MOVE_ROLLING_KICK] = @@ -774,7 +802,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROLLING_KICK, }, [MOVE_SAND_ATTACK] = @@ -797,6 +826,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_SAND_ATTACK, .contestComboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM}, + .battleAnimScript = Move_SAND_ATTACK, }, [MOVE_HEADBUTT] = @@ -822,6 +852,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_HEADBUTT, }, [MOVE_HORN_ATTACK] = @@ -843,6 +874,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_HORN_ATTACK, .contestComboMoves = {COMBO_STARTER_LEER}, + .battleAnimScript = Move_HORN_ATTACK, }, [MOVE_FURY_ATTACK] = @@ -864,6 +896,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HORN_ATTACK, COMBO_STARTER_PECK}, + .battleAnimScript = Move_FURY_ATTACK, }, [MOVE_HORN_DRILL] = @@ -885,6 +918,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HORN_ATTACK}, + .battleAnimScript = Move_HORN_DRILL, }, [MOVE_TACKLE] = @@ -912,6 +946,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN, COMBO_STARTER_LEER}, + .battleAnimScript = Move_TACKLE, }, [MOVE_BODY_SLAM] = @@ -938,7 +973,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BODY_SLAM, }, [MOVE_WRAP] = @@ -962,7 +998,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WRAP, }, [MOVE_TAKE_DOWN] = @@ -985,6 +1022,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + .battleAnimScript = Move_TAKE_DOWN, }, [MOVE_THRASH] = @@ -1011,6 +1049,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAGE}, + .battleAnimScript = Move_THRASH, }, [MOVE_DOUBLE_EDGE] = @@ -1033,6 +1072,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_HARDEN}, + .battleAnimScript = Move_DOUBLE_EDGE, }, [MOVE_TAIL_WHIP] = @@ -1055,6 +1095,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, + .battleAnimScript = Move_TAIL_WHIP, }, [MOVE_POISON_STING] = @@ -1078,7 +1119,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POISON_STING, }, [MOVE_TWINEEDLE] = @@ -1104,7 +1146,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TWINEEDLE, }, [MOVE_PIN_MISSILE] = @@ -1124,7 +1167,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PIN_MISSILE, }, [MOVE_LEER] = @@ -1147,6 +1191,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_LEER, .contestComboMoves = {COMBO_STARTER_RAGE, COMBO_STARTER_SCARY_FACE}, + .battleAnimScript = Move_LEER, }, [MOVE_BITE] = @@ -1173,6 +1218,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_SCARY_FACE}, + .battleAnimScript = Move_BITE, }, [MOVE_GROWL] = @@ -1197,6 +1243,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, + .battleAnimScript = Move_GROWL, }, [MOVE_ROAR] = @@ -1223,7 +1270,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROAR, }, [MOVE_SING] = @@ -1247,7 +1295,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_SING, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SING, }, [MOVE_SUPERSONIC] = @@ -1271,7 +1320,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SUPERSONIC, }, [MOVE_SONIC_BOOM] = @@ -1292,7 +1342,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SONIC_BOOM, }, [MOVE_DISABLE] = @@ -1321,7 +1372,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DISABLE, }, [MOVE_ACID] = @@ -1349,7 +1401,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACID, }, [MOVE_EMBER] = @@ -1374,6 +1427,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_EMBER, }, [MOVE_FLAMETHROWER] = @@ -1398,6 +1452,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FLAMETHROWER, }, [MOVE_MIST] = @@ -1421,7 +1476,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIST, }, [MOVE_WATER_GUN] = @@ -1442,6 +1498,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MUD_SPORT, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_WATER_SPORT}, + .battleAnimScript = Move_WATER_GUN, }, [MOVE_HYDRO_PUMP] = @@ -1462,6 +1519,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_HYDRO_PUMP, }, [MOVE_SURF] = @@ -1484,6 +1542,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SURF, .contestComboMoves = {COMBO_STARTER_DIVE, COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_SURF, }, [MOVE_ICE_BEAM] = @@ -1514,6 +1573,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_ICE_BEAM, }, [MOVE_BLIZZARD] = @@ -1543,6 +1603,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_POWDER_SNOW}, + .battleAnimScript = Move_BLIZZARD, }, [MOVE_PSYBEAM] = @@ -1567,6 +1628,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_PSYBEAM, }, [MOVE_BUBBLE_BEAM] = @@ -1591,6 +1653,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_BUBBLE_BEAM, }, [MOVE_AURORA_BEAM] = @@ -1615,6 +1678,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_AURORA_BEAM, }, [MOVE_HYPER_BEAM] = @@ -1637,7 +1701,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HYPER_BEAM, }, [MOVE_PECK] = @@ -1658,7 +1723,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_PECK, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PECK, }, [MOVE_DRILL_PECK] = @@ -1680,6 +1746,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_PECK}, + .battleAnimScript = Move_DRILL_PECK, }, [MOVE_SUBMISSION] = @@ -1702,6 +1769,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_SUBMISSION, }, [MOVE_LOW_KICK] = @@ -1722,7 +1790,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LOW_KICK, }, [MOVE_COUNTER] = @@ -1749,6 +1818,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, + .battleAnimScript = Move_COUNTER, }, [MOVE_SEISMIC_TOSS] = @@ -1771,6 +1841,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, + .battleAnimScript = Move_SEISMIC_TOSS, }, [MOVE_STRENGTH] = @@ -1791,7 +1862,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STRENGTH, }, [MOVE_ABSORB] = @@ -1814,6 +1886,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_ABSORB, }, [MOVE_MEGA_DRAIN] = @@ -1835,6 +1908,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_MEGA_DRAIN, }, [MOVE_LEECH_SEED] = @@ -1857,6 +1931,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_LEECH_SEED, .contestComboMoves = {COMBO_STARTER_GROWTH, COMBO_STARTER_WORRY_SEED}, + .battleAnimScript = Move_LEECH_SEED, }, [MOVE_GROWTH] = @@ -1880,7 +1955,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_GROWTH, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GROWTH, }, [MOVE_RAZOR_LEAF] = @@ -1903,6 +1979,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_RAZOR_LEAF, }, [MOVE_SOLAR_BEAM] = @@ -1926,6 +2003,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH, COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_SOLAR_BEAM, }, [MOVE_POISON_POWDER] = @@ -1949,6 +2027,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, + .battleAnimScript = Move_POISON_POWDER, }, [MOVE_STUN_SPORE] = @@ -1972,6 +2051,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, + .battleAnimScript = Move_STUN_SPORE, }, [MOVE_SLEEP_POWDER] = @@ -1995,6 +2075,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWEET_SCENT}, + .battleAnimScript = Move_SLEEP_POWDER, }, [MOVE_PETAL_DANCE] = @@ -2028,6 +2109,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_PETAL_DANCE, }, [MOVE_STRING_SHOT] = @@ -2049,7 +2131,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_STRING_SHOT, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STRING_SHOT, }, [MOVE_DRAGON_RAGE] = @@ -2072,6 +2155,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DRAGON_RAGE, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_RAGE, }, [MOVE_FIRE_SPIN] = @@ -2096,6 +2180,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FIRE_SPIN, }, [MOVE_THUNDER_SHOCK] = @@ -2120,6 +2205,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_THUNDER_SHOCK, }, [MOVE_THUNDERBOLT] = @@ -2144,6 +2230,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_THUNDERBOLT, }, [MOVE_THUNDER_WAVE] = @@ -2166,6 +2253,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_THUNDER_WAVE, }, [MOVE_THUNDER] = @@ -2191,6 +2279,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_LOCK_ON, COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_THUNDER, }, [MOVE_ROCK_THROW] = @@ -2210,7 +2299,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_ROCK_THROW, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_THROW, }, [MOVE_EARTHQUAKE] = @@ -2233,7 +2323,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_EARTHQUAKE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EARTHQUAKE, }, [MOVE_FISSURE] = @@ -2256,6 +2347,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_EARTHQUAKE}, + .battleAnimScript = Move_FISSURE, }, [MOVE_DIG] = @@ -2281,7 +2373,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DIG, }, [MOVE_TOXIC] = @@ -2303,7 +2396,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_TOXIC, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TOXIC, }, [MOVE_CONFUSION] = @@ -2328,6 +2422,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_CONFUSION, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_KINESIS, COMBO_STARTER_PSYCHIC}, + .battleAnimScript = Move_CONFUSION, }, [MOVE_PSYCHIC] = @@ -2352,6 +2447,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_PSYCHIC, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_CONFUSION, COMBO_STARTER_KINESIS}, + .battleAnimScript = Move_PSYCHIC, }, [MOVE_HYPNOSIS] = @@ -2373,7 +2469,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_HYPNOSIS, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HYPNOSIS, }, [MOVE_MEDITATE] = @@ -2398,6 +2495,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_MEDITATE, }, [MOVE_AGILITY] = @@ -2422,6 +2520,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + .battleAnimScript = Move_AGILITY, }, [MOVE_QUICK_ATTACK] = @@ -2443,6 +2542,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DOUBLE_TEAM}, + .battleAnimScript = Move_QUICK_ATTACK, }, [MOVE_RAGE] = @@ -2463,7 +2563,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_RAGE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAGE, }, [MOVE_TELEPORT] = @@ -2487,6 +2588,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CONFUSION, COMBO_STARTER_DOUBLE_TEAM, COMBO_STARTER_KINESIS, COMBO_STARTER_PSYCHIC}, + .battleAnimScript = Move_TELEPORT, }, [MOVE_NIGHT_SHADE] = @@ -2506,7 +2608,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NIGHT_SHADE, }, [MOVE_MIMIC] = @@ -2535,7 +2638,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIMIC, }, [MOVE_SCREECH] = @@ -2559,7 +2663,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SCREECH, }, [MOVE_DOUBLE_TEAM] = @@ -2583,7 +2688,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DOUBLE_TEAM, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DOUBLE_TEAM, }, [MOVE_RECOVER] = @@ -2614,7 +2720,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RECOVER, }, [MOVE_HARDEN] = @@ -2638,7 +2745,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_HARDEN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HARDEN, }, [MOVE_MINIMIZE] = @@ -2662,7 +2770,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MINIMIZE, }, [MOVE_SMOKESCREEN] = @@ -2685,6 +2794,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SMOG}, + .battleAnimScript = Move_SMOKESCREEN, }, [MOVE_CONFUSE_RAY] = @@ -2706,7 +2816,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CONFUSE_RAY, }, [MOVE_WITHDRAW] = @@ -2731,6 +2842,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WITHDRAW, }, [MOVE_DEFENSE_CURL] = @@ -2754,7 +2866,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_DEFENSE_CURL, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DEFENSE_CURL, }, [MOVE_BARRIER] = @@ -2778,7 +2891,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BARRIER, }, [MOVE_LIGHT_SCREEN] = @@ -2803,6 +2917,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_LIGHT_SCREEN, }, [MOVE_HAZE] = @@ -2827,6 +2942,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_HAZE, }, [MOVE_REFLECT] = @@ -2851,6 +2967,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_REFLECT, }, [MOVE_FOCUS_ENERGY] = @@ -2875,7 +2992,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_FOCUS_ENERGY, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FOCUS_ENERGY, }, [MOVE_BIDE] = @@ -2899,7 +3017,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BIDE, }, [MOVE_METRONOME] = @@ -2928,7 +3047,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_METRONOME, }, [MOVE_MIRROR_MOVE] = @@ -2956,7 +3076,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIRROR_MOVE, }, [MOVE_SELF_DESTRUCT] = @@ -2977,7 +3098,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SELF_DESTRUCT, }, [MOVE_EGG_BOMB] = @@ -2999,6 +3121,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SOFT_BOILED}, + .battleAnimScript = Move_EGG_BOMB, }, [MOVE_LICK] = @@ -3023,7 +3146,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LICK, }, [MOVE_SMOG] = @@ -3047,7 +3171,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SMOG, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SMOG, }, [MOVE_SLUDGE] = @@ -3072,6 +3197,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SLUDGE, .contestComboMoves = {COMBO_STARTER_SLUDGE_BOMB}, + .battleAnimScript = Move_SLUDGE, }, [MOVE_BONE_CLUB] = @@ -3096,6 +3222,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_BONE_CLUB, .contestComboMoves = {COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH, COMBO_STARTER_SHADOW_BONE}, + .battleAnimScript = Move_BONE_CLUB, }, [MOVE_FIRE_BLAST] = @@ -3120,6 +3247,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FIRE_BLAST, }, [MOVE_WATERFALL] = @@ -3147,6 +3275,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WATERFALL, }, [MOVE_CLAMP] = @@ -3172,6 +3301,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_CLAMP, }, [MOVE_SWIFT] = @@ -3191,7 +3321,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SWIFT, }, [MOVE_SKULL_BASH] = @@ -3220,7 +3351,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKULL_BASH, }, [MOVE_SPIKE_CANNON] = @@ -3240,7 +3372,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPIKE_CANNON, }, [MOVE_CONSTRICT] = @@ -3265,7 +3398,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CONSTRICT, }, [MOVE_AMNESIA] = @@ -3289,7 +3423,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AMNESIA, }, [MOVE_KINESIS] = @@ -3312,6 +3447,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_KINESIS, .contestComboMoves = {COMBO_STARTER_CONFUSION, COMBO_STARTER_PSYCHIC}, + .battleAnimScript = Move_KINESIS, }, [MOVE_SOFT_BOILED] = @@ -3336,7 +3472,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SOFT_BOILED, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SOFT_BOILED, }, [MOVE_HIGH_JUMP_KICK] = @@ -3365,6 +3502,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_HIGH_JUMP_KICK, }, [MOVE_GLARE] = @@ -3393,6 +3531,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LEER}, + .battleAnimScript = Move_GLARE, }, [MOVE_DREAM_EATER] = @@ -3414,6 +3553,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_HYPNOSIS}, + .battleAnimScript = Move_DREAM_EATER, }, [MOVE_POISON_GAS] = @@ -3441,7 +3581,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POISON_GAS, }, [MOVE_BARRAGE] = @@ -3462,7 +3603,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BARRAGE, }, [MOVE_LEECH_LIFE] = @@ -3485,7 +3627,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LEECH_LIFE, }, [MOVE_LOVELY_KISS] = @@ -3507,7 +3650,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LOVELY_KISS, }, [MOVE_SKY_ATTACK] = @@ -3537,7 +3681,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKY_ATTACK, }, [MOVE_TRANSFORM] = @@ -3566,7 +3711,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRANSFORM, }, [MOVE_BUBBLE] = @@ -3591,6 +3737,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_BUBBLE, }, [MOVE_DIZZY_PUNCH] = @@ -3616,7 +3763,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DIZZY_PUNCH, }, [MOVE_SPORE] = @@ -3639,7 +3787,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPORE, }, [MOVE_FLASH] = @@ -3661,7 +3810,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLASH, }, [MOVE_PSYWAVE] = @@ -3682,6 +3832,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_PSYWAVE, }, [MOVE_SPLASH] = @@ -3705,7 +3856,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPLASH, }, [MOVE_ACID_ARMOR] = @@ -3729,7 +3881,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACID_ARMOR, }, [MOVE_CRABHAMMER] = @@ -3752,6 +3905,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_CRABHAMMER, }, [MOVE_EXPLOSION] = @@ -3772,7 +3926,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EXPLOSION, }, [MOVE_FURY_SWIPES] = @@ -3794,6 +3949,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCRATCH}, + .battleAnimScript = Move_FURY_SWIPES, }, [MOVE_BONEMERANG] = @@ -3815,6 +3971,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_BONEMERANG, .contestComboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONE_RUSH, COMBO_STARTER_SHADOW_BONE}, + .battleAnimScript = Move_BONEMERANG, }, [MOVE_REST] = @@ -3840,6 +3997,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_REST, .contestComboMoves = {COMBO_STARTER_BELLY_DRUM, COMBO_STARTER_CHARM, COMBO_STARTER_YAWN}, + .battleAnimScript = Move_REST, }, [MOVE_ROCK_SLIDE] = @@ -3864,6 +4022,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ROCK_THROW}, + .battleAnimScript = Move_ROCK_SLIDE, }, [MOVE_HYPER_FANG] = @@ -3889,7 +4048,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HYPER_FANG, }, [MOVE_SHARPEN] = @@ -3913,7 +4073,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHARPEN, }, [MOVE_CONVERSION] = @@ -3937,7 +4098,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CONVERSION, }, [MOVE_TRI_ATTACK] = @@ -3962,6 +4124,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON}, + .battleAnimScript = Move_TRI_ATTACK, }, [MOVE_SUPER_FANG] = @@ -3984,6 +4147,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCARY_FACE}, + .battleAnimScript = Move_SUPER_FANG, }, [MOVE_SLASH] = @@ -4007,6 +4171,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCRATCH, COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_SLASH, }, [MOVE_SUBSTITUTE] = @@ -4031,7 +4196,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SUBSTITUTE, }, [MOVE_STRUGGLE] = @@ -4069,6 +4235,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .encoreBanned = TRUE, .assistBanned = TRUE, .sketchBanned = TRUE, + .battleAnimScript = Move_STRUGGLE, }, [MOVE_SKETCH] = @@ -4100,7 +4267,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKETCH, }, [MOVE_TRIPLE_KICK] = @@ -4123,6 +4291,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_TRIPLE_KICK, }, [MOVE_THIEF] = @@ -4151,7 +4320,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_THIEF, }, [MOVE_SPIDER_WEB] = @@ -4175,6 +4345,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STRING_SHOT}, + .battleAnimScript = Move_SPIDER_WEB, }, [MOVE_MIND_READER] = @@ -4195,7 +4366,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_MIND_READER, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIND_READER, }, [MOVE_NIGHTMARE] = @@ -4217,7 +4389,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NIGHTMARE, }, [MOVE_FLAME_WHEEL] = @@ -4244,6 +4417,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FLAME_WHEEL, }, [MOVE_SNORE] = @@ -4271,6 +4445,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_REST}, + .battleAnimScript = Move_SNORE, }, [MOVE_CURSE] = @@ -4294,7 +4469,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_CURSE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CURSE, }, [MOVE_FLAIL] = @@ -4316,6 +4492,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, + .battleAnimScript = Move_FLAIL, }, [MOVE_CONVERSION_2] = @@ -4339,7 +4516,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CONVERSION_2, }, [MOVE_AEROBLAST] = @@ -4361,7 +4539,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AEROBLAST, }, [MOVE_COTTON_SPORE] = @@ -4384,7 +4563,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COTTON_SPORE, }, [MOVE_REVERSAL] = @@ -4406,6 +4586,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, + .battleAnimScript = Move_REVERSAL, }, [MOVE_SPITE] = @@ -4429,6 +4610,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE}, + .battleAnimScript = Move_SPITE, }, [MOVE_POWDER_SNOW] = @@ -4457,6 +4639,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_POWDER_SNOW, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_POWDER_SNOW, }, [MOVE_PROTECT] = @@ -4481,6 +4664,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HARDEN}, + .battleAnimScript = Move_PROTECT, }, [MOVE_MACH_PUNCH] = @@ -4502,7 +4686,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MACH_PUNCH, }, [MOVE_SCARY_FACE] = @@ -4525,12 +4710,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SCARY_FACE, .contestComboMoves = {COMBO_STARTER_LEER, COMBO_STARTER_RAGE}, + .battleAnimScript = Move_SCARY_FACE, }, [MOVE_FEINT_ATTACK] = { .name = COMPOUND_STRING("Feint Attack"), - .description = sFeintDescription, + .description = COMPOUND_STRING( + "Draws the foe close, then\n" + "strikes without fail."), .effect = EFFECT_HIT, .power = 60, .type = TYPE_DARK, @@ -4544,6 +4732,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_LEER, COMBO_STARTER_POUND}, + .battleAnimScript = Move_FEINT_ATTACK, }, [MOVE_SWEET_KISS] = @@ -4566,6 +4755,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, + .battleAnimScript = Move_SWEET_KISS, }, [MOVE_BELLY_DRUM] = @@ -4589,7 +4779,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_BELLY_DRUM, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BELLY_DRUM, }, [MOVE_SLUDGE_BOMB] = @@ -4615,6 +4806,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SLUDGE_BOMB, .contestComboMoves = {COMBO_STARTER_SLUDGE}, + .battleAnimScript = Move_SLUDGE_BOMB, }, [MOVE_MUD_SLAP] = @@ -4639,6 +4831,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_MUD_SLAP, .contestComboMoves = {COMBO_STARTER_MUD_SPORT, COMBO_STARTER_SAND_ATTACK, COMBO_STARTER_SANDSTORM}, + .battleAnimScript = Move_MUD_SLAP, }, [MOVE_OCTAZOOKA] = @@ -4664,6 +4857,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON, COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_OCTAZOOKA, }, [MOVE_SPIKES] = @@ -4689,7 +4883,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPIKES, }, [MOVE_ZAP_CANNON] = @@ -4715,6 +4910,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_LOCK_ON}, + .battleAnimScript = Move_ZAP_CANNON, }, [MOVE_FORESIGHT] = @@ -4737,7 +4933,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FORESIGHT, }, [MOVE_DESTINY_BOND] = @@ -4765,6 +4962,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE, COMBO_STARTER_ENDURE, COMBO_STARTER_MEAN_LOOK}, + .battleAnimScript = Move_DESTINY_BOND, }, [MOVE_PERISH_SONG] = @@ -4790,6 +4988,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_MEAN_LOOK, COMBO_STARTER_SING}, + .battleAnimScript = Move_PERISH_SONG, }, [MOVE_ICY_WIND] = @@ -4815,6 +5014,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_ICY_WIND, }, [MOVE_DETECT] = @@ -4841,6 +5041,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, + .battleAnimScript = Move_DETECT, }, [MOVE_BONE_RUSH] = @@ -4861,6 +5062,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_BONE_RUSH, .contestComboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG, COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_SHADOW_BONE}, + .battleAnimScript = Move_BONE_RUSH, }, [MOVE_LOCK_ON] = @@ -4881,7 +5083,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_LOCK_ON, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LOCK_ON, }, [MOVE_OUTRAGE] = @@ -4907,7 +5110,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_OUTRAGE, }, [MOVE_SANDSTORM] = @@ -4931,7 +5135,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SANDSTORM, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SANDSTORM, }, [MOVE_GIGA_DRAIN] = @@ -4954,6 +5159,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_GIGA_DRAIN, }, [MOVE_ENDURE] = @@ -4979,7 +5185,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_ENDURE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ENDURE, }, [MOVE_CHARM] = @@ -5001,7 +5208,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_CHARM, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CHARM, }, [MOVE_ROLLOUT] = @@ -5025,6 +5233,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DEFENSE_CURL, COMBO_STARTER_HARDEN}, + .battleAnimScript = Move_ROLLOUT, }, [MOVE_FALSE_SWIPE] = @@ -5044,6 +5253,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_FALSE_SWIPE, }, [MOVE_SWAGGER] = @@ -5065,7 +5275,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SWAGGER, }, [MOVE_MILK_DRINK] = @@ -5090,7 +5301,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MILK_DRINK, }, [MOVE_SPARK] = @@ -5116,6 +5328,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_SPARK, }, [MOVE_FURY_CUTTER] = @@ -5144,6 +5357,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_FURY_CUTTER, }, [MOVE_STEEL_WING] = @@ -5169,7 +5383,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STEEL_WING, }, [MOVE_MEAN_LOOK] = @@ -5193,6 +5408,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_MEAN_LOOK, .contestComboMoves = {COMBO_STARTER_CURSE}, + .battleAnimScript = Move_MEAN_LOOK, }, [MOVE_ATTRACT] = @@ -5215,7 +5431,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ATTRACT, }, [MOVE_SLEEP_TALK] = @@ -5246,6 +5463,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_REST}, + .battleAnimScript = Move_SLEEP_TALK, }, [MOVE_HEAL_BELL] = @@ -5259,7 +5477,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .type = TYPE_NORMAL, .accuracy = 0, .pp = 5, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, + .target = MOVE_TARGET_USER, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -5272,6 +5490,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_HEAL_BELL, .contestComboMoves = {COMBO_STARTER_LUCKY_CHANT}, + .battleAnimScript = Move_HEAL_BELL, }, [MOVE_RETURN] = @@ -5292,7 +5511,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RETURN, }, [MOVE_PRESENT] = @@ -5313,7 +5533,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PRESENT, }, [MOVE_FRUSTRATION] = @@ -5334,7 +5555,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FRUSTRATION, }, [MOVE_SAFEGUARD] = @@ -5358,7 +5580,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SAFEGUARD, }, [MOVE_PAIN_SPLIT] = @@ -5380,6 +5603,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, + .battleAnimScript = Move_PAIN_SPLIT, }, [MOVE_SACRED_FIRE] = @@ -5405,6 +5629,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_SACRED_FIRE, }, [MOVE_MAGNITUDE] = @@ -5426,7 +5651,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGNITUDE, }, [MOVE_DYNAMIC_PUNCH] = @@ -5453,6 +5679,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_DYNAMIC_PUNCH, }, [MOVE_MEGAHORN] = @@ -5473,7 +5700,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MEGAHORN, }, [MOVE_DRAGON_BREATH] = @@ -5499,6 +5727,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DRAGON_BREATH, .contestComboMoves = {COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_BREATH, }, [MOVE_BATON_PASS] = @@ -5521,7 +5750,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BATON_PASS, }, [MOVE_ENCORE] = @@ -5545,7 +5775,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ENCORE, }, [MOVE_PURSUIT] = @@ -5567,7 +5798,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PURSUIT, }, [MOVE_RAPID_SPIN] = @@ -5600,7 +5832,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAPID_SPIN, }, [MOVE_SWEET_SCENT] = @@ -5622,7 +5855,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_SWEET_SCENT, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SWEET_SCENT, }, [MOVE_IRON_TAIL] = @@ -5647,7 +5881,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_IRON_TAIL, }, [MOVE_METAL_CLAW] = @@ -5674,6 +5909,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_METAL_SOUND}, + .battleAnimScript = Move_METAL_CLAW, }, [MOVE_VITAL_THROW] = @@ -5695,6 +5931,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, + .battleAnimScript = Move_VITAL_THROW, }, [MOVE_MORNING_SUN] = @@ -5720,6 +5957,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_MORNING_SUN, }, [MOVE_SYNTHESIS] = @@ -5745,6 +5983,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_SYNTHESIS, }, [MOVE_MOONLIGHT] = @@ -5770,6 +6009,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_MOONLIGHT, }, [MOVE_HIDDEN_POWER] = @@ -5789,7 +6029,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HIDDEN_POWER, }, [MOVE_CROSS_CHOP] = @@ -5812,6 +6053,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_CROSS_CHOP, }, [MOVE_TWISTER] = @@ -5837,7 +6079,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TWISTER, }, [MOVE_RAIN_DANCE] = @@ -5860,7 +6103,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_RAIN_DANCE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAIN_DANCE, }, [MOVE_SUNNY_DAY] = @@ -5883,7 +6127,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_SUNNY_DAY, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SUNNY_DAY, }, [MOVE_CRUNCH] = @@ -5918,6 +6163,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCARY_FACE}, + .battleAnimScript = Move_CRUNCH, }, [MOVE_MIRROR_COAT] = @@ -5942,6 +6188,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TAUNT}, + .battleAnimScript = Move_MIRROR_COAT, }, [MOVE_PSYCH_UP] = @@ -5966,7 +6213,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYCH_UP, }, [MOVE_EXTREME_SPEED] = @@ -5987,7 +6235,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EXTREME_SPEED, }, [MOVE_ANCIENT_POWER] = @@ -6013,7 +6262,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ANCIENT_POWER, }, [MOVE_SHADOW_BALL] = @@ -6038,7 +6288,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHADOW_BALL, }, [MOVE_FUTURE_SIGHT] = @@ -6067,6 +6318,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND, COMBO_STARTER_CONFUSION, COMBO_STARTER_KINESIS, COMBO_STARTER_PSYCHIC}, + .battleAnimScript = Move_FUTURE_SIGHT, }, [MOVE_ROCK_SMASH] = @@ -6091,7 +6343,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_SMASH, }, [MOVE_WHIRLPOOL] = @@ -6116,6 +6369,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WHIRLPOOL, }, [MOVE_BEAT_UP] = @@ -6135,7 +6389,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BEAT_UP, }, [MOVE_FAKE_OUT] = @@ -6160,7 +6415,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_FAKE_OUT, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FAKE_OUT, }, [MOVE_UPROAR] = @@ -6192,7 +6448,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_UPROAR, }, [MOVE_STOCKPILE] = @@ -6216,7 +6473,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_STOCKPILE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STOCKPILE, }, [MOVE_SPIT_UP] = @@ -6238,6 +6496,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STOCKPILE}, + .battleAnimScript = Move_SPIT_UP, }, [MOVE_SWALLOW] = @@ -6263,6 +6522,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_STOCKPILE}, + .battleAnimScript = Move_SWALLOW, }, [MOVE_HEAT_WAVE] = @@ -6288,6 +6548,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_HEAT_WAVE, }, [MOVE_HAIL] = @@ -6310,7 +6571,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_HAIL, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HAIL, }, [MOVE_TORMENT] = @@ -6329,11 +6591,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_DEF_UP_1 }, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, - .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TORMENT, }, [MOVE_FLATTER] = @@ -6356,6 +6618,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, + .battleAnimScript = Move_FLATTER, }, [MOVE_WILL_O_WISP] = @@ -6378,6 +6641,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_WILL_O_WISP, }, [MOVE_MEMENTO] = @@ -6398,7 +6662,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MEMENTO, }, [MOVE_FACADE] = @@ -6420,6 +6685,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_FACADE, }, [MOVE_FOCUS_PUNCH] = @@ -6449,6 +6715,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_FOCUS_PUNCH, }, [MOVE_SMELLING_SALTS] = @@ -6473,7 +6740,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SMELLING_SALTS, }, [MOVE_FOLLOW_ME] = @@ -6499,7 +6767,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FOLLOW_ME, }, [MOVE_NATURE_POWER] = @@ -6526,7 +6795,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NATURE_POWER, }, [MOVE_CHARGE] = @@ -6550,7 +6820,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_CHARGE, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CHARGE, }, [MOVE_TAUNT] = @@ -6573,7 +6844,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_TAUNT, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TAUNT, }, [MOVE_HELPING_HAND] = @@ -6600,7 +6872,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HELPING_HAND, }, [MOVE_TRICK] = @@ -6624,7 +6897,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRICK, }, [MOVE_ROLE_PLAY] = @@ -6648,7 +6922,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROLE_PLAY, }, [MOVE_WISH] = @@ -6673,7 +6948,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WISH, }, [MOVE_ASSIST] = @@ -6702,7 +6978,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ASSIST, }, [MOVE_INGRAIN] = @@ -6727,7 +7004,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_INGRAIN, }, [MOVE_SUPERPOWER] = @@ -6753,6 +7031,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_LOCK_ON, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_SUPERPOWER, }, [MOVE_MAGIC_COAT] = @@ -6775,7 +7054,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGIC_COAT, }, [MOVE_RECYCLE] = @@ -6799,7 +7079,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RECYCLE, }, [MOVE_REVENGE] = @@ -6819,6 +7100,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_REVENGE, .contestComboMoves = {COMBO_STARTER_PAYBACK}, + .battleAnimScript = Move_REVENGE, }, [MOVE_BRICK_BREAK] = @@ -6840,6 +7122,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_BRICK_BREAK, }, [MOVE_YAWN] = @@ -6861,7 +7144,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_YAWN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_YAWN, }, [MOVE_KNOCK_OFF] = @@ -6886,6 +7170,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT}, + .battleAnimScript = Move_KNOCK_OFF, }, [MOVE_ENDEAVOR] = @@ -6908,6 +7193,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ENDURE}, + .battleAnimScript = Move_ENDEAVOR, }, [MOVE_ERUPTION] = @@ -6928,6 +7214,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_EARTHQUAKE, COMBO_STARTER_ENDURE, COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_ERUPTION, }, [MOVE_SKILL_SWAP] = @@ -6949,7 +7236,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKILL_SWAP, }, [MOVE_IMPRISON] = @@ -6975,7 +7263,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_IMPRISON, }, [MOVE_REFRESH] = @@ -7000,6 +7289,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SING, COMBO_STARTER_WATER_SPORT}, + .battleAnimScript = Move_REFRESH, }, [MOVE_GRUDGE] = @@ -7024,6 +7314,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CURSE}, + .battleAnimScript = Move_GRUDGE, }, [MOVE_SNATCH] = @@ -7049,7 +7340,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SNATCH, }, [MOVE_SECRET_POWER] = @@ -7073,7 +7365,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SECRET_POWER, }, [MOVE_DIVE] = @@ -7100,6 +7393,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_DIVE, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SURF}, + .battleAnimScript = Move_DIVE, }, [MOVE_ARM_THRUST] = @@ -7121,6 +7415,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FAKE_OUT, COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_ARM_THRUST, }, [MOVE_CAMOUFLAGE] = @@ -7144,7 +7439,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CAMOUFLAGE, }, [MOVE_TAIL_GLOW] = @@ -7168,7 +7464,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TAIL_GLOW, }, [MOVE_LUSTER_PURGE] = @@ -7193,6 +7490,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_LUSTER_PURGE, }, [MOVE_MIST_BALL] = @@ -7218,6 +7516,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_MIST_BALL, }, [MOVE_FEATHER_DANCE] = @@ -7240,7 +7539,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FEATHER_DANCE, }, [MOVE_TEETER_DANCE] = @@ -7263,7 +7563,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TEETER_DANCE, }, [MOVE_BLAZE_KICK] = @@ -7290,6 +7591,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_BLAZE_KICK, }, [MOVE_MUD_SPORT] = @@ -7314,6 +7616,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_MUD_SPORT, .contestComboMoves = {COMBO_STARTER_MUD_SLAP, COMBO_STARTER_SANDSTORM, COMBO_STARTER_WATER_SPORT}, + .battleAnimScript = Move_MUD_SPORT, }, [MOVE_ICE_BALL] = @@ -7338,6 +7641,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_ICE_BALL, }, [MOVE_NEEDLE_ARM] = @@ -7363,7 +7667,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NEEDLE_ARM, }, [MOVE_SLACK_OFF] = @@ -7388,7 +7693,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SLACK_OFF, }, [MOVE_HYPER_VOICE] = @@ -7410,7 +7716,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HYPER_VOICE, }, [MOVE_POISON_FANG] = @@ -7436,7 +7743,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POISON_FANG, }, [MOVE_CRUSH_CLAW] = @@ -7462,6 +7770,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_CRUSH_CLAW, }, [MOVE_BLAST_BURN] = @@ -7486,6 +7795,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_BLAST_BURN, }, [MOVE_HYDRO_CANNON] = @@ -7510,6 +7820,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_HYDRO_CANNON, }, [MOVE_METEOR_MASH] = @@ -7536,7 +7847,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_METEOR_MASH, }, [MOVE_ASTONISH] = @@ -7562,7 +7874,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ASTONISH, }, [MOVE_WEATHER_BALL] = @@ -7585,6 +7898,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_RAIN_DANCE, COMBO_STARTER_SANDSTORM, COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_WEATHER_BALL, }, [MOVE_AROMATHERAPY] = @@ -7598,7 +7912,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .type = TYPE_GRASS, .accuracy = 0, .pp = 5, - .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, + .target = MOVE_TARGET_USER, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_RECOVER_HP }, @@ -7608,7 +7922,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AROMATHERAPY, }, [MOVE_FAKE_TEARS] = @@ -7630,7 +7945,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FAKE_TEARS, }, [MOVE_AIR_CUTTER] = @@ -7653,7 +7969,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AIR_CUTTER, }, [MOVE_OVERHEAT] = @@ -7672,13 +7989,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = B_UPDATED_MOVE_DATA < GEN_4, .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, + .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_2, .self = TRUE, }), .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_OVERHEAT, }, [MOVE_ODOR_SLEUTH] = @@ -7701,7 +8019,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ODOR_SLEUTH, }, [MOVE_ROCK_TOMB] = @@ -7726,6 +8045,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ROCK_THROW}, + .battleAnimScript = Move_ROCK_TOMB, }, [MOVE_SILVER_WIND] = @@ -7751,7 +8071,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SILVER_WIND, }, [MOVE_METAL_SOUND] = @@ -7775,7 +8096,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_METAL_SOUND, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_METAL_SOUND, }, [MOVE_GRASS_WHISTLE] = @@ -7799,7 +8121,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GRASS_WHISTLE, }, [MOVE_TICKLE] = @@ -7821,7 +8144,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TICKLE, }, [MOVE_COSMIC_POWER] = @@ -7845,7 +8169,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COSMIC_POWER, }, [MOVE_WATER_SPOUT] = @@ -7866,6 +8191,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WATER_SPOUT, }, [MOVE_SIGNAL_BEAM] = @@ -7889,7 +8215,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SIGNAL_BEAM, }, [MOVE_SHADOW_PUNCH] = @@ -7911,7 +8238,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHADOW_PUNCH, }, [MOVE_EXTRASENSORY] = @@ -7936,7 +8264,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EXTRASENSORY, }, [MOVE_SKY_UPPERCUT] = @@ -7960,6 +8289,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_SKY_UPPERCUT, }, [MOVE_SAND_TOMB] = @@ -7983,6 +8313,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SANDSTORM}, + .battleAnimScript = Move_SAND_TOMB, }, [MOVE_SHEER_COLD] = @@ -8003,6 +8334,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_SHEER_COLD, }, [MOVE_MUDDY_WATER] = @@ -8028,6 +8360,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_MUDDY_WATER, }, [MOVE_BULLET_SEED] = @@ -8049,6 +8382,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_BULLET_SEED, }, [MOVE_AERIAL_ACE] = @@ -8070,7 +8404,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AERIAL_ACE, }, [MOVE_ICICLE_SPEAR] = @@ -8090,7 +8425,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ICICLE_SPEAR, }, [MOVE_IRON_DEFENSE] = @@ -8114,7 +8450,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_IRON_DEFENSE, }, [MOVE_BLOCK] = @@ -8137,7 +8474,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BLOCK, }, [MOVE_HOWL] = @@ -8162,7 +8500,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HOWL, }, [MOVE_DRAGON_CLAW] = @@ -8184,6 +8523,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_CLAW, }, [MOVE_FRENZY_PLANT] = @@ -8209,6 +8549,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_FRENZY_PLANT, }, [MOVE_BULK_UP] = @@ -8232,7 +8573,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BULK_UP, }, [MOVE_BOUNCE] = @@ -8262,7 +8604,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BOUNCE, }, [MOVE_MUD_SHOT] = @@ -8287,6 +8630,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SANDSTORM}, + .battleAnimScript = Move_MUD_SHOT, }, [MOVE_POISON_TAIL] = @@ -8312,7 +8656,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POISON_TAIL, }, [MOVE_COVET] = @@ -8340,7 +8685,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COVET, }, [MOVE_VOLT_TACKLE] = @@ -8368,7 +8714,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_VOLT_TACKLE, }, [MOVE_MAGICAL_LEAF] = @@ -8389,6 +8736,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_MAGICAL_LEAF, }, [MOVE_WATER_SPORT] = @@ -8413,6 +8761,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_WATER_SPORT, .contestComboMoves = {COMBO_STARTER_MUD_SPORT, COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WATER_SPORT, }, [MOVE_CALM_MIND] = @@ -8436,7 +8785,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_CALM_MIND, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CALM_MIND, }, [MOVE_LEAF_BLADE] = @@ -8459,7 +8809,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LEAF_BLADE, }, [MOVE_DRAGON_DANCE] = @@ -8485,6 +8836,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DRAGON_DANCE, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_DANCE, }, [MOVE_ROCK_BLAST] = @@ -8505,7 +8857,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_BLAST, }, [MOVE_SHOCK_WAVE] = @@ -8526,6 +8879,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_SHOCK_WAVE, }, [MOVE_WATER_PULSE] = @@ -8551,6 +8905,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_WATER_PULSE, }, [MOVE_DOOM_DESIRE] = @@ -8572,7 +8927,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DOOM_DESIRE, }, [MOVE_PSYCHO_BOOST] = @@ -8590,13 +8946,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, + .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_2, .self = TRUE, }), .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CALM_MIND}, + .battleAnimScript = Move_PSYCHO_BOOST, }, [MOVE_ROOST] = @@ -8622,6 +8979,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_BRAVE_BIRD}, + .battleAnimScript = Move_ROOST, }, [MOVE_GRAVITY] = @@ -8645,7 +9003,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GRAVITY, }, [MOVE_MIRACLE_EYE] = @@ -8668,7 +9027,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIRACLE_EYE, }, [MOVE_WAKE_UP_SLAP] = @@ -8693,7 +9053,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WAKE_UP_SLAP, }, [MOVE_HAMMER_ARM] = @@ -8720,6 +9081,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_HAMMER_ARM, }, [MOVE_GYRO_BALL] = @@ -8741,7 +9103,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GYRO_BALL, }, [MOVE_HEALING_WISH] = @@ -8763,7 +9126,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEALING_WISH, }, [MOVE_BRINE] = @@ -8784,6 +9148,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_BRINE, }, [MOVE_NATURAL_GIFT] = @@ -8803,15 +9168,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NATURAL_GIFT, }, [MOVE_FEINT] = { .name = COMPOUND_STRING("Feint"), - .description = COMPOUND_STRING( - "An attack that hits foes\n" - "using moves like Protect."), + .description = sFeintDescription, .effect = EFFECT_HIT, .power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50, .type = TYPE_NORMAL, @@ -8831,7 +9195,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FEINT, }, [MOVE_PLUCK] = @@ -8853,7 +9218,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PLUCK, }, [MOVE_TAILWIND] = @@ -8878,7 +9244,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TAILWIND, }, [MOVE_ACUPRESSURE] = @@ -8902,7 +9269,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACUPRESSURE, }, [MOVE_METAL_BURST] = @@ -8924,6 +9292,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_METAL_SOUND}, + .battleAnimScript = Move_METAL_BURST, }, [MOVE_U_TURN] = @@ -8942,7 +9311,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_U_TURN, }, [MOVE_CLOSE_COMBAT] = @@ -8966,6 +9336,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY, COMBO_STARTER_MIND_READER}, + .battleAnimScript = Move_CLOSE_COMBAT, }, [MOVE_PAYBACK] = @@ -8987,6 +9358,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_PAYBACK, .contestComboMoves = {COMBO_STARTER_REVENGE}, + .battleAnimScript = Move_PAYBACK, }, [MOVE_ASSURANCE] = @@ -9008,6 +9380,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_PAYBACK, COMBO_STARTER_REVENGE}, + .battleAnimScript = Move_ASSURANCE, }, [MOVE_EMBARGO] = @@ -9029,7 +9402,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EMBARGO, }, [MOVE_FLING] = @@ -9050,7 +9424,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLING, }, [MOVE_PSYCHO_SHIFT] = @@ -9071,7 +9446,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYCHO_SHIFT, }, [MOVE_TRUMP_CARD] = @@ -9092,7 +9468,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRUMP_CARD, }, [MOVE_HEAL_BLOCK] = @@ -9114,7 +9491,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAL_BLOCK, }, [MOVE_WRING_OUT] = @@ -9134,7 +9512,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WRING_OUT, }, [MOVE_POWER_TRICK] = @@ -9158,7 +9537,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_TRICK, }, [MOVE_GASTRO_ACID] = @@ -9180,7 +9560,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GASTRO_ACID, }, [MOVE_LUCKY_CHANT] = @@ -9205,6 +9586,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_LUCKY_CHANT, .contestComboMoves = {COMBO_STARTER_HEAL_BELL}, + .battleAnimScript = Move_LUCKY_CHANT, }, [MOVE_ME_FIRST] = @@ -9235,7 +9617,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ME_FIRST, }, [MOVE_COPYCAT] = @@ -9265,7 +9648,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COPYCAT, }, [MOVE_POWER_SWAP] = @@ -9287,7 +9671,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_SWAP, }, [MOVE_GUARD_SWAP] = @@ -9309,7 +9694,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GUARD_SWAP, }, [MOVE_PUNISHMENT] = @@ -9330,7 +9716,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PUNISHMENT, }, [MOVE_LAST_RESORT] = @@ -9351,7 +9738,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LAST_RESORT, }, [MOVE_WORRY_SEED] = @@ -9374,6 +9762,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_WORRY_SEED, .contestComboMoves = {COMBO_STARTER_LEECH_SEED}, + .battleAnimScript = Move_WORRY_SEED, }, [MOVE_SUCKER_PUNCH] = @@ -9392,7 +9781,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SUCKER_PUNCH, }, [MOVE_TOXIC_SPIKES] = @@ -9418,7 +9808,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TOXIC_SPIKES, }, [MOVE_HEART_SWAP] = @@ -9440,7 +9831,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEART_SWAP, }, [MOVE_AQUA_RING] = @@ -9464,7 +9856,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AQUA_RING, }, [MOVE_MAGNET_RISE] = @@ -9489,7 +9882,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGNET_RISE, }, [MOVE_FLARE_BLITZ] = @@ -9517,6 +9911,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FLARE_BLITZ, }, [MOVE_FORCE_PALM] = @@ -9541,7 +9936,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FORCE_PALM, }, [MOVE_AURA_SPHERE] = @@ -9563,7 +9959,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AURA_SPHERE, }, [MOVE_ROCK_POLISH] = @@ -9587,7 +9984,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_POLISH, }, [MOVE_POISON_JAB] = @@ -9612,7 +10010,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POISON_JAB, }, [MOVE_DARK_PULSE] = @@ -9637,7 +10036,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DARK_PULSE, }, [MOVE_NIGHT_SLASH] = @@ -9660,7 +10060,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NIGHT_SLASH, }, [MOVE_AQUA_TAIL] = @@ -9682,6 +10083,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_AQUA_TAIL, }, [MOVE_SEED_BOMB] = @@ -9702,7 +10104,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SEED_BOMB, }, [MOVE_AIR_SLASH] = @@ -9727,7 +10130,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AIR_SLASH, }, [MOVE_X_SCISSOR] = @@ -9750,6 +10154,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SWORDS_DANCE}, + .battleAnimScript = Move_X_SCISSOR, }, [MOVE_BUG_BUZZ] = @@ -9775,7 +10180,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BUG_BUZZ, }, [MOVE_DRAGON_PULSE] = @@ -9796,7 +10202,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRAGON_PULSE, }, [MOVE_DRAGON_RUSH] = @@ -9823,6 +10230,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DRAGON_RUSH, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_RUSH, }, [MOVE_POWER_GEM] = @@ -9842,7 +10250,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_GEM, }, [MOVE_DRAIN_PUNCH] = @@ -9864,6 +10273,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_DRAIN_PUNCH, }, [MOVE_VACUUM_WAVE] = @@ -9883,7 +10293,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_VACUUM_WAVE, }, [MOVE_FOCUS_BLAST] = @@ -9909,6 +10320,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_FOCUS_ENERGY}, + .battleAnimScript = Move_FOCUS_BLAST, }, [MOVE_ENERGY_BALL] = @@ -9934,6 +10346,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_ENERGY_BALL, }, [MOVE_BRAVE_BIRD] = @@ -9955,7 +10368,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_BRAVE_BIRD, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BRAVE_BIRD, }, [MOVE_EARTH_POWER] = @@ -9980,7 +10394,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EARTH_POWER, }, [MOVE_SWITCHEROO] = @@ -10004,7 +10419,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SWITCHEROO, }, [MOVE_GIGA_IMPACT] = @@ -10027,7 +10443,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GIGA_IMPACT, }, [MOVE_NASTY_PLOT] = @@ -10051,7 +10468,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NASTY_PLOT, }, [MOVE_BULLET_PUNCH] = @@ -10073,7 +10491,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BULLET_PUNCH, }, [MOVE_AVALANCHE] = @@ -10085,14 +10504,15 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .type = TYPE_ICE, .accuracy = 100, .pp = 10, - .target = MOVE_TARGET_BOTH, + .target = MOVE_TARGET_SELECTED, .priority = -4, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AVALANCHE, }, [MOVE_ICE_SHARD] = @@ -10112,7 +10532,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ICE_SHARD, }, [MOVE_SHADOW_CLAW] = @@ -10134,7 +10555,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHADOW_CLAW, }, [MOVE_THUNDER_FANG] = @@ -10165,6 +10587,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_THUNDER_FANG, .contestComboMoves = {COMBO_STARTER_CHARGE, COMBO_STARTER_FIRE_FANG, COMBO_STARTER_ICE_FANG}, + .battleAnimScript = Move_THUNDER_FANG, }, [MOVE_ICE_FANG] = @@ -10199,6 +10622,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_ICE_FANG, .contestComboMoves = {COMBO_STARTER_FIRE_FANG, COMBO_STARTER_THUNDER_FANG}, + .battleAnimScript = Move_ICE_FANG, }, [MOVE_FIRE_FANG] = @@ -10229,6 +10653,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_FIRE_FANG, .contestComboMoves = {COMBO_STARTER_ICE_FANG, COMBO_STARTER_THUNDER_FANG}, + .battleAnimScript = Move_FIRE_FANG, }, [MOVE_SHADOW_SNEAK] = @@ -10249,7 +10674,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHADOW_SNEAK, }, [MOVE_MUD_BOMB] = @@ -10274,7 +10700,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MUD_BOMB, }, [MOVE_PSYCHO_CUT] = @@ -10296,7 +10723,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYCHO_CUT, }, [MOVE_ZEN_HEADBUTT] = @@ -10321,7 +10749,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ZEN_HEADBUTT, }, [MOVE_MIRROR_SHOT] = @@ -10345,7 +10774,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIRROR_SHOT, }, [MOVE_FLASH_CANNON] = @@ -10369,7 +10799,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLASH_CANNON, }, [MOVE_ROCK_CLIMB] = @@ -10394,7 +10825,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_CLIMB, }, [MOVE_DEFOG] = @@ -10412,12 +10844,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .zMove = { .effect = Z_EFFECT_ACC_UP_1 }, - .ignoresSubstitute = B_UPDATED_MOVE_FLAGS == GEN_4, + //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DEFOG, }, [MOVE_TRICK_ROOM] = @@ -10439,7 +10872,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRICK_ROOM, }, [MOVE_DRACO_METEOR] = @@ -10457,13 +10891,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, + .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_2, .self = TRUE, }), .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRACO_METEOR, }, [MOVE_DISCHARGE] = @@ -10488,6 +10923,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_DISCHARGE, }, [MOVE_LAVA_PLUME] = @@ -10510,6 +10946,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_LAVA_PLUME, }, [MOVE_LEAF_STORM] = @@ -10527,13 +10964,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, + .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_2, .self = TRUE, }), .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LEAF_STORM, }, [MOVE_POWER_WHIP] = @@ -10555,6 +10993,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_POWER_WHIP, }, [MOVE_ROCK_WRECKER] = @@ -10577,7 +11016,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROCK_WRECKER, }, [MOVE_CROSS_POISON] = @@ -10604,7 +11044,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CROSS_POISON, }, [MOVE_GUNK_SHOT] = @@ -10628,7 +11069,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GUNK_SHOT, }, [MOVE_IRON_HEAD] = @@ -10653,7 +11095,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_IRON_HEAD, }, [MOVE_MAGNET_BOMB] = @@ -10674,7 +11117,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGNET_BOMB, }, [MOVE_STONE_EDGE] = @@ -10695,7 +11139,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STONE_EDGE, }, [MOVE_CAPTIVATE] = @@ -10718,6 +11163,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARM}, + .battleAnimScript = Move_CAPTIVATE, }, [MOVE_STEALTH_ROCK] = @@ -10742,7 +11188,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STEALTH_ROCK, }, [MOVE_GRASS_KNOT] = @@ -10764,7 +11211,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GRASS_KNOT, }, [MOVE_CHATTER] = @@ -10803,7 +11251,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CHATTER, }, [MOVE_JUDGMENT] = @@ -10824,7 +11273,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_JUDGMENT, }, [MOVE_BUG_BITE] = @@ -10846,7 +11296,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BUG_BITE, }, [MOVE_CHARGE_BEAM] = @@ -10872,6 +11323,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_CHARGE_BEAM, }, [MOVE_WOOD_HAMMER] = @@ -10893,7 +11345,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WOOD_HAMMER, }, [MOVE_AQUA_JET] = @@ -10915,6 +11368,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_AQUA_JET, }, [MOVE_ATTACK_ORDER] = @@ -10936,6 +11390,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_ATTACK_ORDER, .contestComboMoves = {COMBO_STARTER_DEFEND_ORDER, COMBO_STARTER_HEAL_ORDER}, + .battleAnimScript = Move_ATTACK_ORDER, }, [MOVE_DEFEND_ORDER] = @@ -10960,6 +11415,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_DEFEND_ORDER, .contestComboMoves = {COMBO_STARTER_ATTACK_ORDER, COMBO_STARTER_HEAL_ORDER}, + .battleAnimScript = Move_DEFEND_ORDER, }, [MOVE_HEAL_ORDER] = @@ -10985,6 +11441,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_HEAL_ORDER, .contestComboMoves = {COMBO_STARTER_ATTACK_ORDER, COMBO_STARTER_DEFEND_ORDER}, + .battleAnimScript = Move_HEAL_ORDER, }, [MOVE_HEAD_SMASH] = @@ -11006,7 +11463,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAD_SMASH, }, [MOVE_DOUBLE_HIT] = @@ -11028,7 +11486,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DOUBLE_HIT, }, [MOVE_ROAR_OF_TIME] = @@ -11052,7 +11511,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROAR_OF_TIME, }, [MOVE_SPACIAL_REND] = @@ -11073,7 +11533,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPACIAL_REND, }, [MOVE_LUNAR_DANCE] = @@ -11096,7 +11557,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LUNAR_DANCE, }, [MOVE_CRUSH_GRIP] = @@ -11116,7 +11578,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CRUSH_GRIP, }, [MOVE_MAGMA_STORM] = @@ -11140,6 +11603,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_MAGMA_STORM, }, [MOVE_DARK_VOID] = @@ -11162,7 +11626,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DARK_VOID, }, [MOVE_SEED_FLARE] = @@ -11186,7 +11651,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SEED_FLARE, }, [MOVE_OMINOUS_WIND] = @@ -11212,7 +11678,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_OMINOUS_WIND, }, [MOVE_SHADOW_FORCE] = @@ -11240,7 +11707,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHADOW_FORCE, }, [MOVE_HONE_CLAWS] = @@ -11264,7 +11732,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HONE_CLAWS, }, [MOVE_WIDE_GUARD] = @@ -11290,7 +11759,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WIDE_GUARD, }, [MOVE_GUARD_SPLIT] = @@ -11312,7 +11782,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GUARD_SPLIT, }, [MOVE_POWER_SPLIT] = @@ -11334,7 +11805,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_SPLIT, }, [MOVE_WONDER_ROOM] = @@ -11356,7 +11828,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WONDER_ROOM, }, [MOVE_PSYSHOCK] = @@ -11374,7 +11847,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYSHOCK, }, [MOVE_VENOSHOCK] = @@ -11396,6 +11870,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TOXIC}, + .battleAnimScript = Move_VENOSHOCK, }, [MOVE_AUTOTOMIZE] = @@ -11419,7 +11894,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AUTOTOMIZE, }, [MOVE_RAGE_POWDER] = @@ -11446,7 +11922,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAGE_POWDER, }, [MOVE_TELEKINESIS] = @@ -11469,7 +11946,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TELEKINESIS, }, [MOVE_MAGIC_ROOM] = @@ -11491,7 +11969,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGIC_ROOM, }, [MOVE_SMACK_DOWN] = @@ -11516,7 +11995,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SMACK_DOWN, }, [MOVE_STORM_THROW] = @@ -11536,7 +12016,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STORM_THROW, }, [MOVE_FLAME_BURST] = @@ -11560,7 +12041,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLAME_BURST, }, [MOVE_SLUDGE_WAVE] = @@ -11584,7 +12066,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SLUDGE_WAVE, }, [MOVE_QUIVER_DANCE] = @@ -11609,7 +12092,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_QUIVER_DANCE, }, [MOVE_HEAVY_SLAM] = @@ -11630,7 +12114,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAVY_SLAM, }, [MOVE_SYNCHRONOISE] = @@ -11650,7 +12135,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SYNCHRONOISE, }, [MOVE_ELECTRO_BALL] = @@ -11671,7 +12157,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ELECTRO_BALL, }, [MOVE_SOAK] = @@ -11693,7 +12180,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SOAK, }, [MOVE_FLAME_CHARGE] = @@ -11719,7 +12207,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLAME_CHARGE, }, [MOVE_COIL] = @@ -11743,7 +12232,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COIL, }, [MOVE_LOW_SWEEP] = @@ -11768,7 +12258,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LOW_SWEEP, }, [MOVE_ACID_SPRAY] = @@ -11793,7 +12284,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACID_SPRAY, }, [MOVE_FOUL_PLAY] = @@ -11814,7 +12306,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FOUL_PLAY, }, [MOVE_SIMPLE_BEAM] = @@ -11836,7 +12329,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SIMPLE_BEAM, }, [MOVE_ENTRAINMENT] = @@ -11858,7 +12352,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ENTRAINMENT, }, [MOVE_AFTER_YOU] = @@ -11883,7 +12378,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AFTER_YOU, }, [MOVE_ROUND] = @@ -11908,7 +12404,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROUND, }, [MOVE_ECHOED_VOICE] = @@ -11930,7 +12427,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ECHOED_VOICE, }, [MOVE_CHIP_AWAY] = @@ -11950,7 +12448,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CHIP_AWAY, }, [MOVE_CLEAR_SMOG] = @@ -11973,7 +12472,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CLEAR_SMOG, }, [MOVE_STORED_POWER] = @@ -11993,7 +12493,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STORED_POWER, }, [MOVE_QUICK_GUARD] = @@ -12019,7 +12520,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_QUICK_GUARD, }, [MOVE_ALLY_SWITCH] = @@ -12042,7 +12544,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ALLY_SWITCH, }, [MOVE_SCALD] = @@ -12067,7 +12570,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SCALD, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SCALD, }, [MOVE_SHELL_SMASH] = @@ -12091,7 +12595,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHELL_SMASH, }, [MOVE_HEAL_PULSE] = @@ -12116,7 +12621,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAL_PULSE, }, [MOVE_HEX] = @@ -12139,6 +12645,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TOXIC}, + .battleAnimScript = Move_HEX, }, [MOVE_SKY_DROP] = @@ -12164,7 +12671,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKY_DROP, }, [MOVE_SHIFT_GEAR] = @@ -12188,7 +12696,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHIFT_GEAR, }, [MOVE_CIRCLE_THROW] = @@ -12209,7 +12718,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CIRCLE_THROW, }, [MOVE_INCINERATE] = @@ -12232,7 +12742,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_INCINERATE, }, [MOVE_QUASH] = @@ -12254,7 +12765,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_QUASH, }, [MOVE_ACROBATICS] = @@ -12275,7 +12787,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACROBATICS, }, [MOVE_REFLECT_TYPE] = @@ -12298,7 +12811,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_REFLECT_TYPE, }, [MOVE_RETALIATE] = @@ -12319,7 +12833,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RETALIATE, }, [MOVE_FINAL_GAMBIT] = @@ -12341,7 +12856,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FINAL_GAMBIT, }, [MOVE_BESTOW] = @@ -12367,7 +12883,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BESTOW, }, [MOVE_INFERNO] = @@ -12391,7 +12908,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_INFERNO, }, [MOVE_WATER_PLEDGE] = @@ -12412,7 +12930,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WATER_PLEDGE, }, [MOVE_FIRE_PLEDGE] = @@ -12433,7 +12952,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FIRE_PLEDGE, }, [MOVE_GRASS_PLEDGE] = @@ -12454,7 +12974,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GRASS_PLEDGE, }, [MOVE_VOLT_SWITCH] = @@ -12472,7 +12993,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_VOLT_SWITCH, }, [MOVE_STRUGGLE_BUG] = @@ -12496,7 +13018,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STRUGGLE_BUG, }, [MOVE_BULLDOZE] = @@ -12521,7 +13044,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BULLDOZE, }, [MOVE_FROST_BREATH] = @@ -12540,7 +13064,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FROST_BREATH, }, [MOVE_DRAGON_TAIL] = @@ -12562,6 +13087,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = COMBO_STARTER_DRAGON_TAIL, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH}, + .battleAnimScript = Move_DRAGON_TAIL, }, [MOVE_WORK_UP] = @@ -12585,7 +13111,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WORK_UP, }, [MOVE_ELECTROWEB] = @@ -12609,7 +13136,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ELECTROWEB, }, [MOVE_WILD_CHARGE] = @@ -12631,7 +13159,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WILD_CHARGE, }, [MOVE_DRILL_RUN] = @@ -12653,7 +13182,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRILL_RUN, }, [MOVE_DUAL_CHOP] = @@ -12675,7 +13205,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DUAL_CHOP, }, [MOVE_HEART_STAMP] = @@ -12700,7 +13231,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEART_STAMP, }, [MOVE_HORN_LEECH] = @@ -12720,7 +13252,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HORN_LEECH, }, [MOVE_SACRED_SWORD] = @@ -12741,7 +13274,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SACRED_SWORD, }, [MOVE_RAZOR_SHELL] = @@ -12767,7 +13301,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RAZOR_SHELL, }, [MOVE_HEAT_CRASH] = @@ -12787,7 +13322,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAT_CRASH, }, [MOVE_LEAF_TORNADO] = @@ -12812,7 +13348,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LEAF_TORNADO, }, [MOVE_STEAMROLLER] = @@ -12838,7 +13375,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STEAMROLLER, }, [MOVE_COTTON_GUARD] = @@ -12862,7 +13400,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COTTON_GUARD, }, [MOVE_NIGHT_DAZE] = @@ -12886,7 +13425,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NIGHT_DAZE, }, [MOVE_PSYSTRIKE] = @@ -12904,7 +13444,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYSTRIKE, }, [MOVE_TAIL_SLAP] = @@ -12925,7 +13466,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TAIL_SLAP, }, [MOVE_HURRICANE] = @@ -12951,7 +13493,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HURRICANE, }, [MOVE_HEAD_CHARGE] = @@ -12973,7 +13516,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HEAD_CHARGE, }, [MOVE_GEAR_GRIND] = @@ -12996,7 +13540,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GEAR_GRIND, }, [MOVE_SEARING_SHOT] = @@ -13019,7 +13564,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SEARING_SHOT, }, [MOVE_TECHNO_BLAST] = @@ -13041,7 +13587,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TECHNO_BLAST, }, [MOVE_RELIC_SONG] = @@ -13069,7 +13616,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_RELIC_SONG, }, [MOVE_SECRET_SWORD] = @@ -13091,7 +13639,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SECRET_SWORD, }, [MOVE_GLACIATE] = @@ -13115,7 +13664,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GLACIATE, }, [MOVE_BOLT_STRIKE] = @@ -13140,7 +13690,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BOLT_STRIKE, }, [MOVE_BLUE_FLARE] = @@ -13164,7 +13715,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BLUE_FLARE, }, [MOVE_FIERY_DANCE] = @@ -13190,7 +13742,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FIERY_DANCE, }, [MOVE_FREEZE_SHOCK] = @@ -13218,7 +13771,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FREEZE_SHOCK, }, [MOVE_ICE_BURN] = @@ -13246,7 +13800,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ICE_BURN, }, [MOVE_SNARL] = @@ -13273,7 +13828,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SNARL, }, [MOVE_ICICLE_CRASH] = @@ -13297,7 +13853,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ICICLE_CRASH, }, [MOVE_V_CREATE] = @@ -13324,7 +13881,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_V_CREATE, }, [MOVE_FUSION_FLARE] = @@ -13345,7 +13903,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FUSION_FLARE, }, [MOVE_FUSION_BOLT] = @@ -13365,7 +13924,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FUSION_BOLT, }, [MOVE_FLYING_PRESS] = @@ -13391,7 +13951,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLYING_PRESS, }, [MOVE_MAT_BLOCK] = @@ -13420,7 +13981,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAT_BLOCK, }, [MOVE_BELCH] = @@ -13448,7 +14010,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BELCH, }, [MOVE_ROTOTILLER] = @@ -13472,7 +14035,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ROTOTILLER, }, [MOVE_STICKY_WEB] = @@ -13497,7 +14061,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STICKY_WEB, }, [MOVE_FELL_STINGER] = @@ -13518,7 +14083,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FELL_STINGER, }, [MOVE_PHANTOM_FORCE] = @@ -13546,7 +14112,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PHANTOM_FORCE, }, [MOVE_TRICK_OR_TREAT] = @@ -13569,7 +14136,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRICK_OR_TREAT, }, [MOVE_NOBLE_ROAR] = @@ -13593,7 +14161,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NOBLE_ROAR, }, [MOVE_ION_DELUGE] = @@ -13616,7 +14185,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ION_DELUGE, }, [MOVE_PARABOLIC_CHARGE] = @@ -13637,7 +14207,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PARABOLIC_CHARGE, }, [MOVE_FORESTS_CURSE] = @@ -13660,7 +14231,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FORESTS_CURSE, }, [MOVE_PETAL_BLIZZARD] = @@ -13681,7 +14253,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PETAL_BLIZZARD, }, [MOVE_FREEZE_DRY] = @@ -13694,7 +14267,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = #else "types. May cause freezing."), #endif - .effect = EFFECT_FREEZE_DRY, + .effect = EFFECT_SUPER_EFFECTIVE_ON_ARG, .power = 70, .type = TYPE_ICE, .accuracy = 100, @@ -13702,6 +14275,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .argument = TYPE_WATER, .additionalEffects = ADDITIONAL_EFFECTS({ .moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE, .chance = 10, @@ -13709,7 +14283,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FREEZE_DRY, }, [MOVE_DISARMING_VOICE] = @@ -13731,7 +14306,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DISARMING_VOICE, }, [MOVE_PARTING_SHOT] = @@ -13755,7 +14331,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PARTING_SHOT, }, [MOVE_TOPSY_TURVY] = @@ -13777,7 +14354,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TOPSY_TURVY, }, [MOVE_DRAINING_KISS] = @@ -13798,7 +14376,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRAINING_KISS, }, [MOVE_CRAFTY_SHIELD] = @@ -13823,7 +14402,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE_ONCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CRAFTY_SHIELD, }, [MOVE_FLOWER_SHIELD] = @@ -13846,7 +14426,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLOWER_SHIELD, }, [MOVE_GRASSY_TERRAIN] = @@ -13870,7 +14451,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_GRASSY_TERRAIN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GRASSY_TERRAIN, }, [MOVE_MISTY_TERRAIN] = @@ -13894,7 +14476,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = COMBO_STARTER_MISTY_TERRAIN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MISTY_TERRAIN, }, [MOVE_ELECTRIFY] = @@ -13915,7 +14498,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ELECTRIFY, }, [MOVE_PLAY_ROUGH] = @@ -13940,7 +14524,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PLAY_ROUGH, }, [MOVE_FAIRY_WIND] = @@ -13961,7 +14546,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FAIRY_WIND, }, [MOVE_MOONBLAST] = @@ -13985,7 +14571,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MOONBLAST, }, [MOVE_BOOMBURST] = @@ -14007,7 +14594,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BOOMBURST, }, [MOVE_FAIRY_LOCK] = @@ -14030,7 +14618,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FAIRY_LOCK, }, [MOVE_KINGS_SHIELD] = @@ -14057,7 +14646,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_KINGS_SHIELD, }, [MOVE_PLAY_NICE] = @@ -14081,7 +14671,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PLAY_NICE, }, [MOVE_CONFIDE] = @@ -14106,7 +14697,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CONFIDE, }, [MOVE_DIAMOND_STORM] = @@ -14132,7 +14724,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DIAMOND_STORM, }, [MOVE_STEAM_ERUPTION] = @@ -14159,11 +14752,12 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCALD}, + .battleAnimScript = Move_STEAM_ERUPTION, }, [MOVE_HYPERSPACE_HOLE] = { - .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceHole", "Hyprspace Hole"), + .name = HANDLE_EXPANDED_MOVE_NAME("HyprspceHole", "Hyperspace Hole"), .description = sHyperspaceHoleDescription, .effect = EFFECT_HIT, .power = 80, @@ -14183,6 +14777,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_HYPERSPACE_HOLE, .contestComboMoves = {COMBO_STARTER_HYPERSPACE_FURY}, + .battleAnimScript = Move_HYPERSPACE_HOLE, }, [MOVE_WATER_SHURIKEN] = @@ -14202,7 +14797,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WATER_SHURIKEN, }, [MOVE_MYSTICAL_FIRE] = @@ -14226,7 +14822,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MYSTICAL_FIRE, }, [MOVE_SPIKY_SHIELD] = @@ -14252,7 +14849,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPIKY_SHIELD, }, [MOVE_AROMATIC_MIST] = @@ -14276,7 +14874,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AROMATIC_MIST, }, [MOVE_EERIE_IMPULSE] = @@ -14298,7 +14897,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EERIE_IMPULSE, }, [MOVE_VENOM_DRENCH] = @@ -14321,6 +14921,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TOXIC}, + .battleAnimScript = Move_VENOM_DRENCH, }, [MOVE_POWDER] = @@ -14340,11 +14941,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .zMove = { .effect = Z_EFFECT_SPDEF_UP_2 }, .powderMove = TRUE, .magicCoatAffected = TRUE, - .ignoresSubstitute = TRUE, .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWDER, }, [MOVE_GEOMANCY] = @@ -14369,7 +14970,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GEOMANCY, }, [MOVE_MAGNETIC_FLUX] = @@ -14394,7 +14996,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGNETIC_FLUX, }, [MOVE_HAPPY_HOUR] = @@ -14417,7 +15020,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HAPPY_HOUR, }, [MOVE_ELECTRIC_TERRAIN] = @@ -14441,7 +15045,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = COMBO_STARTER_ELECTRIC_TERRAIN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ELECTRIC_TERRAIN, }, [MOVE_DAZZLING_GLEAM] = @@ -14461,7 +15066,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DAZZLING_GLEAM, }, [MOVE_CELEBRATE] = @@ -14490,7 +15096,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CELEBRATE, }, [MOVE_HOLD_HANDS] = @@ -14519,7 +15126,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HOLD_HANDS, }, [MOVE_BABY_DOLL_EYES] = @@ -14541,7 +15149,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BABY_DOLL_EYES, }, [MOVE_NUZZLE] = @@ -14566,7 +15175,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NUZZLE, }, [MOVE_HOLD_BACK] = @@ -14585,7 +15195,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HOLD_BACK, }, [MOVE_INFESTATION] = @@ -14609,7 +15220,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_INFESTATION, }, [MOVE_POWER_UP_PUNCH] = @@ -14636,7 +15248,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_UP_PUNCH, }, [MOVE_OBLIVION_WING] = @@ -14656,7 +15269,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_OBLIVION_WING, }, [MOVE_THOUSAND_ARROWS] = @@ -14684,6 +15298,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_THOUSAND_ARROWS, .contestComboMoves = {COMBO_STARTER_THOUSAND_WAVES}, + .battleAnimScript = Move_THOUSAND_ARROWS, }, [MOVE_THOUSAND_WAVES] = @@ -14709,6 +15324,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_THOUSAND_WAVES, .contestComboMoves = {COMBO_STARTER_THOUSAND_ARROWS}, + .battleAnimScript = Move_THOUSAND_WAVES, }, [MOVE_LANDS_WRATH] = @@ -14729,7 +15345,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LANDS_WRATH, }, [MOVE_LIGHT_OF_RUIN] = @@ -14748,6 +15365,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, + .battleAnimScript = Move_LIGHT_OF_RUIN, }, [MOVE_ORIGIN_PULSE] = @@ -14769,7 +15387,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ORIGIN_PULSE, }, [MOVE_PRECIPICE_BLADES] = @@ -14790,7 +15409,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PRECIPICE_BLADES, }, [MOVE_DRAGON_ASCENT] = @@ -14814,7 +15434,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRAGON_ASCENT, }, [MOVE_HYPERSPACE_FURY] = @@ -14842,6 +15463,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_HYPERSPACE_FURY, .contestComboMoves = {COMBO_STARTER_HYPERSPACE_HOLE}, + .battleAnimScript = Move_HYPERSPACE_FURY, }, [MOVE_SHORE_UP] = @@ -14866,7 +15488,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {COMBO_STARTER_SANDSTORM} + .contestComboMoves = {COMBO_STARTER_SANDSTORM}, + .battleAnimScript = Move_SHORE_UP, }, [MOVE_FIRST_IMPRESSION] = @@ -14888,7 +15511,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FIRST_IMPRESSION, }, [MOVE_BANEFUL_BUNKER] = @@ -14914,7 +15538,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BANEFUL_BUNKER, }, [MOVE_SPIRIT_SHACKLE] = @@ -14938,7 +15563,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPIRIT_SHACKLE, }, [MOVE_DARKEST_LARIAT] = @@ -14960,7 +15586,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DARKEST_LARIAT, }, [MOVE_SPARKLING_ARIA] = @@ -14988,6 +15615,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SCALD}, + .battleAnimScript = Move_SPARKLING_ARIA, }, [MOVE_ICE_HAMMER] = @@ -15014,6 +15642,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_ICE_HAMMER, }, [MOVE_FLORAL_HEALING] = @@ -15038,7 +15667,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLORAL_HEALING, }, [MOVE_HIGH_HORSEPOWER] = @@ -15059,7 +15689,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_HIGH_HORSEPOWER, }, [MOVE_STRENGTH_SAP] = @@ -15082,7 +15713,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STRENGTH_SAP, }, [MOVE_SOLAR_BLADE] = @@ -15108,6 +15740,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_SOLAR_BLADE, }, [MOVE_LEAFAGE] = @@ -15128,6 +15761,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_GROWTH}, + .battleAnimScript = Move_LEAFAGE, }, [MOVE_SPOTLIGHT] = @@ -15153,7 +15787,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPOTLIGHT, }, [MOVE_TOXIC_THREAD] = @@ -15176,6 +15811,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_TOXIC}, + .battleAnimScript = Move_TOXIC_THREAD, }, [MOVE_LASER_FOCUS] = @@ -15199,7 +15835,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LASER_FOCUS, }, [MOVE_GEAR_UP] = @@ -15224,7 +15861,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_GEAR_UP, }, [MOVE_THROAT_CHOP] = @@ -15249,7 +15887,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_THROAT_CHOP, }, [MOVE_POLLEN_PUFF] = @@ -15270,7 +15909,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POLLEN_PUFF, }, [MOVE_ANCHOR_SHOT] = @@ -15295,7 +15935,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ANCHOR_SHOT, }, [MOVE_PSYCHIC_TERRAIN] = @@ -15318,7 +15959,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = COMBO_STARTER_PSYCHIC_TERRAIN, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYCHIC_TERRAIN, }, [MOVE_LUNGE] = @@ -15343,7 +15985,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LUNGE, }, [MOVE_FIRE_LASH] = @@ -15369,6 +16012,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_FIRE_LASH, }, [MOVE_POWER_TRIP] = @@ -15389,7 +16033,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_POWER_TRIP, }, [MOVE_BURN_UP] = @@ -15416,6 +16061,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_SUNNY_DAY}, + .battleAnimScript = Move_BURN_UP, }, [MOVE_SPEED_SWAP] = @@ -15437,7 +16083,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPEED_SWAP, }, [MOVE_SMART_STRIKE] = @@ -15458,7 +16105,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SMART_STRIKE, }, [MOVE_PURIFY] = @@ -15482,7 +16130,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PURIFY, }, [MOVE_REVELATION_DANCE] = @@ -15503,7 +16152,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_REVELATION_DANCE, }, [MOVE_CORE_ENFORCER] = @@ -15527,7 +16177,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CORE_ENFORCER, }, [MOVE_TROP_KICK] = @@ -15552,7 +16203,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TROP_KICK, }, [MOVE_INSTRUCT] = @@ -15577,7 +16229,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_INSTRUCT, }, [MOVE_BEAK_BLAST] = @@ -15605,7 +16258,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BEAK_BLAST, }, [MOVE_CLANGING_SCALES] = @@ -15631,7 +16285,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CLANGING_SCALES, }, [MOVE_DRAGON_HAMMER] = @@ -15653,6 +16308,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_DRAGON_BREATH, COMBO_STARTER_DRAGON_DANCE, COMBO_STARTER_DRAGON_RAGE, COMBO_STARTER_DRAGON_RUSH, COMBO_STARTER_DRAGON_TAIL}, + .battleAnimScript = Move_DRAGON_HAMMER, }, [MOVE_BRUTAL_SWING] = @@ -15673,7 +16329,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BRUTAL_SWING, }, [MOVE_AURORA_VEIL] = @@ -15698,6 +16355,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_HAIL}, + .battleAnimScript = Move_AURORA_VEIL, }, [MOVE_SHELL_TRAP] = @@ -15724,7 +16382,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHELL_TRAP, }, [MOVE_FLEUR_CANNON] = @@ -15743,13 +16402,14 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, .additionalEffects = ADDITIONAL_EFFECTS({ - .moveEffect = MOVE_EFFECT_SP_ATK_TWO_DOWN, + .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_2, .self = TRUE, }), .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLEUR_CANNON, }, [MOVE_PSYCHIC_FANGS] = @@ -15771,7 +16431,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PSYCHIC_FANGS, }, [MOVE_STOMPING_TANTRUM] = @@ -15793,7 +16454,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STOMPING_TANTRUM, }, [MOVE_SHADOW_BONE] = @@ -15818,6 +16480,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = COMBO_STARTER_SHADOW_BONE, .contestComboMoves = {COMBO_STARTER_BONE_CLUB, COMBO_STARTER_BONEMERANG, COMBO_STARTER_BONE_RUSH}, + .battleAnimScript = Move_SHADOW_BONE, }, [MOVE_ACCELEROCK] = @@ -15838,7 +16501,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ACCELEROCK, }, [MOVE_LIQUIDATION] = @@ -15864,6 +16528,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_RAIN_DANCE}, + .battleAnimScript = Move_LIQUIDATION, }, [MOVE_PRISMATIC_LASER] = @@ -15887,7 +16552,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PRISMATIC_LASER, }, [MOVE_SPECTRAL_THIEF] = @@ -15913,7 +16579,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPECTRAL_THIEF, }, [MOVE_SUNSTEEL_STRIKE] = @@ -15936,7 +16603,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SUNSTEEL_STRIKE, }, [MOVE_MOONGEIST_BEAM] = @@ -15958,7 +16626,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MOONGEIST_BEAM, }, [MOVE_TEARFUL_LOOK] = @@ -15981,7 +16650,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_LAST, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TEARFUL_LOOK, }, [MOVE_ZING_ZAP] = @@ -16007,6 +16677,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_CHARGE}, + .battleAnimScript = Move_ZING_ZAP, }, [MOVE_NATURES_MADNESS] = @@ -16027,7 +16698,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NATURES_MADNESS, }, [MOVE_MULTI_ATTACK] = @@ -16049,7 +16721,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MULTI_ATTACK, }, [MOVE_MIND_BLOWN] = @@ -16070,7 +16743,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MIND_BLOWN, }, [MOVE_PLASMA_FISTS] = @@ -16093,7 +16767,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PLASMA_FISTS, }, [MOVE_PHOTON_GEYSER] = @@ -16115,7 +16790,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PHOTON_GEYSER, }, [MOVE_ZIPPY_ZAP] = @@ -16142,6 +16818,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .chance = 100, }), #endif + .battleAnimScript = Move_ZIPPY_ZAP, }, [MOVE_SPLISHY_SPLASH] = @@ -16164,6 +16841,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, }), + .battleAnimScript = Move_SPLISHY_SPLASH, }, [MOVE_FLOATY_FALL] = @@ -16188,6 +16866,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, }), + .battleAnimScript = Move_FLOATY_FALL, }, [MOVE_PIKA_PAPOW] = @@ -16206,6 +16885,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_PIKA_PAPOW, }, [MOVE_BOUNCY_BUBBLE] = @@ -16230,6 +16910,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, .healingMove = B_HEAL_BLOCKING >= GEN_6, + .battleAnimScript = Move_BOUNCY_BUBBLE, }, [MOVE_BUZZY_BUZZ] = @@ -16252,6 +16933,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 100, }), + .battleAnimScript = Move_BUZZY_BUZZ, }, [MOVE_SIZZLY_SLIDE] = @@ -16276,6 +16958,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_BURN, .chance = 100, }), + .battleAnimScript = Move_SIZZLY_SLIDE, }, [MOVE_GLITZY_GLOW] = @@ -16294,6 +16977,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_GLITZY_GLOW, }, [MOVE_BADDY_BAD] = @@ -16312,6 +16996,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_BADDY_BAD, }, [MOVE_SAPPY_SEED] = @@ -16331,6 +17016,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .magicCoatAffected = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_SAPPY_SEED, }, [MOVE_FREEZY_FROST] = @@ -16349,6 +17035,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_FREEZY_FROST, }, [MOVE_SPARKLY_SWIRL] = @@ -16367,6 +17054,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_SPARKLY_SWIRL, }, [MOVE_VEEVEE_VOLLEY] = @@ -16386,6 +17074,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .battleAnimScript = Move_VEEVEE_VOLLEY, }, [MOVE_DOUBLE_IRON_BASH] = @@ -16414,7 +17103,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_REPETITION_NOT_BORING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DOUBLE_IRON_BASH, }, [MOVE_DYNAMAX_CANNON] = @@ -16444,6 +17134,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_DYNAMAX_CANNON, }, [MOVE_SNIPE_SHOT] = @@ -16464,7 +17155,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SNIPE_SHOT, }, [MOVE_JAW_LOCK] = @@ -16489,7 +17181,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_JAW_LOCK, }, [MOVE_STUFF_CHEEKS] = @@ -16512,7 +17205,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STUFF_CHEEKS, }, [MOVE_NO_RETREAT] = @@ -16535,7 +17229,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_NO_RETREAT, }, [MOVE_TAR_SHOT] = @@ -16556,7 +17251,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TAR_SHOT, }, [MOVE_MAGIC_POWDER] = @@ -16579,7 +17275,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_MAGIC_POWDER, }, [MOVE_DRAGON_DARTS] = @@ -16588,7 +17285,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "The user attacks twice. Two\n" "targets are hit once each."), - .effect = EFFECT_HIT, // TODO: EFFECT_DRAGON_DARTS + .effect = EFFECT_DRAGON_DARTS, .power = 50, .type = TYPE_DRAGON, .accuracy = 100, @@ -16602,6 +17299,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_DRAGON_DARTS, }, [MOVE_TEATIME] = @@ -16625,6 +17323,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_TEATIME, }, [MOVE_OCTOLOCK] = @@ -16644,7 +17343,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_OCTOLOCK, }, [MOVE_BOLT_BEAK] = @@ -16665,7 +17365,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BOLT_BEAK, }, [MOVE_FISHIOUS_REND] = @@ -16687,7 +17388,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FISHIOUS_REND, }, [MOVE_COURT_CHANGE] = @@ -16708,7 +17410,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COURT_CHANGE, }, [MOVE_CLANGOROUS_SOUL] = @@ -16734,7 +17437,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CLANGOROUS_SOUL, }, [MOVE_BODY_PRESS] = @@ -16757,7 +17461,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BODY_PRESS, }, [MOVE_DECORATE] = @@ -16780,7 +17485,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DECORATE, }, [MOVE_DRUM_BEATING] = @@ -16805,7 +17511,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRUM_BEATING, }, [MOVE_SNAP_TRAP] = @@ -16831,7 +17538,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SNAP_TRAP, }, [MOVE_PYRO_BALL] = @@ -16858,7 +17566,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_PYRO_BALL, }, [MOVE_BEHEMOTH_BLADE] = @@ -16885,6 +17594,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_BEHEMOTH_BLADE, }, [MOVE_BEHEMOTH_BASH] = @@ -16910,6 +17620,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_BEHEMOTH_BASH, }, [MOVE_AURA_WHEEL] = @@ -16935,7 +17646,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_AURA_WHEEL, }, [MOVE_BREAKING_SWIPE] = @@ -16962,6 +17674,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_BREAKING_SWIPE, }, [MOVE_BRANCH_POKE] = @@ -16983,7 +17696,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BRANCH_POKE, }, [MOVE_OVERDRIVE] = @@ -17007,6 +17721,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_OVERDRIVE, }, [MOVE_APPLE_ACID] = @@ -17031,7 +17746,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_APPLE_ACID, }, [MOVE_GRAV_APPLE] = @@ -17057,6 +17773,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_GRAV_APPLE, }, [MOVE_SPIRIT_BREAK] = @@ -17082,7 +17799,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SPIRIT_BREAK, }, [MOVE_STRANGE_STEAM] = @@ -17107,7 +17825,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STRANGE_STEAM, }, [MOVE_LIFE_DEW] = @@ -17133,7 +17852,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LIFE_DEW, }, [MOVE_OBSTRUCT] = @@ -17158,6 +17878,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_OBSTRUCT, }, [MOVE_FALSE_SURRENDER] = @@ -17179,7 +17900,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_FIRST, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FALSE_SURRENDER, }, [MOVE_METEOR_ASSAULT] = @@ -17205,7 +17927,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_METEOR_ASSAULT, }, [MOVE_ETERNABEAM] = @@ -17230,7 +17953,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_ETERNABEAM, }, [MOVE_STEEL_BEAM] = @@ -17251,7 +17975,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_STEEL_BEAM, }, [MOVE_EXPANDING_FORCE] = @@ -17271,7 +17996,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {COMBO_STARTER_PSYCHIC_TERRAIN} + .contestComboMoves = {COMBO_STARTER_PSYCHIC_TERRAIN}, + .battleAnimScript = Move_EXPANDING_FORCE, }, [MOVE_STEEL_ROLLER] = @@ -17295,6 +18021,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_STEEL_ROLLER, }, [MOVE_SCALE_SHOT] = @@ -17316,6 +18043,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_SCALE_SHOT, }, [MOVE_METEOR_BEAM] = @@ -17343,6 +18071,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_METEOR_BEAM, }, [MOVE_SHELL_SIDE_ARM] = @@ -17351,7 +18080,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Deals better of physical and\n" "special damage. May poison."), - .effect = EFFECT_HIT, // The effect is hardcoded to the move since SetShellSideArmCategory() can't be used with anything but Shell Side Arm because of the BP requirement + .effect = EFFECT_SHELL_SIDE_ARM, .power = 90, .type = TYPE_POISON, .accuracy = 100, @@ -17366,7 +18095,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SHELL_SIDE_ARM, }, [MOVE_MISTY_EXPLOSION] = @@ -17386,7 +18116,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {COMBO_STARTER_MISTY_TERRAIN} + .contestComboMoves = {COMBO_STARTER_MISTY_TERRAIN}, + .battleAnimScript = Move_MISTY_EXPLOSION, }, [MOVE_GRASSY_GLIDE] = @@ -17408,7 +18139,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_NEXT_APPEAL_EARLIER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {COMBO_STARTER_GRASSY_TERRAIN} + .contestComboMoves = {COMBO_STARTER_GRASSY_TERRAIN}, + .battleAnimScript = Move_GRASSY_GLIDE, }, [MOVE_RISING_VOLTAGE] = @@ -17428,7 +18160,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {COMBO_STARTER_ELECTRIC_TERRAIN} + .contestComboMoves = {COMBO_STARTER_ELECTRIC_TERRAIN}, + .battleAnimScript = Move_RISING_VOLTAGE, }, [MOVE_TERRAIN_PULSE] = @@ -17450,6 +18183,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, .contestComboMoves = {COMBO_STARTER_ELECTRIC_TERRAIN, COMBO_STARTER_MISTY_TERRAIN, COMBO_STARTER_GRASSY_TERRAIN, COMBO_STARTER_PSYCHIC_TERRAIN}, + .battleAnimScript = Move_TERRAIN_PULSE, }, [MOVE_SKITTER_SMACK] = @@ -17474,7 +18208,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SKITTER_SMACK, }, [MOVE_BURNING_JEALOUSY] = @@ -17499,7 +18234,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_BURNING_JEALOUSY, }, [MOVE_LASH_OUT] = @@ -17520,7 +18256,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_PREV_MON, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_LASH_OUT, }, [MOVE_POLTERGEIST] = @@ -17541,6 +18278,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_POLTERGEIST, }, [MOVE_CORROSIVE_GAS] = @@ -17561,7 +18299,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_CORROSIVE_GAS, }, [MOVE_COACHING] = @@ -17584,7 +18323,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_COACHING, }, [MOVE_FLIP_TURN] = @@ -17605,7 +18345,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_AVOID_STARTLE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FLIP_TURN, }, [MOVE_TRIPLE_AXEL] = @@ -17627,7 +18368,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_IF_SAME_TYPE, .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_TRIPLE_AXEL, }, [MOVE_DUAL_WINGBEAT] = @@ -17650,6 +18392,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_DUAL_WINGBEAT, }, [MOVE_SCORCHING_SANDS] = @@ -17674,7 +18417,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SCORCHING_SANDS, }, [MOVE_JUNGLE_HEALING] = @@ -17700,6 +18444,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_JUNGLE_HEALING, }, [MOVE_WICKED_BLOW] = @@ -17723,7 +18468,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_WICKED_BLOW, }, [MOVE_SURGING_STRIKES] = @@ -17748,7 +18494,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_SURGING_STRIKES, }, [MOVE_THUNDER_CAGE] = @@ -17772,7 +18519,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_DONT_EXCITE_AUDIENCE, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_THUNDER_CAGE, }, [MOVE_DRAGON_ENERGY] = @@ -17793,7 +18541,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_COOL, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_DRAGON_ENERGY, }, [MOVE_FREEZING_GLARE] = @@ -17822,7 +18571,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_HIGHLY_APPEALING, .contestCategory = CONTEST_CATEGORY_CUTE, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_FREEZING_GLARE, }, [MOVE_FIERY_WRATH] = @@ -17848,6 +18598,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_FIERY_WRATH, }, [MOVE_THUNDEROUS_KICK] = @@ -17874,6 +18625,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_TOUGH, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_THUNDEROUS_KICK, }, [MOVE_GLACIAL_LANCE] = @@ -17895,6 +18647,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_BEAUTY, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_GLACIAL_LANCE, }, [MOVE_ASTRAL_BARRAGE] = @@ -17916,6 +18669,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, .contestComboMoves = {0}, + .battleAnimScript = Move_ASTRAL_BARRAGE, }, [MOVE_EERIE_SPELL] = @@ -17937,7 +18691,8 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .contestEffect = CONTEST_EFFECT_BETTER_WHEN_LATER, .contestCategory = CONTEST_CATEGORY_SMART, .contestComboStarterId = 0, - .contestComboMoves = {0} + .contestComboMoves = {0}, + .battleAnimScript = Move_EERIE_SPELL, }, [MOVE_DIRE_CLAW] = @@ -17959,6 +18714,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_DIRE_CLAW, .chance = 50, }), + .battleAnimScript = Move_DIRE_CLAW, }, [MOVE_PSYSHIELD_BASH] = @@ -17981,6 +18737,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_PSYSHIELD_BASH, }, [MOVE_POWER_SHIFT] = @@ -18001,6 +18758,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_POWER_SHIFT, }, [MOVE_STONE_AXE] = @@ -18023,6 +18781,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_STEALTH_ROCK, .chance = 100, }), + .battleAnimScript = Move_STONE_AXE, }, [MOVE_SPRINGTIDE_STORM] = @@ -18045,6 +18804,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 30, }), + .battleAnimScript = Move_SPRINGTIDE_STORM, }, [MOVE_MYSTICAL_POWER] = @@ -18066,6 +18826,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_MYSTICAL_POWER, }, [MOVE_RAGING_FURY] = @@ -18087,6 +18848,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_THRASH, .self = TRUE, }), + .battleAnimScript = Move_RAGING_FURY, }, [MOVE_WAVE_CRASH] = @@ -18106,6 +18868,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .battleAnimScript = Move_WAVE_CRASH, }, [MOVE_CHLOROBLAST] = @@ -18122,6 +18885,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_CHLOROBLAST, }, [MOVE_MOUNTAIN_GALE] = @@ -18142,6 +18906,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, }), + .battleAnimScript = Move_MOUNTAIN_GALE, }, [MOVE_VICTORY_DANCE] = @@ -18162,6 +18927,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .snatchAffected = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .battleAnimScript = Move_VICTORY_DANCE, }, [MOVE_HEADLONG_RUSH] = @@ -18184,6 +18950,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, .self = TRUE, }), + .battleAnimScript = Move_HEADLONG_RUSH, }, [MOVE_BARB_BARRAGE] = @@ -18205,6 +18972,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_POISON, .chance = 50, }), + .battleAnimScript = Move_BARB_BARRAGE, }, [MOVE_ESPER_WING] = @@ -18227,6 +18995,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_ESPER_WING, }, [MOVE_BITTER_MALICE] = @@ -18247,6 +19016,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, }), + .battleAnimScript = Move_BITTER_MALICE, }, [MOVE_SHELTER] = @@ -18266,6 +19036,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .snatchAffected = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .battleAnimScript = Move_SHELTER, }, [MOVE_TRIPLE_ARROWS] = @@ -18291,6 +19062,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_FLINCH, .chance = 30, }), + .battleAnimScript = Move_TRIPLE_ARROWS, }, [MOVE_INFERNAL_PARADE] = @@ -18312,6 +19084,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_BURN, .chance = 30, }), + .battleAnimScript = Move_INFERNAL_PARADE, }, [MOVE_CEASELESS_EDGE] = @@ -18334,6 +19107,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SPIKES, .chance = 100, }), + .battleAnimScript = Move_CEASELESS_EDGE, }, [MOVE_BLEAKWIND_STORM] = @@ -18355,6 +19129,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 30, }), + .battleAnimScript = Move_BLEAKWIND_STORM, }, [MOVE_WILDBOLT_STORM] = @@ -18376,6 +19151,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 20, }), + .battleAnimScript = Move_WILDBOLT_STORM, }, [MOVE_SANDSEAR_STORM] = @@ -18397,6 +19173,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_BURN, .chance = 20, }), + .battleAnimScript = Move_SANDSEAR_STORM, }, [MOVE_LUNAR_BLESSING] = @@ -18417,6 +19194,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .healingMove = TRUE, + .battleAnimScript = Move_LUNAR_BLESSING, }, [MOVE_TAKE_HEART] = @@ -18436,6 +19214,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .snatchAffected = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, + .battleAnimScript = Move_TAKE_HEART, }, [MOVE_TERA_BLAST] = @@ -18444,7 +19223,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "If the user's Terastallized,\n" "it hits with its Tera-type."), - .effect = EFFECT_PLACEHOLDER, // EFFECT_TERA_BLAST, + .effect = EFFECT_TERA_BLAST, .power = 80, .type = TYPE_NORMAL, .accuracy = 100, @@ -18453,6 +19232,11 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .forcePressure = TRUE, + .additionalEffects = ADDITIONAL_EFFECTS({ + .moveEffect = MOVE_EFFECT_TERA_BLAST, + .self = TRUE, + }), + .battleAnimScript = Move_TERA_BLAST, }, [MOVE_SILK_TRAP] = @@ -18472,6 +19256,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_SILK_TRAP, }, [MOVE_AXE_KICK] = @@ -18493,6 +19278,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 30, }), + .battleAnimScript = Move_AXE_KICK, }, [MOVE_LAST_RESPECTS] = @@ -18510,6 +19296,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, // Only since it isn't implemented yet + .battleAnimScript = Move_LAST_RESPECTS, }, [MOVE_LUMINA_CRASH] = @@ -18530,6 +19317,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SP_DEF_MINUS_2, .chance = 100, }), + .battleAnimScript = Move_LUMINA_CRASH, }, [MOVE_ORDER_UP] = @@ -18548,6 +19336,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_ORDER_UP, }, [MOVE_JET_PUNCH] = @@ -18567,6 +19356,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_JET_PUNCH, }, [MOVE_SPICY_EXTRACT] = @@ -18575,7 +19365,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Sharply ups target's Attack,\n" "harshly lowers its Defense."), - .effect = EFFECT_PLACEHOLDER, // EFFECT_SPICY_EXTRACT + .effect = EFFECT_SPICY_EXTRACT, .power = 0, .type = TYPE_GRASS, .accuracy = 0, @@ -18585,6 +19375,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_STATUS, .magicCoatAffected = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_SPICY_EXTRACT, }, [MOVE_SPIN_OUT] = @@ -18607,6 +19398,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SPD_MINUS_2, .self = TRUE, }), + .battleAnimScript = Move_SPIN_OUT, }, [MOVE_POPULATION_BOMB] = @@ -18627,6 +19419,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .slicingMove = TRUE, .metronomeBanned = TRUE, .strikeCount = 10, + .battleAnimScript = Move_POPULATION_BOMB, }, [MOVE_ICE_SPINNER] = @@ -18646,6 +19439,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .battleAnimScript = Move_ICE_SPINNER, }, [MOVE_GLAIVE_RUSH] = @@ -18663,6 +19457,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .battleAnimScript = Move_GLAIVE_RUSH, }, [MOVE_REVIVAL_BLESSING] = @@ -18684,6 +19479,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .metronomeBanned = TRUE, .healingMove = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), + .battleAnimScript = Move_REVIVAL_BLESSING, }, [MOVE_SALT_CURE] = @@ -18701,6 +19497,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, + .battleAnimScript = Move_SALT_CURE, }, [MOVE_TRIPLE_DIVE] = @@ -18719,6 +19516,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .strikeCount = 3, + .battleAnimScript = Move_TRIPLE_DIVE, }, [MOVE_MORTAL_SPIN] = @@ -18744,6 +19542,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_POISON, .chance = 100, }), + .battleAnimScript = Move_MORTAL_SPIN, }, [MOVE_DOODLE] = @@ -18763,6 +19562,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_DOODLE, }, [MOVE_FILLET_AWAY] = @@ -18784,6 +19584,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_FILLET_AWAY, }, [MOVE_KOWTOW_CLEAVE] = @@ -18802,6 +19603,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, + .battleAnimScript = Move_KOWTOW_CLEAVE, }, [MOVE_FLOWER_TRICK] = @@ -18819,6 +19621,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .alwaysCriticalHit = TRUE, + .battleAnimScript = Move_FLOWER_TRICK, }, [MOVE_TORCH_SONG] = @@ -18842,6 +19645,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_TORCH_SONG, }, [MOVE_AQUA_STEP] = @@ -18865,6 +19669,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_AQUA_STEP, }, [MOVE_RAGING_BULL] = @@ -18883,6 +19688,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_RAGING_BULL, }, [MOVE_MAKE_IT_RAIN] = @@ -18907,6 +19713,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1, .self = TRUE, }), + .battleAnimScript = Move_MAKE_IT_RAIN, }, [MOVE_RUINATION] = @@ -18924,6 +19731,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .metronomeBanned = TRUE, + .battleAnimScript = Move_RUINATION, }, [MOVE_COLLISION_COURSE] = @@ -18942,6 +19750,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_COLLISION_COURSE, }, [MOVE_ELECTRO_DRIFT] = @@ -18960,6 +19769,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .makesContact = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_ELECTRO_DRIFT, }, [MOVE_SHED_TAIL] = @@ -18980,6 +19790,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_SHED_TAIL, }, [MOVE_CHILLY_RECEPTION] = @@ -19000,6 +19811,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_CHILLY_RECEPTION, }, [MOVE_TIDY_UP] = @@ -19019,6 +19831,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_TIDY_UP, }, [MOVE_SNOWSCAPE] = @@ -19039,6 +19852,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_SNOWSCAPE, }, [MOVE_POUNCE] = @@ -19061,6 +19875,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SPD_MINUS_1, .chance = 100, }), + .battleAnimScript = Move_POUNCE, }, [MOVE_TRAILBLAZE] = @@ -19084,6 +19899,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_TRAILBLAZE, }, [MOVE_CHILLING_WATER] = @@ -19105,6 +19921,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_ATK_MINUS_1, .chance = 100, }), + .battleAnimScript = Move_CHILLING_WATER, }, [MOVE_HYPER_DRILL] = @@ -19124,6 +19941,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .ignoresProtect = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_HYPER_DRILL, }, [MOVE_TWIN_BEAM] = @@ -19142,6 +19960,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .strikeCount = 2, .metronomeBanned = TRUE, + .battleAnimScript = Move_TWIN_BEAM, }, [MOVE_RAGE_FIST] = @@ -19161,6 +19980,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .punchingMove = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_RAGE_FIST, }, [MOVE_ARMOR_CANNON] = @@ -19182,6 +20002,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_DEF_SPDEF_DOWN, .self = TRUE, }), + .battleAnimScript = Move_ARMOR_CANNON, }, [MOVE_BITTER_BLADE] = @@ -19201,6 +20022,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .slicingMove = TRUE, .healingMove = TRUE, + .battleAnimScript = Move_BITTER_BLADE, }, [MOVE_DOUBLE_SHOCK] = @@ -19224,6 +20046,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_REMOVE_ARG_TYPE, .self = TRUE, }), + .battleAnimScript = Move_DOUBLE_SHOCK, }, [MOVE_GIGATON_HAMMER] = @@ -19241,6 +20064,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .cantUseTwice = TRUE, + .battleAnimScript = Move_GIGATON_HAMMER, }, [MOVE_COMEUPPANCE] = @@ -19260,6 +20084,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, + .battleAnimScript = Move_COMEUPPANCE, }, [MOVE_AQUA_CUTTER] = @@ -19278,6 +20103,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .slicingMove = TRUE, + .battleAnimScript = Move_AQUA_CUTTER, }, [MOVE_BLAZING_TORQUE] = @@ -19306,6 +20132,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_BURN, .chance = 30, }), + .battleAnimScript = Move_BLAZING_TORQUE, }, [MOVE_WICKED_TORQUE] = @@ -19334,6 +20161,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SLEEP, .chance = 10, }), + .battleAnimScript = Move_WICKED_TORQUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -19362,6 +20190,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_POISON, .chance = 30, }), + .battleAnimScript = Move_NOXIOUS_TORQUE, }, [MOVE_COMBAT_TORQUE] = @@ -19390,6 +20219,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 30, }), + .battleAnimScript = Move_COMBAT_TORQUE, }, [MOVE_MAGICAL_TORQUE] = @@ -19418,6 +20248,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_CONFUSION, .chance = 30, }), + .battleAnimScript = Move_MAGICAL_TORQUE, }, [MOVE_PSYBLADE] = @@ -19436,6 +20267,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, .slicingMove = TRUE, + .battleAnimScript = Move_PSYBLADE, }, [MOVE_HYDRO_STEAM] = @@ -19453,6 +20285,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .thawsUser = TRUE, + .battleAnimScript = Move_HYDRO_STEAM, }, [MOVE_BLOOD_MOON] = @@ -19470,6 +20303,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .cantUseTwice = TRUE, + .battleAnimScript = Move_BLOOD_MOON, }, [MOVE_MATCHA_GOTCHA] = @@ -19493,6 +20327,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_BURN, .chance = 20, }), + .battleAnimScript = Move_MATCHA_GOTCHA, }, [MOVE_SYRUP_BOMB] = @@ -19515,6 +20350,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_SYRUP_BOMB, .chance = 100, }), + .battleAnimScript = Move_SYRUP_BOMB, }, [MOVE_IVY_CUDGEL] = @@ -19533,6 +20369,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .metronomeBanned = TRUE, + .battleAnimScript = Move_IVY_CUDGEL, }, [MOVE_ELECTRO_SHOT] = @@ -19555,6 +20392,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .onChargeTurnOnly = TRUE, }, SHEER_FORCE_HACK), + .battleAnimScript = Move_ELECTRO_SHOT, }, [MOVE_TERA_STARSTORM] = @@ -19563,18 +20401,19 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .description = COMPOUND_STRING( "Damages all opponents if user is\n" "Stellar form Terapagos."), - .effect = EFFECT_PLACEHOLDER, //EFFECT_TERA_STARSTORM + .effect = EFFECT_TERA_STARSTORM, .power = 120, - .type = TYPE_NORMAL, // Stellar type if used by Terapagos-Stellar + .type = TYPE_NORMAL, .accuracy = 100, .pp = 5, - .target = MOVE_TARGET_SELECTED, // MOVE_TARGET_BOTH if used by Terapagos-Stellar + .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .assistBanned = TRUE, .copycatBanned = TRUE, .mimicBanned = TRUE, .sketchBanned = (B_SKETCH_BANS >= GEN_9), + .battleAnimScript = Move_TERA_STARSTORM, }, [MOVE_FICKLE_BEAM] = @@ -19591,6 +20430,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_FICKLE_BEAM, }, [MOVE_BURNING_BULWARK] = @@ -19613,6 +20453,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .metronomeBanned = TRUE, .copycatBanned = TRUE, .assistBanned = TRUE, + .battleAnimScript = Move_BURNING_BULWARK, }, [MOVE_THUNDERCLAP] = @@ -19627,6 +20468,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 1, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_THUNDERCLAP, }, [MOVE_MIGHTY_CLEAVE] = @@ -19644,6 +20486,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .makesContact = TRUE, .ignoresProtect = TRUE, .slicingMove = TRUE, + .battleAnimScript = Move_MIGHTY_CLEAVE, }, [MOVE_TACHYON_CUTTER] = @@ -19662,6 +20505,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_SPECIAL, .strikeCount = 2, .slicingMove = TRUE, + .battleAnimScript = Move_TACHYON_CUTTER, }, [MOVE_HARD_PRESS] = @@ -19678,6 +20522,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .argument = 100, .makesContact = TRUE, + .battleAnimScript = Move_HARD_PRESS, }, [MOVE_DRAGON_CHEER] = @@ -19695,6 +20540,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_STATUS, .ignoresSubstitute = TRUE, + .battleAnimScript = Move_DRAGON_CHEER, }, [MOVE_ALLURING_VOICE] = @@ -19718,6 +20564,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .onlyIfTargetRaisedStats = TRUE, .chance = 100, }), + .battleAnimScript = Move_ALLURING_VOICE, }, [MOVE_TEMPER_FLARE] = @@ -19735,6 +20582,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .battleAnimScript = Move_TEMPER_FLARE, }, [MOVE_SUPERCELL_SLAM] = @@ -19752,6 +20600,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .makesContact = TRUE, + .battleAnimScript = Move_SUPERCELL_SLAM, }, [MOVE_PSYCHIC_NOISE] = @@ -19774,6 +20623,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PSYCHIC_NOISE, .chance = 100, }), + .battleAnimScript = Move_PSYCHIC_NOISE, }, [MOVE_UPPER_HAND] = @@ -19795,6 +20645,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_FLINCH, .chance = 100, }), + .battleAnimScript = Move_UPPER_HAND, }, [MOVE_MALIGNANT_CHAIN] = @@ -19815,6 +20666,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_TOXIC, .chance = 50, }), + .battleAnimScript = Move_MALIGNANT_CHAIN, }, // Z-Moves @@ -19830,6 +20682,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, //determined from move type + .battleAnimScript = Move_BREAKNECK_BLITZ, }, [MOVE_ALL_OUT_PUMMELING] = { @@ -19843,6 +20696,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_ALL_OUT_PUMMELING, }, [MOVE_SUPERSONIC_SKYSTRIKE] = { @@ -19856,6 +20710,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SUPERSONIC_SKYSTRIKE, }, [MOVE_ACID_DOWNPOUR] = { @@ -19869,6 +20724,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_ACID_DOWNPOUR, }, [MOVE_TECTONIC_RAGE] = { @@ -19883,6 +20739,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .battleAnimScript = Move_TECTONIC_RAGE, }, [MOVE_CONTINENTAL_CRUSH] = { @@ -19896,6 +20753,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_CONTINENTAL_CRUSH, }, [MOVE_SAVAGE_SPIN_OUT] = { @@ -19909,6 +20767,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SAVAGE_SPIN_OUT, }, [MOVE_NEVER_ENDING_NIGHTMARE] = { @@ -19922,6 +20781,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_NEVER_ENDING_NIGHTMARE, }, [MOVE_CORKSCREW_CRASH] = { @@ -19935,6 +20795,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_CORKSCREW_CRASH, }, [MOVE_INFERNO_OVERDRIVE] = { @@ -19948,6 +20809,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_INFERNO_OVERDRIVE, }, [MOVE_HYDRO_VORTEX] = { @@ -19961,6 +20823,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_HYDRO_VORTEX, }, [MOVE_BLOOM_DOOM] = { @@ -19974,6 +20837,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_BLOOM_DOOM, }, [MOVE_GIGAVOLT_HAVOC] = { @@ -19987,6 +20851,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_GIGAVOLT_HAVOC, }, [MOVE_SHATTERED_PSYCHE] = { @@ -20000,6 +20865,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SHATTERED_PSYCHE, }, [MOVE_SUBZERO_SLAMMER] = { @@ -20013,6 +20879,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SUBZERO_SLAMMER, }, [MOVE_DEVASTATING_DRAKE] = { @@ -20026,6 +20893,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_DEVASTATING_DRAKE, }, [MOVE_BLACK_HOLE_ECLIPSE] = { @@ -20039,6 +20907,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_BLACK_HOLE_ECLIPSE, }, [MOVE_TWINKLE_TACKLE] = { @@ -20052,6 +20921,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_TWINKLE_TACKLE, }, [MOVE_CATASTROPIKA] = { @@ -20065,6 +20935,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_CATASTROPIKA, }, [MOVE_10000000_VOLT_THUNDERBOLT] = { @@ -20079,6 +20950,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_10000000_VOLT_THUNDERBOLT, }, [MOVE_STOKED_SPARKSURFER] = { @@ -20096,6 +20968,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .moveEffect = MOVE_EFFECT_PARALYSIS, .chance = 100, }), + .battleAnimScript = Move_STOKED_SPARKSURFER, }, [MOVE_EXTREME_EVOBOOST] = { @@ -20109,6 +20982,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 0, .category = DAMAGE_CATEGORY_STATUS, + .battleAnimScript = Move_EXTREME_EVOBOOST, }, [MOVE_PULVERIZING_PANCAKE] = { @@ -20122,6 +20996,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_PULVERIZING_PANCAKE, }, [MOVE_GENESIS_SUPERNOVA] = { @@ -20136,6 +21011,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .argument = ARG_SET_PSYCHIC_TERRAIN, // Set Psychic Terrain. If there's a different field terrain active, overwrite it. + .battleAnimScript = Move_GENESIS_SUPERNOVA, }, [MOVE_SINISTER_ARROW_RAID] = { @@ -20149,6 +21025,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SINISTER_ARROW_RAID, }, [MOVE_MALICIOUS_MOONSAULT] = { @@ -20162,6 +21039,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_MALICIOUS_MOONSAULT, }, [MOVE_OCEANIC_OPERETTA] = { @@ -20175,6 +21053,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_OCEANIC_OPERETTA, }, [MOVE_SPLINTERED_STORMSHARDS] = { @@ -20189,6 +21068,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. + .battleAnimScript = Move_SPLINTERED_STORMSHARDS, }, [MOVE_LETS_SNUGGLE_FOREVER] = { @@ -20202,6 +21082,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_LETS_SNUGGLE_FOREVER, }, [MOVE_CLANGOROUS_SOULBLAZE] = { @@ -20222,12 +21103,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .self = TRUE, .chance = 100, }), + .battleAnimScript = Move_CLANGOROUS_SOULBLAZE, }, [MOVE_GUARDIAN_OF_ALOLA] = { - .name = COMPOUND_STRING("Guardian Of Alola"), + .name = COMPOUND_STRING("Guardian of Alola"), .description = sNullDescription, - .effect = EFFECT_SUPER_FANG, + .effect = EFFECT_GUARDIAN_OF_ALOLA, .power = 1, .type = TYPE_FAIRY, .accuracy = 0, @@ -20235,6 +21117,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, + .battleAnimScript = Move_GUARDIAN_OF_ALOLA, }, [MOVE_SEARING_SUNRAZE_SMASH] = { @@ -20249,6 +21132,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_SEARING_SUNRAZE_SMASH, }, [MOVE_MENACING_MOONRAZE_MAELSTROM] = { @@ -20263,12 +21147,13 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_MENACING_MOONRAZE_MAELSTROM, }, [MOVE_LIGHT_THAT_BURNS_THE_SKY] = { .name = COMPOUND_STRING("Light That Burns The Sky"), .description = sNullDescription, - .effect = EFFECT_HIT, + .effect = EFFECT_PHOTON_GEYSER, .power = 200, .type = TYPE_PSYCHIC, .accuracy = 0, @@ -20277,6 +21162,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_SPECIAL, .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_LIGHT_THAT_BURNS_THE_SKY, }, [MOVE_SOUL_STEALING_7_STAR_STRIKE] = { @@ -20290,6 +21176,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, + .battleAnimScript = Move_SOUL_STEALING_7_STAR_STRIKE, }, [MOVE_MAX_GUARD] = @@ -20304,6 +21191,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = DAMAGE_CATEGORY_STATUS, + .battleAnimScript = Move_MAX_GUARD, }, [MOVE_MAX_FLARE] = @@ -20319,6 +21207,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SUN, + .battleAnimScript = Move_MAX_FLARE, }, [MOVE_MAX_FLUTTERBY] = @@ -20334,6 +21223,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_ATK, + .battleAnimScript = Move_MAX_FLUTTERBY, }, [MOVE_MAX_LIGHTNING] = @@ -20349,6 +21239,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_ELECTRIC_TERRAIN, + .battleAnimScript = Move_MAX_LIGHTNING, }, [MOVE_MAX_STRIKE] = @@ -20364,6 +21255,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED, + .battleAnimScript = Move_MAX_STRIKE, }, [MOVE_MAX_KNUCKLE] = @@ -20379,6 +21271,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, + .battleAnimScript = Move_MAX_KNUCKLE, }, [MOVE_MAX_PHANTASM] = @@ -20394,6 +21287,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_DEFENSE, + .battleAnimScript = Move_MAX_PHANTASM, }, [MOVE_MAX_HAILSTORM] = @@ -20409,6 +21303,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_HAIL, + .battleAnimScript = Move_MAX_HAILSTORM, }, [MOVE_MAX_OOZE] = @@ -20424,6 +21319,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, + .battleAnimScript = Move_MAX_OOZE, }, [MOVE_MAX_GEYSER] = @@ -20439,6 +21335,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAIN, + .battleAnimScript = Move_MAX_GEYSER, }, [MOVE_MAX_AIRSTREAM] = @@ -20454,6 +21351,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SPEED, + .battleAnimScript = Move_MAX_AIRSTREAM, }, [MOVE_MAX_STARFALL] = @@ -20469,6 +21367,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_MISTY_TERRAIN, + .battleAnimScript = Move_MAX_STARFALL, }, [MOVE_MAX_WYRMWIND] = @@ -20484,6 +21383,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_ATTACK, + .battleAnimScript = Move_MAX_WYRMWIND, }, [MOVE_MAX_MINDSTORM] = @@ -20499,6 +21399,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_PSYCHIC_TERRAIN, + .battleAnimScript = Move_MAX_MINDSTORM, }, [MOVE_MAX_ROCKFALL] = @@ -20514,6 +21415,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SANDSTORM, + .battleAnimScript = Move_MAX_ROCKFALL, }, [MOVE_MAX_QUAKE] = @@ -20530,6 +21432,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .battleAnimScript = Move_MAX_QUAKE, }, [MOVE_MAX_DARKNESS] = @@ -20545,6 +21448,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SP_DEF, + .battleAnimScript = Move_MAX_DARKNESS, }, [MOVE_MAX_OVERGROWTH] = @@ -20560,6 +21464,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_GRASSY_TERRAIN, + .battleAnimScript = Move_MAX_OVERGROWTH, }, [MOVE_MAX_STEELSPIKE] = @@ -20575,6 +21480,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, + .battleAnimScript = Move_MAX_STEELSPIKE, }, [MOVE_G_MAX_VINE_LASH] = @@ -20590,6 +21496,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_VINE_LASH, + .battleAnimScript = Move_G_MAX_VINE_LASH, }, [MOVE_G_MAX_WILDFIRE] = @@ -20605,6 +21512,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_WILDFIRE, + .battleAnimScript = Move_G_MAX_WILDFIRE, }, [MOVE_G_MAX_CANNONADE] = @@ -20620,6 +21528,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CANNONADE, + .battleAnimScript = Move_G_MAX_CANNONADE, }, [MOVE_G_MAX_BEFUDDLE] = @@ -20635,6 +21544,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_EFFECT_SPORE_FOES, + .battleAnimScript = Move_G_MAX_BEFUDDLE, }, [MOVE_G_MAX_VOLT_CRASH] = @@ -20650,6 +21560,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_PARALYZE_FOES, + .battleAnimScript = Move_G_MAX_VOLT_CRASH, }, [MOVE_G_MAX_GOLD_RUSH] = @@ -20665,6 +21576,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + .battleAnimScript = Move_G_MAX_GOLD_RUSH, }, [MOVE_G_MAX_CHI_STRIKE] = @@ -20680,6 +21592,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CRIT_PLUS, + .battleAnimScript = Move_G_MAX_CHI_STRIKE, }, [MOVE_G_MAX_TERROR] = @@ -20695,6 +21608,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_MEAN_LOOK, + .battleAnimScript = Move_G_MAX_TERROR, }, [MOVE_G_MAX_FOAM_BURST] = @@ -20710,6 +21624,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, + .battleAnimScript = Move_G_MAX_FOAM_BURST, }, [MOVE_G_MAX_RESONANCE] = @@ -20725,6 +21640,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_AURORA_VEIL, + .battleAnimScript = Move_G_MAX_RESONANCE, }, [MOVE_G_MAX_CUDDLE] = @@ -20740,6 +21656,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_INFATUATE_FOES, + .battleAnimScript = Move_G_MAX_CUDDLE, }, [MOVE_G_MAX_REPLENISH] = @@ -20755,6 +21672,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_RECYCLE_BERRIES, + .battleAnimScript = Move_G_MAX_REPLENISH, }, [MOVE_G_MAX_MALODOR] = @@ -20770,6 +21688,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_POISON_FOES, + .battleAnimScript = Move_G_MAX_MALODOR, }, [MOVE_G_MAX_MELTDOWN] = @@ -20785,6 +21704,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_TORMENT_FOES, + .battleAnimScript = Move_G_MAX_MELTDOWN, }, [MOVE_G_MAX_DRUM_SOLO] = @@ -20801,6 +21721,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_G_MAX_DRUM_SOLO, }, [MOVE_G_MAX_FIREBALL] = @@ -20817,6 +21738,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_G_MAX_FIREBALL, }, [MOVE_G_MAX_HYDROSNIPE] = @@ -20833,6 +21755,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO .ignoresTargetAbility = TRUE, + .battleAnimScript = Move_G_MAX_HYDROSNIPE, }, [MOVE_G_MAX_WIND_RAGE] = @@ -20848,6 +21771,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_DEFOG, + .battleAnimScript = Move_G_MAX_WIND_RAGE, }, [MOVE_G_MAX_GRAVITAS] = @@ -20863,6 +21787,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_GRAVITY, + .battleAnimScript = Move_G_MAX_GRAVITAS, }, [MOVE_G_MAX_STONESURGE] = @@ -20878,6 +21803,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_STEALTH_ROCK, + .battleAnimScript = Move_G_MAX_STONESURGE, }, [MOVE_G_MAX_VOLCALITH] = @@ -20893,6 +21819,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_VOLCALITH, + .battleAnimScript = Move_G_MAX_VOLCALITH, }, [MOVE_G_MAX_TARTNESS] = @@ -20908,6 +21835,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, + .battleAnimScript = Move_G_MAX_TARTNESS, }, [MOVE_G_MAX_SWEETNESS] = @@ -20923,6 +21851,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_AROMATHERAPY, + .battleAnimScript = Move_G_MAX_SWEETNESS, }, [MOVE_G_MAX_SANDBLAST] = @@ -20938,6 +21867,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SANDBLAST_FOES, + .battleAnimScript = Move_G_MAX_SANDBLAST, }, [MOVE_G_MAX_STUN_SHOCK] = @@ -20953,6 +21883,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_POISON_PARALYZE_FOES, + .battleAnimScript = Move_G_MAX_STUN_SHOCK, }, [MOVE_G_MAX_CENTIFERNO] = @@ -20968,6 +21899,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_FIRE_SPIN_FOES, + .battleAnimScript = Move_G_MAX_CENTIFERNO, }, [MOVE_G_MAX_SMITE] = @@ -20983,6 +21915,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_CONFUSE_FOES, + .battleAnimScript = Move_G_MAX_SMITE, }, @@ -20999,6 +21932,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_YAWN_FOE, + .battleAnimScript = Move_G_MAX_SNOOZE, }, [MOVE_G_MAX_FINALE] = @@ -21014,6 +21948,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_HEAL_TEAM, + .battleAnimScript = Move_G_MAX_FINALE, }, [MOVE_G_MAX_STEELSURGE] = @@ -21029,6 +21964,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_STEELSURGE, + .battleAnimScript = Move_G_MAX_STEELSURGE, }, [MOVE_G_MAX_DEPLETION] = @@ -21044,6 +21980,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_SPITE, + .battleAnimScript = Move_G_MAX_DEPLETION, }, [MOVE_G_MAX_ONE_BLOW] = @@ -21059,6 +21996,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + .battleAnimScript = Move_G_MAX_ONE_BLOW, }, [MOVE_G_MAX_RAPID_FLOW] = @@ -21074,6 +22012,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] = .priority = 0, .category = DAMAGE_CATEGORY_PHYSICAL, .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + .battleAnimScript = Move_G_MAX_RAPID_FLOW, }, }; diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index e16cae74fcdc..a605b3f0b2d4 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -66,6 +66,9 @@ u8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *, struct Sprite u8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *, struct Sprite *); @@ -77,6 +80,8 @@ u8 MovementAction_WalkInPlaceFasterDown_Step0(struct ObjectEvent *, struct Sprit u8 MovementAction_WalkInPlaceFasterUp_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFasterLeft_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_WalkInPlaceFasterRight_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *, struct Sprite *); +u8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *, struct Sprite *); @@ -303,6 +308,8 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFasterDown[])(struct ObjectEvent *, s u8 (*const gMovementActionFuncs_WalkInPlaceFasterUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFasterLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkInPlaceFasterRight[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_ExitPokeball[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_EnterPokeball[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct ObjectEvent *, struct Sprite *); @@ -584,6 +591,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_FLY_DOWN] = gMovementActionFuncs_FlyDown, [MOVEMENT_ACTION_EMOTE_X] = gMovementActionFuncs_EmoteX, [MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK] = gMovementActionFuncs_EmoteDoubleExclMark, + [MOVEMENT_ACTION_EXIT_POKEBALL] = gMovementActionFuncs_ExitPokeball, + [MOVEMENT_ACTION_ENTER_POKEBALL] = gMovementActionFuncs_EnterPokeball, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { @@ -877,6 +886,18 @@ u8 (*const gMovementActionFuncs_WalkInPlaceFasterDown[])(struct ObjectEvent *, s MovementAction_PauseSpriteAnim, }; +u8 (*const gMovementActionFuncs_ExitPokeball[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_ExitPokeball_Step0, + MovementAction_ExitPokeball_Step1, + MovementAction_PauseSpriteAnim, +}; + +u8 (*const gMovementActionFuncs_EnterPokeball[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_EnterPokeball_Step0, + MovementAction_EnterPokeball_Step1, + MovementAction_EnterPokeball_Step2, +}; + u8 (*const gMovementActionFuncs_WalkInPlaceFasterUp[])(struct ObjectEvent *, struct Sprite *) = { MovementAction_WalkInPlaceFasterUp_Step0, MovementAction_WalkInPlace_Step1, diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h index f5189d838f74..749c14969c58 100755 --- a/src/data/object_events/movement_type_func_tables.h +++ b/src/data/object_events/movement_type_func_tables.h @@ -401,6 +401,26 @@ bool8 (*const gCopyPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, [COPY_MOVE_EMPTY_2] = CopyablePlayerMovement_None, }; +u8 (*const gMovementTypeFuncs_FollowPlayer[])(struct ObjectEvent *, struct Sprite *) = { + MovementType_FollowPlayer_Shadow, + MovementType_FollowPlayer_Active, + MovementType_FollowPlayer_Moving, +}; + +bool8 (*const gFollowPlayerMovementFuncs[])(struct ObjectEvent *, struct Sprite *, u8, bool8(u8)) = { + [COPY_MOVE_NONE] = FollowablePlayerMovement_Idle, + [COPY_MOVE_FACE] = FollowablePlayerMovement_Idle, + [COPY_MOVE_WALK] = FollowablePlayerMovement_Step, + [COPY_MOVE_WALK_FAST] = FollowablePlayerMovement_GoSpeed1, + [COPY_MOVE_WALK_FASTER] = FollowablePlayerMovement_GoSpeed2, + [COPY_MOVE_SLIDE] = FollowablePlayerMovement_Slide, + [COPY_MOVE_JUMP_IN_PLACE] = FollowablePlayerMovement_JumpInPlace, + [COPY_MOVE_JUMP] = FollowablePlayerMovement_GoSpeed4, + [COPY_MOVE_JUMP2] = FollowablePlayerMovement_Step, + [COPY_MOVE_EMPTY_1] = FollowablePlayerMovement_Idle, + [COPY_MOVE_EMPTY_2] = FollowablePlayerMovement_Idle, +}; + u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct Sprite *) = { MovementType_CopyPlayer_Step0, MovementType_CopyPlayerInGrass_Step1, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index e68910d1592d..bde3c3b0d5db 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -187,18 +187,42 @@ static const union AnimCmd sAnim_FaceNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceNorth2F[] = +{ + ANIMCMD_FRAME(2, 16), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_FaceWest[] = { ANIMCMD_FRAME(2, 16), ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceWest2F[] = +{ + ANIMCMD_FRAME(4, 16), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_FaceEast[] = { ANIMCMD_FRAME(2, 16, .hFlip = TRUE), ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_FaceEast2F[] = +{ + ANIMCMD_FRAME(4, 16, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_FaceEast2F_Asym[] = +{ + ANIMCMD_FRAME(6, 16), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoSouth[] = { ANIMCMD_FRAME(3, 8), @@ -208,6 +232,15 @@ static const union AnimCmd sAnim_GoSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoSouth2F[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoNorth[] = { ANIMCMD_FRAME(5, 8), @@ -217,6 +250,15 @@ static const union AnimCmd sAnim_GoNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoNorth2F[] = +{ + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoWest[] = { ANIMCMD_FRAME(7, 8), @@ -226,6 +268,15 @@ static const union AnimCmd sAnim_GoWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoWest2F[] = +{ + ANIMCMD_FRAME(4, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(5, 6), + ANIMCMD_FRAME(4, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoEast[] = { ANIMCMD_FRAME(7, 8, .hFlip = TRUE), @@ -235,6 +286,24 @@ static const union AnimCmd sAnim_GoEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoEast2F[] = +{ + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_FRAME(5, 6, .hFlip = TRUE), + ANIMCMD_FRAME(4, 6, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GoEast2F_Asym[] = +{ + ANIMCMD_FRAME(6, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_FRAME(7, 6), + ANIMCMD_FRAME(6, 6), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastSouth[] = { ANIMCMD_FRAME(3, 4), @@ -244,6 +313,15 @@ static const union AnimCmd sAnim_GoFastSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastSouth2F[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastNorth[] = { ANIMCMD_FRAME(5, 4), @@ -253,6 +331,15 @@ static const union AnimCmd sAnim_GoFastNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastNorth2F[] = +{ + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastWest[] = { ANIMCMD_FRAME(7, 4), @@ -262,6 +349,15 @@ static const union AnimCmd sAnim_GoFastWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastWest2F[] = +{ + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(5, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastEast[] = { ANIMCMD_FRAME(7, 4, .hFlip = TRUE), @@ -271,6 +367,24 @@ static const union AnimCmd sAnim_GoFastEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_GoFastEast2F[] = +{ + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_FRAME(5, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_GoFastEast2F_Asym[] = +{ + ANIMCMD_FRAME(6, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_FRAME(7, 4), + ANIMCMD_FRAME(6, 4), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterSouth[] = { ANIMCMD_FRAME(3, 2), @@ -280,6 +394,83 @@ static const union AnimCmd sAnim_GoFasterSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_ExitPokeballSouth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(0, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballNorth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(2, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballWest[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballEast[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballEast_Asym[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(6, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_EnterSouth[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterNorth[] = { ANIMCMD_FRAME(5, 2), @@ -289,6 +480,18 @@ static const union AnimCmd sAnim_GoFasterNorth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterNorth[] = +{ + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterWest[] = { ANIMCMD_FRAME(7, 2), @@ -298,6 +501,18 @@ static const union AnimCmd sAnim_GoFasterWest[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterWest[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFasterEast[] = { ANIMCMD_FRAME(7, 2, .hFlip = TRUE), @@ -307,6 +522,30 @@ static const union AnimCmd sAnim_GoFasterEast[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_EnterEast[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_EnterEast_Asym[] = +{ + ANIMCMD_FRAME(6, 8), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 3), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastestSouth[] = { ANIMCMD_FRAME(3, 1), @@ -316,6 +555,66 @@ static const union AnimCmd sAnim_GoFastestSouth[] = ANIMCMD_JUMP(0), }; +static const union AnimCmd sAnim_ExitPokeballFastSouth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(0, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastNorth[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(2, 2), + ANIMCMD_FRAME(2, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastWest[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 2), + ANIMCMD_FRAME(4, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastEast[] = +{ + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(4, 2, .hFlip = TRUE), + ANIMCMD_FRAME(4, 1, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_ExitPokeballFastEast_Asym[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(6, 2), + ANIMCMD_FRAME(6, 1), + ANIMCMD_JUMP(0), +}; + static const union AnimCmd sAnim_GoFastestNorth[] = { ANIMCMD_FRAME(5, 1), @@ -845,6 +1144,62 @@ static const union AnimCmd *const sAnimTable_Standard[] = { [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast, }; +const union AnimCmd *const sAnimTable_Following[] = { + [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth, + [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth2F, + [ANIM_STD_FACE_WEST] = sAnim_FaceWest2F, + [ANIM_STD_FACE_EAST] = sAnim_FaceEast2F, + [ANIM_STD_GO_SOUTH] = sAnim_GoSouth2F, + [ANIM_STD_GO_NORTH] = sAnim_GoNorth2F, + [ANIM_STD_GO_WEST] = sAnim_GoWest2F, + [ANIM_STD_GO_EAST] = sAnim_GoEast2F, + [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth2F, + [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth2F, + [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest2F, + [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast2F, + // 'Faster' and above used for entering/exiting pokeball + [ANIM_STD_GO_FASTER_SOUTH] = sAnim_EnterSouth, + [ANIM_STD_GO_FASTER_NORTH] = sAnim_EnterNorth, + [ANIM_STD_GO_FASTER_WEST] = sAnim_EnterWest, + [ANIM_STD_GO_FASTER_EAST] = sAnim_EnterEast, + [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_ExitPokeballSouth, + [ANIM_STD_GO_FASTEST_NORTH] = sAnim_ExitPokeballNorth, + [ANIM_STD_GO_FASTEST_WEST] = sAnim_ExitPokeballWest, + [ANIM_STD_GO_FASTEST_EAST] = sAnim_ExitPokeballEast, + [ANIM_EXIT_POKEBALL_FAST_SOUTH] = sAnim_ExitPokeballFastSouth, + [ANIM_EXIT_POKEBALL_FAST_NORTH] = sAnim_ExitPokeballFastNorth, + [ANIM_EXIT_POKEBALL_FAST_WEST] = sAnim_ExitPokeballFastWest, + [ANIM_EXIT_POKEBALL_FAST_EAST] = sAnim_ExitPokeballFastEast, +}; + +// Like the above, but has separate frames for facing right +static const union AnimCmd *const sAnimTable_Following_Asym[] = { + [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth, + [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth2F, + [ANIM_STD_FACE_WEST] = sAnim_FaceWest2F, + [ANIM_STD_FACE_EAST] = sAnim_FaceEast2F_Asym, + [ANIM_STD_GO_SOUTH] = sAnim_GoSouth2F, + [ANIM_STD_GO_NORTH] = sAnim_GoNorth2F, + [ANIM_STD_GO_WEST] = sAnim_GoWest2F, + [ANIM_STD_GO_EAST] = sAnim_GoEast2F_Asym, + [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth2F, + [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth2F, + [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest2F, + [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast2F_Asym, + [ANIM_STD_GO_FASTER_SOUTH] = sAnim_EnterSouth, + [ANIM_STD_GO_FASTER_NORTH] = sAnim_EnterNorth, + [ANIM_STD_GO_FASTER_WEST] = sAnim_EnterWest, + [ANIM_STD_GO_FASTER_EAST] = sAnim_EnterEast_Asym, + [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_ExitPokeballSouth, + [ANIM_STD_GO_FASTEST_NORTH] = sAnim_ExitPokeballNorth, + [ANIM_STD_GO_FASTEST_WEST] = sAnim_ExitPokeballWest, + [ANIM_STD_GO_FASTEST_EAST] = sAnim_ExitPokeballEast_Asym, + [ANIM_EXIT_POKEBALL_FAST_SOUTH] = sAnim_ExitPokeballFastSouth, + [ANIM_EXIT_POKEBALL_FAST_NORTH] = sAnim_ExitPokeballFastNorth, + [ANIM_EXIT_POKEBALL_FAST_WEST] = sAnim_ExitPokeballFastWest, + [ANIM_EXIT_POKEBALL_FAST_EAST] = sAnim_ExitPokeballFastEast_Asym, +}; + static const union AnimCmd *const sAnimTable_HoOh[] = { [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth, [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth, @@ -1155,6 +1510,10 @@ static const struct StepAnimTable sStepAnimTables[] = { .anims = sAnimTable_Standard, .animPos = {1, 3, 0, 2}, }, + { + .anims = sAnimTable_Following, + .animPos = {1, 3, 0, 2}, + }, { .anims = sAnimTable_BrendanMayNormal, .animPos = {1, 3, 0, 2}, diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index a1e9fc22cf4b..1f08b77599f9 100755 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -122,7 +122,6 @@ const u32 gObjectEventPic_CyclingTriathleteF[] = INCBIN_U32("graphics/object_eve const u32 gObjectEventPic_Man4[] = INCBIN_U32("graphics/object_events/pics/people/man_4.4bpp"); const u32 gObjectEventPic_Man5[] = INCBIN_U32("graphics/object_events/pics/people/man_5.4bpp"); const u32 gObjectEventPic_Nurse[] = INCBIN_U32("graphics/object_events/pics/people/nurse.4bpp"); -const u32 gObjectEventPic_ItemBall[] = INCBIN_U32("graphics/object_events/pics/misc/item_ball.4bpp"); const u32 gObjectEventPic_ProfBirch[] = INCBIN_U32("graphics/object_events/pics/people/prof_birch.4bpp"); const u32 gObjectEventPic_ReporterM[] = INCBIN_U32("graphics/object_events/pics/people/reporter_m.4bpp"); const u32 gObjectEventPic_ReporterF[] = INCBIN_U32("graphics/object_events/pics/people/reporter_f.4bpp"); @@ -156,24 +155,14 @@ const u32 gObjectEventPic_Steven[] = INCBIN_U32("graphics/object_events/pics/peo const u32 gObjectEventPic_Wally[] = INCBIN_U32("graphics/object_events/pics/people/wally.4bpp"); const u32 gObjectEventPic_RubySapphireLittleBoy[] = INCBIN_U32("graphics/object_events/pics/people/rs_little_boy.4bpp"); const u32 gObjectEventPic_HotSpringsOldWoman[] = INCBIN_U32("graphics/object_events/pics/people/hot_springs_old_woman.4bpp"); -const u32 gObjectEventPic_LatiasLatios[] = INCBIN_U32("graphics/object_events/pics/pokemon/latias_latios.4bpp"); +const u32 gObjectEventPic_LatiasLatios[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/latias_latios.4bpp"); const u32 gObjectEventPic_GameboyKid[] = INCBIN_U32("graphics/object_events/pics/people/gameboy_kid.4bpp"); const u32 gObjectEventPic_ContestJudge[] = INCBIN_U32("graphics/object_events/pics/people/contest_judge.4bpp"); const u32 gObjectEventPic_Archie[] = INCBIN_U32("graphics/object_events/pics/people/team_aqua/archie.4bpp"); const u32 gObjectEventPic_Maxie[] = INCBIN_U32("graphics/object_events/pics/people/team_magma/maxie.4bpp"); -const u32 gObjectEventPic_Kyogre[] = INCBIN_U32("graphics/object_events/pics/pokemon/kyogre.4bpp"); -const u32 gObjectEventPic_Groudon[] = INCBIN_U32("graphics/object_events/pics/pokemon/groudon.4bpp"); -const u32 gObjectEventPic_Regi[] = INCBIN_U32("graphics/object_events/pics/pokemon/regi.4bpp"); -const u32 gObjectEventPic_Skitty[] = INCBIN_U32("graphics/object_events/pics/pokemon/skitty.4bpp"); -const u32 gObjectEventPic_Kecleon[] = INCBIN_U32("graphics/object_events/pics/pokemon/kecleon.4bpp"); -const u32 gObjectEventPic_Rayquaza[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza.4bpp"); -const u32 gObjectEventPic_RayquazaStill[] = INCBIN_U32("graphics/object_events/pics/pokemon/rayquaza_still.4bpp"); -const u32 gObjectEventPic_Zigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/zigzagoon.4bpp"); -const u32 gObjectEventPic_Pikachu[] = INCBIN_U32("graphics/object_events/pics/pokemon/pikachu.4bpp"); -const u32 gObjectEventPic_Azumarill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azumarill.4bpp"); -const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/pokemon/wingull.4bpp"); +const u32 gObjectEventPic_Regi[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/regi.4bpp"); +const u32 gObjectEventPic_RayquazaStill[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/rayquaza_still.4bpp"); const u32 gObjectEventPic_TuberMSwimming[] = INCBIN_U32("graphics/object_events/pics/people/tuber_m_swimming.4bpp"); -const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp"); const u32 gObjectEventPic_Mom[] = INCBIN_U32("graphics/object_events/pics/people/mom.4bpp"); const u16 gObjectEventPal_Kyogre[] = INCBIN_U16("graphics/object_events/palettes/kyogre.gbapal"); const u16 gObjectEventPal_KyogreReflection[] = INCBIN_U16("graphics/object_events/palettes/kyogre_reflection.gbapal"); @@ -239,12 +228,10 @@ const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events const u16 gObjectEventPal_SubmarineShadow[] = INCBIN_U16("graphics/object_events/palettes/submarine_shadow.gbapal"); const u32 gObjectEventPic_Truck[] = INCBIN_U32("graphics/object_events/pics/misc/truck.4bpp"); const u16 gObjectEventPal_Truck[] = INCBIN_U16("graphics/object_events/palettes/truck.gbapal"); -const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp"); const u16 gObjectEventPal_Vigoroth[] = INCBIN_U16("graphics/object_events/palettes/vigoroth.gbapal"); const u32 gObjectEventPic_BirchsBag[] = INCBIN_U32("graphics/object_events/pics/misc/birchs_bag.4bpp"); -const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/enemy_zigzagoon.4bpp"); +const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/enemy_zigzagoon.4bpp"); const u16 gObjectEventPal_EnemyZigzagoon[] = INCBIN_U16("graphics/object_events/palettes/enemy_zigzagoon.gbapal"); -const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp"); const u16 gObjectEventPal_Poochyena[] = INCBIN_U16("graphics/object_events/palettes/poochyena.gbapal"); const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/misc/cable_car.4bpp"); const u16 gObjectEventPal_CableCar[] = INCBIN_U16("graphics/object_events/palettes/cable_car.gbapal"); @@ -327,6 +314,9 @@ const u32 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U32("graphics/field_effect const u32 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U32("graphics/field_effects/pics/sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U32("graphics/field_effects/pics/deep_sand_footprints.4bpp"); const u32 gFieldEffectObjectPic_BikeTireTracks[] = INCBIN_U32("graphics/field_effects/pics/bike_tire_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SlitherTracks[] = INCBIN_U32("graphics/field_effects/pics/slither_tracks.4bpp"); +const u32 gFieldEffectObjectPic_SpotTracks[] = INCBIN_U32("graphics/field_effects/pics/spot_tracks.4bpp"); +const u32 gFieldEffectObjectPic_BugTracks[] = INCBIN_U32("graphics/field_effects/pics/bug_tracks.4bpp"); const u32 gFieldEffectObjectPic_UnusedSand[] = INCBIN_U32("graphics/field_effects/pics/unused_sand.4bpp"); const u32 gFieldEffectObjectPic_SandPile[] = INCBIN_U32("graphics/field_effects/pics/sand_pile.4bpp"); const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_big_splash.4bpp"); @@ -347,21 +337,16 @@ const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/field_effects/pics const u32 gObjectEventPic_Juan[] = INCBIN_U32("graphics/object_events/pics/people/gym_leaders/juan.4bpp"); const u32 gObjectEventPic_Scott[] = INCBIN_U32("graphics/object_events/pics/people/scott.4bpp"); const u32 gObjectEventPic_Statue[] = INCBIN_U32("graphics/object_events/pics/misc/statue.4bpp"); -const u32 gObjectEventPic_Kirlia[] = INCBIN_U32("graphics/object_events/pics/pokemon/kirlia.4bpp"); -const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/pokemon/dusclops.4bpp"); const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/object_events/pics/people/mystery_event_deliveryman.4bpp"); const u32 gObjectEventPic_UnionRoomAttendant[] = INCBIN_U32("graphics/object_events/pics/people/union_room_attendant.4bpp"); const u32 gObjectEventPic_MovingBox[] = INCBIN_U32("graphics/object_events/pics/misc/moving_box.4bpp"); const u16 gObjectEventPal_MovingBox[] = INCBIN_U16("graphics/object_events/palettes/moving_box.gbapal"); -const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp"); -const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp"); const u16 gObjectEventPal_RedLeaf[] = INCBIN_U16("graphics/object_events/palettes/red_leaf.gbapal"); const u32 gObjectEventPic_Red[] = INCBIN_U32("graphics/object_events/pics/people/red.4bpp"); const u32 gObjectEventPic_Leaf[] = INCBIN_U32("graphics/object_events/pics/people/leaf.4bpp"); const u16 gObjectEventPal_BirthIslandStone[] = INCBIN_U16("graphics/object_events/palettes/birth_island_stone.gbapal"); const u32 gObjectEventPic_BirthIslandStone[] = INCBIN_U32("graphics/object_events/pics/misc/birth_island_stone.4bpp"); const u16 gObjectEventPal_Deoxys[] = INCBIN_U16("graphics/object_events/palettes/deoxys.gbapal"); -const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp"); const u32 gObjectEventPic_Anabel[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/anabel.4bpp"); const u32 gObjectEventPic_Tucker[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/tucker.4bpp"); const u32 gObjectEventPic_Spenser[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/spenser.4bpp"); @@ -369,7 +354,103 @@ const u32 gObjectEventPic_Greta[] = INCBIN_U32("graphics/object_events/pics/peop const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/noland.4bpp"); const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp"); const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp"); -const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp"); -const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal"); -const u32 gObjectEventPic_HoOh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp"); +const u32 gObjectEventPic_PokeBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_poke.4bpp"); + +const u32 gObjectEventPic_DeoxysOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/deoxys.4bpp"); +const u32 gObjectEventPic_MewOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/mew.4bpp"); +const u32 gObjectEventPic_DusclopsOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/dusclops.4bpp"); +const u32 gObjectEventPic_KirliaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/kirlia.4bpp"); +const u32 gObjectEventPic_AzurillOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/azurill.4bpp"); +const u32 gObjectEventPic_KecleonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/kecleon.4bpp"); +const u32 gObjectEventPic_WingullOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/wingull.4bpp"); +const u32 gObjectEventPic_AzumarillOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/azumarill.4bpp"); +const u32 gObjectEventPic_PikachuOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/pikachu.4bpp"); +const u32 gObjectEventPic_ZigzagoonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/zigzagoon.4bpp"); +const u32 gObjectEventPic_SkittyOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/skitty.4bpp"); +const u32 gObjectEventPic_PoochyenaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/poochyena.4bpp"); +const u32 gObjectEventPic_LugiaOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/lugia.4bpp"); +const u32 gObjectEventPic_HoOhOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/ho_oh.4bpp"); +const u32 gObjectEventPic_GroudonOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/groudon.4bpp"); +const u32 gObjectEventPic_KyogreOld[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/kyogre.4bpp"); + +const u32 gObjectEventPic_VigorothMover[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/vigoroth_mover.4bpp"); +const u32 gObjectEventPic_SudowoodoTree[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/sudowoodo_tree.4bpp"); +const u32 gObjectEventPic_RayquazaCutscene[] = INCBIN_U32("graphics/object_events/pics/pokemon_old/rayquaza_cutscene.4bpp"); + const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal"); +const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal"); + +const u16 gObjectEventPal_Substitute[] = INCBIN_U16("graphics/pokemon/question_mark/overworld.gbapal"); + +const u16 gObjectEventPaletteEmotes[] = INCBIN_U16("graphics/misc/emotes.gbapal"); + +#if OW_FOLLOWERS_POKEBALLS +const u32 gObjectEventPic_MasterBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_master.4bpp"); +const u32 gObjectEventPic_UltraBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_ultra.4bpp"); +const u32 gObjectEventPic_GreatBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_great.4bpp"); +const u32 gObjectEventPic_SafariBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_safari.4bpp"); +const u32 gObjectEventPic_NetBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_net.4bpp"); +const u32 gObjectEventPic_DiveBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_dive.4bpp"); +const u32 gObjectEventPic_NestBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_nest.4bpp"); +const u32 gObjectEventPic_RepeatBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_repeat.4bpp"); +const u32 gObjectEventPic_TimerBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_timer.4bpp"); +const u32 gObjectEventPic_LuxuryBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_luxury.4bpp"); +const u32 gObjectEventPic_PremierBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_premier.4bpp"); +const u32 gObjectEventPic_DuskBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_dusk.4bpp"); +const u32 gObjectEventPic_HealBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_heal.4bpp"); +const u32 gObjectEventPic_QuickBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_quick.4bpp"); +const u32 gObjectEventPic_CherishBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_cherish.4bpp"); +const u32 gObjectEventPic_ParkBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_park.4bpp"); +const u32 gObjectEventPic_FastBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_fast.4bpp"); +const u32 gObjectEventPic_LevelBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_level.4bpp"); +const u32 gObjectEventPic_LureBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_lure.4bpp"); +const u32 gObjectEventPic_HeavyBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_heavy.4bpp"); +const u32 gObjectEventPic_LoveBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_love.4bpp"); +const u32 gObjectEventPic_FriendBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_friend.4bpp"); +const u32 gObjectEventPic_MoonBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_moon.4bpp"); +const u32 gObjectEventPic_SportBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_sport.4bpp"); +const u32 gObjectEventPic_DreamBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_dream.4bpp"); +const u32 gObjectEventPic_BeastBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_beast.4bpp"); +#ifdef ITEM_STRANGE_BALL +const u32 gObjectEventPic_StrangeBall[] = INCBIN_U32("graphics/object_events/pics/misc/ball_strange.4bpp"); +#endif //ITEM_STRANGE_BALL +#endif //OW_FOLLOWERS_POKEBALLS + +#if OW_FOLLOWERS_POKEBALLS +// Palettes are small, so always include all of the palettes (no #ifdef) +// Vanilla +const u16 gObjectEventPal_MasterBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_master.gbapal"); +const u16 gObjectEventPal_UltraBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_ultra.gbapal"); +const u16 gObjectEventPal_GreatBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_great.gbapal"); +const u16 gObjectEventPal_SafariBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_safari.gbapal"); +const u16 gObjectEventPal_NetBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_net.gbapal"); +const u16 gObjectEventPal_DiveBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_dive.gbapal"); +const u16 gObjectEventPal_NestBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_nest.gbapal"); +const u16 gObjectEventPal_RepeatBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_repeat.gbapal"); +const u16 gObjectEventPal_TimerBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_timer.gbapal"); +const u16 gObjectEventPal_LuxuryBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_luxury.gbapal"); +const u16 gObjectEventPal_PremierBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_premier.gbapal"); +// Gen IV/Sinnoh +const u16 gObjectEventPal_DuskBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_dusk.gbapal"); +const u16 gObjectEventPal_HealBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_heal.gbapal"); +const u16 gObjectEventPal_QuickBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_quick.gbapal"); +const u16 gObjectEventPal_CherishBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_cherish.gbapal"); +const u16 gObjectEventPal_ParkBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_park.gbapal"); +// Gen II/Johto Apricorns +const u16 gObjectEventPal_FastBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_fast.gbapal"); +const u16 gObjectEventPal_LevelBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_level.gbapal"); +const u16 gObjectEventPal_LureBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_lure.gbapal"); +const u16 gObjectEventPal_HeavyBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_heavy.gbapal"); +const u16 gObjectEventPal_LoveBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_love.gbapal"); +const u16 gObjectEventPal_FriendBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_friend.gbapal"); +const u16 gObjectEventPal_MoonBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_moon.gbapal"); +const u16 gObjectEventPal_SportBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_sport.gbapal"); +// Gen V +const u16 gObjectEventPal_DreamBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_dream.gbapal"); +// Gen VII +const u16 gObjectEventPal_BeastBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_beast.gbapal"); +// Gen VIII +#ifdef ITEM_STRANGE_BALL +const u16 gObjectEventPal_StrangeBall[] = INCBIN_U16("graphics/object_events/pics/misc/ball_strange.gbapal"); +#endif //ITEM_STRANGE_BALL +#endif //OW_FOLLOWERS_POKEBALLS diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h index 146bb87306b1..5b8f971a4925 100755 --- a/src/data/object_events/object_event_graphics_info.h +++ b/src/data/object_events/object_event_graphics_info.h @@ -8,7 +8,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -27,7 +27,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -46,7 +46,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -65,7 +65,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -84,7 +84,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -103,7 +103,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_L, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -122,7 +122,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -141,7 +141,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -160,7 +160,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -179,7 +179,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -198,7 +198,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -217,7 +217,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -236,7 +236,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -255,7 +255,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -274,7 +274,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -293,7 +293,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -312,7 +312,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -331,7 +331,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -350,7 +350,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -369,7 +369,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -388,7 +388,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -407,7 +407,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -426,7 +426,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -445,7 +445,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -464,7 +464,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -483,7 +483,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -502,7 +502,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -521,7 +521,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -540,7 +540,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -559,7 +559,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -578,7 +578,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -597,7 +597,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -616,7 +616,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -635,7 +635,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -654,7 +654,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -673,7 +673,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -692,7 +692,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -711,7 +711,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -730,7 +730,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -749,7 +749,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -768,7 +768,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -787,7 +787,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -806,7 +806,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_64x64, .subspriteTables = sOamTables_64x64, @@ -825,7 +825,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -844,7 +844,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -863,7 +863,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -882,7 +882,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -901,7 +901,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -920,7 +920,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -939,7 +939,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -958,7 +958,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -977,7 +977,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -996,7 +996,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1015,7 +1015,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1034,7 +1034,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1053,7 +1053,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1072,7 +1072,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1091,7 +1091,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1110,7 +1110,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1129,7 +1129,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1138,25 +1138,6 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = { .affineAnims = gDummySpriteAffineAnimTable, }; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = { - .tileTag = TAG_NONE, - .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, - .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, - .size = 128, - .width = 16, - .height = 16, - .paletteSlot = PALSLOT_NPC_3, - .shadowSize = SHADOW_SIZE_S, - .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, - .tracks = TRACKS_NONE, - .oam = &gObjectEventBaseOam_16x16, - .subspriteTables = sOamTables_16x16, - .anims = sAnimTable_Inanimate, - .images = sPicTable_ItemBall, - .affineAnims = gDummySpriteAffineAnimTable, -}; - const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = { .tileTag = TAG_NONE, .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, @@ -1167,7 +1148,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = NULL, @@ -1186,7 +1167,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStag .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1205,7 +1186,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStage .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1224,7 +1205,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1243,7 +1224,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1262,7 +1243,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1281,7 +1262,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1300,7 +1281,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1319,7 +1300,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1338,7 +1319,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1357,7 +1338,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1376,7 +1357,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1395,7 +1376,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1414,7 +1395,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldM .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1433,7 +1414,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldM .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1452,7 +1433,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1471,7 +1452,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDol .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1490,7 +1471,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1509,7 +1490,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1528,7 +1509,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1547,7 +1528,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1566,7 +1547,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1585,7 +1566,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1604,7 +1585,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1623,7 +1604,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1642,7 +1623,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1661,7 +1642,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1680,7 +1661,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1699,7 +1680,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1718,7 +1699,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1737,7 +1718,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1756,7 +1737,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1775,7 +1756,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1794,7 +1775,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_48x48, @@ -1813,7 +1794,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBo .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1832,7 +1813,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1851,7 +1832,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -1870,7 +1851,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1889,12 +1870,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, .anims = sAnimTable_Standard, - .images = sPicTable_Poochyena, + .images = sPicTable_PoochyenaOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -1908,7 +1889,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1927,7 +1908,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -1946,7 +1927,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBi .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1965,7 +1946,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBi .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -1984,7 +1965,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfin .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2003,7 +1984,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldM .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2022,7 +2003,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2041,7 +2022,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2060,7 +2041,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_BIKE_TIRE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2079,7 +2060,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2098,7 +2079,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2117,7 +2098,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2136,7 +2117,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2155,7 +2136,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2174,7 +2155,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2193,7 +2174,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_64x64, .subspriteTables = sOamTables_64x64, @@ -2212,7 +2193,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2231,7 +2212,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2250,7 +2231,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2269,7 +2250,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2288,7 +2269,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2307,7 +2288,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2326,7 +2307,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2345,7 +2326,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2364,7 +2345,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2383,7 +2364,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2402,7 +2383,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2421,7 +2402,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2440,7 +2421,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2459,7 +2440,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2478,7 +2459,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2497,7 +2478,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2516,7 +2497,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2535,7 +2516,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2554,7 +2535,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2573,7 +2554,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2592,7 +2573,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2611,7 +2592,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittle .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2630,7 +2611,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2649,7 +2630,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -2668,7 +2649,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -2687,7 +2668,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_8x8, .subspriteTables = sOamTables_96x40, @@ -2706,7 +2687,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_8x8, .subspriteTables = sOamTables_88x32, @@ -2725,7 +2706,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2744,7 +2725,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2763,7 +2744,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2782,7 +2763,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2801,7 +2782,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2820,7 +2801,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2839,7 +2820,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2858,7 +2839,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2877,7 +2858,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2896,7 +2877,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2915,7 +2896,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2934,7 +2915,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2953,7 +2934,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2972,7 +2953,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -2991,7 +2972,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3010,7 +2991,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3029,7 +3010,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3048,7 +3029,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3067,7 +3048,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3086,7 +3067,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3105,7 +3086,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3124,7 +3105,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3143,7 +3124,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3162,7 +3143,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3181,7 +3162,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3200,7 +3181,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3219,7 +3200,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3238,7 +3219,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3257,7 +3238,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3276,7 +3257,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3295,7 +3276,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3314,7 +3295,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3333,7 +3314,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3352,7 +3333,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3371,7 +3352,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3390,7 +3371,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3409,7 +3390,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3428,7 +3409,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3447,7 +3428,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3466,7 +3447,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3485,7 +3466,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3504,7 +3485,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3523,7 +3504,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3542,7 +3523,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3561,7 +3542,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3580,7 +3561,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3599,7 +3580,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3618,7 +3599,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3637,7 +3618,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3656,7 +3637,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3675,7 +3656,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = { .paletteSlot = PALSLOT_PLAYER, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3694,7 +3675,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3713,7 +3694,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3732,7 +3713,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3751,7 +3732,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -3770,7 +3751,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3789,7 +3770,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3808,7 +3789,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3827,7 +3808,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3846,7 +3827,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_S, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_NONE, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -3865,7 +3846,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3884,7 +3865,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3903,7 +3884,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3922,12 +3903,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Skitty, + .images = sPicTable_SkittyOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -3941,12 +3922,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Kecleon, + .images = sPicTable_KecleonOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -3960,7 +3941,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3979,7 +3960,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -3998,12 +3979,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = TRUE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_64x64, .subspriteTables = sOamTables_64x64, .anims = sAnimTable_Rayquaza, - .images = sPicTable_Rayquaza, + .images = sPicTable_RayquazaCutscene, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4017,12 +3998,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Zigzagoon, + .images = sPicTable_ZigzagoonOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4036,12 +4017,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Pikachu, + .images = sPicTable_PikachuOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4055,12 +4036,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Azumarill, + .images = sPicTable_AzumarillOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4074,12 +4055,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Wingull, + .images = sPicTable_WingullOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4093,12 +4074,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShado .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Kecleon, + .images = sPicTable_KecleonOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4112,7 +4093,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = { .paletteSlot = PALSLOT_NPC_2, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, @@ -4131,12 +4112,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x16, .subspriteTables = sOamTables_16x16, .anims = sAnimTable_Standard, - .images = sPicTable_Azurill, + .images = sPicTable_AzurillOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4150,7 +4131,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4169,7 +4150,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4188,7 +4169,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4207,7 +4188,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4226,7 +4207,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4245,7 +4226,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDelive .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4264,7 +4245,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4283,12 +4264,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_S, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, .anims = sAnimTable_Standard, - .images = sPicTable_Kirlia, + .images = sPicTable_KirliaOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4302,12 +4283,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, .anims = sAnimTable_Standard, - .images = sPicTable_Dusclops, + .images = sPicTable_DusclopsOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4321,7 +4302,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4340,7 +4321,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4359,7 +4340,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4378,12 +4359,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, .anims = sAnimTable_Standard, - .images = sPicTable_Sudowoodo, + .images = sPicTable_SudowoodoTree, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4397,12 +4378,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, .anims = sAnimTable_Standard, - .images = sPicTable_Mew, + .images = sPicTable_MewOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4416,12 +4397,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, .anims = sAnimTable_Standard, - .images = sPicTable_Deoxys, + .images = sPicTable_DeoxysOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4435,7 +4416,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = TRUE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, @@ -4454,7 +4435,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4473,7 +4454,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4492,7 +4473,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4511,7 +4492,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = { .paletteSlot = PALSLOT_NPC_1, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4530,7 +4511,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4549,7 +4530,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = { .paletteSlot = PALSLOT_NPC_4, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4568,7 +4549,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = { .paletteSlot = PALSLOT_NPC_3, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4587,7 +4568,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrenda .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4606,7 +4587,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_16x32, .subspriteTables = sOamTables_16x32, @@ -4625,12 +4606,12 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, .anims = sAnimTable_Standard, - .images = sPicTable_Lugia, + .images = sPicTable_LugiaOld, .affineAnims = gDummySpriteAffineAnimTable, }; @@ -4644,11 +4625,49 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = { .paletteSlot = PALSLOT_NPC_SPECIAL, .shadowSize = SHADOW_SIZE_M, .inanimate = FALSE, - .disableReflectionPaletteLoad = FALSE, + .compressed = FALSE, .tracks = TRACKS_FOOT, .oam = &gObjectEventBaseOam_32x32, .subspriteTables = sOamTables_32x32, .anims = sAnimTable_HoOh, - .images = sPicTable_HoOh, + .images = sPicTable_HoOhOld, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokeBall = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_3, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, + .size = 256, + .width = 16, + .height = 32, + .paletteSlot = PALSLOT_NPC_1, + .shadowSize = SHADOW_SIZE_M, + .inanimate = TRUE, + .compressed = FALSE, + .tracks = TRACKS_NONE, + .oam = &gObjectEventBaseOam_16x32, + .subspriteTables = sOamTables_16x32, + .anims = sAnimTable_Following, + .images = sPicTable_PokeBall, + .affineAnims = gDummySpriteAffineAnimTable, +}; + +const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_DYNAMIC, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, + .size = 512, + .width = 32, + .height = 32, + .paletteSlot = PALSLOT_NPC_1, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = FALSE, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_32x32, + .subspriteTables = sOamTables_32x32, + .anims = sAnimTable_Following, + .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, }; diff --git a/src/data/object_events/object_event_graphics_info_followers.h b/src/data/object_events/object_event_graphics_info_followers.h new file mode 100644 index 000000000000..e35b1ebd67ba --- /dev/null +++ b/src/data/object_events/object_event_graphics_info_followers.h @@ -0,0 +1,57 @@ +#if OW_FOLLOWERS_POKEBALLS + +#define POKEBALL_GFX_INFO(NAME) \ + [BALL_##NAME] = { \ + .tileTag = TAG_NONE, \ + .paletteTag = OBJ_EVENT_PAL_TAG_BALL_##NAME, \ + .size = 256, \ + .width = 16, \ + .height = 32, \ + .shadowSize = SHADOW_SIZE_M, \ + .inanimate = TRUE, \ + .oam = &gObjectEventBaseOam_16x32, \ + .subspriteTables = sOamTables_16x32, \ + .anims = sAnimTable_Following, \ + .images = sPicTable_Ball_##NAME, \ + .affineAnims = gDummySpriteAffineAnimTable, \ + } + + +const struct ObjectEventGraphicsInfo gPokeballGraphics[POKEBALL_COUNT] = { + // Vanilla + POKEBALL_GFX_INFO(MASTER), + POKEBALL_GFX_INFO(ULTRA), + POKEBALL_GFX_INFO(GREAT), + POKEBALL_GFX_INFO(SAFARI), + POKEBALL_GFX_INFO(NET), + POKEBALL_GFX_INFO(DIVE), + POKEBALL_GFX_INFO(NEST), + POKEBALL_GFX_INFO(REPEAT), + POKEBALL_GFX_INFO(TIMER), + POKEBALL_GFX_INFO(LUXURY), + POKEBALL_GFX_INFO(PREMIER), + // Gen IV/Sinnoh pokeballs + POKEBALL_GFX_INFO(DUSK), + POKEBALL_GFX_INFO(HEAL), + POKEBALL_GFX_INFO(QUICK), + POKEBALL_GFX_INFO(CHERISH), + POKEBALL_GFX_INFO(PARK), + // Gen II/Johto Apricorn pokeballs + POKEBALL_GFX_INFO(FAST), + POKEBALL_GFX_INFO(LEVEL), + POKEBALL_GFX_INFO(LURE), + POKEBALL_GFX_INFO(HEAVY), + POKEBALL_GFX_INFO(LOVE), + POKEBALL_GFX_INFO(FRIEND), + POKEBALL_GFX_INFO(MOON), + POKEBALL_GFX_INFO(SPORT), + // Gen V + POKEBALL_GFX_INFO(DREAM), + // Gen VII + POKEBALL_GFX_INFO(BEAST), + // Gen VIII + #ifdef ITEM_STRANGE_BALL + POKEBALL_GFX_INFO(STRANGE), + #endif +}; +#endif //OW_FOLLOWERS_POKEBALLS diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h index ae1117164a72..7f487a5ae52b 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -57,7 +57,6 @@ extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse; -extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages; @@ -237,6 +236,10 @@ extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphir extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; +// Begin pokemon event objects +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokeBall; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Follower; + extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader; @@ -245,7 +248,6 @@ extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1; extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2; - const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { [OBJ_EVENT_GFX_BRENDAN_NORMAL] = &gObjectEventGraphicsInfo_BrendanNormal, [OBJ_EVENT_GFX_BRENDAN_MACH_BIKE] = &gObjectEventGraphicsInfo_BrendanMachBike, @@ -306,7 +308,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M] = &gObjectEventGraphicsInfo_CyclingTriathleteM, [OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F] = &gObjectEventGraphicsInfo_CyclingTriathleteF, [OBJ_EVENT_GFX_NURSE] = &gObjectEventGraphicsInfo_Nurse, - [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_ItemBall, + [OBJ_EVENT_GFX_ITEM_BALL] = &gObjectEventGraphicsInfo_PokeBall, [OBJ_EVENT_GFX_BERRY_TREE] = &gObjectEventGraphicsInfo_BerryTree, [OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES] = &gObjectEventGraphicsInfo_BerryTreeEarlyStages, [OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES] = &gObjectEventGraphicsInfo_BerryTreeLateStages, @@ -486,6 +488,8 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM [OBJ_EVENT_GFX_LINK_RS_MAY] = &gObjectEventGraphicsInfo_RubySapphireMay, [OBJ_EVENT_GFX_LUGIA] = &gObjectEventGraphicsInfo_Lugia, [OBJ_EVENT_GFX_HOOH] = &gObjectEventGraphicsInfo_HoOh, + [OBJ_EVENT_GFX_POKE_BALL] = &gObjectEventGraphicsInfo_PokeBall, + [OBJ_EVENT_GFX_OW_MON] = &gObjectEventGraphicsInfo_Follower, }; const struct ObjectEventGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = { diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h index aa9f4e1532ab..1fdfc6d49207 100755 --- a/src/data/object_events/object_event_pic_tables.h +++ b/src/data/object_events/object_event_pic_tables.h @@ -282,10 +282,6 @@ static const struct SpriteFrameImage sPicTable_Nurse[] = { overworld_frame(gObjectEventPic_Nurse, 2, 4, 3), }; -static const struct SpriteFrameImage sPicTable_ItemBall[] = { - obj_frame_tiles(gObjectEventPic_ItemBall), -}; - static const struct SpriteFrameImage sPicTable_ProfBirch[] = { overworld_ascending_frames(gObjectEventPic_ProfBirch, 2, 4), }; @@ -379,27 +375,27 @@ static const struct SpriteFrameImage sPicTable_Truck[] = { }; static const struct SpriteFrameImage sPicTable_VigorothCarryingBox[] = { - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 1), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 0), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 1), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 2), }; static const struct SpriteFrameImage sPicTable_VigorothFacingAway[] = { - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), - overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 3), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), + overworld_frame(gObjectEventPic_VigorothMover, 4, 4, 4), }; static const struct SpriteFrameImage sPicTable_BirchsBag[] = { @@ -410,10 +406,6 @@ static const struct SpriteFrameImage sPicTable_EnemyZigzagoon[] = { overworld_ascending_frames(gObjectEventPic_EnemyZigzagoon, 4, 4), }; -static const struct SpriteFrameImage sPicTable_Poochyena[] = { - overworld_ascending_frames(gObjectEventPic_Poochyena, 4, 4), -}; - static const struct SpriteFrameImage sPicTable_Artist[] = { overworld_ascending_frames(gObjectEventPic_Artist, 2, 4), }; @@ -594,12 +586,7 @@ static const struct SpriteFrameImage sPicTable_Flannery[] = { }; static const struct SpriteFrameImage sPicTable_Norman[] = { - overworld_frame(gObjectEventPic_Norman, 2, 4, 0), - overworld_frame(gObjectEventPic_Norman, 2, 4, 1), - overworld_frame(gObjectEventPic_Norman, 2, 4, 2), - overworld_frame(gObjectEventPic_Norman, 2, 4, 3), - overworld_frame(gObjectEventPic_Norman, 2, 4, 4), - overworld_frame(gObjectEventPic_Norman, 2, 4, 5), + overworld_ascending_frames(gObjectEventPic_Norman, 2, 4), overworld_frame(gObjectEventPic_Norman, 2, 4, 6), overworld_frame(gObjectEventPic_Norman, 2, 4, 7), overworld_frame(gObjectEventPic_Norman, 2, 4, 8), @@ -942,51 +929,51 @@ static const struct SpriteFrameImage sPicTable_Maxie[] = { }; static const struct SpriteFrameImage sPicTable_KyogreFront[] = { - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 0), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_GroudonFront[] = { - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 0), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 0), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_KyogreSide[] = { - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), - overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 2), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), + overworld_frame(gObjectEventPic_KyogreOld, 4, 4, 3), }; static const struct SpriteFrameImage sPicTable_GroudonSide[] = { - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 2), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), - overworld_frame(gObjectEventPic_Groudon, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 2), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), + overworld_frame(gObjectEventPic_GroudonOld, 4, 4, 3), }; static const struct SpriteFrameImage sPicTable_Fossil[] = { @@ -1005,38 +992,6 @@ static const struct SpriteFrameImage sPicTable_Regi[] = { obj_frame_tiles(gObjectEventPic_Regi), }; -static const struct SpriteFrameImage sPicTable_Skitty[] = { - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 0), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 1), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), - overworld_frame(gObjectEventPic_Skitty, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Kecleon[] = { - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), - overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Rayquaza[] = { - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 0), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 1), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 2), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 3), - overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 4), -}; - static const struct SpriteFrameImage sPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), obj_frame_tiles(gObjectEventPic_RayquazaStill), @@ -1049,70 +1004,10 @@ static const struct SpriteFrameImage sPicTable_RayquazaStill[] = { obj_frame_tiles(gObjectEventPic_RayquazaStill), }; -static const struct SpriteFrameImage sPicTable_Zigzagoon[] = { - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), - overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Pikachu[] = { - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), - overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Azumarill[] = { - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2), -}; - -static const struct SpriteFrameImage sPicTable_Wingull[] = { - overworld_frame(gObjectEventPic_Wingull, 2, 2, 0), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 2), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 4), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 1), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 1), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 3), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 3), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 5), - overworld_frame(gObjectEventPic_Wingull, 2, 2, 5), -}; - static const struct SpriteFrameImage sPicTable_TuberMSwimming[] = { overworld_ascending_frames(gObjectEventPic_TuberMSwimming, 2, 2), }; -static const struct SpriteFrameImage sPicTable_Azurill[] = { - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 0), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 1), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), - overworld_frame(gObjectEventPic_Azurill, 2, 2, 2), -}; - static const struct SpriteFrameImage sPicTable_Mom[] = { overworld_ascending_frames(gObjectEventPic_Mom, 2, 4), }; @@ -1141,14 +1036,6 @@ static const struct SpriteFrameImage sPicTable_Statue[] = { obj_frame_tiles(gObjectEventPic_Statue), }; -static const struct SpriteFrameImage sPicTable_Dusclops[] = { - overworld_ascending_frames(gObjectEventPic_Dusclops, 2, 4), -}; - -static const struct SpriteFrameImage sPicTable_Kirlia[] = { - overworld_ascending_frames(gObjectEventPic_Kirlia, 2, 4), -}; - static const struct SpriteFrameImage sPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 0), overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 1), @@ -1161,22 +1048,6 @@ static const struct SpriteFrameImage sPicTable_UnionRoomAttendant[] = { overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 2), }; -static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 1), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 1), - overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 2), -}; - -static const struct SpriteFrameImage sPicTable_Mew[] = { - overworld_ascending_frames(gObjectEventPic_Mew, 2, 4), -}; - static const struct SpriteFrameImage sPicTable_Red[] = { overworld_ascending_frames(gObjectEventPic_Red, 2, 4), }; @@ -1185,16 +1056,24 @@ static const struct SpriteFrameImage sPicTable_Leaf[] = { overworld_ascending_frames(gObjectEventPic_Leaf, 2, 4), }; -static const struct SpriteFrameImage sPicTable_Deoxys[] = { - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 1), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 1), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), - overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0), +static const struct SpriteFrameImage sPicTable_SudowoodoTree[] = { + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 1), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 0), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 1), + overworld_frame(gObjectEventPic_SudowoodoTree, 2, 4, 2), +}; + +static const struct SpriteFrameImage sPicTable_RayquazaCutscene[] = { + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 0), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 1), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 2), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 3), + overworld_frame(gObjectEventPic_RayquazaCutscene, 8, 8, 4), }; static const struct SpriteFrameImage sPicTable_BirthIslandStone[] = { @@ -1229,34 +1108,250 @@ static const struct SpriteFrameImage sPicTable_Brandon[] = { overworld_ascending_frames(gObjectEventPic_Brandon, 2, 4), }; -static const struct SpriteFrameImage sPicTable_Lugia[] = { - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 0), - overworld_frame(gObjectEventPic_Lugia, 4, 4, 1), +static const struct SpriteFrameImage sPicTable_PokeBall[] = { + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 0), + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 1), + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 2), + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 3), + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 4), + overworld_frame(gObjectEventPic_PokeBall, 2, 4, 0), +}; + +#if OW_FOLLOWERS_POKEBALLS + +#define POKEBALL_PIC_FRAMES(name) \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 0), \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 1), \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 2), \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 3), \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 4), \ + overworld_frame(gObjectEventPic_##name##Ball, 2, 4, 0) + +static const struct SpriteFrameImage sPicTable_Ball_MASTER[] = { + POKEBALL_PIC_FRAMES(Master), +}; +static const struct SpriteFrameImage sPicTable_Ball_ULTRA[] = { + POKEBALL_PIC_FRAMES(Ultra), +}; +static const struct SpriteFrameImage sPicTable_Ball_GREAT[] = { + POKEBALL_PIC_FRAMES(Great), +}; +static const struct SpriteFrameImage sPicTable_Ball_SAFARI[] = { + POKEBALL_PIC_FRAMES(Safari), +}; +static const struct SpriteFrameImage sPicTable_Ball_NET[] = { + POKEBALL_PIC_FRAMES(Net), +}; +static const struct SpriteFrameImage sPicTable_Ball_DIVE[] = { + POKEBALL_PIC_FRAMES(Dive), +}; +static const struct SpriteFrameImage sPicTable_Ball_NEST[] = { + POKEBALL_PIC_FRAMES(Nest), +}; +static const struct SpriteFrameImage sPicTable_Ball_REPEAT[] = { + POKEBALL_PIC_FRAMES(Repeat), +}; +static const struct SpriteFrameImage sPicTable_Ball_TIMER[] = { + POKEBALL_PIC_FRAMES(Timer), +}; +static const struct SpriteFrameImage sPicTable_Ball_LUXURY[] = { + POKEBALL_PIC_FRAMES(Luxury), +}; +static const struct SpriteFrameImage sPicTable_Ball_PREMIER[] = { + POKEBALL_PIC_FRAMES(Premier), +}; +static const struct SpriteFrameImage sPicTable_Ball_DUSK[] = { + POKEBALL_PIC_FRAMES(Dusk), +}; +static const struct SpriteFrameImage sPicTable_Ball_HEAL[] = { + POKEBALL_PIC_FRAMES(Heal), +}; +static const struct SpriteFrameImage sPicTable_Ball_QUICK[] = { + POKEBALL_PIC_FRAMES(Quick), +}; +static const struct SpriteFrameImage sPicTable_Ball_CHERISH[] = { + POKEBALL_PIC_FRAMES(Cherish), +}; +static const struct SpriteFrameImage sPicTable_Ball_PARK[] = { + POKEBALL_PIC_FRAMES(Park), +}; +static const struct SpriteFrameImage sPicTable_Ball_FAST[] = { + POKEBALL_PIC_FRAMES(Fast), +}; +static const struct SpriteFrameImage sPicTable_Ball_LEVEL[] = { + POKEBALL_PIC_FRAMES(Level), +}; +static const struct SpriteFrameImage sPicTable_Ball_LURE[] = { + POKEBALL_PIC_FRAMES(Lure), +}; +static const struct SpriteFrameImage sPicTable_Ball_HEAVY[] = { + POKEBALL_PIC_FRAMES(Heavy), +}; +static const struct SpriteFrameImage sPicTable_Ball_LOVE[] = { + POKEBALL_PIC_FRAMES(Love), +}; +static const struct SpriteFrameImage sPicTable_Ball_FRIEND[] = { + POKEBALL_PIC_FRAMES(Friend), +}; +static const struct SpriteFrameImage sPicTable_Ball_MOON[] = { + POKEBALL_PIC_FRAMES(Moon), +}; +static const struct SpriteFrameImage sPicTable_Ball_SPORT[] = { + POKEBALL_PIC_FRAMES(Sport), +}; +static const struct SpriteFrameImage sPicTable_Ball_DREAM[] = { + POKEBALL_PIC_FRAMES(Dream), +}; +static const struct SpriteFrameImage sPicTable_Ball_BEAST[] = { + POKEBALL_PIC_FRAMES(Beast), +}; +#ifdef ITEM_STRANGE_BALL +static const struct SpriteFrameImage sPicTable_Ball_STRANGE[] = { + POKEBALL_PIC_FRAMES(Strange), +}; +#endif //ITEM_STRANGE_BALL +#endif //OW_FOLLOWERS_POKEBALLS + +static const struct SpriteFrameImage sPicTable_DeoxysOld[] = { + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 1), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 1), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), + overworld_frame(gObjectEventPic_DeoxysOld, 4, 4, 0), +}; + +static const struct SpriteFrameImage sPicTable_MewOld[] = { + overworld_ascending_frames(gObjectEventPic_MewOld, 2, 4), }; -static const struct SpriteFrameImage sPicTable_HoOh[] = { - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 0), - overworld_frame(gObjectEventPic_HoOh, 4, 4, 1), +static const struct SpriteFrameImage sPicTable_DusclopsOld[] = { + overworld_ascending_frames(gObjectEventPic_DusclopsOld, 2, 4), +}; + +static const struct SpriteFrameImage sPicTable_AzurillOld[] = { + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzurillOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_KecleonOld[] = { + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_KecleonOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_WingullOld[] = { + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 0), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 2), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 4), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 1), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 1), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 3), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 3), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 5), + overworld_frame(gObjectEventPic_WingullOld, 2, 2, 5), +}; + +static const struct SpriteFrameImage sPicTable_AzumarillOld[] = { + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 0), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 1), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), + overworld_frame(gObjectEventPic_AzumarillOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_PikachuOld[] = { + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 0), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 1), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), + overworld_frame(gObjectEventPic_PikachuOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_ZigzagoonOld[] = { + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 0), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 1), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), + overworld_frame(gObjectEventPic_ZigzagoonOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_SkittyOld[] = { + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 0), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 1), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), + overworld_frame(gObjectEventPic_SkittyOld, 2, 2, 2), +}; + +static const struct SpriteFrameImage sPicTable_PoochyenaOld[] = { + overworld_ascending_frames(gObjectEventPic_PoochyenaOld, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_LugiaOld[] = { + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 0), + overworld_frame(gObjectEventPic_LugiaOld, 4, 4, 1), +}; + +static const struct SpriteFrameImage sPicTable_HoOhOld[] = { + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 0), + overworld_frame(gObjectEventPic_HoOhOld, 4, 4, 1), }; static const struct SpriteFrameImage sPicTable_RubySapphireBrendan[] = { overworld_ascending_frames(gObjectEventPic_RubySapphireBrendanNormal, 2, 4), }; +static const struct SpriteFrameImage sPicTable_KirliaOld[] = { + overworld_ascending_frames(gObjectEventPic_KirliaOld, 2, 4), +}; + static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = { overworld_ascending_frames(gObjectEventPic_RubySapphireMayNormal, 2, 4), }; diff --git a/src/data/object_events/object_event_pic_tables_followers.h b/src/data/object_events/object_event_pic_tables_followers.h new file mode 100644 index 000000000000..46c134d911f0 --- /dev/null +++ b/src/data/object_events/object_event_pic_tables_followers.h @@ -0,0 +1,6155 @@ +static const struct SpriteFrameImage sPicTable_Substitute[] = { + overworld_ascending_frames(gObjectEventPic_Substitute, 4, 4), +}; + +#if OW_POKEMON_OBJECT_EVENTS +#if P_FAMILY_BULBASAUR +static const struct SpriteFrameImage sPicTable_Bulbasaur[] = { + overworld_ascending_frames(gObjectEventPic_Bulbasaur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ivysaur[] = { + overworld_ascending_frames(gObjectEventPic_Ivysaur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Venusaur[] = { + overworld_ascending_frames(gObjectEventPic_Venusaur, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_VenusaurMega[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_VenusaurGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_VenusaurGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER +static const struct SpriteFrameImage sPicTable_Charmander[] = { + overworld_ascending_frames(gObjectEventPic_Charmander, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charmeleon[] = { + overworld_ascending_frames(gObjectEventPic_Charmeleon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charizard[] = { + overworld_ascending_frames(gObjectEventPic_Charizard, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_CharizardMegaX[] = { + overworld_ascending_frames(gObjectEventPic_CharizardMegaX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CharizardMegaY[] = { + overworld_ascending_frames(gObjectEventPic_CharizardMegaY, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CharizardGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CharizardGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE +static const struct SpriteFrameImage sPicTable_Squirtle[] = { + overworld_ascending_frames(gObjectEventPic_Squirtle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wartortle[] = { + overworld_ascending_frames(gObjectEventPic_Wartortle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Blastoise[] = { + overworld_ascending_frames(gObjectEventPic_Blastoise, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_BlastoiseMega[] = { + overworld_ascending_frames(gObjectEventPic_BlastoiseMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_BlastoiseGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_BlastoiseGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE +static const struct SpriteFrameImage sPicTable_Caterpie[] = { + overworld_ascending_frames(gObjectEventPic_Caterpie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metapod[] = { + overworld_ascending_frames(gObjectEventPic_Metapod, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Butterfree[] = { + overworld_ascending_frames(gObjectEventPic_Butterfree, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_ButterfreeGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_ButterfreeGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE +static const struct SpriteFrameImage sPicTable_Weedle[] = { + overworld_ascending_frames(gObjectEventPic_Weedle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kakuna[] = { + overworld_ascending_frames(gObjectEventPic_Kakuna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beedrill[] = { + overworld_ascending_frames(gObjectEventPic_Beedrill, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_BeedrillMega[] = { + overworld_ascending_frames(gObjectEventPic_BeedrillMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY +static const struct SpriteFrameImage sPicTable_Pidgey[] = { + overworld_ascending_frames(gObjectEventPic_Pidgey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pidgeotto[] = { + overworld_ascending_frames(gObjectEventPic_Pidgeotto, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pidgeot[] = { + overworld_ascending_frames(gObjectEventPic_Pidgeot, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_PidgeotMega[] = { + overworld_ascending_frames(gObjectEventPic_PidgeotMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +static const struct SpriteFrameImage sPicTable_Rattata[] = { + overworld_ascending_frames(gObjectEventPic_Rattata, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Raticate[] = { + overworld_ascending_frames(gObjectEventPic_Raticate, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_RattataAlolan[] = { + overworld_ascending_frames(gObjectEventPic_RattataAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RaticateAlolan[] = { + overworld_ascending_frames(gObjectEventPic_RaticateAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW +static const struct SpriteFrameImage sPicTable_Spearow[] = { + overworld_ascending_frames(gObjectEventPic_Spearow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fearow[] = { + overworld_ascending_frames(gObjectEventPic_Fearow, 4, 4), +}; +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS +static const struct SpriteFrameImage sPicTable_Ekans[] = { + overworld_ascending_frames(gObjectEventPic_Ekans, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arbok[] = { + overworld_ascending_frames(gObjectEventPic_Arbok, 4, 4), +}; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Pichu[] = { + overworld_ascending_frames(gObjectEventPic_Pichu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PichuSpikyEared[] = { + overworld_ascending_frames(gObjectEventPic_PichuSpikyEared, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Pikachu[] = { + overworld_ascending_frames(gObjectEventPic_Pikachu, 4, 4), +}; +#if P_COSPLAY_PIKACHU_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuCosplay[] = { + overworld_ascending_frames(gObjectEventPic_PikachuCosplay, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuRockStar[] = { + overworld_ascending_frames(gObjectEventPic_PikachuRockStar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuBelle[] = { + overworld_ascending_frames(gObjectEventPic_PikachuBelle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPopStar[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPopStar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPhD[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPhD, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuLibre[] = { + overworld_ascending_frames(gObjectEventPic_PikachuLibre, 4, 4), +};*/ +#endif //P_COSPLAY_PIKACHU_FORMS + +#if P_CAP_PIKACHU_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuOriginalCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuOriginalCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuHoennCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuHoennCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuSinnohCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuSinnohCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuUnovaCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuUnovaCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuKalosCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuKalosCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuAlolaCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuAlolaCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuPartnerCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuPartnerCap, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PikachuWorldCap[] = { + overworld_ascending_frames(gObjectEventPic_PikachuWorldCap, 4, 4), +};*/ +#endif //P_CAP_PIKACHU_FORMS + +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_PikachuGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_PikachuGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Raichu[] = { + overworld_ascending_frames(gObjectEventPic_Raichu, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_RaichuAlolan[] = { + overworld_ascending_frames(gObjectEventPic_RaichuAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +static const struct SpriteFrameImage sPicTable_Sandshrew[] = { + overworld_ascending_frames(gObjectEventPic_Sandshrew, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sandslash[] = { + overworld_ascending_frames(gObjectEventPic_Sandslash, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_SandshrewAlolan[] = { + overworld_ascending_frames(gObjectEventPic_SandshrewAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SandslashAlolan[] = { + overworld_ascending_frames(gObjectEventPic_SandslashAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN +static const struct SpriteFrameImage sPicTable_NidoranF[] = { + overworld_ascending_frames(gObjectEventPic_NidoranF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidorina[] = { + overworld_ascending_frames(gObjectEventPic_Nidorina, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidoqueen[] = { + overworld_ascending_frames(gObjectEventPic_Nidoqueen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NidoranM[] = { + overworld_ascending_frames(gObjectEventPic_NidoranM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidorino[] = { + overworld_ascending_frames(gObjectEventPic_Nidorino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nidoking[] = { + overworld_ascending_frames(gObjectEventPic_Nidoking, 4, 4), +}; +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Cleffa[] = { + overworld_ascending_frames(gObjectEventPic_Cleffa, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Clefairy[] = { + overworld_ascending_frames(gObjectEventPic_Clefairy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clefable[] = { + overworld_ascending_frames(gObjectEventPic_Clefable, 4, 4), +}; +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +static const struct SpriteFrameImage sPicTable_Vulpix[] = { + overworld_ascending_frames(gObjectEventPic_Vulpix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ninetales[] = { + overworld_ascending_frames(gObjectEventPic_Ninetales, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_VulpixAlolan[] = { + overworld_ascending_frames(gObjectEventPic_VulpixAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NinetalesAlolan[] = { + overworld_ascending_frames(gObjectEventPic_NinetalesAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Igglybuff[] = { + overworld_ascending_frames(gObjectEventPic_Igglybuff, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Jigglypuff[] = { + overworld_ascending_frames(gObjectEventPic_Jigglypuff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wigglytuff[] = { + overworld_ascending_frames(gObjectEventPic_Wigglytuff, 4, 4), +}; +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT +static const struct SpriteFrameImage sPicTable_Zubat[] = { + overworld_ascending_frames(gObjectEventPic_Zubat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golbat[] = { + overworld_ascending_frames(gObjectEventPic_Golbat, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Crobat[] = { + overworld_ascending_frames(gObjectEventPic_Crobat, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH +static const struct SpriteFrameImage sPicTable_Oddish[] = { + overworld_ascending_frames(gObjectEventPic_Oddish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gloom[] = { + overworld_ascending_frames(gObjectEventPic_Gloom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vileplume[] = { + overworld_ascending_frames(gObjectEventPic_Vileplume, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Bellossom[] = { + overworld_ascending_frames(gObjectEventPic_Bellossom, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS +static const struct SpriteFrameImage sPicTable_Paras[] = { + overworld_ascending_frames(gObjectEventPic_Paras, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Parasect[] = { + overworld_ascending_frames(gObjectEventPic_Parasect, 4, 4), +}; +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT +static const struct SpriteFrameImage sPicTable_Venonat[] = { + overworld_ascending_frames(gObjectEventPic_Venonat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Venomoth[] = { + overworld_ascending_frames(gObjectEventPic_Venomoth, 4, 4), +}; +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +static const struct SpriteFrameImage sPicTable_Diglett[] = { + overworld_ascending_frames(gObjectEventPic_Diglett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dugtrio[] = { + overworld_ascending_frames(gObjectEventPic_Dugtrio, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_DiglettAlolan[] = { + overworld_ascending_frames(gObjectEventPic_DiglettAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DugtrioAlolan[] = { + overworld_ascending_frames(gObjectEventPic_DugtrioAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +static const struct SpriteFrameImage sPicTable_Meowth[] = { + overworld_ascending_frames(gObjectEventPic_Meowth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Persian[] = { + overworld_ascending_frames(gObjectEventPic_Persian, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_MeowthAlolan[] = { + overworld_ascending_frames(gObjectEventPic_MeowthAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PersianAlolan[] = { + overworld_ascending_frames(gObjectEventPic_PersianAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MeowthGalarian[] = { + overworld_ascending_frames(gObjectEventPic_MeowthGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Perrserker[] = { + overworld_ascending_frames(gObjectEventPic_Perrserker, 4, 4), +}; +#endif //P_GALARIAN_FORMS + +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MeowthGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_MeowthGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK +static const struct SpriteFrameImage sPicTable_Psyduck[] = { + overworld_ascending_frames(gObjectEventPic_Psyduck, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golduck[] = { + overworld_ascending_frames(gObjectEventPic_Golduck, 4, 4), +}; +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY +static const struct SpriteFrameImage sPicTable_Mankey[] = { + overworld_ascending_frames(gObjectEventPic_Mankey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Primeape[] = { + overworld_ascending_frames(gObjectEventPic_Primeape, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Annihilape[] = { + overworld_ascending_frames(gObjectEventPic_Annihilape, 4, 4), +};*/ +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +static const struct SpriteFrameImage sPicTable_Growlithe[] = { + overworld_ascending_frames(gObjectEventPic_Growlithe, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arcanine[] = { + overworld_ascending_frames(gObjectEventPic_Arcanine, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_GrowlitheHisuian[] = { + overworld_ascending_frames(gObjectEventPic_GrowlitheHisuian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArcanineHisuian[] = { + overworld_ascending_frames(gObjectEventPic_ArcanineHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG +static const struct SpriteFrameImage sPicTable_Poliwag[] = { + overworld_ascending_frames(gObjectEventPic_Poliwag, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Poliwhirl[] = { + overworld_ascending_frames(gObjectEventPic_Poliwhirl, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Poliwrath[] = { + overworld_ascending_frames(gObjectEventPic_Poliwrath, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Politoed[] = { + overworld_ascending_frames(gObjectEventPic_Politoed, 4, 4), +}; + +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA +static const struct SpriteFrameImage sPicTable_Abra[] = { + overworld_ascending_frames(gObjectEventPic_Abra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kadabra[] = { + overworld_ascending_frames(gObjectEventPic_Kadabra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Alakazam[] = { + overworld_ascending_frames(gObjectEventPic_Alakazam, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AlakazamMega[] = { + overworld_ascending_frames(gObjectEventPic_AlakazamMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const struct SpriteFrameImage sPicTable_Machop[] = { + overworld_ascending_frames(gObjectEventPic_Machop, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Machoke[] = { + overworld_ascending_frames(gObjectEventPic_Machoke, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Machamp[] = { + overworld_ascending_frames(gObjectEventPic_Machamp, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MachampGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_MachampGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT +static const struct SpriteFrameImage sPicTable_Bellsprout[] = { + overworld_ascending_frames(gObjectEventPic_Bellsprout, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Weepinbell[] = { + overworld_ascending_frames(gObjectEventPic_Weepinbell, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Victreebel[] = { + overworld_ascending_frames(gObjectEventPic_Victreebel, 4, 4), +}; +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL +static const struct SpriteFrameImage sPicTable_Tentacool[] = { + overworld_ascending_frames(gObjectEventPic_Tentacool, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tentacruel[] = { + overworld_ascending_frames(gObjectEventPic_Tentacruel, 4, 4), +}; +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +static const struct SpriteFrameImage sPicTable_Geodude[] = { + overworld_ascending_frames(gObjectEventPic_Geodude, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Graveler[] = { + overworld_ascending_frames(gObjectEventPic_Graveler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golem[] = { + overworld_ascending_frames(gObjectEventPic_Golem, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_GeodudeAlolan[] = { + overworld_ascending_frames(gObjectEventPic_GeodudeAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GravelerAlolan[] = { + overworld_ascending_frames(gObjectEventPic_GravelerAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GolemAlolan[] = { + overworld_ascending_frames(gObjectEventPic_GolemAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +static const struct SpriteFrameImage sPicTable_Ponyta[] = { + overworld_ascending_frames(gObjectEventPic_Ponyta, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rapidash[] = { + overworld_ascending_frames(gObjectEventPic_Rapidash, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_PonytaGalarian[] = { + overworld_ascending_frames(gObjectEventPic_PonytaGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RapidashGalarian[] = { + overworld_ascending_frames(gObjectEventPic_RapidashGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +static const struct SpriteFrameImage sPicTable_Slowpoke[] = { + overworld_ascending_frames(gObjectEventPic_Slowpoke, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slowbro[] = { + overworld_ascending_frames(gObjectEventPic_Slowbro, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Slowking[] = { + overworld_ascending_frames(gObjectEventPic_Slowking, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SlowbroMega[] = { + overworld_ascending_frames(gObjectEventPic_SlowbroMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS + +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_SlowpokeGalarian[] = { + overworld_ascending_frames(gObjectEventPic_SlowpokeGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SlowbroGalarian[] = { + overworld_ascending_frames(gObjectEventPic_SlowbroGalarian, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_SlowkingGalarian[] = { + overworld_ascending_frames(gObjectEventPic_SlowkingGalarian, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE +static const struct SpriteFrameImage sPicTable_Magnemite[] = { + overworld_ascending_frames(gObjectEventPic_Magnemite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Magneton[] = { + overworld_ascending_frames(gObjectEventPic_Magneton, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magnezone[] = { + overworld_ascending_frames(gObjectEventPic_Magnezone, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD +static const struct SpriteFrameImage sPicTable_Farfetchd[] = { + overworld_ascending_frames(gObjectEventPic_Farfetchd, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_FarfetchdGalarian[] = { + overworld_ascending_frames(gObjectEventPic_FarfetchdGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sirfetchd[] = { + overworld_ascending_frames(gObjectEventPic_Sirfetchd, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO +static const struct SpriteFrameImage sPicTable_Doduo[] = { + overworld_ascending_frames(gObjectEventPic_Doduo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dodrio[] = { + overworld_ascending_frames(gObjectEventPic_Dodrio, 4, 4), +}; +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL +static const struct SpriteFrameImage sPicTable_Seel[] = { + overworld_ascending_frames(gObjectEventPic_Seel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dewgong[] = { + overworld_ascending_frames(gObjectEventPic_Dewgong, 4, 4), +}; +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +static const struct SpriteFrameImage sPicTable_Grimer[] = { + overworld_ascending_frames(gObjectEventPic_Grimer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Muk[] = { + overworld_ascending_frames(gObjectEventPic_Muk, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_GrimerAlolan[] = { + overworld_ascending_frames(gObjectEventPic_GrimerAlolan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MukAlolan[] = { + overworld_ascending_frames(gObjectEventPic_MukAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER +static const struct SpriteFrameImage sPicTable_Shellder[] = { + overworld_ascending_frames(gObjectEventPic_Shellder, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cloyster[] = { + overworld_ascending_frames(gObjectEventPic_Cloyster, 4, 4), +}; +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY +static const struct SpriteFrameImage sPicTable_Gastly[] = { + overworld_ascending_frames(gObjectEventPic_Gastly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Haunter[] = { + overworld_ascending_frames(gObjectEventPic_Haunter, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gengar[] = { + overworld_ascending_frames(gObjectEventPic_Gengar, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GengarMega[] = { + overworld_ascending_frames(gObjectEventPic_GengarMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GengarGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_GengarGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX +static const struct SpriteFrameImage sPicTable_Onix[] = { + overworld_ascending_frames(gObjectEventPic_Onix, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Steelix[] = { + overworld_ascending_frames(gObjectEventPic_Steelix, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SteelixMega[] = { + overworld_ascending_frames(gObjectEventPic_SteelixMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE +static const struct SpriteFrameImage sPicTable_Drowzee[] = { + overworld_ascending_frames(gObjectEventPic_Drowzee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hypno[] = { + overworld_ascending_frames(gObjectEventPic_Hypno, 4, 4), +}; +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY +static const struct SpriteFrameImage sPicTable_Krabby[] = { + overworld_ascending_frames(gObjectEventPic_Krabby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kingler[] = { + overworld_ascending_frames(gObjectEventPic_Kingler, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_KinglerGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_KinglerGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +static const struct SpriteFrameImage sPicTable_Voltorb[] = { + overworld_ascending_frames(gObjectEventPic_Voltorb, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Electrode[] = { + overworld_ascending_frames(gObjectEventPic_Electrode, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_VoltorbHisuian[] = { + overworld_ascending_frames(gObjectEventPic_VoltorbHisuian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ElectrodeHisuian[] = { + overworld_ascending_frames(gObjectEventPic_ElectrodeHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE +static const struct SpriteFrameImage sPicTable_Exeggcute[] = { + overworld_ascending_frames(gObjectEventPic_Exeggcute, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Exeggutor[] = { + overworld_ascending_frames(gObjectEventPic_Exeggutor, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_ExeggutorAlolan[] = { + overworld_ascending_frames(gObjectEventPic_ExeggutorAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE +static const struct SpriteFrameImage sPicTable_Cubone[] = { + overworld_ascending_frames(gObjectEventPic_Cubone, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Marowak[] = { + overworld_ascending_frames(gObjectEventPic_Marowak, 4, 4), +}; +#if P_ALOLAN_FORMS +static const struct SpriteFrameImage sPicTable_MarowakAlolan[] = { + overworld_ascending_frames(gObjectEventPic_MarowakAlolan, 4, 4), +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Tyrogue[] = { + overworld_ascending_frames(gObjectEventPic_Tyrogue, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Hitmonlee[] = { + overworld_ascending_frames(gObjectEventPic_Hitmonlee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hitmonchan[] = { + overworld_ascending_frames(gObjectEventPic_Hitmonchan, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Hitmontop[] = { + overworld_ascending_frames(gObjectEventPic_Hitmontop, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG +static const struct SpriteFrameImage sPicTable_Lickitung[] = { + overworld_ascending_frames(gObjectEventPic_Lickitung, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Lickilicky[] = { + overworld_ascending_frames(gObjectEventPic_Lickilicky, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING +static const struct SpriteFrameImage sPicTable_Koffing[] = { + overworld_ascending_frames(gObjectEventPic_Koffing, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Weezing[] = { + overworld_ascending_frames(gObjectEventPic_Weezing, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_WeezingGalarian[] = { + overworld_ascending_frames(gObjectEventPic_WeezingGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN +static const struct SpriteFrameImage sPicTable_Rhyhorn[] = { + overworld_ascending_frames(gObjectEventPic_Rhyhorn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rhydon[] = { + overworld_ascending_frames(gObjectEventPic_Rhydon, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Rhyperior[] = { + overworld_ascending_frames(gObjectEventPic_Rhyperior, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Happiny[] = { + overworld_ascending_frames(gObjectEventPic_Happiny, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chansey[] = { + overworld_ascending_frames(gObjectEventPic_Chansey, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Blissey[] = { + overworld_ascending_frames(gObjectEventPic_Blissey, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA +static const struct SpriteFrameImage sPicTable_Tangela[] = { + overworld_ascending_frames(gObjectEventPic_Tangela, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Tangrowth[] = { + overworld_ascending_frames(gObjectEventPic_Tangrowth, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN +static const struct SpriteFrameImage sPicTable_Kangaskhan[] = { + overworld_ascending_frames(gObjectEventPic_Kangaskhan, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_KangaskhanMega[] = { + overworld_ascending_frames(gObjectEventPic_KangaskhanMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN + +#if P_FAMILY_HORSEA +static const struct SpriteFrameImage sPicTable_Horsea[] = { + overworld_ascending_frames(gObjectEventPic_Horsea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Seadra[] = { + overworld_ascending_frames(gObjectEventPic_Seadra, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Kingdra[] = { + overworld_ascending_frames(gObjectEventPic_Kingdra, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN +static const struct SpriteFrameImage sPicTable_Goldeen[] = { + overworld_ascending_frames(gObjectEventPic_Goldeen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Seaking[] = { + overworld_ascending_frames(gObjectEventPic_Seaking, 4, 4), +}; +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU +static const struct SpriteFrameImage sPicTable_Staryu[] = { + overworld_ascending_frames(gObjectEventPic_Staryu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Starmie[] = { + overworld_ascending_frames(gObjectEventPic_Starmie, 4, 4), +}; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_MimeJr[] = { + overworld_ascending_frames(gObjectEventPic_MimeJr, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_MrMime[] = { + overworld_ascending_frames(gObjectEventPic_MrMime, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MrMimeGalarian[] = { + overworld_ascending_frames(gObjectEventPic_MrMimeGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MrRime[] = { + overworld_ascending_frames(gObjectEventPic_MrRime, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER +static const struct SpriteFrameImage sPicTable_Scyther[] = { + overworld_ascending_frames(gObjectEventPic_Scyther, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Scizor[] = { + overworld_ascending_frames(gObjectEventPic_Scizor, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_ScizorMega[] = { + overworld_ascending_frames(gObjectEventPic_ScizorMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Kleavor[] = { + overworld_ascending_frames(gObjectEventPic_Kleavor, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Smoochum[] = { + overworld_ascending_frames(gObjectEventPic_Smoochum, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Jynx[] = { + overworld_ascending_frames(gObjectEventPic_Jynx, 4, 4), +}; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Elekid[] = { + overworld_ascending_frames(gObjectEventPic_Elekid, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Electabuzz[] = { + overworld_ascending_frames(gObjectEventPic_Electabuzz, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Electivire[] = { + overworld_ascending_frames(gObjectEventPic_Electivire, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magby[] = { + overworld_ascending_frames(gObjectEventPic_Magby, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magmar[] = { + overworld_ascending_frames(gObjectEventPic_Magmar, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Magmortar[] = { + overworld_ascending_frames(gObjectEventPic_Magmortar, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +static const struct SpriteFrameImage sPicTable_Pinsir[] = { + overworld_ascending_frames(gObjectEventPic_Pinsir, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_PinsirMega[] = { + overworld_ascending_frames(gObjectEventPic_PinsirMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +static const struct SpriteFrameImage sPicTable_Tauros[] = { + overworld_ascending_frames(gObjectEventPic_Tauros, 4, 4), +}; +#if P_PALDEAN_FORMS +/*static const struct SpriteFrameImage sPicTable_TaurosPaldeanCombatBreed[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeanCombatBreed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TaurosPaldeanBlazeBreed[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeanBlazeBreed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TaurosPaldeanAquaBreed[] = { + overworld_ascending_frames(gObjectEventPic_TaurosPaldeanAquaBreed, 4, 4), +};*/ +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP +static const struct SpriteFrameImage sPicTable_Magikarp[] = { + overworld_ascending_frames(gObjectEventPic_Magikarp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gyarados[] = { + overworld_ascending_frames(gObjectEventPic_Gyarados, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GyaradosMega[] = { + overworld_ascending_frames(gObjectEventPic_GyaradosMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +static const struct SpriteFrameImage sPicTable_Lapras[] = { + overworld_ascending_frames(gObjectEventPic_Lapras, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_LaprasGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_LaprasGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO +static const struct SpriteFrameImage sPicTable_Ditto[] = { + overworld_ascending_frames(gObjectEventPic_Ditto, 4, 4), +}; +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +static const struct SpriteFrameImage sPicTable_Eevee[] = { + overworld_ascending_frames(gObjectEventPic_Eevee, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_EeveeGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_EeveeGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Vaporeon[] = { + overworld_ascending_frames(gObjectEventPic_Vaporeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Jolteon[] = { + overworld_ascending_frames(gObjectEventPic_Jolteon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flareon[] = { + overworld_ascending_frames(gObjectEventPic_Flareon, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Espeon[] = { + overworld_ascending_frames(gObjectEventPic_Espeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Umbreon[] = { + overworld_ascending_frames(gObjectEventPic_Umbreon, 4, 4), +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Leafeon[] = { + overworld_ascending_frames(gObjectEventPic_Leafeon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glaceon[] = { + overworld_ascending_frames(gObjectEventPic_Glaceon, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Sylveon[] = { + overworld_ascending_frames(gObjectEventPic_Sylveon, 4, 4), +}; +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON +static const struct SpriteFrameImage sPicTable_Porygon[] = { + overworld_ascending_frames(gObjectEventPic_Porygon, 4, 4), +}; +#if P_GEN_2_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Porygon2[] = { + overworld_ascending_frames(gObjectEventPic_Porygon2, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_PorygonZ[] = { + overworld_ascending_frames(gObjectEventPic_PorygonZ, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE +static const struct SpriteFrameImage sPicTable_Omanyte[] = { + overworld_ascending_frames(gObjectEventPic_Omanyte, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Omastar[] = { + overworld_ascending_frames(gObjectEventPic_Omastar, 4, 4), +}; +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO +static const struct SpriteFrameImage sPicTable_Kabuto[] = { + overworld_ascending_frames(gObjectEventPic_Kabuto, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kabutops[] = { + overworld_ascending_frames(gObjectEventPic_Kabutops, 4, 4), +}; +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +static const struct SpriteFrameImage sPicTable_Aerodactyl[] = { + overworld_ascending_frames(gObjectEventPic_Aerodactyl, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AerodactylMega[] = { + overworld_ascending_frames(gObjectEventPic_AerodactylMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Munchlax[] = { + overworld_ascending_frames(gObjectEventPic_Munchlax, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Snorlax[] = { + overworld_ascending_frames(gObjectEventPic_Snorlax, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_SnorlaxGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_SnorlaxGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +static const struct SpriteFrameImage sPicTable_Articuno[] = { + overworld_ascending_frames(gObjectEventPic_Articuno, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ArticunoGalarian[] = { + overworld_ascending_frames(gObjectEventPic_ArticunoGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +static const struct SpriteFrameImage sPicTable_Zapdos[] = { + overworld_ascending_frames(gObjectEventPic_Zapdos, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZapdosGalarian[] = { + overworld_ascending_frames(gObjectEventPic_ZapdosGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +static const struct SpriteFrameImage sPicTable_Moltres[] = { + overworld_ascending_frames(gObjectEventPic_Moltres, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_MoltresGalarian[] = { + overworld_ascending_frames(gObjectEventPic_MoltresGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI +static const struct SpriteFrameImage sPicTable_Dratini[] = { + overworld_ascending_frames(gObjectEventPic_Dratini, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragonair[] = { + overworld_ascending_frames(gObjectEventPic_Dragonair, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragonite[] = { + overworld_ascending_frames(gObjectEventPic_Dragonite, 4, 4), +}; +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +static const struct SpriteFrameImage sPicTable_Mewtwo[] = { + overworld_ascending_frames(gObjectEventPic_Mewtwo, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_MewtwoMegaX[] = { + overworld_ascending_frames(gObjectEventPic_MewtwoMegaX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MewtwoMegaY[] = { + overworld_ascending_frames(gObjectEventPic_MewtwoMegaY, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW +static const struct SpriteFrameImage sPicTable_Mew[] = { + overworld_ascending_frames(gObjectEventPic_Mew, 4, 4), +}; +#endif //P_FAMILY_MEW + +#if P_FAMILY_CHIKORITA +static const struct SpriteFrameImage sPicTable_Chikorita[] = { + overworld_ascending_frames(gObjectEventPic_Chikorita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bayleef[] = { + overworld_ascending_frames(gObjectEventPic_Bayleef, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Meganium[] = { + overworld_ascending_frames(gObjectEventPic_Meganium, 4, 4), +}; +#endif //P_FAMILY_CHIKORITA + +#if P_FAMILY_CYNDAQUIL +static const struct SpriteFrameImage sPicTable_Cyndaquil[] = { + overworld_ascending_frames(gObjectEventPic_Cyndaquil, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quilava[] = { + overworld_ascending_frames(gObjectEventPic_Quilava, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Typhlosion[] = { + overworld_ascending_frames(gObjectEventPic_Typhlosion, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_TyphlosionHisuian[] = { + overworld_ascending_frames(gObjectEventPic_TyphlosionHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE +static const struct SpriteFrameImage sPicTable_Totodile[] = { + overworld_ascending_frames(gObjectEventPic_Totodile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Croconaw[] = { + overworld_ascending_frames(gObjectEventPic_Croconaw, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Feraligatr[] = { + overworld_ascending_frames(gObjectEventPic_Feraligatr, 4, 4), +}; +#endif //P_FAMILY_TOTODILE + +#if P_FAMILY_SENTRET +static const struct SpriteFrameImage sPicTable_Sentret[] = { + overworld_ascending_frames(gObjectEventPic_Sentret, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Furret[] = { + overworld_ascending_frames(gObjectEventPic_Furret, 4, 4), +}; +#endif //P_FAMILY_SENTRET + +#if P_FAMILY_HOOTHOOT +static const struct SpriteFrameImage sPicTable_Hoothoot[] = { + overworld_ascending_frames(gObjectEventPic_Hoothoot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Noctowl[] = { + overworld_ascending_frames(gObjectEventPic_Noctowl, 4, 4), +}; +#endif //P_FAMILY_HOOTHOOT + +#if P_FAMILY_LEDYBA +static const struct SpriteFrameImage sPicTable_Ledyba[] = { + overworld_ascending_frames(gObjectEventPic_Ledyba, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ledian[] = { + overworld_ascending_frames(gObjectEventPic_Ledian, 4, 4), +}; +#endif //P_FAMILY_LEDYBA + +#if P_FAMILY_SPINARAK +static const struct SpriteFrameImage sPicTable_Spinarak[] = { + overworld_ascending_frames(gObjectEventPic_Spinarak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ariados[] = { + overworld_ascending_frames(gObjectEventPic_Ariados, 4, 4), +}; +#endif //P_FAMILY_SPINARAK + +#if P_FAMILY_CHINCHOU +static const struct SpriteFrameImage sPicTable_Chinchou[] = { + overworld_ascending_frames(gObjectEventPic_Chinchou, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lanturn[] = { + overworld_ascending_frames(gObjectEventPic_Lanturn, 4, 4), +}; +#endif //P_FAMILY_CHINCHOU + +#if P_FAMILY_TOGEPI +static const struct SpriteFrameImage sPicTable_Togepi[] = { + overworld_ascending_frames(gObjectEventPic_Togepi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Togetic[] = { + overworld_ascending_frames(gObjectEventPic_Togetic, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Togekiss[] = { + overworld_ascending_frames(gObjectEventPic_Togekiss, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU +static const struct SpriteFrameImage sPicTable_Natu[] = { + overworld_ascending_frames(gObjectEventPic_Natu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Xatu[] = { + overworld_ascending_frames(gObjectEventPic_Xatu, 4, 4), +}; +#endif //P_FAMILY_NATU + +#if P_FAMILY_MAREEP +static const struct SpriteFrameImage sPicTable_Mareep[] = { + overworld_ascending_frames(gObjectEventPic_Mareep, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flaaffy[] = { + overworld_ascending_frames(gObjectEventPic_Flaaffy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ampharos[] = { + overworld_ascending_frames(gObjectEventPic_Ampharos, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AmpharosMega[] = { + overworld_ascending_frames(gObjectEventPic_AmpharosMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP + +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Azurill[] = { + overworld_ascending_frames(gObjectEventPic_Azurill, 4, 4), +}; +#endif //P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Marill[] = { + overworld_ascending_frames(gObjectEventPic_Marill, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Azumarill[] = { + overworld_ascending_frames(gObjectEventPic_Azumarill, 4, 4), +}; +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Bonsly[] = { + overworld_ascending_frames(gObjectEventPic_Bonsly, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Sudowoodo[] = { + overworld_ascending_frames(gObjectEventPic_Sudowoodo, 4, 4), +}; +#endif //P_FAMILY_SUDOWOODO + +#if P_FAMILY_HOPPIP +static const struct SpriteFrameImage sPicTable_Hoppip[] = { + overworld_ascending_frames(gObjectEventPic_Hoppip, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skiploom[] = { + overworld_ascending_frames(gObjectEventPic_Skiploom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Jumpluff[] = { + overworld_ascending_frames(gObjectEventPic_Jumpluff, 4, 4), +}; +#endif //P_FAMILY_HOPPIP + +#if P_FAMILY_AIPOM +static const struct SpriteFrameImage sPicTable_Aipom[] = { + overworld_ascending_frames(gObjectEventPic_Aipom, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Ambipom[] = { + overworld_ascending_frames(gObjectEventPic_Ambipom, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN +static const struct SpriteFrameImage sPicTable_Sunkern[] = { + overworld_ascending_frames(gObjectEventPic_Sunkern, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sunflora[] = { + overworld_ascending_frames(gObjectEventPic_Sunflora, 4, 4), +}; +#endif //P_FAMILY_SUNKERN + +#if P_FAMILY_YANMA +static const struct SpriteFrameImage sPicTable_Yanma[] = { + overworld_ascending_frames(gObjectEventPic_Yanma, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Yanmega[] = { + overworld_ascending_frames(gObjectEventPic_Yanmega, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER +static const struct SpriteFrameImage sPicTable_Wooper[] = { + overworld_ascending_frames(gObjectEventPic_Wooper, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quagsire[] = { + overworld_ascending_frames(gObjectEventPic_Quagsire, 4, 4), +}; +#if P_PALDEAN_FORMS +/*static const struct SpriteFrameImage sPicTable_WooperPaldean[] = { + overworld_ascending_frames(gObjectEventPic_WooperPaldean, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clodsire[] = { + overworld_ascending_frames(gObjectEventPic_Clodsire, 4, 4), +};*/ +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER + +#if P_FAMILY_MURKROW +static const struct SpriteFrameImage sPicTable_Murkrow[] = { + overworld_ascending_frames(gObjectEventPic_Murkrow, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Honchkrow[] = { + overworld_ascending_frames(gObjectEventPic_Honchkrow, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW + +#if P_FAMILY_MISDREAVUS +static const struct SpriteFrameImage sPicTable_Misdreavus[] = { + overworld_ascending_frames(gObjectEventPic_Misdreavus, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mismagius[] = { + overworld_ascending_frames(gObjectEventPic_Mismagius, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN +static const struct SpriteFrameImage sPicTable_UnownA[] = { + overworld_ascending_frames(gObjectEventPic_UnownA, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownB[] = { + overworld_ascending_frames(gObjectEventPic_UnownB, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownC[] = { + overworld_ascending_frames(gObjectEventPic_UnownC, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownD[] = { + overworld_ascending_frames(gObjectEventPic_UnownD, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownE[] = { + overworld_ascending_frames(gObjectEventPic_UnownE, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownF[] = { + overworld_ascending_frames(gObjectEventPic_UnownF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownG[] = { + overworld_ascending_frames(gObjectEventPic_UnownG, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownH[] = { + overworld_ascending_frames(gObjectEventPic_UnownH, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownI[] = { + overworld_ascending_frames(gObjectEventPic_UnownI, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownJ[] = { + overworld_ascending_frames(gObjectEventPic_UnownJ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownK[] = { + overworld_ascending_frames(gObjectEventPic_UnownK, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownL[] = { + overworld_ascending_frames(gObjectEventPic_UnownL, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownM[] = { + overworld_ascending_frames(gObjectEventPic_UnownM, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownN[] = { + overworld_ascending_frames(gObjectEventPic_UnownN, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownO[] = { + overworld_ascending_frames(gObjectEventPic_UnownO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownP[] = { + overworld_ascending_frames(gObjectEventPic_UnownP, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownQ[] = { + overworld_ascending_frames(gObjectEventPic_UnownQ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownR[] = { + overworld_ascending_frames(gObjectEventPic_UnownR, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownS[] = { + overworld_ascending_frames(gObjectEventPic_UnownS, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownT[] = { + overworld_ascending_frames(gObjectEventPic_UnownT, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownU[] = { + overworld_ascending_frames(gObjectEventPic_UnownU, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownV[] = { + overworld_ascending_frames(gObjectEventPic_UnownV, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownW[] = { + overworld_ascending_frames(gObjectEventPic_UnownW, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownX[] = { + overworld_ascending_frames(gObjectEventPic_UnownX, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownY[] = { + overworld_ascending_frames(gObjectEventPic_UnownY, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownZ[] = { + overworld_ascending_frames(gObjectEventPic_UnownZ, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownExclamationMark[] = { + overworld_ascending_frames(gObjectEventPic_UnownExclamationMark, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnownQuestionMark[] = { + overworld_ascending_frames(gObjectEventPic_UnownQuestionMark, 4, 4), +}; +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wynaut[] = { + overworld_ascending_frames(gObjectEventPic_Wynaut, 4, 4), +}; +#endif //P_GEN_3_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wobbuffet[] = { + overworld_ascending_frames(gObjectEventPic_Wobbuffet, 4, 4), +}; +#endif //P_FAMILY_WOBBUFFET + +#if P_FAMILY_GIRAFARIG +static const struct SpriteFrameImage sPicTable_Girafarig[] = { + overworld_ascending_frames(gObjectEventPic_Girafarig, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Farigiraf[] = { + overworld_ascending_frames(gObjectEventPic_Farigiraf, 4, 4), +};*/ +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO +static const struct SpriteFrameImage sPicTable_Pineco[] = { + overworld_ascending_frames(gObjectEventPic_Pineco, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Forretress[] = { + overworld_ascending_frames(gObjectEventPic_Forretress, 4, 4), +}; +#endif //P_FAMILY_PINECO + +#if P_FAMILY_DUNSPARCE +static const struct SpriteFrameImage sPicTable_Dunsparce[] = { + overworld_ascending_frames(gObjectEventPic_Dunsparce, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Dudunsparce[] = { + overworld_ascending_frames(gObjectEventPic_Dudunsparce, 4, 4), +};*/ + + +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR +static const struct SpriteFrameImage sPicTable_Gligar[] = { + overworld_ascending_frames(gObjectEventPic_Gligar, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Gliscor[] = { + overworld_ascending_frames(gObjectEventPic_Gliscor, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR + +#if P_FAMILY_SNUBBULL +static const struct SpriteFrameImage sPicTable_Snubbull[] = { + overworld_ascending_frames(gObjectEventPic_Snubbull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Granbull[] = { + overworld_ascending_frames(gObjectEventPic_Granbull, 4, 4), +}; +#endif //P_FAMILY_SNUBBULL + +#if P_FAMILY_QWILFISH +static const struct SpriteFrameImage sPicTable_Qwilfish[] = { + overworld_ascending_frames(gObjectEventPic_Qwilfish, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_QwilfishHisuian[] = { + overworld_ascending_frames(gObjectEventPic_QwilfishHisuian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Overqwil[] = { + overworld_ascending_frames(gObjectEventPic_Overqwil, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE +static const struct SpriteFrameImage sPicTable_Shuckle[] = { + overworld_ascending_frames(gObjectEventPic_Shuckle, 4, 4), +}; +#endif //P_FAMILY_SHUCKLE + +#if P_FAMILY_HERACROSS +static const struct SpriteFrameImage sPicTable_Heracross[] = { + overworld_ascending_frames(gObjectEventPic_Heracross, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_HeracrossMega[] = { + overworld_ascending_frames(gObjectEventPic_HeracrossMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS + +#if P_FAMILY_SNEASEL +static const struct SpriteFrameImage sPicTable_Sneasel[] = { + overworld_ascending_frames(gObjectEventPic_Sneasel, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Weavile[] = { + overworld_ascending_frames(gObjectEventPic_Weavile, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SneaselHisuian[] = { + overworld_ascending_frames(gObjectEventPic_SneaselHisuian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sneasler[] = { + overworld_ascending_frames(gObjectEventPic_Sneasler, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA +static const struct SpriteFrameImage sPicTable_Teddiursa[] = { + overworld_ascending_frames(gObjectEventPic_Teddiursa, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ursaring[] = { + overworld_ascending_frames(gObjectEventPic_Ursaring, 4, 4), +}; +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Ursaluna[] = { + overworld_ascending_frames(gObjectEventPic_Ursaluna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UrsalunaBloodmoon[] = { + overworld_ascending_frames(gObjectEventPic_UrsalunaBloodmoon, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA +static const struct SpriteFrameImage sPicTable_Slugma[] = { + overworld_ascending_frames(gObjectEventPic_Slugma, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Magcargo[] = { + overworld_ascending_frames(gObjectEventPic_Magcargo, 4, 4), +}; +#endif //P_FAMILY_SLUGMA + +#if P_FAMILY_SWINUB +static const struct SpriteFrameImage sPicTable_Swinub[] = { + overworld_ascending_frames(gObjectEventPic_Swinub, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Piloswine[] = { + overworld_ascending_frames(gObjectEventPic_Piloswine, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mamoswine[] = { + overworld_ascending_frames(gObjectEventPic_Mamoswine, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA +static const struct SpriteFrameImage sPicTable_Corsola[] = { + overworld_ascending_frames(gObjectEventPic_Corsola, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_CorsolaGalarian[] = { + overworld_ascending_frames(gObjectEventPic_CorsolaGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cursola[] = { + overworld_ascending_frames(gObjectEventPic_Cursola, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID +static const struct SpriteFrameImage sPicTable_Remoraid[] = { + overworld_ascending_frames(gObjectEventPic_Remoraid, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Octillery[] = { + overworld_ascending_frames(gObjectEventPic_Octillery, 4, 4), +}; +#endif //P_FAMILY_REMORAID + +#if P_FAMILY_DELIBIRD +static const struct SpriteFrameImage sPicTable_Delibird[] = { + overworld_ascending_frames(gObjectEventPic_Delibird, 4, 4), +}; +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mantyke[] = { + overworld_ascending_frames(gObjectEventPic_Mantyke, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Mantine[] = { + overworld_ascending_frames(gObjectEventPic_Mantine, 4, 4), +}; +#endif //P_FAMILY_MANTINE + +#if P_FAMILY_SKARMORY +static const struct SpriteFrameImage sPicTable_Skarmory[] = { + overworld_ascending_frames(gObjectEventPic_Skarmory, 4, 4), +}; +#endif //P_FAMILY_SKARMORY + +#if P_FAMILY_HOUNDOUR +static const struct SpriteFrameImage sPicTable_Houndour[] = { + overworld_ascending_frames(gObjectEventPic_Houndour, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Houndoom[] = { + overworld_ascending_frames(gObjectEventPic_Houndoom, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_HoundoomMega[] = { + overworld_ascending_frames(gObjectEventPic_HoundoomMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR + +#if P_FAMILY_PHANPY +static const struct SpriteFrameImage sPicTable_Phanpy[] = { + overworld_ascending_frames(gObjectEventPic_Phanpy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Donphan[] = { + overworld_ascending_frames(gObjectEventPic_Donphan, 4, 4), +}; +#endif //P_FAMILY_PHANPY + +#if P_FAMILY_STANTLER +static const struct SpriteFrameImage sPicTable_Stantler[] = { + overworld_ascending_frames(gObjectEventPic_Stantler, 4, 4), +}; +#if P_GEN_8_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Wyrdeer[] = { + overworld_ascending_frames(gObjectEventPic_Wyrdeer, 4, 4), +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE +static const struct SpriteFrameImage sPicTable_Smeargle[] = { + overworld_ascending_frames(gObjectEventPic_Smeargle, 4, 4), +}; +#endif //P_FAMILY_SMEARGLE + +#if P_FAMILY_MILTANK +static const struct SpriteFrameImage sPicTable_Miltank[] = { + overworld_ascending_frames(gObjectEventPic_Miltank, 4, 4), +}; +#endif //P_FAMILY_MILTANK + +#if P_FAMILY_RAIKOU +static const struct SpriteFrameImage sPicTable_Raikou[] = { + overworld_ascending_frames(gObjectEventPic_Raikou, 4, 4), +}; +#endif //P_FAMILY_RAIKOU + +#if P_FAMILY_ENTEI +static const struct SpriteFrameImage sPicTable_Entei[] = { + overworld_ascending_frames(gObjectEventPic_Entei, 4, 4), +}; +#endif //P_FAMILY_ENTEI + +#if P_FAMILY_SUICUNE +static const struct SpriteFrameImage sPicTable_Suicune[] = { + overworld_ascending_frames(gObjectEventPic_Suicune, 4, 4), +}; +#endif //P_FAMILY_SUICUNE + +#if P_FAMILY_LARVITAR +static const struct SpriteFrameImage sPicTable_Larvitar[] = { + overworld_ascending_frames(gObjectEventPic_Larvitar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pupitar[] = { + overworld_ascending_frames(gObjectEventPic_Pupitar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tyranitar[] = { + overworld_ascending_frames(gObjectEventPic_Tyranitar, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_TyranitarMega[] = { + overworld_ascending_frames(gObjectEventPic_TyranitarMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR + +#if P_FAMILY_LUGIA +static const struct SpriteFrameImage sPicTable_Lugia[] = { + overworld_ascending_frames(gObjectEventPic_Lugia, 4, 4), +}; +#endif //P_FAMILY_LUGIA + +#if P_FAMILY_HO_OH +static const struct SpriteFrameImage sPicTable_HoOh[] = { + overworld_ascending_frames(gObjectEventPic_HoOh, 4, 4), +}; +#endif //P_FAMILY_HO_OH + +#if P_FAMILY_CELEBI +static const struct SpriteFrameImage sPicTable_Celebi[] = { + overworld_ascending_frames(gObjectEventPic_Celebi, 4, 4), +}; +#endif //P_FAMILY_CELEBI + +#if P_FAMILY_TREECKO +static const struct SpriteFrameImage sPicTable_Treecko[] = { + overworld_ascending_frames(gObjectEventPic_Treecko, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grovyle[] = { + overworld_ascending_frames(gObjectEventPic_Grovyle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sceptile[] = { + overworld_ascending_frames(gObjectEventPic_Sceptile, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SceptileMega[] = { + overworld_ascending_frames(gObjectEventPic_SceptileMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO + +#if P_FAMILY_TORCHIC +static const struct SpriteFrameImage sPicTable_Torchic[] = { + overworld_ascending_frames(gObjectEventPic_Torchic, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Combusken[] = { + overworld_ascending_frames(gObjectEventPic_Combusken, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Blaziken[] = { + overworld_ascending_frames(gObjectEventPic_Blaziken, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_BlazikenMega[] = { + overworld_ascending_frames(gObjectEventPic_BlazikenMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC + +#if P_FAMILY_MUDKIP +static const struct SpriteFrameImage sPicTable_Mudkip[] = { + overworld_ascending_frames(gObjectEventPic_Mudkip, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Marshtomp[] = { + overworld_ascending_frames(gObjectEventPic_Marshtomp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swampert[] = { + overworld_ascending_frames(gObjectEventPic_Swampert, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SwampertMega[] = { + overworld_ascending_frames(gObjectEventPic_SwampertMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP + +#if P_FAMILY_POOCHYENA +static const struct SpriteFrameImage sPicTable_Poochyena[] = { + overworld_ascending_frames(gObjectEventPic_Poochyena, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mightyena[] = { + overworld_ascending_frames(gObjectEventPic_Mightyena, 4, 4), +}; +#endif //P_FAMILY_POOCHYENA + +#if P_FAMILY_ZIGZAGOON +static const struct SpriteFrameImage sPicTable_Zigzagoon[] = { + overworld_ascending_frames(gObjectEventPic_Zigzagoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Linoone[] = { + overworld_ascending_frames(gObjectEventPic_Linoone, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZigzagoonGalarian[] = { + overworld_ascending_frames(gObjectEventPic_ZigzagoonGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LinooneGalarian[] = { + overworld_ascending_frames(gObjectEventPic_LinooneGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Obstagoon[] = { + overworld_ascending_frames(gObjectEventPic_Obstagoon, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE +static const struct SpriteFrameImage sPicTable_Wurmple[] = { + overworld_ascending_frames(gObjectEventPic_Wurmple, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Silcoon[] = { + overworld_ascending_frames(gObjectEventPic_Silcoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beautifly[] = { + overworld_ascending_frames(gObjectEventPic_Beautifly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cascoon[] = { + overworld_ascending_frames(gObjectEventPic_Cascoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dustox[] = { + overworld_ascending_frames(gObjectEventPic_Dustox, 4, 4), +}; +#endif //P_FAMILY_WURMPLE + +#if P_FAMILY_LOTAD +static const struct SpriteFrameImage sPicTable_Lotad[] = { + overworld_ascending_frames(gObjectEventPic_Lotad, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lombre[] = { + overworld_ascending_frames(gObjectEventPic_Lombre, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ludicolo[] = { + overworld_ascending_frames(gObjectEventPic_Ludicolo, 4, 4), +}; +#endif //P_FAMILY_LOTAD + +#if P_FAMILY_SEEDOT +static const struct SpriteFrameImage sPicTable_Seedot[] = { + overworld_ascending_frames(gObjectEventPic_Seedot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Nuzleaf[] = { + overworld_ascending_frames(gObjectEventPic_Nuzleaf, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shiftry[] = { + overworld_ascending_frames(gObjectEventPic_Shiftry, 4, 4), +}; +#endif //P_FAMILY_SEEDOT + +#if P_FAMILY_TAILLOW +static const struct SpriteFrameImage sPicTable_Taillow[] = { + overworld_ascending_frames(gObjectEventPic_Taillow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swellow[] = { + overworld_ascending_frames(gObjectEventPic_Swellow, 4, 4), +}; +#endif //P_FAMILY_TAILLOW + +#if P_FAMILY_WINGULL +static const struct SpriteFrameImage sPicTable_Wingull[] = { + overworld_ascending_frames(gObjectEventPic_Wingull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pelipper[] = { + overworld_ascending_frames(gObjectEventPic_Pelipper, 4, 4), +}; +#endif //P_FAMILY_WINGULL + +#if P_FAMILY_RALTS +static const struct SpriteFrameImage sPicTable_Ralts[] = { + overworld_ascending_frames(gObjectEventPic_Ralts, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kirlia[] = { + overworld_ascending_frames(gObjectEventPic_Kirlia, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gardevoir[] = { + overworld_ascending_frames(gObjectEventPic_Gardevoir, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GardevoirMega[] = { + overworld_ascending_frames(gObjectEventPic_GardevoirMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Gallade[] = { + overworld_ascending_frames(gObjectEventPic_Gallade, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GalladeMega[] = { + overworld_ascending_frames(gObjectEventPic_GalladeMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT +static const struct SpriteFrameImage sPicTable_Surskit[] = { + overworld_ascending_frames(gObjectEventPic_Surskit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Masquerain[] = { + overworld_ascending_frames(gObjectEventPic_Masquerain, 4, 4), +}; +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH +static const struct SpriteFrameImage sPicTable_Shroomish[] = { + overworld_ascending_frames(gObjectEventPic_Shroomish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Breloom[] = { + overworld_ascending_frames(gObjectEventPic_Breloom, 4, 4), +}; +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH +static const struct SpriteFrameImage sPicTable_Slakoth[] = { + overworld_ascending_frames(gObjectEventPic_Slakoth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vigoroth[] = { + overworld_ascending_frames(gObjectEventPic_Vigoroth, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slaking[] = { + overworld_ascending_frames(gObjectEventPic_Slaking, 4, 4), +}; +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA +static const struct SpriteFrameImage sPicTable_Nincada[] = { + overworld_ascending_frames(gObjectEventPic_Nincada, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ninjask[] = { + overworld_ascending_frames(gObjectEventPic_Ninjask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shedinja[] = { + overworld_ascending_frames(gObjectEventPic_Shedinja, 4, 4), +}; +#endif //P_FAMILY_NINCADA + +#if P_FAMILY_WHISMUR +static const struct SpriteFrameImage sPicTable_Whismur[] = { + overworld_ascending_frames(gObjectEventPic_Whismur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Loudred[] = { + overworld_ascending_frames(gObjectEventPic_Loudred, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Exploud[] = { + overworld_ascending_frames(gObjectEventPic_Exploud, 4, 4), +}; +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA +static const struct SpriteFrameImage sPicTable_Makuhita[] = { + overworld_ascending_frames(gObjectEventPic_Makuhita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hariyama[] = { + overworld_ascending_frames(gObjectEventPic_Hariyama, 4, 4), +}; +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS +static const struct SpriteFrameImage sPicTable_Nosepass[] = { + overworld_ascending_frames(gObjectEventPic_Nosepass, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Probopass[] = { + overworld_ascending_frames(gObjectEventPic_Probopass, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY +static const struct SpriteFrameImage sPicTable_Skitty[] = { + overworld_ascending_frames(gObjectEventPic_Skitty, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Delcatty[] = { + overworld_ascending_frames(gObjectEventPic_Delcatty, 4, 4), +}; +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE +static const struct SpriteFrameImage sPicTable_Sableye[] = { + overworld_ascending_frames(gObjectEventPic_Sableye, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SableyeMega[] = { + overworld_ascending_frames(gObjectEventPic_SableyeMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +static const struct SpriteFrameImage sPicTable_Mawile[] = { + overworld_ascending_frames(gObjectEventPic_Mawile, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_MawileMega[] = { + overworld_ascending_frames(gObjectEventPic_MawileMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON +static const struct SpriteFrameImage sPicTable_Aron[] = { + overworld_ascending_frames(gObjectEventPic_Aron, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lairon[] = { + overworld_ascending_frames(gObjectEventPic_Lairon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aggron[] = { + overworld_ascending_frames(gObjectEventPic_Aggron, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AggronMega[] = { + overworld_ascending_frames(gObjectEventPic_AggronMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE +static const struct SpriteFrameImage sPicTable_Meditite[] = { + overworld_ascending_frames(gObjectEventPic_Meditite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Medicham[] = { + overworld_ascending_frames(gObjectEventPic_Medicham, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_MedichamMega[] = { + overworld_ascending_frames(gObjectEventPic_MedichamMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE +static const struct SpriteFrameImage sPicTable_Electrike[] = { + overworld_ascending_frames(gObjectEventPic_Electrike, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Manectric[] = { + overworld_ascending_frames(gObjectEventPic_Manectric, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_ManectricMega[] = { + overworld_ascending_frames(gObjectEventPic_ManectricMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE +static const struct SpriteFrameImage sPicTable_Plusle[] = { + overworld_ascending_frames(gObjectEventPic_Plusle, 4, 4), +}; +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN +static const struct SpriteFrameImage sPicTable_Minun[] = { + overworld_ascending_frames(gObjectEventPic_Minun, 4, 4), +}; +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE +static const struct SpriteFrameImage sPicTable_Volbeat[] = { + overworld_ascending_frames(gObjectEventPic_Volbeat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Illumise[] = { + overworld_ascending_frames(gObjectEventPic_Illumise, 4, 4), +}; +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Budew[] = { + overworld_ascending_frames(gObjectEventPic_Budew, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Roselia[] = { + overworld_ascending_frames(gObjectEventPic_Roselia, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Roserade[] = { + overworld_ascending_frames(gObjectEventPic_Roserade, 4, 4), +}; + +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN +static const struct SpriteFrameImage sPicTable_Gulpin[] = { + overworld_ascending_frames(gObjectEventPic_Gulpin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swalot[] = { + overworld_ascending_frames(gObjectEventPic_Swalot, 4, 4), +}; +#endif //P_FAMILY_GULPIN + +#if P_FAMILY_CARVANHA +static const struct SpriteFrameImage sPicTable_Carvanha[] = { + overworld_ascending_frames(gObjectEventPic_Carvanha, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sharpedo[] = { + overworld_ascending_frames(gObjectEventPic_Sharpedo, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SharpedoMega[] = { + overworld_ascending_frames(gObjectEventPic_SharpedoMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_WAILMER +static const struct SpriteFrameImage sPicTable_Wailmer[] = { + overworld_ascending_frames(gObjectEventPic_Wailmer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wailord[] = { + overworld_ascending_frames(gObjectEventPic_Wailord, 4, 4), +}; +#endif //P_FAMILY_WAILMER + +#if P_FAMILY_NUMEL +static const struct SpriteFrameImage sPicTable_Numel[] = { + overworld_ascending_frames(gObjectEventPic_Numel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Camerupt[] = { + overworld_ascending_frames(gObjectEventPic_Camerupt, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_CameruptMega[] = { + overworld_ascending_frames(gObjectEventPic_CameruptMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL +static const struct SpriteFrameImage sPicTable_Torkoal[] = { + overworld_ascending_frames(gObjectEventPic_Torkoal, 4, 4), +}; +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK +static const struct SpriteFrameImage sPicTable_Spoink[] = { + overworld_ascending_frames(gObjectEventPic_Spoink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grumpig[] = { + overworld_ascending_frames(gObjectEventPic_Grumpig, 4, 4), +}; +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA +static const struct SpriteFrameImage sPicTable_Spinda[] = { + overworld_ascending_frames(gObjectEventPic_Spinda, 4, 4), +}; +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH +static const struct SpriteFrameImage sPicTable_Trapinch[] = { + overworld_ascending_frames(gObjectEventPic_Trapinch, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vibrava[] = { + overworld_ascending_frames(gObjectEventPic_Vibrava, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flygon[] = { + overworld_ascending_frames(gObjectEventPic_Flygon, 4, 4), +}; +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA +static const struct SpriteFrameImage sPicTable_Cacnea[] = { + overworld_ascending_frames(gObjectEventPic_Cacnea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cacturne[] = { + overworld_ascending_frames(gObjectEventPic_Cacturne, 4, 4), +}; +#endif //P_FAMILY_CACNEA + +#if P_FAMILY_SWABLU +static const struct SpriteFrameImage sPicTable_Swablu[] = { + overworld_ascending_frames(gObjectEventPic_Swablu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Altaria[] = { + overworld_ascending_frames(gObjectEventPic_Altaria, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AltariaMega[] = { + overworld_ascending_frames(gObjectEventPic_AltariaMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE +static const struct SpriteFrameImage sPicTable_Zangoose[] = { + overworld_ascending_frames(gObjectEventPic_Zangoose, 4, 4), +}; +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER +static const struct SpriteFrameImage sPicTable_Seviper[] = { + overworld_ascending_frames(gObjectEventPic_Seviper, 4, 4), +}; +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE +static const struct SpriteFrameImage sPicTable_Lunatone[] = { + overworld_ascending_frames(gObjectEventPic_Lunatone, 4, 4), +}; +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK +static const struct SpriteFrameImage sPicTable_Solrock[] = { + overworld_ascending_frames(gObjectEventPic_Solrock, 4, 4), +}; +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH +static const struct SpriteFrameImage sPicTable_Barboach[] = { + overworld_ascending_frames(gObjectEventPic_Barboach, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whiscash[] = { + overworld_ascending_frames(gObjectEventPic_Whiscash, 4, 4), +}; +#endif //P_FAMILY_BARBOACH + +#if P_FAMILY_CORPHISH +static const struct SpriteFrameImage sPicTable_Corphish[] = { + overworld_ascending_frames(gObjectEventPic_Corphish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crawdaunt[] = { + overworld_ascending_frames(gObjectEventPic_Crawdaunt, 4, 4), +}; +#endif //P_FAMILY_CORPHISH + +#if P_FAMILY_BALTOY +static const struct SpriteFrameImage sPicTable_Baltoy[] = { + overworld_ascending_frames(gObjectEventPic_Baltoy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Claydol[] = { + overworld_ascending_frames(gObjectEventPic_Claydol, 4, 4), +}; +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP +static const struct SpriteFrameImage sPicTable_Lileep[] = { + overworld_ascending_frames(gObjectEventPic_Lileep, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cradily[] = { + overworld_ascending_frames(gObjectEventPic_Cradily, 4, 4), +}; +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH +static const struct SpriteFrameImage sPicTable_Anorith[] = { + overworld_ascending_frames(gObjectEventPic_Anorith, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Armaldo[] = { + overworld_ascending_frames(gObjectEventPic_Armaldo, 4, 4), +}; +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS +static const struct SpriteFrameImage sPicTable_Feebas[] = { + overworld_ascending_frames(gObjectEventPic_Feebas, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Milotic[] = { + overworld_ascending_frames(gObjectEventPic_Milotic, 4, 4), +}; +#endif //P_FAMILY_FEEBAS + +#if P_FAMILY_CASTFORM +static const struct SpriteFrameImage sPicTable_CastformNormal[] = { + overworld_ascending_frames(gObjectEventPic_CastformNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformSunny[] = { + overworld_ascending_frames(gObjectEventPic_CastformSunny, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformRainy[] = { + overworld_ascending_frames(gObjectEventPic_CastformRainy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CastformSnowy[] = { + overworld_ascending_frames(gObjectEventPic_CastformSnowy, 4, 4), +}; +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_KECLEON +static const struct SpriteFrameImage sPicTable_Kecleon[] = { + overworld_ascending_frames(gObjectEventPic_Kecleon, 4, 4), +}; +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET +static const struct SpriteFrameImage sPicTable_Shuppet[] = { + overworld_ascending_frames(gObjectEventPic_Shuppet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Banette[] = { + overworld_ascending_frames(gObjectEventPic_Banette, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_BanetteMega[] = { + overworld_ascending_frames(gObjectEventPic_BanetteMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL +static const struct SpriteFrameImage sPicTable_Duskull[] = { + overworld_ascending_frames(gObjectEventPic_Duskull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dusclops[] = { + overworld_ascending_frames(gObjectEventPic_Dusclops, 4, 4), +}; +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Dusknoir[] = { + overworld_ascending_frames(gObjectEventPic_Dusknoir, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS +static const struct SpriteFrameImage sPicTable_Tropius[] = { + overworld_ascending_frames(gObjectEventPic_Tropius, 4, 4), +}; +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chingling[] = { + overworld_ascending_frames(gObjectEventPic_Chingling, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Chimecho[] = { + overworld_ascending_frames(gObjectEventPic_Chimecho, 4, 4), +}; +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL +static const struct SpriteFrameImage sPicTable_Absol[] = { + overworld_ascending_frames(gObjectEventPic_Absol, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AbsolMega[] = { + overworld_ascending_frames(gObjectEventPic_AbsolMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT +static const struct SpriteFrameImage sPicTable_Snorunt[] = { + overworld_ascending_frames(gObjectEventPic_Snorunt, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glalie[] = { + overworld_ascending_frames(gObjectEventPic_Glalie, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GlalieMega[] = { + overworld_ascending_frames(gObjectEventPic_GlalieMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const struct SpriteFrameImage sPicTable_Froslass[] = { + overworld_ascending_frames(gObjectEventPic_Froslass, 4, 4), +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL +static const struct SpriteFrameImage sPicTable_Spheal[] = { + overworld_ascending_frames(gObjectEventPic_Spheal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sealeo[] = { + overworld_ascending_frames(gObjectEventPic_Sealeo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Walrein[] = { + overworld_ascending_frames(gObjectEventPic_Walrein, 4, 4), +}; +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL +static const struct SpriteFrameImage sPicTable_Clamperl[] = { + overworld_ascending_frames(gObjectEventPic_Clamperl, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Huntail[] = { + overworld_ascending_frames(gObjectEventPic_Huntail, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gorebyss[] = { + overworld_ascending_frames(gObjectEventPic_Gorebyss, 4, 4), +}; +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH +static const struct SpriteFrameImage sPicTable_Relicanth[] = { + overworld_ascending_frames(gObjectEventPic_Relicanth, 4, 4), +}; +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC +static const struct SpriteFrameImage sPicTable_Luvdisc[] = { + overworld_ascending_frames(gObjectEventPic_Luvdisc, 4, 4), +}; +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON +static const struct SpriteFrameImage sPicTable_Bagon[] = { + overworld_ascending_frames(gObjectEventPic_Bagon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shelgon[] = { + overworld_ascending_frames(gObjectEventPic_Shelgon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Salamence[] = { + overworld_ascending_frames(gObjectEventPic_Salamence, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_SalamenceMega[] = { + overworld_ascending_frames(gObjectEventPic_SalamenceMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON + +#if P_FAMILY_BELDUM +static const struct SpriteFrameImage sPicTable_Beldum[] = { + overworld_ascending_frames(gObjectEventPic_Beldum, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metang[] = { + overworld_ascending_frames(gObjectEventPic_Metang, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Metagross[] = { + overworld_ascending_frames(gObjectEventPic_Metagross, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_MetagrossMega[] = { + overworld_ascending_frames(gObjectEventPic_MetagrossMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM + +#if P_FAMILY_REGIROCK +static const struct SpriteFrameImage sPicTable_Regirock[] = { + overworld_ascending_frames(gObjectEventPic_Regirock, 4, 4), +}; +#endif //P_FAMILY_REGIROCK + +#if P_FAMILY_REGICE +static const struct SpriteFrameImage sPicTable_Regice[] = { + overworld_ascending_frames(gObjectEventPic_Regice, 4, 4), +}; +#endif //P_FAMILY_REGICE + +#if P_FAMILY_REGISTEEL +static const struct SpriteFrameImage sPicTable_Registeel[] = { + overworld_ascending_frames(gObjectEventPic_Registeel, 4, 4), +}; +#endif //P_FAMILY_REGISTEEL + +#if P_FAMILY_LATIAS +static const struct SpriteFrameImage sPicTable_Latias[] = { + overworld_ascending_frames(gObjectEventPic_Latias, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_LatiasMega[] = { + overworld_ascending_frames(gObjectEventPic_LatiasMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS + +#if P_FAMILY_LATIOS +static const struct SpriteFrameImage sPicTable_Latios[] = { + overworld_ascending_frames(gObjectEventPic_Latios, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_LatiosMega[] = { + overworld_ascending_frames(gObjectEventPic_LatiosMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS + +#if P_FAMILY_KYOGRE +static const struct SpriteFrameImage sPicTable_Kyogre[] = { + overworld_ascending_frames(gObjectEventPic_Kyogre, 4, 4), +}; +#if P_PRIMAL_REVERSIONS +/*static const struct SpriteFrameImage sPicTable_KyogrePrimal[] = { + overworld_ascending_frames(gObjectEventPic_KyogrePrimal, 4, 4), +};*/ +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON +static const struct SpriteFrameImage sPicTable_Groudon[] = { + overworld_ascending_frames(gObjectEventPic_Groudon, 4, 4), +}; +#if P_PRIMAL_REVERSIONS +/*static const struct SpriteFrameImage sPicTable_GroudonPrimal[] = { + overworld_ascending_frames(gObjectEventPic_GroudonPrimal, 4, 4), +};*/ +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA +static const struct SpriteFrameImage sPicTable_Rayquaza[] = { + overworld_ascending_frames(gObjectEventPic_Rayquaza, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_RayquazaMega[] = { + overworld_ascending_frames(gObjectEventPic_RayquazaMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI +static const struct SpriteFrameImage sPicTable_Jirachi[] = { + overworld_ascending_frames(gObjectEventPic_Jirachi, 4, 4), +}; +#endif //P_FAMILY_JIRACHI + +#if P_FAMILY_DEOXYS +static const struct SpriteFrameImage sPicTable_DeoxysNormal[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysAttack[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysAttack, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysDefense[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysDefense, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeoxysSpeed[] = { + overworld_ascending_frames(gObjectEventPic_DeoxysSpeed, 4, 4), +}; +#endif //P_FAMILY_DEOXYS + +#if P_FAMILY_TURTWIG +static const struct SpriteFrameImage sPicTable_Turtwig[] = { + overworld_ascending_frames(gObjectEventPic_Turtwig, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grotle[] = { + overworld_ascending_frames(gObjectEventPic_Grotle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Torterra[] = { + overworld_ascending_frames(gObjectEventPic_Torterra, 4, 4), +}; +#endif //P_FAMILY_TURTWIG + +#if P_FAMILY_CHIMCHAR +static const struct SpriteFrameImage sPicTable_Chimchar[] = { + overworld_ascending_frames(gObjectEventPic_Chimchar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Monferno[] = { + overworld_ascending_frames(gObjectEventPic_Monferno, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Infernape[] = { + overworld_ascending_frames(gObjectEventPic_Infernape, 4, 4), +}; +#endif //P_FAMILY_CHIMCHAR + +#if P_FAMILY_PIPLUP +static const struct SpriteFrameImage sPicTable_Piplup[] = { + overworld_ascending_frames(gObjectEventPic_Piplup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Prinplup[] = { + overworld_ascending_frames(gObjectEventPic_Prinplup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Empoleon[] = { + overworld_ascending_frames(gObjectEventPic_Empoleon, 4, 4), +}; +#endif //P_FAMILY_PIPLUP + +#if P_FAMILY_STARLY +static const struct SpriteFrameImage sPicTable_Starly[] = { + overworld_ascending_frames(gObjectEventPic_Starly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Staravia[] = { + overworld_ascending_frames(gObjectEventPic_Staravia, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Staraptor[] = { + overworld_ascending_frames(gObjectEventPic_Staraptor, 4, 4), +}; +#endif //P_FAMILY_STARLY + +#if P_FAMILY_BIDOOF +static const struct SpriteFrameImage sPicTable_Bidoof[] = { + overworld_ascending_frames(gObjectEventPic_Bidoof, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bibarel[] = { + overworld_ascending_frames(gObjectEventPic_Bibarel, 4, 4), +}; +#endif //P_FAMILY_BIDOOF + +#if P_FAMILY_KRICKETOT +static const struct SpriteFrameImage sPicTable_Kricketot[] = { + overworld_ascending_frames(gObjectEventPic_Kricketot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kricketune[] = { + overworld_ascending_frames(gObjectEventPic_Kricketune, 4, 4), +}; +#endif //P_FAMILY_KRICKETOT + +#if P_FAMILY_SHINX +static const struct SpriteFrameImage sPicTable_Shinx[] = { + overworld_ascending_frames(gObjectEventPic_Shinx, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Luxio[] = { + overworld_ascending_frames(gObjectEventPic_Luxio, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Luxray[] = { + overworld_ascending_frames(gObjectEventPic_Luxray, 4, 4), +}; +#endif //P_FAMILY_SHINX + +#if P_FAMILY_CRANIDOS +static const struct SpriteFrameImage sPicTable_Cranidos[] = { + overworld_ascending_frames(gObjectEventPic_Cranidos, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rampardos[] = { + overworld_ascending_frames(gObjectEventPic_Rampardos, 4, 4), +}; +#endif //P_FAMILY_CRANIDOS + +#if P_FAMILY_SHIELDON +static const struct SpriteFrameImage sPicTable_Shieldon[] = { + overworld_ascending_frames(gObjectEventPic_Shieldon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bastiodon[] = { + overworld_ascending_frames(gObjectEventPic_Bastiodon, 4, 4), +}; +#endif //P_FAMILY_SHIELDON + +#if P_FAMILY_BURMY +static const struct SpriteFrameImage sPicTable_BurmyPlantCloak[] = { + overworld_ascending_frames(gObjectEventPic_BurmyPlantCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BurmySandyCloak[] = { + overworld_ascending_frames(gObjectEventPic_BurmySandyCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BurmyTrashCloak[] = { + overworld_ascending_frames(gObjectEventPic_BurmyTrashCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamPlantCloak[] = { + overworld_ascending_frames(gObjectEventPic_WormadamPlantCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamSandyCloak[] = { + overworld_ascending_frames(gObjectEventPic_WormadamSandyCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_WormadamTrashCloak[] = { + overworld_ascending_frames(gObjectEventPic_WormadamTrashCloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mothim[] = { + overworld_ascending_frames(gObjectEventPic_Mothim, 4, 4), +}; +#endif //P_FAMILY_BURMY + +#if P_FAMILY_COMBEE +static const struct SpriteFrameImage sPicTable_Combee[] = { + overworld_ascending_frames(gObjectEventPic_Combee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CombeeF[] = { + overworld_ascending_frames(gObjectEventPic_CombeeF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vespiquen[] = { + overworld_ascending_frames(gObjectEventPic_Vespiquen, 4, 4), +}; +#endif //P_FAMILY_COMBEE + +#if P_FAMILY_PACHIRISU +static const struct SpriteFrameImage sPicTable_Pachirisu[] = { + overworld_ascending_frames(gObjectEventPic_Pachirisu, 4, 4), +}; +#endif //P_FAMILY_PACHIRISU + +#if P_FAMILY_BUIZEL +static const struct SpriteFrameImage sPicTable_Buizel[] = { + overworld_ascending_frames(gObjectEventPic_Buizel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Floatzel[] = { + overworld_ascending_frames(gObjectEventPic_Floatzel, 4, 4), +}; +#endif //P_FAMILY_BUIZEL + +#if P_FAMILY_CHERUBI +static const struct SpriteFrameImage sPicTable_Cherubi[] = { + overworld_ascending_frames(gObjectEventPic_Cherubi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CherrimOvercast[] = { + overworld_ascending_frames(gObjectEventPic_CherrimOvercast, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_CherrimSunshine[] = { + overworld_ascending_frames(gObjectEventPic_CherrimSunshine, 4, 4), +};*/ +#endif //P_FAMILY_CHERUBI + +#if P_FAMILY_SHELLOS +static const struct SpriteFrameImage sPicTable_ShellosWestSea[] = { + overworld_ascending_frames(gObjectEventPic_ShellosWestSea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ShellosEastSea[] = { + overworld_ascending_frames(gObjectEventPic_ShellosEastSea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GastrodonWestSea[] = { + overworld_ascending_frames(gObjectEventPic_GastrodonWestSea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GastrodonEastSea[] = { + overworld_ascending_frames(gObjectEventPic_GastrodonEastSea, 4, 4), +}; +#endif //P_FAMILY_SHELLOS + +#if P_FAMILY_DRIFLOON +static const struct SpriteFrameImage sPicTable_Drifloon[] = { + overworld_ascending_frames(gObjectEventPic_Drifloon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drifblim[] = { + overworld_ascending_frames(gObjectEventPic_Drifblim, 4, 4), +}; +#endif //P_FAMILY_DRIFLOON + +#if P_FAMILY_BUNEARY +static const struct SpriteFrameImage sPicTable_Buneary[] = { + overworld_ascending_frames(gObjectEventPic_Buneary, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lopunny[] = { + overworld_ascending_frames(gObjectEventPic_Lopunny, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_LopunnyMega[] = { + overworld_ascending_frames(gObjectEventPic_LopunnyMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY + +#if P_FAMILY_GLAMEOW +static const struct SpriteFrameImage sPicTable_Glameow[] = { + overworld_ascending_frames(gObjectEventPic_Glameow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Purugly[] = { + overworld_ascending_frames(gObjectEventPic_Purugly, 4, 4), +}; +#endif //P_FAMILY_GLAMEOW + +#if P_FAMILY_STUNKY +static const struct SpriteFrameImage sPicTable_Stunky[] = { + overworld_ascending_frames(gObjectEventPic_Stunky, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skuntank[] = { + overworld_ascending_frames(gObjectEventPic_Skuntank, 4, 4), +}; +#endif //P_FAMILY_STUNKY + +#if P_FAMILY_BRONZOR +static const struct SpriteFrameImage sPicTable_Bronzor[] = { + overworld_ascending_frames(gObjectEventPic_Bronzor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bronzong[] = { + overworld_ascending_frames(gObjectEventPic_Bronzong, 4, 4), +}; +#endif //P_FAMILY_BRONZOR + +#if P_FAMILY_CHATOT +static const struct SpriteFrameImage sPicTable_Chatot[] = { + overworld_ascending_frames(gObjectEventPic_Chatot, 4, 4), +}; +#endif //P_FAMILY_CHATOT + +#if P_FAMILY_SPIRITOMB +static const struct SpriteFrameImage sPicTable_Spiritomb[] = { + overworld_ascending_frames(gObjectEventPic_Spiritomb, 4, 4), +}; +#endif //P_FAMILY_SPIRITOMB + +#if P_FAMILY_GIBLE +static const struct SpriteFrameImage sPicTable_Gible[] = { + overworld_ascending_frames(gObjectEventPic_Gible, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gabite[] = { + overworld_ascending_frames(gObjectEventPic_Gabite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Garchomp[] = { + overworld_ascending_frames(gObjectEventPic_Garchomp, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_GarchompMega[] = { + overworld_ascending_frames(gObjectEventPic_GarchompMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE + +#if P_FAMILY_RIOLU +static const struct SpriteFrameImage sPicTable_Riolu[] = { + overworld_ascending_frames(gObjectEventPic_Riolu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lucario[] = { + overworld_ascending_frames(gObjectEventPic_Lucario, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_LucarioMega[] = { + overworld_ascending_frames(gObjectEventPic_LucarioMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU + +#if P_FAMILY_HIPPOPOTAS +static const struct SpriteFrameImage sPicTable_Hippopotas[] = { + overworld_ascending_frames(gObjectEventPic_Hippopotas, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HippopotasF[] = { + overworld_ascending_frames(gObjectEventPic_HippopotasF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hippowdon[] = { + overworld_ascending_frames(gObjectEventPic_Hippowdon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HippowdonF[] = { + overworld_ascending_frames(gObjectEventPic_HippowdonF, 4, 4), +}; +#endif //P_FAMILY_HIPPOPOTAS + +#if P_FAMILY_SKORUPI +static const struct SpriteFrameImage sPicTable_Skorupi[] = { + overworld_ascending_frames(gObjectEventPic_Skorupi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drapion[] = { + overworld_ascending_frames(gObjectEventPic_Drapion, 4, 4), +}; +#endif //P_FAMILY_SKORUPI + +#if P_FAMILY_CROAGUNK +static const struct SpriteFrameImage sPicTable_Croagunk[] = { + overworld_ascending_frames(gObjectEventPic_Croagunk, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toxicroak[] = { + overworld_ascending_frames(gObjectEventPic_Toxicroak, 4, 4), +}; +#endif //P_FAMILY_CROAGUNK + +#if P_FAMILY_CARNIVINE +static const struct SpriteFrameImage sPicTable_Carnivine[] = { + overworld_ascending_frames(gObjectEventPic_Carnivine, 4, 4), +}; +#endif //P_FAMILY_CARNIVINE + +#if P_FAMILY_FINNEON +static const struct SpriteFrameImage sPicTable_Finneon[] = { + overworld_ascending_frames(gObjectEventPic_Finneon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lumineon[] = { + overworld_ascending_frames(gObjectEventPic_Lumineon, 4, 4), +}; +#endif //P_FAMILY_FINNEON + +#if P_FAMILY_SNOVER +static const struct SpriteFrameImage sPicTable_Snover[] = { + overworld_ascending_frames(gObjectEventPic_Snover, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Abomasnow[] = { + overworld_ascending_frames(gObjectEventPic_Abomasnow, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AbomasnowMega[] = { + overworld_ascending_frames(gObjectEventPic_AbomasnowMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER + +#if P_FAMILY_ROTOM +static const struct SpriteFrameImage sPicTable_Rotom[] = { + overworld_ascending_frames(gObjectEventPic_Rotom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomHeat[] = { + overworld_ascending_frames(gObjectEventPic_RotomHeat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomWash[] = { + overworld_ascending_frames(gObjectEventPic_RotomWash, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomFrost[] = { + overworld_ascending_frames(gObjectEventPic_RotomFrost, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomFan[] = { + overworld_ascending_frames(gObjectEventPic_RotomFan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_RotomMow[] = { + overworld_ascending_frames(gObjectEventPic_RotomMow, 4, 4), +}; +#endif //P_FAMILY_ROTOM + +#if P_FAMILY_UXIE +static const struct SpriteFrameImage sPicTable_Uxie[] = { + overworld_ascending_frames(gObjectEventPic_Uxie, 4, 4), +}; +#endif //P_FAMILY_UXIE + +#if P_FAMILY_MESPRIT +static const struct SpriteFrameImage sPicTable_Mesprit[] = { + overworld_ascending_frames(gObjectEventPic_Mesprit, 4, 4), +}; +#endif //P_FAMILY_MESPRIT + +#if P_FAMILY_AZELF +static const struct SpriteFrameImage sPicTable_Azelf[] = { + overworld_ascending_frames(gObjectEventPic_Azelf, 4, 4), +}; +#endif //P_FAMILY_AZELF + +#if P_FAMILY_DIALGA +static const struct SpriteFrameImage sPicTable_Dialga[] = { + overworld_ascending_frames(gObjectEventPic_Dialga, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DialgaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_DialgaOrigin, 4, 4), +}; +#endif //P_FAMILY_DIALGA + +#if P_FAMILY_PALKIA +static const struct SpriteFrameImage sPicTable_Palkia[] = { + overworld_ascending_frames(gObjectEventPic_Palkia, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PalkiaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_PalkiaOrigin, 4, 4), +}; +#endif //P_FAMILY_PALKIA + +#if P_FAMILY_HEATRAN +static const struct SpriteFrameImage sPicTable_Heatran[] = { + overworld_ascending_frames(gObjectEventPic_Heatran, 4, 4), +}; +#endif //P_FAMILY_HEATRAN + +#if P_FAMILY_REGIGIGAS +static const struct SpriteFrameImage sPicTable_Regigigas[] = { + overworld_ascending_frames(gObjectEventPic_Regigigas, 4, 4), +}; +#endif //P_FAMILY_REGIGIGAS + +#if P_FAMILY_GIRATINA +static const struct SpriteFrameImage sPicTable_GiratinaAltered[] = { + overworld_ascending_frames(gObjectEventPic_GiratinaAltered, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GiratinaOrigin[] = { + overworld_ascending_frames(gObjectEventPic_GiratinaOrigin, 4, 4), +}; +#endif //P_FAMILY_GIRATINA + +#if P_FAMILY_CRESSELIA +static const struct SpriteFrameImage sPicTable_Cresselia[] = { + overworld_ascending_frames(gObjectEventPic_Cresselia, 4, 4), +}; +#endif //P_FAMILY_CRESSELIA + +#if P_FAMILY_MANAPHY +static const struct SpriteFrameImage sPicTable_Phione[] = { + overworld_ascending_frames(gObjectEventPic_Phione, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Manaphy[] = { + overworld_ascending_frames(gObjectEventPic_Manaphy, 4, 4), +}; +#endif //P_FAMILY_MANAPHY + +#if P_FAMILY_DARKRAI +static const struct SpriteFrameImage sPicTable_Darkrai[] = { + overworld_ascending_frames(gObjectEventPic_Darkrai, 4, 4), +}; +#endif //P_FAMILY_DARKRAI + +#if P_FAMILY_SHAYMIN +static const struct SpriteFrameImage sPicTable_ShayminLand[] = { + overworld_ascending_frames(gObjectEventPic_ShayminLand, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_ShayminSky[] = { + overworld_ascending_frames(gObjectEventPic_ShayminSky, 4, 4), +};*/ +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS + +static const struct SpriteFrameImage sPicTable_ArceusNormal[] = { + overworld_ascending_frames(gObjectEventPic_ArceusNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusFighting[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFighting, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusFlying[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFlying, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusPoison[] = { + overworld_ascending_frames(gObjectEventPic_ArceusPoison, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusGround[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGround, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusRock[] = { + overworld_ascending_frames(gObjectEventPic_ArceusRock, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusBug[] = { + overworld_ascending_frames(gObjectEventPic_ArceusBug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusGhost[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGhost, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusSteel[] = { + overworld_ascending_frames(gObjectEventPic_ArceusSteel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusFire[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFire, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusWater[] = { + overworld_ascending_frames(gObjectEventPic_ArceusWater, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusGrass[] = { + overworld_ascending_frames(gObjectEventPic_ArceusGrass, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusElectric[] = { + overworld_ascending_frames(gObjectEventPic_ArceusElectric, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusPsychic[] = { + overworld_ascending_frames(gObjectEventPic_ArceusPsychic, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusIce[] = { + overworld_ascending_frames(gObjectEventPic_ArceusIce, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusDragon[] = { + overworld_ascending_frames(gObjectEventPic_ArceusDragon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusDark[] = { + overworld_ascending_frames(gObjectEventPic_ArceusDark, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ArceusFairy[] = { + overworld_ascending_frames(gObjectEventPic_ArceusFairy, 4, 4), +}; +#endif //P_FAMILY_ARCEUS + +#if P_FAMILY_VICTINI +static const struct SpriteFrameImage sPicTable_Victini[] = { + overworld_ascending_frames(gObjectEventPic_Victini, 4, 4), +}; +#endif //P_FAMILY_VICTINI + +#if P_FAMILY_SNIVY +static const struct SpriteFrameImage sPicTable_Snivy[] = { + overworld_ascending_frames(gObjectEventPic_Snivy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Servine[] = { + overworld_ascending_frames(gObjectEventPic_Servine, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Serperior[] = { + overworld_ascending_frames(gObjectEventPic_Serperior, 4, 4), +}; +#endif //P_FAMILY_SNIVY + +#if P_FAMILY_TEPIG +static const struct SpriteFrameImage sPicTable_Tepig[] = { + overworld_ascending_frames(gObjectEventPic_Tepig, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pignite[] = { + overworld_ascending_frames(gObjectEventPic_Pignite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Emboar[] = { + overworld_ascending_frames(gObjectEventPic_Emboar, 4, 4), +}; +#endif //P_FAMILY_TEPIG + +#if P_FAMILY_OSHAWOTT +static const struct SpriteFrameImage sPicTable_Oshawott[] = { + overworld_ascending_frames(gObjectEventPic_Oshawott, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dewott[] = { + overworld_ascending_frames(gObjectEventPic_Dewott, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Samurott[] = { + overworld_ascending_frames(gObjectEventPic_Samurott, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SamurottHisuian[] = { + overworld_ascending_frames(gObjectEventPic_SamurottHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT +static const struct SpriteFrameImage sPicTable_Patrat[] = { + overworld_ascending_frames(gObjectEventPic_Patrat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Watchog[] = { + overworld_ascending_frames(gObjectEventPic_Watchog, 4, 4), +}; +#endif //P_FAMILY_PATRAT + +#if P_FAMILY_LILLIPUP +static const struct SpriteFrameImage sPicTable_Lillipup[] = { + overworld_ascending_frames(gObjectEventPic_Lillipup, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Herdier[] = { + overworld_ascending_frames(gObjectEventPic_Herdier, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Stoutland[] = { + overworld_ascending_frames(gObjectEventPic_Stoutland, 4, 4), +}; +#endif //P_FAMILY_LILLIPUP + +#if P_FAMILY_PURRLOIN +static const struct SpriteFrameImage sPicTable_Purrloin[] = { + overworld_ascending_frames(gObjectEventPic_Purrloin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Liepard[] = { + overworld_ascending_frames(gObjectEventPic_Liepard, 4, 4), +}; +#endif //P_FAMILY_PURRLOIN + +#if P_FAMILY_PANSAGE +static const struct SpriteFrameImage sPicTable_Pansage[] = { + overworld_ascending_frames(gObjectEventPic_Pansage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simisage[] = { + overworld_ascending_frames(gObjectEventPic_Simisage, 4, 4), +}; +#endif //P_FAMILY_PANSAGE + +#if P_FAMILY_PANSEAR +static const struct SpriteFrameImage sPicTable_Pansear[] = { + overworld_ascending_frames(gObjectEventPic_Pansear, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simisear[] = { + overworld_ascending_frames(gObjectEventPic_Simisear, 4, 4), +}; +#endif //P_FAMILY_PANSEAR + +#if P_FAMILY_PANPOUR +static const struct SpriteFrameImage sPicTable_Panpour[] = { + overworld_ascending_frames(gObjectEventPic_Panpour, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Simipour[] = { + overworld_ascending_frames(gObjectEventPic_Simipour, 4, 4), +}; +#endif //P_FAMILY_PANPOUR + +#if P_FAMILY_MUNNA +static const struct SpriteFrameImage sPicTable_Munna[] = { + overworld_ascending_frames(gObjectEventPic_Munna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Musharna[] = { + overworld_ascending_frames(gObjectEventPic_Musharna, 4, 4), +}; +#endif //P_FAMILY_MUNNA + +#if P_FAMILY_PIDOVE +static const struct SpriteFrameImage sPicTable_Pidove[] = { + overworld_ascending_frames(gObjectEventPic_Pidove, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tranquill[] = { + overworld_ascending_frames(gObjectEventPic_Tranquill, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_Unfezant[] = { + overworld_ascending_frames(gObjectEventPic_Unfezant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UnfezantF[] = { + overworld_ascending_frames(gObjectEventPic_UnfezantF, 4, 4), +}; +#endif //P_FAMILY_PIDOVE + +#if P_FAMILY_BLITZLE +static const struct SpriteFrameImage sPicTable_Blitzle[] = { + overworld_ascending_frames(gObjectEventPic_Blitzle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zebstrika[] = { + overworld_ascending_frames(gObjectEventPic_Zebstrika, 4, 4), +}; +#endif //P_FAMILY_BLITZLE + +#if P_FAMILY_ROGGENROLA +static const struct SpriteFrameImage sPicTable_Roggenrola[] = { + overworld_ascending_frames(gObjectEventPic_Roggenrola, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Boldore[] = { + overworld_ascending_frames(gObjectEventPic_Boldore, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gigalith[] = { + overworld_ascending_frames(gObjectEventPic_Gigalith, 4, 4), +}; +#endif //P_FAMILY_ROGGENROLA + +#if P_FAMILY_WOOBAT +static const struct SpriteFrameImage sPicTable_Woobat[] = { + overworld_ascending_frames(gObjectEventPic_Woobat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swoobat[] = { + overworld_ascending_frames(gObjectEventPic_Swoobat, 4, 4), +}; +#endif //P_FAMILY_WOOBAT + +#if P_FAMILY_DRILBUR +static const struct SpriteFrameImage sPicTable_Drilbur[] = { + overworld_ascending_frames(gObjectEventPic_Drilbur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Excadrill[] = { + overworld_ascending_frames(gObjectEventPic_Excadrill, 4, 4), +}; +#endif //P_FAMILY_DRILBUR + +#if P_FAMILY_AUDINO +static const struct SpriteFrameImage sPicTable_Audino[] = { + overworld_ascending_frames(gObjectEventPic_Audino, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_AudinoMega[] = { + overworld_ascending_frames(gObjectEventPic_AudinoMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO + +#if P_FAMILY_TIMBURR +static const struct SpriteFrameImage sPicTable_Timburr[] = { + overworld_ascending_frames(gObjectEventPic_Timburr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gurdurr[] = { + overworld_ascending_frames(gObjectEventPic_Gurdurr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Conkeldurr[] = { + overworld_ascending_frames(gObjectEventPic_Conkeldurr, 4, 4), +}; +#endif //P_FAMILY_TIMBURR + +#if P_FAMILY_TYMPOLE +static const struct SpriteFrameImage sPicTable_Tympole[] = { + overworld_ascending_frames(gObjectEventPic_Tympole, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Palpitoad[] = { + overworld_ascending_frames(gObjectEventPic_Palpitoad, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Seismitoad[] = { + overworld_ascending_frames(gObjectEventPic_Seismitoad, 4, 4), +}; +#endif //P_FAMILY_TYMPOLE + +#if P_FAMILY_THROH +static const struct SpriteFrameImage sPicTable_Throh[] = { + overworld_ascending_frames(gObjectEventPic_Throh, 4, 4), +}; +#endif //P_FAMILY_THROH + +#if P_FAMILY_SAWK +static const struct SpriteFrameImage sPicTable_Sawk[] = { + overworld_ascending_frames(gObjectEventPic_Sawk, 4, 4), +}; +#endif //P_FAMILY_SAWK + +#if P_FAMILY_SEWADDLE +static const struct SpriteFrameImage sPicTable_Sewaddle[] = { + overworld_ascending_frames(gObjectEventPic_Sewaddle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swadloon[] = { + overworld_ascending_frames(gObjectEventPic_Swadloon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Leavanny[] = { + overworld_ascending_frames(gObjectEventPic_Leavanny, 4, 4), +}; +#endif //P_FAMILY_SEWADDLE + +#if P_FAMILY_VENIPEDE +static const struct SpriteFrameImage sPicTable_Venipede[] = { + overworld_ascending_frames(gObjectEventPic_Venipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whirlipede[] = { + overworld_ascending_frames(gObjectEventPic_Whirlipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scolipede[] = { + overworld_ascending_frames(gObjectEventPic_Scolipede, 4, 4), +}; +#endif //P_FAMILY_VENIPEDE + +#if P_FAMILY_COTTONEE +static const struct SpriteFrameImage sPicTable_Cottonee[] = { + overworld_ascending_frames(gObjectEventPic_Cottonee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Whimsicott[] = { + overworld_ascending_frames(gObjectEventPic_Whimsicott, 4, 4), +}; +#endif //P_FAMILY_COTTONEE + +#if P_FAMILY_PETILIL +static const struct SpriteFrameImage sPicTable_Petilil[] = { + overworld_ascending_frames(gObjectEventPic_Petilil, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lilligant[] = { + overworld_ascending_frames(gObjectEventPic_Lilligant, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_LilligantHisuian[] = { + overworld_ascending_frames(gObjectEventPic_LilligantHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN +static const struct SpriteFrameImage sPicTable_BasculinRedStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinRedStriped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculinBlueStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinBlueStriped, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_BasculinWhiteStriped[] = { + overworld_ascending_frames(gObjectEventPic_BasculinWhiteStriped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculegionMale[] = { + overworld_ascending_frames(gObjectEventPic_BasculegionMale, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_BasculegionFemale[] = { + overworld_ascending_frames(gObjectEventPic_BasculegionFemale, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE +static const struct SpriteFrameImage sPicTable_Sandile[] = { + overworld_ascending_frames(gObjectEventPic_Sandile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Krokorok[] = { + overworld_ascending_frames(gObjectEventPic_Krokorok, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Krookodile[] = { + overworld_ascending_frames(gObjectEventPic_Krookodile, 4, 4), +}; +#endif //P_FAMILY_SANDILE + +#if P_FAMILY_DARUMAKA +static const struct SpriteFrameImage sPicTable_Darumaka[] = { + overworld_ascending_frames(gObjectEventPic_Darumaka, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DarmanitanStandardMode[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanStandardMode, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_DarmanitanZenMode[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanZenMode, 4, 4), +};*/ +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_DarumakaGalarian[] = { + overworld_ascending_frames(gObjectEventPic_DarumakaGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DarmanitanGalarianStandardMode[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanGalarianStandardMode, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_DarmanitanGalarianZenMode[] = { + overworld_ascending_frames(gObjectEventPic_DarmanitanGalarianZenMode, 4, 4), +};*/ +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS +static const struct SpriteFrameImage sPicTable_Maractus[] = { + overworld_ascending_frames(gObjectEventPic_Maractus, 4, 4), +}; +#endif //P_FAMILY_MARACTUS + +#if P_FAMILY_DWEBBLE +static const struct SpriteFrameImage sPicTable_Dwebble[] = { + overworld_ascending_frames(gObjectEventPic_Dwebble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crustle[] = { + overworld_ascending_frames(gObjectEventPic_Crustle, 4, 4), +}; +#endif //P_FAMILY_DWEBBLE + +#if P_FAMILY_SCRAGGY +static const struct SpriteFrameImage sPicTable_Scraggy[] = { + overworld_ascending_frames(gObjectEventPic_Scraggy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scrafty[] = { + overworld_ascending_frames(gObjectEventPic_Scrafty, 4, 4), +}; +#endif //P_FAMILY_SCRAGGY + +#if P_FAMILY_SIGILYPH +static const struct SpriteFrameImage sPicTable_Sigilyph[] = { + overworld_ascending_frames(gObjectEventPic_Sigilyph, 4, 4), +}; +#endif //P_FAMILY_SIGILYPH + +#if P_FAMILY_YAMASK +static const struct SpriteFrameImage sPicTable_Yamask[] = { + overworld_ascending_frames(gObjectEventPic_Yamask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cofagrigus[] = { + overworld_ascending_frames(gObjectEventPic_Cofagrigus, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_YamaskGalarian[] = { + overworld_ascending_frames(gObjectEventPic_YamaskGalarian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Runerigus[] = { + overworld_ascending_frames(gObjectEventPic_Runerigus, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA +static const struct SpriteFrameImage sPicTable_Tirtouga[] = { + overworld_ascending_frames(gObjectEventPic_Tirtouga, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Carracosta[] = { + overworld_ascending_frames(gObjectEventPic_Carracosta, 4, 4), +}; +#endif //P_FAMILY_TIRTOUGA + +#if P_FAMILY_ARCHEN +static const struct SpriteFrameImage sPicTable_Archen[] = { + overworld_ascending_frames(gObjectEventPic_Archen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Archeops[] = { + overworld_ascending_frames(gObjectEventPic_Archeops, 4, 4), +}; +#endif //P_FAMILY_ARCHEN + +#if P_FAMILY_TRUBBISH +static const struct SpriteFrameImage sPicTable_Trubbish[] = { + overworld_ascending_frames(gObjectEventPic_Trubbish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Garbodor[] = { + overworld_ascending_frames(gObjectEventPic_Garbodor, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GarbodorGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_GarbodorGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA +static const struct SpriteFrameImage sPicTable_Zorua[] = { + overworld_ascending_frames(gObjectEventPic_Zorua, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zoroark[] = { + overworld_ascending_frames(gObjectEventPic_Zoroark, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_ZoruaHisuian[] = { + overworld_ascending_frames(gObjectEventPic_ZoruaHisuian, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZoroarkHisuian[] = { + overworld_ascending_frames(gObjectEventPic_ZoroarkHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO +static const struct SpriteFrameImage sPicTable_Minccino[] = { + overworld_ascending_frames(gObjectEventPic_Minccino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cinccino[] = { + overworld_ascending_frames(gObjectEventPic_Cinccino, 4, 4), +}; +#endif //P_FAMILY_MINCCINO + +#if P_FAMILY_GOTHITA +static const struct SpriteFrameImage sPicTable_Gothita[] = { + overworld_ascending_frames(gObjectEventPic_Gothita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gothorita[] = { + overworld_ascending_frames(gObjectEventPic_Gothorita, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gothitelle[] = { + overworld_ascending_frames(gObjectEventPic_Gothitelle, 4, 4), +}; +#endif //P_FAMILY_GOTHITA + +#if P_FAMILY_SOLOSIS +static const struct SpriteFrameImage sPicTable_Solosis[] = { + overworld_ascending_frames(gObjectEventPic_Solosis, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Duosion[] = { + overworld_ascending_frames(gObjectEventPic_Duosion, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Reuniclus[] = { + overworld_ascending_frames(gObjectEventPic_Reuniclus, 4, 4), +}; +#endif //P_FAMILY_SOLOSIS + +#if P_FAMILY_DUCKLETT +static const struct SpriteFrameImage sPicTable_Ducklett[] = { + overworld_ascending_frames(gObjectEventPic_Ducklett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Swanna[] = { + overworld_ascending_frames(gObjectEventPic_Swanna, 4, 4), +}; +#endif //P_FAMILY_DUCKLETT + +#if P_FAMILY_VANILLITE +static const struct SpriteFrameImage sPicTable_Vanillite[] = { + overworld_ascending_frames(gObjectEventPic_Vanillite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vanillish[] = { + overworld_ascending_frames(gObjectEventPic_Vanillish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vanilluxe[] = { + overworld_ascending_frames(gObjectEventPic_Vanilluxe, 4, 4), +}; +#endif //P_FAMILY_VANILLITE + +#if P_FAMILY_DEERLING + +static const struct SpriteFrameImage sPicTable_DeerlingSpring[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingSpring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingSummer[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingSummer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingAutumn[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingAutumn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_DeerlingWinter[] = { + overworld_ascending_frames(gObjectEventPic_DeerlingWinter, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckSpring[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckSpring, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckSummer[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckSummer, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckAutumn[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckAutumn, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SawsbuckWinter[] = { + overworld_ascending_frames(gObjectEventPic_SawsbuckWinter, 4, 4), +}; +#endif //P_FAMILY_DEERLING + +#if P_FAMILY_EMOLGA +static const struct SpriteFrameImage sPicTable_Emolga[] = { + overworld_ascending_frames(gObjectEventPic_Emolga, 4, 4), +}; +#endif //P_FAMILY_EMOLGA + +#if P_FAMILY_KARRABLAST +static const struct SpriteFrameImage sPicTable_Karrablast[] = { + overworld_ascending_frames(gObjectEventPic_Karrablast, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Escavalier[] = { + overworld_ascending_frames(gObjectEventPic_Escavalier, 4, 4), +}; +#endif //P_FAMILY_KARRABLAST + +#if P_FAMILY_FOONGUS +static const struct SpriteFrameImage sPicTable_Foongus[] = { + overworld_ascending_frames(gObjectEventPic_Foongus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Amoonguss[] = { + overworld_ascending_frames(gObjectEventPic_Amoonguss, 4, 4), +}; +#endif //P_FAMILY_FOONGUS + +#if P_FAMILY_FRILLISH +static const struct SpriteFrameImage sPicTable_Frillish[] = { + overworld_ascending_frames(gObjectEventPic_Frillish, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FrillishF[] = { + overworld_ascending_frames(gObjectEventPic_FrillishF, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Jellicent[] = { + overworld_ascending_frames(gObjectEventPic_Jellicent, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_JellicentF[] = { + overworld_ascending_frames(gObjectEventPic_JellicentF, 4, 4), +}; +#endif //P_FAMILY_FRILLISH + +#if P_FAMILY_ALOMOMOLA +static const struct SpriteFrameImage sPicTable_Alomomola[] = { + overworld_ascending_frames(gObjectEventPic_Alomomola, 4, 4), +}; +#endif //P_FAMILY_ALOMOMOLA + +#if P_FAMILY_JOLTIK +static const struct SpriteFrameImage sPicTable_Joltik[] = { + overworld_ascending_frames(gObjectEventPic_Joltik, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Galvantula[] = { + overworld_ascending_frames(gObjectEventPic_Galvantula, 4, 4), +}; +#endif //P_FAMILY_JOLTIK + +#if P_FAMILY_FERROSEED +static const struct SpriteFrameImage sPicTable_Ferroseed[] = { + overworld_ascending_frames(gObjectEventPic_Ferroseed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ferrothorn[] = { + overworld_ascending_frames(gObjectEventPic_Ferrothorn, 4, 4), +}; +#endif //P_FAMILY_FERROSEED + +#if P_FAMILY_KLINK +static const struct SpriteFrameImage sPicTable_Klink[] = { + overworld_ascending_frames(gObjectEventPic_Klink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Klang[] = { + overworld_ascending_frames(gObjectEventPic_Klang, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Klinklang[] = { + overworld_ascending_frames(gObjectEventPic_Klinklang, 4, 4), +}; +#endif //P_FAMILY_KLINK + +#if P_FAMILY_TYNAMO +static const struct SpriteFrameImage sPicTable_Tynamo[] = { + overworld_ascending_frames(gObjectEventPic_Tynamo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eelektrik[] = { + overworld_ascending_frames(gObjectEventPic_Eelektrik, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eelektross[] = { + overworld_ascending_frames(gObjectEventPic_Eelektross, 4, 4), +}; +#endif //P_FAMILY_TYNAMO + +#if P_FAMILY_ELGYEM +static const struct SpriteFrameImage sPicTable_Elgyem[] = { + overworld_ascending_frames(gObjectEventPic_Elgyem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beheeyem[] = { + overworld_ascending_frames(gObjectEventPic_Beheeyem, 4, 4), +}; +#endif //P_FAMILY_ELGYEM + +#if P_FAMILY_LITWICK +static const struct SpriteFrameImage sPicTable_Litwick[] = { + overworld_ascending_frames(gObjectEventPic_Litwick, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lampent[] = { + overworld_ascending_frames(gObjectEventPic_Lampent, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Chandelure[] = { + overworld_ascending_frames(gObjectEventPic_Chandelure, 4, 4), +}; +#endif //P_FAMILY_LITWICK + +#if P_FAMILY_AXEW +static const struct SpriteFrameImage sPicTable_Axew[] = { + overworld_ascending_frames(gObjectEventPic_Axew, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fraxure[] = { + overworld_ascending_frames(gObjectEventPic_Fraxure, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Haxorus[] = { + overworld_ascending_frames(gObjectEventPic_Haxorus, 4, 4), +}; +#endif //P_FAMILY_AXEW + +#if P_FAMILY_CUBCHOO +static const struct SpriteFrameImage sPicTable_Cubchoo[] = { + overworld_ascending_frames(gObjectEventPic_Cubchoo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Beartic[] = { + overworld_ascending_frames(gObjectEventPic_Beartic, 4, 4), +}; +#endif //P_FAMILY_CUBCHOO + +#if P_FAMILY_CRYOGONAL +static const struct SpriteFrameImage sPicTable_Cryogonal[] = { + overworld_ascending_frames(gObjectEventPic_Cryogonal, 4, 4), +}; +#endif //P_FAMILY_CRYOGONAL + +#if P_FAMILY_SHELMET +static const struct SpriteFrameImage sPicTable_Shelmet[] = { + overworld_ascending_frames(gObjectEventPic_Shelmet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Accelgor[] = { + overworld_ascending_frames(gObjectEventPic_Accelgor, 4, 4), +}; +#endif //P_FAMILY_SHELMET + +#if P_FAMILY_STUNFISK +static const struct SpriteFrameImage sPicTable_Stunfisk[] = { + overworld_ascending_frames(gObjectEventPic_Stunfisk, 4, 4), +}; +#if P_GALARIAN_FORMS +static const struct SpriteFrameImage sPicTable_StunfiskGalarian[] = { + overworld_ascending_frames(gObjectEventPic_StunfiskGalarian, 4, 4), +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO +static const struct SpriteFrameImage sPicTable_Mienfoo[] = { + overworld_ascending_frames(gObjectEventPic_Mienfoo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mienshao[] = { + overworld_ascending_frames(gObjectEventPic_Mienshao, 4, 4), +}; +#endif //P_FAMILY_MIENFOO + +#if P_FAMILY_DRUDDIGON +static const struct SpriteFrameImage sPicTable_Druddigon[] = { + overworld_ascending_frames(gObjectEventPic_Druddigon, 4, 4), +}; +#endif //P_FAMILY_DRUDDIGON + +#if P_FAMILY_GOLETT +static const struct SpriteFrameImage sPicTable_Golett[] = { + overworld_ascending_frames(gObjectEventPic_Golett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golurk[] = { + overworld_ascending_frames(gObjectEventPic_Golurk, 4, 4), +}; +#endif //P_FAMILY_GOLETT + +#if P_FAMILY_PAWNIARD +static const struct SpriteFrameImage sPicTable_Pawniard[] = { + overworld_ascending_frames(gObjectEventPic_Pawniard, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bisharp[] = { + overworld_ascending_frames(gObjectEventPic_Bisharp, 4, 4), +}; +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Kingambit[] = { + overworld_ascending_frames(gObjectEventPic_Kingambit, 4, 4), +};*/ +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT +static const struct SpriteFrameImage sPicTable_Bouffalant[] = { + overworld_ascending_frames(gObjectEventPic_Bouffalant, 4, 4), +}; +#endif //P_FAMILY_BOUFFALANT + +#if P_FAMILY_RUFFLET +static const struct SpriteFrameImage sPicTable_Rufflet[] = { + overworld_ascending_frames(gObjectEventPic_Rufflet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Braviary[] = { + overworld_ascending_frames(gObjectEventPic_Braviary, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_BraviaryHisuian[] = { + overworld_ascending_frames(gObjectEventPic_BraviaryHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY +static const struct SpriteFrameImage sPicTable_Vullaby[] = { + overworld_ascending_frames(gObjectEventPic_Vullaby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mandibuzz[] = { + overworld_ascending_frames(gObjectEventPic_Mandibuzz, 4, 4), +}; +#endif //P_FAMILY_VULLABY + +#if P_FAMILY_HEATMOR +static const struct SpriteFrameImage sPicTable_Heatmor[] = { + overworld_ascending_frames(gObjectEventPic_Heatmor, 4, 4), +}; +#endif //P_FAMILY_HEATMOR + +#if P_FAMILY_DURANT +static const struct SpriteFrameImage sPicTable_Durant[] = { + overworld_ascending_frames(gObjectEventPic_Durant, 4, 4), +}; +#endif //P_FAMILY_DURANT + +#if P_FAMILY_DEINO +static const struct SpriteFrameImage sPicTable_Deino[] = { + overworld_ascending_frames(gObjectEventPic_Deino, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Zweilous[] = { + overworld_ascending_frames(gObjectEventPic_Zweilous, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hydreigon[] = { + overworld_ascending_frames(gObjectEventPic_Hydreigon, 4, 4), +}; +#endif //P_FAMILY_DEINO + +#if P_FAMILY_LARVESTA +static const struct SpriteFrameImage sPicTable_Larvesta[] = { + overworld_ascending_frames(gObjectEventPic_Larvesta, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Volcarona[] = { + overworld_ascending_frames(gObjectEventPic_Volcarona, 4, 4), +}; +#endif //P_FAMILY_LARVESTA + +#if P_FAMILY_COBALION +static const struct SpriteFrameImage sPicTable_Cobalion[] = { + overworld_ascending_frames(gObjectEventPic_Cobalion, 4, 4), +}; +#endif //P_FAMILY_COBALION + +#if P_FAMILY_TERRAKION +static const struct SpriteFrameImage sPicTable_Terrakion[] = { + overworld_ascending_frames(gObjectEventPic_Terrakion, 4, 4), +}; +#endif //P_FAMILY_TERRAKION + +#if P_FAMILY_VIRIZION +static const struct SpriteFrameImage sPicTable_Virizion[] = { + overworld_ascending_frames(gObjectEventPic_Virizion, 4, 4), +}; +#endif //P_FAMILY_VIRIZION + +#if P_FAMILY_TORNADUS + +static const struct SpriteFrameImage sPicTable_TornadusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_TornadusIncarnate, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_TornadusTherian[] = { + overworld_ascending_frames(gObjectEventPic_TornadusTherian, 4, 4), +};*/ +#endif //P_FAMILY_TORNADUS + +#if P_FAMILY_THUNDURUS + +static const struct SpriteFrameImage sPicTable_ThundurusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_ThundurusIncarnate, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_ThundurusTherian[] = { + overworld_ascending_frames(gObjectEventPic_ThundurusTherian, 4, 4), +};*/ +#endif //P_FAMILY_THUNDURUS + +#if P_FAMILY_RESHIRAM +static const struct SpriteFrameImage sPicTable_Reshiram[] = { + overworld_ascending_frames(gObjectEventPic_Reshiram, 4, 4), +}; +#endif //P_FAMILY_RESHIRAM + +#if P_FAMILY_ZEKROM +static const struct SpriteFrameImage sPicTable_Zekrom[] = { + overworld_ascending_frames(gObjectEventPic_Zekrom, 4, 4), +}; +#endif //P_FAMILY_ZEKROM + +#if P_FAMILY_LANDORUS + +static const struct SpriteFrameImage sPicTable_LandorusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_LandorusIncarnate, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_LandorusTherian[] = { + overworld_ascending_frames(gObjectEventPic_LandorusTherian, 4, 4), +};*/ +#endif //P_FAMILY_LANDORUS + +#if P_FAMILY_ENAMORUS +static const struct SpriteFrameImage sPicTable_EnamorusIncarnate[] = { + overworld_ascending_frames(gObjectEventPic_EnamorusIncarnate, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_EnamorusTherian[] = { + overworld_ascending_frames(gObjectEventPic_EnamorusTherian, 4, 4), +}; +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_KYUREM +static const struct SpriteFrameImage sPicTable_Kyurem[] = { + overworld_ascending_frames(gObjectEventPic_Kyurem, 4, 4), +}; +#if P_FUSION_FORMS +/*static const struct SpriteFrameImage sPicTable_KyuremWhite[] = { + overworld_ascending_frames(gObjectEventPic_KyuremWhite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_KyuremBlack[] = { + overworld_ascending_frames(gObjectEventPic_KyuremBlack, 4, 4), +};*/ +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO +static const struct SpriteFrameImage sPicTable_KeldeoOrdinary[] = { + overworld_ascending_frames(gObjectEventPic_KeldeoOrdinary, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_KeldeoResolute[] = { + overworld_ascending_frames(gObjectEventPic_KeldeoResolute, 4, 4), +};*/ +#endif //P_FAMILY_KELDEO + +#if P_FAMILY_MELOETTA +static const struct SpriteFrameImage sPicTable_MeloettaAria[] = { + overworld_ascending_frames(gObjectEventPic_MeloettaAria, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeloettaPirouette[] = { + overworld_ascending_frames(gObjectEventPic_MeloettaPirouette, 4, 4), +}; +#endif //P_FAMILY_MELOETTA + +#if P_FAMILY_GENESECT +static const struct SpriteFrameImage sPicTable_Genesect[] = { + overworld_ascending_frames(gObjectEventPic_Genesect, 4, 4), +}; + + + + +#endif //P_FAMILY_GENESECT + +#if P_FAMILY_CHESPIN +static const struct SpriteFrameImage sPicTable_Chespin[] = { + overworld_ascending_frames(gObjectEventPic_Chespin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quilladin[] = { + overworld_ascending_frames(gObjectEventPic_Quilladin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Chesnaught[] = { + overworld_ascending_frames(gObjectEventPic_Chesnaught, 4, 4), +}; +#endif //P_FAMILY_CHESPIN + +#if P_FAMILY_FENNEKIN +static const struct SpriteFrameImage sPicTable_Fennekin[] = { + overworld_ascending_frames(gObjectEventPic_Fennekin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Braixen[] = { + overworld_ascending_frames(gObjectEventPic_Braixen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Delphox[] = { + overworld_ascending_frames(gObjectEventPic_Delphox, 4, 4), +}; +#endif //P_FAMILY_FENNEKIN + +#if P_FAMILY_FROAKIE +static const struct SpriteFrameImage sPicTable_Froakie[] = { + overworld_ascending_frames(gObjectEventPic_Froakie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Frogadier[] = { + overworld_ascending_frames(gObjectEventPic_Frogadier, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Greninja[] = { + overworld_ascending_frames(gObjectEventPic_Greninja, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_GreninjaAsh[] = { + overworld_ascending_frames(gObjectEventPic_GreninjaAsh, 4, 4), +};*/ +#endif //P_FAMILY_FROAKIE + +#if P_FAMILY_BUNNELBY +static const struct SpriteFrameImage sPicTable_Bunnelby[] = { + overworld_ascending_frames(gObjectEventPic_Bunnelby, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Diggersby[] = { + overworld_ascending_frames(gObjectEventPic_Diggersby, 4, 4), +}; +#endif //P_FAMILY_BUNNELBY + +#if P_FAMILY_FLETCHLING +static const struct SpriteFrameImage sPicTable_Fletchling[] = { + overworld_ascending_frames(gObjectEventPic_Fletchling, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Fletchinder[] = { + overworld_ascending_frames(gObjectEventPic_Fletchinder, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Talonflame[] = { + overworld_ascending_frames(gObjectEventPic_Talonflame, 4, 4), +}; +#endif //P_FAMILY_FLETCHLING + +#if P_FAMILY_SCATTERBUG +static const struct SpriteFrameImage sPicTable_Scatterbug[] = { + overworld_ascending_frames(gObjectEventPic_Scatterbug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Spewpa[] = { + overworld_ascending_frames(gObjectEventPic_Spewpa, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonIcySnow[] = { + overworld_ascending_frames(gObjectEventPic_VivillonIcySnow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonPolar[] = { + overworld_ascending_frames(gObjectEventPic_VivillonPolar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonTundra[] = { + overworld_ascending_frames(gObjectEventPic_VivillonTundra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonContinental[] = { + overworld_ascending_frames(gObjectEventPic_VivillonContinental, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonGarden[] = { + overworld_ascending_frames(gObjectEventPic_VivillonGarden, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonElegant[] = { + overworld_ascending_frames(gObjectEventPic_VivillonElegant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMeadow[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMeadow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonModern[] = { + overworld_ascending_frames(gObjectEventPic_VivillonModern, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMarine[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMarine, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonArchipelago[] = { + overworld_ascending_frames(gObjectEventPic_VivillonArchipelago, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonHighPlains[] = { + overworld_ascending_frames(gObjectEventPic_VivillonHighPlains, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSandstorm[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSandstorm, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonRiver[] = { + overworld_ascending_frames(gObjectEventPic_VivillonRiver, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonMonsoon[] = { + overworld_ascending_frames(gObjectEventPic_VivillonMonsoon, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSavanna[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSavanna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonSun[] = { + overworld_ascending_frames(gObjectEventPic_VivillonSun, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonOcean[] = { + overworld_ascending_frames(gObjectEventPic_VivillonOcean, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonJungle[] = { + overworld_ascending_frames(gObjectEventPic_VivillonJungle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonFancy[] = { + overworld_ascending_frames(gObjectEventPic_VivillonFancy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_VivillonPokeBall[] = { + overworld_ascending_frames(gObjectEventPic_VivillonPokeBall, 4, 4), +}; +#endif //P_FAMILY_SCATTERBUG + +#if P_FAMILY_LITLEO +static const struct SpriteFrameImage sPicTable_Litleo[] = { + overworld_ascending_frames(gObjectEventPic_Litleo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pyroar[] = { + overworld_ascending_frames(gObjectEventPic_Pyroar, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PyroarF[] = { + overworld_ascending_frames(gObjectEventPic_PyroarF, 4, 4), +}; +#endif //P_FAMILY_LITLEO + +#if P_FAMILY_FLABEBE + +static const struct SpriteFrameImage sPicTable_FlabebeRedFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeRedFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeYellowFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeYellowFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeOrangeFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeOrangeFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeBlueFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeBlueFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlabebeWhiteFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlabebeWhiteFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteRedFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteRedFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteYellowFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteYellowFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteOrangeFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteOrangeFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteBlueFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteBlueFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteWhiteFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteWhiteFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FloetteEternalFlower[] = { + overworld_ascending_frames(gObjectEventPic_FloetteEternalFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesRedFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesRedFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesYellowFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesYellowFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesOrangeFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesOrangeFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesBlueFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesBlueFlower, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FlorgesWhiteFlower[] = { + overworld_ascending_frames(gObjectEventPic_FlorgesWhiteFlower, 4, 4), +}; +#endif //P_FAMILY_FLABEBE + +#if P_FAMILY_SKIDDO +static const struct SpriteFrameImage sPicTable_Skiddo[] = { + overworld_ascending_frames(gObjectEventPic_Skiddo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gogoat[] = { + overworld_ascending_frames(gObjectEventPic_Gogoat, 4, 4), +}; +#endif //P_FAMILY_SKIDDO + +#if P_FAMILY_PANCHAM +static const struct SpriteFrameImage sPicTable_Pancham[] = { + overworld_ascending_frames(gObjectEventPic_Pancham, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pangoro[] = { + overworld_ascending_frames(gObjectEventPic_Pangoro, 4, 4), +}; +#endif //P_FAMILY_PANCHAM + +#if P_FAMILY_FURFROU +static const struct SpriteFrameImage sPicTable_FurfrouNatural[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouNatural, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouHeartTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouHeartTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouStarTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouStarTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDiamondTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDiamondTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDebutanteTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDebutanteTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouMatronTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouMatronTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouDandyTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouDandyTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouLaReineTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouLaReineTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouKabukiTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouKabukiTrim, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_FurfrouPharaohTrim[] = { + overworld_ascending_frames(gObjectEventPic_FurfrouPharaohTrim, 4, 4), +}; +#endif //P_FAMILY_FURFROU + +#if P_FAMILY_ESPURR +static const struct SpriteFrameImage sPicTable_Espurr[] = { + overworld_ascending_frames(gObjectEventPic_Espurr, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeowsticMale[] = { + overworld_ascending_frames(gObjectEventPic_MeowsticMale, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MeowsticFemale[] = { + overworld_ascending_frames(gObjectEventPic_MeowsticFemale, 4, 4), +}; +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE +static const struct SpriteFrameImage sPicTable_Honedge[] = { + overworld_ascending_frames(gObjectEventPic_Honedge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Doublade[] = { + overworld_ascending_frames(gObjectEventPic_Doublade, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_AegislashShield[] = { + overworld_ascending_frames(gObjectEventPic_AegislashShield, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_AegislashBlade[] = { + overworld_ascending_frames(gObjectEventPic_AegislashBlade, 4, 4), +};*/ +#endif //P_FAMILY_HONEDGE + +#if P_FAMILY_SPRITZEE +static const struct SpriteFrameImage sPicTable_Spritzee[] = { + overworld_ascending_frames(gObjectEventPic_Spritzee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aromatisse[] = { + overworld_ascending_frames(gObjectEventPic_Aromatisse, 4, 4), +}; +#endif //P_FAMILY_SPRITZEE + +#if P_FAMILY_SWIRLIX +static const struct SpriteFrameImage sPicTable_Swirlix[] = { + overworld_ascending_frames(gObjectEventPic_Swirlix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Slurpuff[] = { + overworld_ascending_frames(gObjectEventPic_Slurpuff, 4, 4), +}; +#endif //P_FAMILY_SWIRLIX + +#if P_FAMILY_INKAY +static const struct SpriteFrameImage sPicTable_Inkay[] = { + overworld_ascending_frames(gObjectEventPic_Inkay, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Malamar[] = { + overworld_ascending_frames(gObjectEventPic_Malamar, 4, 4), +}; +#endif //P_FAMILY_INKAY + +#if P_FAMILY_BINACLE +static const struct SpriteFrameImage sPicTable_Binacle[] = { + overworld_ascending_frames(gObjectEventPic_Binacle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Barbaracle[] = { + overworld_ascending_frames(gObjectEventPic_Barbaracle, 4, 4), +}; +#endif //P_FAMILY_BINACLE + +#if P_FAMILY_SKRELP +static const struct SpriteFrameImage sPicTable_Skrelp[] = { + overworld_ascending_frames(gObjectEventPic_Skrelp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragalge[] = { + overworld_ascending_frames(gObjectEventPic_Dragalge, 4, 4), +}; +#endif //P_FAMILY_SKRELP + +#if P_FAMILY_CLAUNCHER +static const struct SpriteFrameImage sPicTable_Clauncher[] = { + overworld_ascending_frames(gObjectEventPic_Clauncher, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Clawitzer[] = { + overworld_ascending_frames(gObjectEventPic_Clawitzer, 4, 4), +}; +#endif //P_FAMILY_CLAUNCHER + +#if P_FAMILY_HELIOPTILE +static const struct SpriteFrameImage sPicTable_Helioptile[] = { + overworld_ascending_frames(gObjectEventPic_Helioptile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Heliolisk[] = { + overworld_ascending_frames(gObjectEventPic_Heliolisk, 4, 4), +}; +#endif //P_FAMILY_HELIOPTILE + +#if P_FAMILY_TYRUNT +static const struct SpriteFrameImage sPicTable_Tyrunt[] = { + overworld_ascending_frames(gObjectEventPic_Tyrunt, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tyrantrum[] = { + overworld_ascending_frames(gObjectEventPic_Tyrantrum, 4, 4), +}; +#endif //P_FAMILY_TYRUNT + +#if P_FAMILY_AMAURA +static const struct SpriteFrameImage sPicTable_Amaura[] = { + overworld_ascending_frames(gObjectEventPic_Amaura, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Aurorus[] = { + overworld_ascending_frames(gObjectEventPic_Aurorus, 4, 4), +}; +#endif //P_FAMILY_AMAURA + +#if P_FAMILY_HAWLUCHA +static const struct SpriteFrameImage sPicTable_Hawlucha[] = { + overworld_ascending_frames(gObjectEventPic_Hawlucha, 4, 4), +}; +#endif //P_FAMILY_HAWLUCHA + +#if P_FAMILY_DEDENNE +static const struct SpriteFrameImage sPicTable_Dedenne[] = { + overworld_ascending_frames(gObjectEventPic_Dedenne, 4, 4), +}; +#endif //P_FAMILY_DEDENNE + +#if P_FAMILY_CARBINK +static const struct SpriteFrameImage sPicTable_Carbink[] = { + overworld_ascending_frames(gObjectEventPic_Carbink, 4, 4), +}; +#endif //P_FAMILY_CARBINK + +#if P_FAMILY_GOOMY +static const struct SpriteFrameImage sPicTable_Goomy[] = { + overworld_ascending_frames(gObjectEventPic_Goomy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sliggoo[] = { + overworld_ascending_frames(gObjectEventPic_Sliggoo, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_SliggooHisuian[] = { + overworld_ascending_frames(gObjectEventPic_SliggooHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS + +static const struct SpriteFrameImage sPicTable_Goodra[] = { + overworld_ascending_frames(gObjectEventPic_Goodra, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_GoodraHisuian[] = { + overworld_ascending_frames(gObjectEventPic_GoodraHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI +static const struct SpriteFrameImage sPicTable_Klefki[] = { + overworld_ascending_frames(gObjectEventPic_Klefki, 4, 4), +}; +#endif //P_FAMILY_KLEFKI + +#if P_FAMILY_PHANTUMP +static const struct SpriteFrameImage sPicTable_Phantump[] = { + overworld_ascending_frames(gObjectEventPic_Phantump, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Trevenant[] = { + overworld_ascending_frames(gObjectEventPic_Trevenant, 4, 4), +}; +#endif //P_FAMILY_PHANTUMP + +#if P_FAMILY_PUMPKABOO + +static const struct SpriteFrameImage sPicTable_PumpkabooAverage[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooAverage, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_PumpkabooSmall[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooSmall, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PumpkabooLarge[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooLarge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PumpkabooSuper[] = { + overworld_ascending_frames(gObjectEventPic_PumpkabooSuper, 4, 4), +};*/ + +static const struct SpriteFrameImage sPicTable_GourgeistAverage[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistAverage, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_GourgeistSmall[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistSmall, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GourgeistLarge[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistLarge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GourgeistSuper[] = { + overworld_ascending_frames(gObjectEventPic_GourgeistSuper, 4, 4), +};*/ +#endif //P_FAMILY_PUMPKABOO + +#if P_FAMILY_BERGMITE +static const struct SpriteFrameImage sPicTable_Bergmite[] = { + overworld_ascending_frames(gObjectEventPic_Bergmite, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Avalugg[] = { + overworld_ascending_frames(gObjectEventPic_Avalugg, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_AvaluggHisuian[] = { + overworld_ascending_frames(gObjectEventPic_AvaluggHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT +static const struct SpriteFrameImage sPicTable_Noibat[] = { + overworld_ascending_frames(gObjectEventPic_Noibat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Noivern[] = { + overworld_ascending_frames(gObjectEventPic_Noivern, 4, 4), +}; +#endif //P_FAMILY_NOIBAT + +#if P_FAMILY_XERNEAS + +static const struct SpriteFrameImage sPicTable_XerneasNeutral[] = { + overworld_ascending_frames(gObjectEventPic_XerneasNeutral, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_XerneasActive[] = { + overworld_ascending_frames(gObjectEventPic_XerneasActive, 4, 4), +};*/ +#endif //P_FAMILY_XERNEAS + +#if P_FAMILY_YVELTAL +static const struct SpriteFrameImage sPicTable_Yveltal[] = { + overworld_ascending_frames(gObjectEventPic_Yveltal, 4, 4), +}; +#endif //P_FAMILY_YVELTAL + +#if P_FAMILY_ZYGARDE + +static const struct SpriteFrameImage sPicTable_Zygarde50[] = { + overworld_ascending_frames(gObjectEventPic_Zygarde50, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_Zygarde10[] = { + overworld_ascending_frames(gObjectEventPic_Zygarde10, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZygardeComplete[] = { + overworld_ascending_frames(gObjectEventPic_ZygardeComplete, 4, 4), +}; +*/ +#endif //P_FAMILY_ZYGARDE + +#if P_FAMILY_DIANCIE +static const struct SpriteFrameImage sPicTable_Diancie[] = { + overworld_ascending_frames(gObjectEventPic_Diancie, 4, 4), +}; +#if P_MEGA_EVOLUTIONS +/*static const struct SpriteFrameImage sPicTable_DiancieMega[] = { + overworld_ascending_frames(gObjectEventPic_DiancieMega, 4, 4), +};*/ +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE + +#if P_FAMILY_HOOPA +static const struct SpriteFrameImage sPicTable_HoopaConfined[] = { + overworld_ascending_frames(gObjectEventPic_HoopaConfined, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HoopaUnbound[] = { + overworld_ascending_frames(gObjectEventPic_HoopaUnbound, 4, 4), +}; +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION +static const struct SpriteFrameImage sPicTable_Volcanion[] = { + overworld_ascending_frames(gObjectEventPic_Volcanion, 4, 4), +}; +#endif //P_FAMILY_VOLCANION + +#if P_FAMILY_ROWLET +static const struct SpriteFrameImage sPicTable_Rowlet[] = { + overworld_ascending_frames(gObjectEventPic_Rowlet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dartrix[] = { + overworld_ascending_frames(gObjectEventPic_Dartrix, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Decidueye[] = { + overworld_ascending_frames(gObjectEventPic_Decidueye, 4, 4), +}; +#if P_HISUIAN_FORMS +static const struct SpriteFrameImage sPicTable_DecidueyeHisuian[] = { + overworld_ascending_frames(gObjectEventPic_DecidueyeHisuian, 4, 4), +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN +static const struct SpriteFrameImage sPicTable_Litten[] = { + overworld_ascending_frames(gObjectEventPic_Litten, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Torracat[] = { + overworld_ascending_frames(gObjectEventPic_Torracat, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Incineroar[] = { + overworld_ascending_frames(gObjectEventPic_Incineroar, 4, 4), +}; +#endif //P_FAMILY_LITTEN + +#if P_FAMILY_POPPLIO +static const struct SpriteFrameImage sPicTable_Popplio[] = { + overworld_ascending_frames(gObjectEventPic_Popplio, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Brionne[] = { + overworld_ascending_frames(gObjectEventPic_Brionne, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Primarina[] = { + overworld_ascending_frames(gObjectEventPic_Primarina, 4, 4), +}; +#endif //P_FAMILY_POPPLIO + +#if P_FAMILY_PIKIPEK +static const struct SpriteFrameImage sPicTable_Pikipek[] = { + overworld_ascending_frames(gObjectEventPic_Pikipek, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Trumbeak[] = { + overworld_ascending_frames(gObjectEventPic_Trumbeak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toucannon[] = { + overworld_ascending_frames(gObjectEventPic_Toucannon, 4, 4), +}; +#endif //P_FAMILY_PIKIPEK + +#if P_FAMILY_YUNGOOS +static const struct SpriteFrameImage sPicTable_Yungoos[] = { + overworld_ascending_frames(gObjectEventPic_Yungoos, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gumshoos[] = { + overworld_ascending_frames(gObjectEventPic_Gumshoos, 4, 4), +}; +#endif //P_FAMILY_YUNGOOS + +#if P_FAMILY_GRUBBIN +static const struct SpriteFrameImage sPicTable_Grubbin[] = { + overworld_ascending_frames(gObjectEventPic_Grubbin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Charjabug[] = { + overworld_ascending_frames(gObjectEventPic_Charjabug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Vikavolt[] = { + overworld_ascending_frames(gObjectEventPic_Vikavolt, 4, 4), +}; +#endif //P_FAMILY_GRUBBIN + +#if P_FAMILY_CRABRAWLER +static const struct SpriteFrameImage sPicTable_Crabrawler[] = { + overworld_ascending_frames(gObjectEventPic_Crabrawler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crabominable[] = { + overworld_ascending_frames(gObjectEventPic_Crabominable, 4, 4), +}; +#endif //P_FAMILY_CRABRAWLER + +#if P_FAMILY_ORICORIO + +static const struct SpriteFrameImage sPicTable_OricorioBaile[] = { + overworld_ascending_frames(gObjectEventPic_OricorioBaile, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_OricorioPomPom[] = { + overworld_ascending_frames(gObjectEventPic_OricorioPomPom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OricorioPau[] = { + overworld_ascending_frames(gObjectEventPic_OricorioPau, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OricorioSensu[] = { + overworld_ascending_frames(gObjectEventPic_OricorioSensu, 4, 4), +};*/ +#endif //P_FAMILY_ORICORIO + +#if P_FAMILY_CUTIEFLY +static const struct SpriteFrameImage sPicTable_Cutiefly[] = { + overworld_ascending_frames(gObjectEventPic_Cutiefly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ribombee[] = { + overworld_ascending_frames(gObjectEventPic_Ribombee, 4, 4), +}; +#endif //P_FAMILY_CUTIEFLY + +#if P_FAMILY_ROCKRUFF +static const struct SpriteFrameImage sPicTable_Rockruff[] = { + overworld_ascending_frames(gObjectEventPic_Rockruff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocMidday[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocMidday, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocMidnight[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocMidnight, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_LycanrocDusk[] = { + overworld_ascending_frames(gObjectEventPic_LycanrocDusk, 4, 4), +}; +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI + +static const struct SpriteFrameImage sPicTable_WishiwashiSolo[] = { + overworld_ascending_frames(gObjectEventPic_WishiwashiSolo, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_WishiwashiSchool[] = { + overworld_ascending_frames(gObjectEventPic_WishiwashiSchool, 4, 4), +};*/ +#endif //P_FAMILY_WISHIWASHI + +#if P_FAMILY_MAREANIE +static const struct SpriteFrameImage sPicTable_Mareanie[] = { + overworld_ascending_frames(gObjectEventPic_Mareanie, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toxapex[] = { + overworld_ascending_frames(gObjectEventPic_Toxapex, 4, 4), +}; +#endif //P_FAMILY_MAREANIE + +#if P_FAMILY_MUDBRAY +static const struct SpriteFrameImage sPicTable_Mudbray[] = { + overworld_ascending_frames(gObjectEventPic_Mudbray, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mudsdale[] = { + overworld_ascending_frames(gObjectEventPic_Mudsdale, 4, 4), +}; +#endif //P_FAMILY_MUDBRAY + +#if P_FAMILY_DEWPIDER +static const struct SpriteFrameImage sPicTable_Dewpider[] = { + overworld_ascending_frames(gObjectEventPic_Dewpider, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Araquanid[] = { + overworld_ascending_frames(gObjectEventPic_Araquanid, 4, 4), +}; +#endif //P_FAMILY_DEWPIDER + +#if P_FAMILY_FOMANTIS +static const struct SpriteFrameImage sPicTable_Fomantis[] = { + overworld_ascending_frames(gObjectEventPic_Fomantis, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lurantis[] = { + overworld_ascending_frames(gObjectEventPic_Lurantis, 4, 4), +}; +#endif //P_FAMILY_FOMANTIS + +#if P_FAMILY_MORELULL +static const struct SpriteFrameImage sPicTable_Morelull[] = { + overworld_ascending_frames(gObjectEventPic_Morelull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Shiinotic[] = { + overworld_ascending_frames(gObjectEventPic_Shiinotic, 4, 4), +}; +#endif //P_FAMILY_MORELULL + +#if P_FAMILY_SALANDIT +static const struct SpriteFrameImage sPicTable_Salandit[] = { + overworld_ascending_frames(gObjectEventPic_Salandit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Salazzle[] = { + overworld_ascending_frames(gObjectEventPic_Salazzle, 4, 4), +}; +#endif //P_FAMILY_SALANDIT + +#if P_FAMILY_STUFFUL +static const struct SpriteFrameImage sPicTable_Stufful[] = { + overworld_ascending_frames(gObjectEventPic_Stufful, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bewear[] = { + overworld_ascending_frames(gObjectEventPic_Bewear, 4, 4), +}; +#endif //P_FAMILY_STUFFUL + +#if P_FAMILY_BOUNSWEET +static const struct SpriteFrameImage sPicTable_Bounsweet[] = { + overworld_ascending_frames(gObjectEventPic_Bounsweet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Steenee[] = { + overworld_ascending_frames(gObjectEventPic_Steenee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tsareena[] = { + overworld_ascending_frames(gObjectEventPic_Tsareena, 4, 4), +}; +#endif //P_FAMILY_BOUNSWEET + +#if P_FAMILY_COMFEY +static const struct SpriteFrameImage sPicTable_Comfey[] = { + overworld_ascending_frames(gObjectEventPic_Comfey, 4, 4), +}; +#endif //P_FAMILY_COMFEY + +#if P_FAMILY_ORANGURU +static const struct SpriteFrameImage sPicTable_Oranguru[] = { + overworld_ascending_frames(gObjectEventPic_Oranguru, 4, 4), +}; +#endif //P_FAMILY_ORANGURU + +#if P_FAMILY_PASSIMIAN +static const struct SpriteFrameImage sPicTable_Passimian[] = { + overworld_ascending_frames(gObjectEventPic_Passimian, 4, 4), +}; +#endif //P_FAMILY_PASSIMIAN + +#if P_FAMILY_WIMPOD +static const struct SpriteFrameImage sPicTable_Wimpod[] = { + overworld_ascending_frames(gObjectEventPic_Wimpod, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Golisopod[] = { + overworld_ascending_frames(gObjectEventPic_Golisopod, 4, 4), +}; +#endif //P_FAMILY_WIMPOD + +#if P_FAMILY_SANDYGAST +static const struct SpriteFrameImage sPicTable_Sandygast[] = { + overworld_ascending_frames(gObjectEventPic_Sandygast, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Palossand[] = { + overworld_ascending_frames(gObjectEventPic_Palossand, 4, 4), +}; +#endif //P_FAMILY_SANDYGAST + +#if P_FAMILY_PYUKUMUKU +static const struct SpriteFrameImage sPicTable_Pyukumuku[] = { + overworld_ascending_frames(gObjectEventPic_Pyukumuku, 4, 4), +}; +#endif //P_FAMILY_PYUKUMUKU + +#if P_FAMILY_TYPE_NULL +static const struct SpriteFrameImage sPicTable_TypeNull[] = { + overworld_ascending_frames(gObjectEventPic_TypeNull, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Silvally[] = { + overworld_ascending_frames(gObjectEventPic_Silvally, 4, 4), +}; +#endif //P_FAMILY_TYPE_NULL + +#if P_FAMILY_MINIOR +static const struct SpriteFrameImage sPicTable_MiniorMeteor[] = { + overworld_ascending_frames(gObjectEventPic_MiniorMeteor, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MiniorCoreRed[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreRed, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreOrange[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreOrange, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreYellow[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreYellow, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreGreen[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreGreen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreBlue[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreBlue, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreIndigo[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreIndigo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MiniorCoreViolet[] = { + overworld_ascending_frames(gObjectEventPic_MiniorCoreViolet, 4, 4), +};*/ +#endif //P_FAMILY_MINIOR + +#if P_FAMILY_KOMALA +static const struct SpriteFrameImage sPicTable_Komala[] = { + overworld_ascending_frames(gObjectEventPic_Komala, 4, 4), +}; +#endif //P_FAMILY_KOMALA + +#if P_FAMILY_TURTONATOR +static const struct SpriteFrameImage sPicTable_Turtonator[] = { + overworld_ascending_frames(gObjectEventPic_Turtonator, 4, 4), +}; +#endif //P_FAMILY_TURTONATOR + +#if P_FAMILY_TOGEDEMARU +static const struct SpriteFrameImage sPicTable_Togedemaru[] = { + overworld_ascending_frames(gObjectEventPic_Togedemaru, 4, 4), +}; +#endif //P_FAMILY_TOGEDEMARU + +#if P_FAMILY_MIMIKYU +static const struct SpriteFrameImage sPicTable_MimikyuDisguised[] = { + overworld_ascending_frames(gObjectEventPic_MimikyuDisguised, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MimikyuBusted[] = { + overworld_ascending_frames(gObjectEventPic_MimikyuBusted, 4, 4), +};*/ +#endif //P_FAMILY_MIMIKYU + +#if P_FAMILY_BRUXISH +static const struct SpriteFrameImage sPicTable_Bruxish[] = { + overworld_ascending_frames(gObjectEventPic_Bruxish, 4, 4), +}; +#endif //P_FAMILY_BRUXISH + +#if P_FAMILY_DRAMPA +static const struct SpriteFrameImage sPicTable_Drampa[] = { + overworld_ascending_frames(gObjectEventPic_Drampa, 4, 4), +}; +#endif //P_FAMILY_DRAMPA + +#if P_FAMILY_DHELMISE +static const struct SpriteFrameImage sPicTable_Dhelmise[] = { + overworld_ascending_frames(gObjectEventPic_Dhelmise, 4, 4), +}; +#endif //P_FAMILY_DHELMISE + +#if P_FAMILY_JANGMO_O +static const struct SpriteFrameImage sPicTable_JangmoO[] = { + overworld_ascending_frames(gObjectEventPic_JangmoO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_HakamoO[] = { + overworld_ascending_frames(gObjectEventPic_HakamoO, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_KommoO[] = { + overworld_ascending_frames(gObjectEventPic_KommoO, 4, 4), +}; +#endif //P_FAMILY_JANGMO_O + +#if P_FAMILY_TAPU_KOKO +static const struct SpriteFrameImage sPicTable_TapuKoko[] = { + overworld_ascending_frames(gObjectEventPic_TapuKoko, 4, 4), +}; +#endif //P_FAMILY_TAPU_KOKO + +#if P_FAMILY_TAPU_LELE +static const struct SpriteFrameImage sPicTable_TapuLele[] = { + overworld_ascending_frames(gObjectEventPic_TapuLele, 4, 4), +}; +#endif //P_FAMILY_TAPU_LELE + +#if P_FAMILY_TAPU_BULU +static const struct SpriteFrameImage sPicTable_TapuBulu[] = { + overworld_ascending_frames(gObjectEventPic_TapuBulu, 4, 4), +}; +#endif //P_FAMILY_TAPU_BULU + +#if P_FAMILY_TAPU_FINI +static const struct SpriteFrameImage sPicTable_TapuFini[] = { + overworld_ascending_frames(gObjectEventPic_TapuFini, 4, 4), +}; +#endif //P_FAMILY_TAPU_FINI + +#if P_FAMILY_COSMOG +static const struct SpriteFrameImage sPicTable_Cosmog[] = { + overworld_ascending_frames(gObjectEventPic_Cosmog, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cosmoem[] = { + overworld_ascending_frames(gObjectEventPic_Cosmoem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Solgaleo[] = { + overworld_ascending_frames(gObjectEventPic_Solgaleo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lunala[] = { + overworld_ascending_frames(gObjectEventPic_Lunala, 4, 4), +}; +#endif //P_FAMILY_COSMOG + +#if P_FAMILY_NIHILEGO +static const struct SpriteFrameImage sPicTable_Nihilego[] = { + overworld_ascending_frames(gObjectEventPic_Nihilego, 4, 4), +}; +#endif //P_FAMILY_NIHILEGO + +#if P_FAMILY_BUZZWOLE +static const struct SpriteFrameImage sPicTable_Buzzwole[] = { + overworld_ascending_frames(gObjectEventPic_Buzzwole, 4, 4), +}; +#endif //P_FAMILY_BUZZWOLE + +#if P_FAMILY_PHEROMOSA +static const struct SpriteFrameImage sPicTable_Pheromosa[] = { + overworld_ascending_frames(gObjectEventPic_Pheromosa, 4, 4), +}; +#endif //P_FAMILY_PHEROMOSA + +#if P_FAMILY_XURKITREE +static const struct SpriteFrameImage sPicTable_Xurkitree[] = { + overworld_ascending_frames(gObjectEventPic_Xurkitree, 4, 4), +}; +#endif //P_FAMILY_XURKITREE + +#if P_FAMILY_CELESTEELA +static const struct SpriteFrameImage sPicTable_Celesteela[] = { + overworld_ascending_frames(gObjectEventPic_Celesteela, 4, 4), +}; +#endif //P_FAMILY_CELESTEELA + +#if P_FAMILY_KARTANA +static const struct SpriteFrameImage sPicTable_Kartana[] = { + overworld_ascending_frames(gObjectEventPic_Kartana, 4, 4), +}; +#endif //P_FAMILY_KARTANA + +#if P_FAMILY_GUZZLORD +static const struct SpriteFrameImage sPicTable_Guzzlord[] = { + overworld_ascending_frames(gObjectEventPic_Guzzlord, 4, 4), +}; +#endif //P_FAMILY_GUZZLORD + +#if P_FAMILY_NECROZMA +static const struct SpriteFrameImage sPicTable_Necrozma[] = { + overworld_ascending_frames(gObjectEventPic_Necrozma, 4, 4), +}; +#if P_FUSION_FORMS + +static const struct SpriteFrameImage sPicTable_NecrozmaDuskMane[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaDuskMane, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_NecrozmaDawnWings[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaDawnWings, 4, 4), +}; +#if P_ULTRA_BURST_FORMS +/*static const struct SpriteFrameImage sPicTable_NecrozmaUltra[] = { + overworld_ascending_frames(gObjectEventPic_NecrozmaUltra, 4, 4), +};*/ +#endif //P_ULTRA_BURST_FORMS +#endif //P_FUSION_FORMS +#endif //P_FAMILY_NECROZMA + +#if P_FAMILY_MAGEARNA +static const struct SpriteFrameImage sPicTable_Magearna[] = { + overworld_ascending_frames(gObjectEventPic_Magearna, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MagearnaOriginalColor[] = { + overworld_ascending_frames(gObjectEventPic_MagearnaOriginalColor, 4, 4), +};*/ +#endif //P_FAMILY_MAGEARNA + +#if P_FAMILY_MARSHADOW +static const struct SpriteFrameImage sPicTable_Marshadow[] = { + overworld_ascending_frames(gObjectEventPic_Marshadow, 4, 4), +}; +#endif //P_FAMILY_MARSHADOW + +#if P_FAMILY_POIPOLE +static const struct SpriteFrameImage sPicTable_Poipole[] = { + overworld_ascending_frames(gObjectEventPic_Poipole, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Naganadel[] = { + overworld_ascending_frames(gObjectEventPic_Naganadel, 4, 4), +}; +#endif //P_FAMILY_POIPOLE + +#if P_FAMILY_STAKATAKA +static const struct SpriteFrameImage sPicTable_Stakataka[] = { + overworld_ascending_frames(gObjectEventPic_Stakataka, 4, 4), +}; +#endif //P_FAMILY_STAKATAKA + +#if P_FAMILY_BLACEPHALON +static const struct SpriteFrameImage sPicTable_Blacephalon[] = { + overworld_ascending_frames(gObjectEventPic_Blacephalon, 4, 4), +}; +#endif //P_FAMILY_BLACEPHALON + +#if P_FAMILY_ZERAORA +static const struct SpriteFrameImage sPicTable_Zeraora[] = { + overworld_ascending_frames(gObjectEventPic_Zeraora, 4, 4), +}; +#endif //P_FAMILY_ZERAORA + +#if P_FAMILY_MELTAN +static const struct SpriteFrameImage sPicTable_Meltan[] = { + overworld_ascending_frames(gObjectEventPic_Meltan, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Melmetal[] = { + overworld_ascending_frames(gObjectEventPic_Melmetal, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_MelmetalGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_MelmetalGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN + +#if P_FAMILY_GROOKEY +static const struct SpriteFrameImage sPicTable_Grookey[] = { + overworld_ascending_frames(gObjectEventPic_Grookey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Thwackey[] = { + overworld_ascending_frames(gObjectEventPic_Thwackey, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rillaboom[] = { + overworld_ascending_frames(gObjectEventPic_Rillaboom, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_RillaboomGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_RillaboomGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY +static const struct SpriteFrameImage sPicTable_Scorbunny[] = { + overworld_ascending_frames(gObjectEventPic_Scorbunny, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Raboot[] = { + overworld_ascending_frames(gObjectEventPic_Raboot, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cinderace[] = { + overworld_ascending_frames(gObjectEventPic_Cinderace, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CinderaceGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CinderaceGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE +static const struct SpriteFrameImage sPicTable_Sobble[] = { + overworld_ascending_frames(gObjectEventPic_Sobble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drizzile[] = { + overworld_ascending_frames(gObjectEventPic_Drizzile, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Inteleon[] = { + overworld_ascending_frames(gObjectEventPic_Inteleon, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_InteleonGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_InteleonGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_SKWOVET +static const struct SpriteFrameImage sPicTable_Skwovet[] = { + overworld_ascending_frames(gObjectEventPic_Skwovet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Greedent[] = { + overworld_ascending_frames(gObjectEventPic_Greedent, 4, 4), +}; +#endif //P_FAMILY_SKWOVET + +#if P_FAMILY_ROOKIDEE +static const struct SpriteFrameImage sPicTable_Rookidee[] = { + overworld_ascending_frames(gObjectEventPic_Rookidee, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Corvisquire[] = { + overworld_ascending_frames(gObjectEventPic_Corvisquire, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Corviknight[] = { + overworld_ascending_frames(gObjectEventPic_Corviknight, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CorviknightGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CorviknightGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG +static const struct SpriteFrameImage sPicTable_Blipbug[] = { + overworld_ascending_frames(gObjectEventPic_Blipbug, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dottler[] = { + overworld_ascending_frames(gObjectEventPic_Dottler, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Orbeetle[] = { + overworld_ascending_frames(gObjectEventPic_Orbeetle, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_OrbeetleGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_OrbeetleGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_NICKIT +static const struct SpriteFrameImage sPicTable_Nickit[] = { + overworld_ascending_frames(gObjectEventPic_Nickit, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Thievul[] = { + overworld_ascending_frames(gObjectEventPic_Thievul, 4, 4), +}; +#endif //P_FAMILY_NICKIT + +#if P_FAMILY_GOSSIFLEUR +static const struct SpriteFrameImage sPicTable_Gossifleur[] = { + overworld_ascending_frames(gObjectEventPic_Gossifleur, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Eldegoss[] = { + overworld_ascending_frames(gObjectEventPic_Eldegoss, 4, 4), +}; +#endif //P_FAMILY_GOSSIFLEUR + +#if P_FAMILY_WOOLOO +static const struct SpriteFrameImage sPicTable_Wooloo[] = { + overworld_ascending_frames(gObjectEventPic_Wooloo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dubwool[] = { + overworld_ascending_frames(gObjectEventPic_Dubwool, 4, 4), +}; +#endif //P_FAMILY_WOOLOO + +#if P_FAMILY_CHEWTLE +static const struct SpriteFrameImage sPicTable_Chewtle[] = { + overworld_ascending_frames(gObjectEventPic_Chewtle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drednaw[] = { + overworld_ascending_frames(gObjectEventPic_Drednaw, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_DrednawGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_DrednawGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_YAMPER +static const struct SpriteFrameImage sPicTable_Yamper[] = { + overworld_ascending_frames(gObjectEventPic_Yamper, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Boltund[] = { + overworld_ascending_frames(gObjectEventPic_Boltund, 4, 4), +}; +#endif //P_FAMILY_YAMPER + +#if P_FAMILY_ROLYCOLY +static const struct SpriteFrameImage sPicTable_Rolycoly[] = { + overworld_ascending_frames(gObjectEventPic_Rolycoly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Carkol[] = { + overworld_ascending_frames(gObjectEventPic_Carkol, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Coalossal[] = { + overworld_ascending_frames(gObjectEventPic_Coalossal, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CoalossalGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CoalossalGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN +static const struct SpriteFrameImage sPicTable_Applin[] = { + overworld_ascending_frames(gObjectEventPic_Applin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Flapple[] = { + overworld_ascending_frames(gObjectEventPic_Flapple, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_FlappleGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_FlappleGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +static const struct SpriteFrameImage sPicTable_Appletun[] = { + overworld_ascending_frames(gObjectEventPic_Appletun, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_AppletunGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_AppletunGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Dipplin[] = { + overworld_ascending_frames(gObjectEventPic_Dipplin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hydrapple[] = { + overworld_ascending_frames(gObjectEventPic_Hydrapple, 4, 4), +};*/ +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA +static const struct SpriteFrameImage sPicTable_Silicobra[] = { + overworld_ascending_frames(gObjectEventPic_Silicobra, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sandaconda[] = { + overworld_ascending_frames(gObjectEventPic_Sandaconda, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_SandacondaGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_SandacondaGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT +static const struct SpriteFrameImage sPicTable_Cramorant[] = { + overworld_ascending_frames(gObjectEventPic_Cramorant, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_CramorantGulping[] = { + overworld_ascending_frames(gObjectEventPic_CramorantGulping, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_CramorantGorging[] = { + overworld_ascending_frames(gObjectEventPic_CramorantGorging, 4, 4), +};*/ +#endif //P_FAMILY_CRAMORANT + +#if P_FAMILY_ARROKUDA +static const struct SpriteFrameImage sPicTable_Arrokuda[] = { + overworld_ascending_frames(gObjectEventPic_Arrokuda, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Barraskewda[] = { + overworld_ascending_frames(gObjectEventPic_Barraskewda, 4, 4), +}; +#endif //P_FAMILY_ARROKUDA + +#if P_FAMILY_TOXEL +static const struct SpriteFrameImage sPicTable_Toxel[] = { + overworld_ascending_frames(gObjectEventPic_Toxel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ToxtricityAmped[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityAmped, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ToxtricityLowKey[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityLowKey, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_ToxtricityGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_ToxtricityGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE +static const struct SpriteFrameImage sPicTable_Sizzlipede[] = { + overworld_ascending_frames(gObjectEventPic_Sizzlipede, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Centiskorch[] = { + overworld_ascending_frames(gObjectEventPic_Centiskorch, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CentiskorchGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CentiskorchGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_CLOBBOPUS +static const struct SpriteFrameImage sPicTable_Clobbopus[] = { + overworld_ascending_frames(gObjectEventPic_Clobbopus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grapploct[] = { + overworld_ascending_frames(gObjectEventPic_Grapploct, 4, 4), +}; +#endif //P_FAMILY_CLOBBOPUS + +#if P_FAMILY_SINISTEA +static const struct SpriteFrameImage sPicTable_Sinistea[] = { + overworld_ascending_frames(gObjectEventPic_Sinistea, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Polteageist[] = { + overworld_ascending_frames(gObjectEventPic_Polteageist, 4, 4), +}; +#endif //P_FAMILY_SINISTEA + +#if P_FAMILY_HATENNA +static const struct SpriteFrameImage sPicTable_Hatenna[] = { + overworld_ascending_frames(gObjectEventPic_Hatenna, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hattrem[] = { + overworld_ascending_frames(gObjectEventPic_Hattrem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Hatterene[] = { + overworld_ascending_frames(gObjectEventPic_Hatterene, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_HattereneGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_HattereneGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP +static const struct SpriteFrameImage sPicTable_Impidimp[] = { + overworld_ascending_frames(gObjectEventPic_Impidimp, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Morgrem[] = { + overworld_ascending_frames(gObjectEventPic_Morgrem, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grimmsnarl[] = { + overworld_ascending_frames(gObjectEventPic_Grimmsnarl, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_GrimmsnarlGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_GrimmsnarlGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY +static const struct SpriteFrameImage sPicTable_Milcery[] = { + overworld_ascending_frames(gObjectEventPic_Milcery, 4, 4), +}; + +static const struct SpriteFrameImage sPicTable_AlcremieStrawberry[] = { + overworld_ascending_frames(gObjectEventPic_AlcremieStrawberry, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_AlcremieGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_AlcremieGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_FALINKS +static const struct SpriteFrameImage sPicTable_Falinks[] = { + overworld_ascending_frames(gObjectEventPic_Falinks, 4, 4), +}; +#endif //P_FAMILY_FALINKS + +#if P_FAMILY_PINCURCHIN +static const struct SpriteFrameImage sPicTable_Pincurchin[] = { + overworld_ascending_frames(gObjectEventPic_Pincurchin, 4, 4), +}; +#endif //P_FAMILY_PINCURCHIN + +#if P_FAMILY_SNOM +static const struct SpriteFrameImage sPicTable_Snom[] = { + overworld_ascending_frames(gObjectEventPic_Snom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Frosmoth[] = { + overworld_ascending_frames(gObjectEventPic_Frosmoth, 4, 4), +}; +#endif //P_FAMILY_SNOM + +#if P_FAMILY_STONJOURNER +static const struct SpriteFrameImage sPicTable_Stonjourner[] = { + overworld_ascending_frames(gObjectEventPic_Stonjourner, 4, 4), +}; +#endif //P_FAMILY_STONJOURNER + +#if P_FAMILY_EISCUE +static const struct SpriteFrameImage sPicTable_EiscueIceFace[] = { + overworld_ascending_frames(gObjectEventPic_EiscueIceFace, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_EiscueNoiceFace[] = { + overworld_ascending_frames(gObjectEventPic_EiscueNoiceFace, 4, 4), +};*/ +#endif //P_FAMILY_EISCUE + +#if P_FAMILY_INDEEDEE +static const struct SpriteFrameImage sPicTable_IndeedeeMale[] = { + overworld_ascending_frames(gObjectEventPic_IndeedeeMale, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_IndeedeeFemale[] = { + overworld_ascending_frames(gObjectEventPic_IndeedeeFemale, 4, 4), +}; +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO +static const struct SpriteFrameImage sPicTable_MorpekoFullBelly[] = { + overworld_ascending_frames(gObjectEventPic_MorpekoFullBelly, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_MorpekoHangry[] = { + overworld_ascending_frames(gObjectEventPic_MorpekoHangry, 4, 4), +};*/ +#endif //P_FAMILY_MORPEKO + +#if P_FAMILY_CUFANT +static const struct SpriteFrameImage sPicTable_Cufant[] = { + overworld_ascending_frames(gObjectEventPic_Cufant, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Copperajah[] = { + overworld_ascending_frames(gObjectEventPic_Copperajah, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_CopperajahGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_CopperajahGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DRACOZOLT +static const struct SpriteFrameImage sPicTable_Dracozolt[] = { + overworld_ascending_frames(gObjectEventPic_Dracozolt, 4, 4), +}; +#endif //P_FAMILY_DRACOZOLT + +#if P_FAMILY_ARCTOZOLT +static const struct SpriteFrameImage sPicTable_Arctozolt[] = { + overworld_ascending_frames(gObjectEventPic_Arctozolt, 4, 4), +}; +#endif //P_FAMILY_ARCTOZOLT + +#if P_FAMILY_DRACOVISH +static const struct SpriteFrameImage sPicTable_Dracovish[] = { + overworld_ascending_frames(gObjectEventPic_Dracovish, 4, 4), +}; +#endif //P_FAMILY_DRACOVISH + +#if P_FAMILY_ARCTOVISH +static const struct SpriteFrameImage sPicTable_Arctovish[] = { + overworld_ascending_frames(gObjectEventPic_Arctovish, 4, 4), +}; +#endif //P_FAMILY_ARCTOVISH + +#if P_FAMILY_DURALUDON +static const struct SpriteFrameImage sPicTable_Duraludon[] = { + overworld_ascending_frames(gObjectEventPic_Duraludon, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_DuraludonGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_DuraludonGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS +/*static const struct SpriteFrameImage sPicTable_Archaludon[] = { + overworld_ascending_frames(gObjectEventPic_Archaludon, 4, 4), +};*/ +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_DREEPY +static const struct SpriteFrameImage sPicTable_Dreepy[] = { + overworld_ascending_frames(gObjectEventPic_Dreepy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Drakloak[] = { + overworld_ascending_frames(gObjectEventPic_Drakloak, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dragapult[] = { + overworld_ascending_frames(gObjectEventPic_Dragapult, 4, 4), +}; +#endif //P_FAMILY_DREEPY + +#if P_FAMILY_ZACIAN +static const struct SpriteFrameImage sPicTable_ZacianHeroOfManyBattles[] = { + overworld_ascending_frames(gObjectEventPic_ZacianHeroOfManyBattles, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZacianCrownedSword[] = { + overworld_ascending_frames(gObjectEventPic_ZacianCrownedSword, 4, 4), +}; +#endif //P_FAMILY_ZACIAN + +#if P_FAMILY_ZAMAZENTA +static const struct SpriteFrameImage sPicTable_ZamazentaHeroOfManyBattles[] = { + overworld_ascending_frames(gObjectEventPic_ZamazentaHeroOfManyBattles, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_ZamazentaCrownedShield[] = { + overworld_ascending_frames(gObjectEventPic_ZamazentaCrownedShield, 4, 4), +}; +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_ETERNATUS +static const struct SpriteFrameImage sPicTable_Eternatus[] = { + overworld_ascending_frames(gObjectEventPic_Eternatus, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_EternatusEternamax[] = { + overworld_ascending_frames(gObjectEventPic_EternatusEternamax, 4, 4), +};*/ +#endif //P_FAMILY_ETERNATUS + +#if P_FAMILY_KUBFU +static const struct SpriteFrameImage sPicTable_Kubfu[] = { + overworld_ascending_frames(gObjectEventPic_Kubfu, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Urshifu[] = { + overworld_ascending_frames(gObjectEventPic_Urshifu, 4, 4), +}; +#if P_GIGANTAMAX_FORMS +/*static const struct SpriteFrameImage sPicTable_UrshifuSingleStrikeStyleGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_UrshifuSingleStrikeStyleGigantamax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_UrshifuRapidStrikeStyleGigantamax[] = { + overworld_ascending_frames(gObjectEventPic_UrshifuRapidStrikeStyleGigantamax, 4, 4), +};*/ +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KUBFU + +#if P_FAMILY_ZARUDE + +static const struct SpriteFrameImage sPicTable_Zarude[] = { + overworld_ascending_frames(gObjectEventPic_Zarude, 4, 4), +}; +/*static const struct SpriteFrameImage sPicTable_ZarudeDada[] = { + overworld_ascending_frames(gObjectEventPic_ZarudeDada, 4, 4), +};*/ +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI +static const struct SpriteFrameImage sPicTable_Regieleki[] = { + overworld_ascending_frames(gObjectEventPic_Regieleki, 4, 4), +}; +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO +static const struct SpriteFrameImage sPicTable_Regidrago[] = { + overworld_ascending_frames(gObjectEventPic_Regidrago, 4, 4), +}; +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER +static const struct SpriteFrameImage sPicTable_Glastrier[] = { + overworld_ascending_frames(gObjectEventPic_Glastrier, 4, 4), +}; +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER +static const struct SpriteFrameImage sPicTable_Spectrier[] = { + overworld_ascending_frames(gObjectEventPic_Spectrier, 4, 4), +}; +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX +static const struct SpriteFrameImage sPicTable_Calyrex[] = { + overworld_ascending_frames(gObjectEventPic_Calyrex, 4, 4), +}; +#if P_FUSION_FORMS +static const struct SpriteFrameImage sPicTable_CalyrexIceRider[] = { + overworld_ascending_frames(gObjectEventPic_CalyrexIceRider, 4, 4), +}; +#endif //P_FUSION_FORMS + +#if P_FUSION_FORMS +static const struct SpriteFrameImage sPicTable_CalyrexShadowRider[] = { + overworld_ascending_frames(gObjectEventPic_CalyrexShadowRider, 4, 4), +}; +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_SPRIGATITO +/*static const struct SpriteFrameImage sPicTable_Sprigatito[] = { + overworld_ascending_frames(gObjectEventPic_Sprigatito, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Floragato[] = { + overworld_ascending_frames(gObjectEventPic_Floragato, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Meowscarada[] = { + overworld_ascending_frames(gObjectEventPic_Meowscarada, 4, 4), +};*/ +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO +/*static const struct SpriteFrameImage sPicTable_Fuecoco[] = { + overworld_ascending_frames(gObjectEventPic_Fuecoco, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Crocalor[] = { + overworld_ascending_frames(gObjectEventPic_Crocalor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Skeledirge[] = { + overworld_ascending_frames(gObjectEventPic_Skeledirge, 4, 4), +};*/ +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY +/*static const struct SpriteFrameImage sPicTable_Quaxly[] = { + overworld_ascending_frames(gObjectEventPic_Quaxly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quaxwell[] = { + overworld_ascending_frames(gObjectEventPic_Quaxwell, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Quaquaval[] = { + overworld_ascending_frames(gObjectEventPic_Quaquaval, 4, 4), +};*/ +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK +/*static const struct SpriteFrameImage sPicTable_Lechonk[] = { + overworld_ascending_frames(gObjectEventPic_Lechonk, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OinkologneMale[] = { + overworld_ascending_frames(gObjectEventPic_OinkologneMale, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OinkologneFemale[] = { + overworld_ascending_frames(gObjectEventPic_OinkologneFemale, 4, 4), +};*/ +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA +/*static const struct SpriteFrameImage sPicTable_Tarountula[] = { + overworld_ascending_frames(gObjectEventPic_Tarountula, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Spidops[] = { + overworld_ascending_frames(gObjectEventPic_Spidops, 4, 4), +};*/ +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE +/*static const struct SpriteFrameImage sPicTable_Nymble[] = { + overworld_ascending_frames(gObjectEventPic_Nymble, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Lokix[] = { + overworld_ascending_frames(gObjectEventPic_Lokix, 4, 4), +};*/ +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI +/*static const struct SpriteFrameImage sPicTable_Pawmi[] = { + overworld_ascending_frames(gObjectEventPic_Pawmi, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pawmo[] = { + overworld_ascending_frames(gObjectEventPic_Pawmo, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Pawmot[] = { + overworld_ascending_frames(gObjectEventPic_Pawmot, 4, 4), +};*/ +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS +/*static const struct SpriteFrameImage sPicTable_Tandemaus[] = { + overworld_ascending_frames(gObjectEventPic_Tandemaus, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MausholdFamilyOfThree[] = { + overworld_ascending_frames(gObjectEventPic_MausholdFamilyOfThree, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_MausholdFamilyOfFour[] = { + overworld_ascending_frames(gObjectEventPic_MausholdFamilyOfFour, 4, 4), +};*/ +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH +/*static const struct SpriteFrameImage sPicTable_Fidough[] = { + overworld_ascending_frames(gObjectEventPic_Fidough, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dachsbun[] = { + overworld_ascending_frames(gObjectEventPic_Dachsbun, 4, 4), +};*/ +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV +/*static const struct SpriteFrameImage sPicTable_Smoliv[] = { + overworld_ascending_frames(gObjectEventPic_Smoliv, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Dolliv[] = { + overworld_ascending_frames(gObjectEventPic_Dolliv, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arboliva[] = { + overworld_ascending_frames(gObjectEventPic_Arboliva, 4, 4), +};*/ +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +/*static const struct SpriteFrameImage sPicTable_SquawkabillyGreenPlumage[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyGreenPlumage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyBluePlumage[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyBluePlumage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyYellowPlumage[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyYellowPlumage, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_SquawkabillyWhitePlumage[] = { + overworld_ascending_frames(gObjectEventPic_SquawkabillyWhitePlumage, 4, 4), +};*/ +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI +/*static const struct SpriteFrameImage sPicTable_Nacli[] = { + overworld_ascending_frames(gObjectEventPic_Nacli, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Naclstack[] = { + overworld_ascending_frames(gObjectEventPic_Naclstack, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Garganacl[] = { + overworld_ascending_frames(gObjectEventPic_Garganacl, 4, 4), +};*/ +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET +/*static const struct SpriteFrameImage sPicTable_Charcadet[] = { + overworld_ascending_frames(gObjectEventPic_Charcadet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Armarouge[] = { + overworld_ascending_frames(gObjectEventPic_Armarouge, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Ceruledge[] = { + overworld_ascending_frames(gObjectEventPic_Ceruledge, 4, 4), +};*/ +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB +/*static const struct SpriteFrameImage sPicTable_Tadbulb[] = { + overworld_ascending_frames(gObjectEventPic_Tadbulb, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Bellibolt[] = { + overworld_ascending_frames(gObjectEventPic_Bellibolt, 4, 4), +};*/ +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL +/*static const struct SpriteFrameImage sPicTable_Wattrel[] = { + overworld_ascending_frames(gObjectEventPic_Wattrel, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Kilowattrel[] = { + overworld_ascending_frames(gObjectEventPic_Kilowattrel, 4, 4), +};*/ +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF +/*static const struct SpriteFrameImage sPicTable_Maschiff[] = { + overworld_ascending_frames(gObjectEventPic_Maschiff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Mabosstiff[] = { + overworld_ascending_frames(gObjectEventPic_Mabosstiff, 4, 4), +};*/ +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE +/*static const struct SpriteFrameImage sPicTable_Shroodle[] = { + overworld_ascending_frames(gObjectEventPic_Shroodle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Grafaiai[] = { + overworld_ascending_frames(gObjectEventPic_Grafaiai, 4, 4), +};*/ +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN +/*static const struct SpriteFrameImage sPicTable_Bramblin[] = { + overworld_ascending_frames(gObjectEventPic_Bramblin, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Brambleghast[] = { + overworld_ascending_frames(gObjectEventPic_Brambleghast, 4, 4), +};*/ +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL +/*static const struct SpriteFrameImage sPicTable_Toedscool[] = { + overworld_ascending_frames(gObjectEventPic_Toedscool, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Toedscruel[] = { + overworld_ascending_frames(gObjectEventPic_Toedscruel, 4, 4), +};*/ +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF +/*static const struct SpriteFrameImage sPicTable_Klawf[] = { + overworld_ascending_frames(gObjectEventPic_Klawf, 4, 4), +};*/ +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID +/*static const struct SpriteFrameImage sPicTable_Capsakid[] = { + overworld_ascending_frames(gObjectEventPic_Capsakid, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Scovillain[] = { + overworld_ascending_frames(gObjectEventPic_Scovillain, 4, 4), +};*/ +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR +/*static const struct SpriteFrameImage sPicTable_Rellor[] = { + overworld_ascending_frames(gObjectEventPic_Rellor, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Rabsca[] = { + overworld_ascending_frames(gObjectEventPic_Rabsca, 4, 4), +};*/ +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE +/*static const struct SpriteFrameImage sPicTable_Flittle[] = { + overworld_ascending_frames(gObjectEventPic_Flittle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Espathra[] = { + overworld_ascending_frames(gObjectEventPic_Espathra, 4, 4), +};*/ +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK +/*static const struct SpriteFrameImage sPicTable_Tinkatink[] = { + overworld_ascending_frames(gObjectEventPic_Tinkatink, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tinkatuff[] = { + overworld_ascending_frames(gObjectEventPic_Tinkatuff, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Tinkaton[] = { + overworld_ascending_frames(gObjectEventPic_Tinkaton, 4, 4), +};*/ +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT +/*static const struct SpriteFrameImage sPicTable_Wiglett[] = { + overworld_ascending_frames(gObjectEventPic_Wiglett, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Wugtrio[] = { + overworld_ascending_frames(gObjectEventPic_Wugtrio, 4, 4), +};*/ +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER +/*static const struct SpriteFrameImage sPicTable_Bombirdier[] = { + overworld_ascending_frames(gObjectEventPic_Bombirdier, 4, 4), +};*/ +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN +/*static const struct SpriteFrameImage sPicTable_Finizen[] = { + overworld_ascending_frames(gObjectEventPic_Finizen, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PalafinZero[] = { + overworld_ascending_frames(gObjectEventPic_PalafinZero, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_PalafinHero[] = { + overworld_ascending_frames(gObjectEventPic_PalafinHero, 4, 4), +};*/ +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM +/*static const struct SpriteFrameImage sPicTable_Varoom[] = { + overworld_ascending_frames(gObjectEventPic_Varoom, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Revavroom[] = { + overworld_ascending_frames(gObjectEventPic_Revavroom, 4, 4), +};*/ +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR +/*static const struct SpriteFrameImage sPicTable_Cyclizar[] = { + overworld_ascending_frames(gObjectEventPic_Cyclizar, 4, 4), +};*/ +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM +/*static const struct SpriteFrameImage sPicTable_Orthworm[] = { + overworld_ascending_frames(gObjectEventPic_Orthworm, 4, 4), +};*/ +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET +/*static const struct SpriteFrameImage sPicTable_Glimmet[] = { + overworld_ascending_frames(gObjectEventPic_Glimmet, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Glimmora[] = { + overworld_ascending_frames(gObjectEventPic_Glimmora, 4, 4), +};*/ +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD +/*static const struct SpriteFrameImage sPicTable_Greavard[] = { + overworld_ascending_frames(gObjectEventPic_Greavard, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Houndstone[] = { + overworld_ascending_frames(gObjectEventPic_Houndstone, 4, 4), +};*/ +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO +/*static const struct SpriteFrameImage sPicTable_Flamigo[] = { + overworld_ascending_frames(gObjectEventPic_Flamigo, 4, 4), +};*/ +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE +/*static const struct SpriteFrameImage sPicTable_Cetoddle[] = { + overworld_ascending_frames(gObjectEventPic_Cetoddle, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Cetitan[] = { + overworld_ascending_frames(gObjectEventPic_Cetitan, 4, 4), +};*/ +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA +/*static const struct SpriteFrameImage sPicTable_Veluza[] = { + overworld_ascending_frames(gObjectEventPic_Veluza, 4, 4), +};*/ +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO +/*static const struct SpriteFrameImage sPicTable_Dondozo[] = { + overworld_ascending_frames(gObjectEventPic_Dondozo, 4, 4), +};*/ +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +/*static const struct SpriteFrameImage sPicTable_TatsugiriCurly[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriCurly, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TatsugiriDroopy[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriDroopy, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TatsugiriStretchy[] = { + overworld_ascending_frames(gObjectEventPic_TatsugiriStretchy, 4, 4), +};*/ +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_GREAT_TUSK +/*static const struct SpriteFrameImage sPicTable_GreatTusk[] = { + overworld_ascending_frames(gObjectEventPic_GreatTusk, 4, 4), +};*/ +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL +/*static const struct SpriteFrameImage sPicTable_ScreamTail[] = { + overworld_ascending_frames(gObjectEventPic_ScreamTail, 4, 4), +};*/ +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET +/*static const struct SpriteFrameImage sPicTable_BruteBonnet[] = { + overworld_ascending_frames(gObjectEventPic_BruteBonnet, 4, 4), +};*/ +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE +/*static const struct SpriteFrameImage sPicTable_FlutterMane[] = { + overworld_ascending_frames(gObjectEventPic_FlutterMane, 4, 4), +};*/ +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING +/*static const struct SpriteFrameImage sPicTable_SlitherWing[] = { + overworld_ascending_frames(gObjectEventPic_SlitherWing, 4, 4), +};*/ +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS +/*static const struct SpriteFrameImage sPicTable_SandyShocks[] = { + overworld_ascending_frames(gObjectEventPic_SandyShocks, 4, 4), +};*/ +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS +/*static const struct SpriteFrameImage sPicTable_IronTreads[] = { + overworld_ascending_frames(gObjectEventPic_IronTreads, 4, 4), +};*/ +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE +/*static const struct SpriteFrameImage sPicTable_IronBundle[] = { + overworld_ascending_frames(gObjectEventPic_IronBundle, 4, 4), +};*/ +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS +/*static const struct SpriteFrameImage sPicTable_IronHands[] = { + overworld_ascending_frames(gObjectEventPic_IronHands, 4, 4), +};*/ +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS +/*static const struct SpriteFrameImage sPicTable_IronJugulis[] = { + overworld_ascending_frames(gObjectEventPic_IronJugulis, 4, 4), +};*/ +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH +/*static const struct SpriteFrameImage sPicTable_IronMoth[] = { + overworld_ascending_frames(gObjectEventPic_IronMoth, 4, 4), +};*/ +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS +/*static const struct SpriteFrameImage sPicTable_IronThorns[] = { + overworld_ascending_frames(gObjectEventPic_IronThorns, 4, 4), +};*/ +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX +/*static const struct SpriteFrameImage sPicTable_Frigibax[] = { + overworld_ascending_frames(gObjectEventPic_Frigibax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Arctibax[] = { + overworld_ascending_frames(gObjectEventPic_Arctibax, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Baxcalibur[] = { + overworld_ascending_frames(gObjectEventPic_Baxcalibur, 4, 4), +};*/ +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL +/*static const struct SpriteFrameImage sPicTable_GimmighoulChest[] = { + overworld_ascending_frames(gObjectEventPic_GimmighoulChest, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_GimmighoulRoaming[] = { + overworld_ascending_frames(gObjectEventPic_GimmighoulRoaming, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Gholdengo[] = { + overworld_ascending_frames(gObjectEventPic_Gholdengo, 4, 4), +};*/ +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN +/*static const struct SpriteFrameImage sPicTable_WoChien[] = { + overworld_ascending_frames(gObjectEventPic_WoChien, 4, 4), +};*/ +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO +/*static const struct SpriteFrameImage sPicTable_ChienPao[] = { + overworld_ascending_frames(gObjectEventPic_ChienPao, 4, 4), +};*/ +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU +/*static const struct SpriteFrameImage sPicTable_TingLu[] = { + overworld_ascending_frames(gObjectEventPic_TingLu, 4, 4), +};*/ +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU +/*static const struct SpriteFrameImage sPicTable_ChiYu[] = { + overworld_ascending_frames(gObjectEventPic_ChiYu, 4, 4), +};*/ +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON +/*static const struct SpriteFrameImage sPicTable_RoaringMoon[] = { + overworld_ascending_frames(gObjectEventPic_RoaringMoon, 4, 4), +};*/ +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT +/*static const struct SpriteFrameImage sPicTable_IronValiant[] = { + overworld_ascending_frames(gObjectEventPic_IronValiant, 4, 4), +};*/ +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON +/*static const struct SpriteFrameImage sPicTable_Koraidon[] = { + overworld_ascending_frames(gObjectEventPic_Koraidon, 4, 4), +};*/ +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON +/*static const struct SpriteFrameImage sPicTable_Miraidon[] = { + overworld_ascending_frames(gObjectEventPic_Miraidon, 4, 4), +};*/ +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE +/*static const struct SpriteFrameImage sPicTable_WalkingWake[] = { + overworld_ascending_frames(gObjectEventPic_WalkingWake, 4, 4), +};*/ +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES +/*static const struct SpriteFrameImage sPicTable_IronLeaves[] = { + overworld_ascending_frames(gObjectEventPic_IronLeaves, 4, 4), +};*/ +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST +/*static const struct SpriteFrameImage sPicTable_Poltchageist[] = { + overworld_ascending_frames(gObjectEventPic_Poltchageist, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_Sinistcha[] = { + overworld_ascending_frames(gObjectEventPic_Sinistcha, 4, 4), +};*/ +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI +/*static const struct SpriteFrameImage sPicTable_Okidogi[] = { + overworld_ascending_frames(gObjectEventPic_Okidogi, 4, 4), +};*/ +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI +/*static const struct SpriteFrameImage sPicTable_Munkidori[] = { + overworld_ascending_frames(gObjectEventPic_Munkidori, 4, 4), +};*/ +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI +/*static const struct SpriteFrameImage sPicTable_Fezandipiti[] = { + overworld_ascending_frames(gObjectEventPic_Fezandipiti, 4, 4), +};*/ +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON +/*static const struct SpriteFrameImage sPicTable_OgerponTealMask[] = { + overworld_ascending_frames(gObjectEventPic_OgerponTealMask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponWellspringMask[] = { + overworld_ascending_frames(gObjectEventPic_OgerponWellspringMask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponHearthflameMask[] = { + overworld_ascending_frames(gObjectEventPic_OgerponHearthflameMask, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_OgerponCornerstoneMask[] = { + overworld_ascending_frames(gObjectEventPic_OgerponCornerstoneMask, 4, 4), +};*/ +#endif //P_FAMILY_OGERPON + +#if P_FAMILY_GOUGING_FIRE +/*static const struct SpriteFrameImage sPicTable_GougingFire[] = { + overworld_ascending_frames(gObjectEventPic_GougingFire, 4, 4), +};*/ +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT +/*static const struct SpriteFrameImage sPicTable_RagingBolt[] = { + overworld_ascending_frames(gObjectEventPic_RagingBolt, 4, 4), +};*/ +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER +/*static const struct SpriteFrameImage sPicTable_IronBoulder[] = { + overworld_ascending_frames(gObjectEventPic_IronBoulder, 4, 4), +};*/ +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN +/*static const struct SpriteFrameImage sPicTable_IronCrown[] = { + overworld_ascending_frames(gObjectEventPic_IronCrown, 4, 4), +};*/ +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +/*static const struct SpriteFrameImage sPicTable_TerapagosNormal[] = { + overworld_ascending_frames(gObjectEventPic_TerapagosNormal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TerapagosTerastal[] = { + overworld_ascending_frames(gObjectEventPic_TerapagosTerastal, 4, 4), +}; +static const struct SpriteFrameImage sPicTable_TerapagosStellar[] = { + overworld_ascending_frames(gObjectEventPic_TerapagosStellar, 4, 4), +};*/ +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT +/*static const struct SpriteFrameImage sPicTable_Pecharunt[] = { + overworld_ascending_frames(gObjectEventPic_Pecharunt, 4, 4), +};*/ +#endif //P_FAMILY_PECHARUNT + +#endif //OW_POKEMON_OBJECT_EVENTS diff --git a/src/data/object_events/object_event_subsprites.h b/src/data/object_events/object_event_subsprites.h index 808491992739..a2c1b1103aea 100755 --- a/src/data/object_events/object_event_subsprites.h +++ b/src/data/object_events/object_event_subsprites.h @@ -1,3 +1,6 @@ +#define SUBSPRITE_TABLE_ENTRY(x) {ARRAY_COUNT(x), x} +#define SUBSPRITE_SHAPE(w, h) .shape = SPRITE_SHAPE(w##x##h), .size = SPRITE_SIZE(w##x##h) + static const struct Subsprite sOamTable_16x16_0[] = { { .x = -8, @@ -269,7 +272,7 @@ static const struct Subsprite sOamTable_32x32_4[] = { } }; -static const struct SubspriteTable sOamTables_32x32[] = { +const struct SubspriteTable sOamTables_32x32[] = { {}, {ARRAY_COUNT(sOamTable_32x32_0), sOamTable_32x32_0}, {ARRAY_COUNT(sOamTable_32x32_1), sOamTable_32x32_1}, @@ -278,120 +281,11 @@ static const struct SubspriteTable sOamTables_32x32[] = { {ARRAY_COUNT(sOamTable_32x32_4), sOamTable_32x32_4} }; -static const struct Subsprite sOamTable_48x48[] = { - { - .x = -24, - .y = -24, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 0, - .priority = 2 - }, - { - .x = 8, - .y = -24, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 4, - .priority = 2 - }, - { - .x = -24, - .y = -16, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 6, - .priority = 2 - }, - { - .x = 8, - .y = -16, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 10, - .priority = 2 - }, - { - .x = -24, - .y = -8, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 12, - .priority = 2 - }, - { - .x = 8, - .y = -8, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 16, - .priority = 2 - }, - { - .x = -24, - .y = 0, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 18, - .priority = 2 - }, - { - .x = 8, - .y = 0, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 22, - .priority = 2 - }, - { - .x = -24, - .y = 8, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 24, - .priority = 2 - }, - { - .x = 8, - .y = 8, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 28, - .priority = 2 - }, - { - .x = -24, - .y = 16, - .shape = SPRITE_SHAPE(32x8), - .size = SPRITE_SIZE(32x8), - .tileOffset = 30, - .priority = 2 - }, - { - .x = 8, - .y = 16, - .shape = SPRITE_SHAPE(16x8), - .size = SPRITE_SIZE(16x8), - .tileOffset = 34, - .priority = 2 - } -}; - -static const struct SubspriteTable sOamTables_48x48[] = { - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48}, - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48}, - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48}, - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48}, - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48}, - {ARRAY_COUNT(sOamTable_48x48), sOamTable_48x48} -}; - static const struct Subsprite sOamTable_64x32_0[] = { { .x = -32, .y = -16, - .shape = SPRITE_SHAPE(64x32), - .size = SPRITE_SIZE(64x32), + SUBSPRITE_SHAPE(64, 32), .tileOffset = 0, .priority = 2 } @@ -401,8 +295,7 @@ static const struct Subsprite sOamTable_64x32_1[] = { { .x = -32, .y = -16, - .shape = SPRITE_SHAPE(64x32), - .size = SPRITE_SIZE(64x32), + SUBSPRITE_SHAPE(64, 32), .tileOffset = 0, .priority = 1 } @@ -412,8 +305,7 @@ static const struct Subsprite sOamTable_64x32_2[] = { { .x = -32, .y = -16, - .shape = SPRITE_SHAPE(64x32), - .size = SPRITE_SIZE(64x32), + SUBSPRITE_SHAPE(64, 32), .tileOffset = 0, .priority = 2 } @@ -423,8 +315,7 @@ static const struct Subsprite sOamTable_64x32_3[] = { { .x = -32, .y = -16, - .shape = SPRITE_SHAPE(64x32), - .size = SPRITE_SIZE(64x32), + SUBSPRITE_SHAPE(64, 32), .tileOffset = 0, .priority = 2 } @@ -444,8 +335,7 @@ static const struct Subsprite sOamTable_64x64_0[] = { { .x = -32, .y = -32, - .shape = SPRITE_SHAPE(64x64), - .size = SPRITE_SIZE(64x64), + SUBSPRITE_SHAPE(64, 64), .tileOffset = 0, .priority = 2 } @@ -455,8 +345,7 @@ static const struct Subsprite sOamTable_64x64_1[] = { { .x = -32, .y = -32, - .shape = SPRITE_SHAPE(64x64), - .size = SPRITE_SIZE(64x64), + SUBSPRITE_SHAPE(64, 64), .tileOffset = 0, .priority = 1 } @@ -466,8 +355,7 @@ static const struct Subsprite sOamTable_64x64_2[] = { { .x = -32, .y = -32, - .shape = SPRITE_SHAPE(64x64), - .size = SPRITE_SIZE(64x64), + SUBSPRITE_SHAPE(64, 64), .tileOffset = 0, .priority = 2 } @@ -477,14 +365,13 @@ static const struct Subsprite sOamTable_64x64_3[] = { { .x = -32, .y = -32, - .shape = SPRITE_SHAPE(64x64), - .size = SPRITE_SIZE(64x64), + SUBSPRITE_SHAPE(64, 64), .tileOffset = 0, .priority = 2 } }; -static const struct SubspriteTable sOamTables_64x64[] = { +const struct SubspriteTable sOamTables_64x64[] = { {}, {ARRAY_COUNT(sOamTable_64x64_0), sOamTable_64x64_0}, {ARRAY_COUNT(sOamTable_64x64_1), sOamTable_64x64_1}, @@ -1528,3 +1415,1483 @@ static const struct SubspriteTable sOamTables_88x32[] = { {ARRAY_COUNT(sOamTable_88x32_3), sOamTable_88x32_3}, {ARRAY_COUNT(sOamTable_88x32_3), sOamTable_88x32_3} }; + +#if OW_LARGE_OW_SUPPORT +// These tables allow (virtual) sprite sizes so that +// some space can be saved by making graphics smaller. +// Note: When using these for followers, the minimum +// `size` you must set in GraphicsInfo is 512. + +static const struct Subsprite sOamTable_16x24_0[] = { + { + .x = -8, .y = -12, + SUBSPRITE_SHAPE(16, 16), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -8, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 2 + }, +}; + +static const struct Subsprite sOamTable_16x24_1[] = { + { + .x = -8, .y = -12, + SUBSPRITE_SHAPE(16, 16), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -8, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 1 + }, +}; + +static const struct Subsprite sOamTable_16x24_2[] = { + { + .x = -8, .y = -12, + SUBSPRITE_SHAPE(16, 16), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -8, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_16x24_3[] = { + { + .x = -8, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -8, .y = -4, + SUBSPRITE_SHAPE(16, 16), + .tileOffset = 2, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_16x24_4[] = { + { + .x = -8, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -8, .y = -4, + SUBSPRITE_SHAPE(16, 16), + .tileOffset = 2, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_32x24_0[] = { + { + .x = -16, .y = -12, + SUBSPRITE_SHAPE(32, 16), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -16, .y = 4, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 8, + .priority = 2 + }, +}; + +static const struct Subsprite sOamTable_32x24_1[] = { + { + .x = -16, .y = -12, + SUBSPRITE_SHAPE(32, 16), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -16, .y = 4, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 8, + .priority = 1 + }, +}; + +static const struct Subsprite sOamTable_32x24_2[] = { + { + .x = -16, .y = -12, + SUBSPRITE_SHAPE(32, 16), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -16, .y = 4, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 8, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_32x24_3[] = { + { + .x = -16, .y = -12, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -16, .y = -4, + SUBSPRITE_SHAPE(32, 16), + .tileOffset = 4, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_32x24_4[] = { + { + .x = -16, .y = -12, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -16, .y = -4, + SUBSPRITE_SHAPE(32, 16), + .tileOffset = 4, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x16_0[] = { + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, +}; + +static const struct Subsprite sOamTable_24x16_1[] = { + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 1 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 1 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 1 + }, +}; + +static const struct Subsprite sOamTable_24x16_2[] = { + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 3 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x16_3[] = { + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 3 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 3 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 3 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x24_0[] = { + { + .x = -12, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -12, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = -4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, + { + .x = -12, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 2 + }, + { + .x = 4, .y = 4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 2 + }, +}; + +static const struct Subsprite sOamTable_24x24_1[] = { + { + .x = -12, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 4, .y = -12, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 1 + }, + { + .x = -12, .y = -4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 1 + }, + { + .x = 4, .y = -4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 1 + }, + { + .x = -12, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 1 + }, + { + .x = 4, .y = 4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 1 + }, +}; + +static const struct Subsprite sOamTable_24x24_2[] = { + { + .x = -12, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -12, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = -4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, + { + .x = -12, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 3 + }, + { + .x = 4, .y = 4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x24_3[] = { + { + .x = -12, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -12, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 3 + }, + { + .x = 4, .y = -4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 3 + }, + { + .x = -12, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 3 + }, + { + .x = 4, .y = 4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x24_4[] = { + { + .x = -12, .y = -12, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 4, .y = -12, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 1 + }, + { + .x = -12, .y = -4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 3 + }, + { + .x = 4, .y = -4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 3 + }, + { + .x = -12, .y = 4, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 3 + }, + { + .x = 4, .y = 4, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x32_0[] = { + { + .x = -12, .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -16, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 2 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 2 + }, + { + .x = -12, .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 9, + .priority = 2 + }, + { + .x = 4, .y = 8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 11, + .priority = 2 + }, +}; + +static const struct Subsprite sOamTable_24x32_1[] = { + { + .x = -12, .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 4, .y = -16, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 1 + }, + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 1 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 1 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 1 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 1 + }, + { + .x = -12, .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 9, + .priority = 1 + }, + { + .x = 4, .y = 8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 11, + .priority = 1 + }, +}; + +static const struct Subsprite sOamTable_24x32_2[] = { + { + .x = -12, .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -16, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 2 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 2 + }, + { + .x = -12, .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 9, + .priority = 3 + }, + { + .x = 4, .y = 8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 11, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x32_3[] = { + { + .x = -12, .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 4, .y = -16, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 2 + }, + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 2 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 2 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 3 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 3 + }, + { + .x = -12, .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 9, + .priority = 3 + }, + { + .x = 4, .y = 8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 11, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_24x32_4[] = { + { + .x = -12, .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 4, .y = -16, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 2, + .priority = 1 + }, + { + .x = -12, .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 3, + .priority = 1 + }, + { + .x = 4, .y = -8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 5, + .priority = 1 + }, + { + .x = -12, .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 6, + .priority = 3 + }, + { + .x = 4, .y = 0, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 8, + .priority = 3 + }, + { + .x = -12, .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 9, + .priority = 3 + }, + { + .x = 4, .y = 8, + SUBSPRITE_SHAPE(8, 8), + .tileOffset = 11, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_64x64_Follower[] = { + { + .x = -32, .y = -32, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -32, .y = 0, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 32, + .priority = 2 + } +}; + +static const struct Subsprite sOamTable_64x64_HotSprings[] = { + { + .x = -32, + .y = -32, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -32, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 32, + .priority = 2 + }, + { + .x = 0, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 36, + .priority = 2 + }, + { + .x = -32, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 40, + .priority = 2 + }, + { + .x = 0, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 44, + .priority = 2 + }, + { + .x = -32, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 48, + .priority = 2 + }, + { + .x = 0, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 52, + .priority = 2 + }, + { + .x = -32, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 56, + .priority = 3 + }, + { + .x = 0, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 60, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_64x64_Grass2[] = { + { + .x = -32, + .y = -32, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -32, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 32, + .priority = 2 + }, + { + .x = 0, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 36, + .priority = 2 + }, + { + .x = -32, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 40, + .priority = 2 + }, + { + .x = 0, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 44, + .priority = 2 + }, + { + .x = -32, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 48, + .priority = 3 + }, + { + .x = 0, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 52, + .priority = 3 + }, + { + .x = -32, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 56, + .priority = 3 + }, + { + .x = 0, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 60, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_64x64_Grass1[] = { + { + .x = -32, + .y = -32, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -32, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 32, + .priority = 1 + }, + { + .x = 0, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 36, + .priority = 1 + }, + { + .x = -32, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 40, + .priority = 1 + }, + { + .x = 0, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 44, + .priority = 1 + }, + { + .x = -32, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 48, + .priority = 3 + }, + { + .x = 0, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 52, + .priority = 3 + }, + { + .x = -32, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 56, + .priority = 3 + }, + { + .x = 0, + .y = 24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 60, + .priority = 3 + }, +}; + +static const struct Subsprite sOamTable_64x64_Grass3[] = { + { + .x = -32, + .y = -24, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 2 + }, + { + .x = -32, + .y = 8, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 32, + .priority = 3 + } +}; + +static const struct Subsprite sOamTable_64x64_Grass4[] = { + { + .x = -32, + .y = -24, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 0, + .priority = 1 + }, + { + .x = -32, + .y = 8, + SUBSPRITE_SHAPE(64, 32), + .tileOffset = 32, + .priority = 3 + } +}; + + +static const struct SubspriteTable sOamTables_16x24[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_1), + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_2), + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_3), + SUBSPRITE_TABLE_ENTRY(sOamTable_16x24_4), +}; + + +static const struct SubspriteTable sOamTables_24x16[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_1), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_2), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_3), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x16_3), +}; + +static const struct SubspriteTable sOamTables_24x24[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_0), // reflections + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_0), // all 2 + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_1), // all 1 + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_2), // bottom 8 3 + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_3), // bottom 16 3 + SUBSPRITE_TABLE_ENTRY(sOamTable_24x24_4), // top 1, bottom 16 3 +}; + +static const struct SubspriteTable sOamTables_24x32[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_1), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_2), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_3), + SUBSPRITE_TABLE_ENTRY(sOamTable_24x32_4), +}; + + +static const struct SubspriteTable sOamTables_32x24[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_0), + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_1), + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_2), + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_3), + SUBSPRITE_TABLE_ENTRY(sOamTable_32x24_4), +}; + + +// For following pokemon +// Makes the top 32 pixels priority 1, +// so that very tall pokemon's heads +// will appear on top of buildings, etc. +static const struct SubspriteTable sOamTables_64x64_Tall[] = { + {}, // unused + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Follower), // elevation 3 + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_1), // elevation 4 + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_HotSprings), // hot springs + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Grass2), // long grass + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Grass1) // long grass priority 1 +}; + +// Like sOamTables_64x64_Tall, but fewer pixels visible in long grass +// Meant for pokemon that are more long than tall like Wailord +static const struct SubspriteTable sOamTables_64x64_Long[] = { + {}, // unused + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Follower), // elevation 3 + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_1), // elevation 4 + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_HotSprings), // hot springs + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Grass3), // long grass + SUBSPRITE_TABLE_ENTRY(sOamTable_64x64_Grass4) // long grass priority 1 +}; +#endif + +static const struct Subsprite sOamTable_48x48[] = { + { + .x = -24, + .y = -24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 8, + .y = -24, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 1 + }, + { + .x = -24, + .y = -16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 6, + .priority = 1 + }, + { + .x = 8, + .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 10, + .priority = 1 + }, + { + .x = -24, + .y = -8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 12, + .priority = 2 + }, + { + .x = 8, + .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 16, + .priority = 2 + }, + { + .x = -24, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 18, + .priority = 2 + }, + { + .x = 8, + .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 22, + .priority = 2 + }, + { + .x = -24, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 24, + .priority = 2 + }, + { + .x = 8, + .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 28, + .priority = 2 + }, + { + .x = -24, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 30, + .priority = 2 + }, + { + .x = 8, + .y = 16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 34, + .priority = 2 + } +}; + +static const struct Subsprite sOamTable_48x48_4[] = { + { + .x = -24, + .y = -24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 8, + .y = -24, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 1 + }, + { + .x = -24, + .y = -16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 6, + .priority = 1 + }, + { + .x = 8, + .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 10, + .priority = 1 + }, + { + .x = -24, + .y = -8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 12, + .priority = 1 + }, + { + .x = 8, + .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 16, + .priority = 1 + }, + { + .x = -24, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 18, + .priority = 1 + }, + { + .x = 8, + .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 22, + .priority = 1 + }, + { + .x = -24, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 24, + .priority = 1 + }, + { + .x = 8, + .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 28, + .priority = 1 + }, + { + .x = -24, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 30, + .priority = 1 + }, + { + .x = 8, + .y = 16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 34, + .priority = 1 + } +}; + +static const struct Subsprite sOamTable_48x48_HotSprings[] = { + { + .x = -24, + .y = -24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 8, + .y = -24, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 2 + }, + { + .x = -24, + .y = -16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 6, + .priority = 2 + }, + { + .x = 8, + .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 10, + .priority = 2 + }, + { + .x = -24, + .y = -8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 12, + .priority = 2 + }, + { + .x = 8, + .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 16, + .priority = 2 + }, + { + .x = -24, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 18, + .priority = 2 + }, + { + .x = 8, + .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 22, + .priority = 2 + }, + { + .x = -24, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 24, + .priority = 2 + }, + { + .x = 8, + .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 28, + .priority = 2 + }, + { + .x = -24, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 30, + .priority = 3 + }, + { + .x = 8, + .y = 16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 34, + .priority = 3 + } +}; + +static const struct Subsprite sOamTable_48x48_Grass2[] = { + { + .x = -24, + .y = -24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 2 + }, + { + .x = 8, + .y = -24, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 2 + }, + { + .x = -24, + .y = -16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 6, + .priority = 2 + }, + { + .x = 8, + .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 10, + .priority = 2 + }, + { + .x = -24, + .y = -8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 12, + .priority = 2 + }, + { + .x = 8, + .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 16, + .priority = 2 + }, + { + .x = -24, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 18, + .priority = 2 + }, + { + .x = 8, + .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 22, + .priority = 2 + }, + { + .x = -24, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 24, + .priority = 3 + }, + { + .x = 8, + .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 28, + .priority = 3 + }, + { + .x = -24, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 30, + .priority = 3 + }, + { + .x = 8, + .y = 16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 34, + .priority = 3 + } +}; + +static const struct Subsprite sOamTable_48x48_Grass1[] = { + { + .x = -24, + .y = -24, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 0, + .priority = 1 + }, + { + .x = 8, + .y = -24, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 4, + .priority = 1 + }, + { + .x = -24, + .y = -16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 6, + .priority = 1 + }, + { + .x = 8, + .y = -16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 10, + .priority = 1 + }, + { + .x = -24, + .y = -8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 12, + .priority = 1 + }, + { + .x = 8, + .y = -8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 16, + .priority = 1 + }, + { + .x = -24, + .y = 0, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 18, + .priority = 1 + }, + { + .x = 8, + .y = 0, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 22, + .priority = 1 + }, + { + .x = -24, + .y = 8, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 24, + .priority = 3 + }, + { + .x = 8, + .y = 8, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 28, + .priority = 3 + }, + { + .x = -24, + .y = 16, + SUBSPRITE_SHAPE(32, 8), + .tileOffset = 30, + .priority = 3 + }, + { + .x = 8, + .y = 16, + SUBSPRITE_SHAPE(16, 8), + .tileOffset = 34, + .priority = 3 + } +}; + +// Also used for truck +static const struct SubspriteTable sOamTables_48x48[] = { + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48), // reflections + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48), // elevation 3 + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48_4), // elevation 4 + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48_HotSprings), // hot springs + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48_Grass2), // long grass + SUBSPRITE_TABLE_ENTRY(sOamTable_48x48_Grass1) // long grass priority 1 +}; \ No newline at end of file diff --git a/src/data/partner_parties.h b/src/data/partner_parties.h index 1b071ec28e41..8b137891791f 100644 --- a/src/data/partner_parties.h +++ b/src/data/partner_parties.h @@ -1,26 +1 @@ -static const struct TrainerMon sParty_StevenPartner[] = { - { - .species = SPECIES_METANG, - .lvl = 42, - .nature = NATURE_BRAVE, - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .ev = TRAINER_PARTY_EVS(0, 252, 252, 0, 6, 0), - .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW}, - }, - { - .species = SPECIES_SKARMORY, - .lvl = 43, - .nature = NATURE_IMPISH, - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .ev = TRAINER_PARTY_EVS(252, 0, 0, 0, 6, 252), - .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING}, - }, - { - .species = SPECIES_AGGRON, - .lvl = 44, - .nature = NATURE_ADAMANT, - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .ev = TRAINER_PARTY_EVS(0, 252, 0, 0, 252, 6), - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW}, - } -}; + diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h index 61b025963862..18ce19a7a1a0 100644 --- a/src/data/pokemon/egg_moves.h +++ b/src/data/pokemon/egg_moves.h @@ -1,5484 +1,6303 @@ #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 +static const u16 sNoneEggMoveLearnset[] = { + MOVE_UNAVAILABLE, +}; -const u16 gEggMoves[] = { #if P_FAMILY_BULBASAUR - egg_moves(BULBASAUR, - MOVE_SKULL_BASH, - MOVE_CHARM, - MOVE_PETAL_DANCE, - MOVE_MAGICAL_LEAF, - MOVE_GRASS_WHISTLE, - MOVE_CURSE, - MOVE_INGRAIN, - MOVE_NATURE_POWER, - MOVE_AMNESIA, - MOVE_LEAF_STORM, - MOVE_POWER_WHIP, - MOVE_SLUDGE, - MOVE_ENDURE, - MOVE_GIGA_DRAIN, - MOVE_GRASSY_TERRAIN), +static const u16 sBulbasaurEggMoveLearnset[] = { + MOVE_SKULL_BASH, + MOVE_CHARM, + MOVE_PETAL_DANCE, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_CURSE, + MOVE_INGRAIN, + MOVE_NATURE_POWER, + MOVE_AMNESIA, + MOVE_LEAF_STORM, + MOVE_POWER_WHIP, + MOVE_SLUDGE, + MOVE_ENDURE, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BULBASAUR #if P_FAMILY_CHARMANDER - egg_moves(CHARMANDER, - MOVE_BELLY_DRUM, - MOVE_ANCIENT_POWER, - MOVE_BITE, - MOVE_OUTRAGE, - MOVE_BEAT_UP, - MOVE_DRAGON_DANCE, - MOVE_CRUNCH, - MOVE_DRAGON_RUSH, - MOVE_METAL_CLAW, - MOVE_FLARE_BLITZ, - MOVE_COUNTER, - MOVE_DRAGON_PULSE, - MOVE_FOCUS_PUNCH, - MOVE_AIR_CUTTER), +static const u16 sCharmanderEggMoveLearnset[] = { + MOVE_BELLY_DRUM, + MOVE_ANCIENT_POWER, + MOVE_BITE, + MOVE_OUTRAGE, + MOVE_BEAT_UP, + MOVE_DRAGON_DANCE, + MOVE_CRUNCH, + MOVE_DRAGON_RUSH, + MOVE_METAL_CLAW, + MOVE_FLARE_BLITZ, + MOVE_COUNTER, + MOVE_DRAGON_PULSE, + MOVE_FOCUS_PUNCH, + MOVE_AIR_CUTTER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHARMANDER #if P_FAMILY_SQUIRTLE - egg_moves(SQUIRTLE, - MOVE_MIRROR_COAT, - MOVE_HAZE, - MOVE_MIST, - MOVE_FORESIGHT, - MOVE_FLAIL, - MOVE_REFRESH, - MOVE_MUD_SPORT, - MOVE_YAWN, - MOVE_MUDDY_WATER, - MOVE_FAKE_OUT, - MOVE_AQUA_RING, - MOVE_AQUA_JET, - MOVE_WATER_SPOUT, - MOVE_BRINE, - MOVE_DRAGON_PULSE, - MOVE_AURA_SPHERE), +static const u16 sSquirtleEggMoveLearnset[] = { + MOVE_MIRROR_COAT, + MOVE_HAZE, + MOVE_MIST, + MOVE_FORESIGHT, + MOVE_FLAIL, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_YAWN, + MOVE_MUDDY_WATER, + MOVE_FAKE_OUT, + MOVE_AQUA_RING, + MOVE_AQUA_JET, + MOVE_WATER_SPOUT, + MOVE_BRINE, + MOVE_DRAGON_PULSE, + MOVE_AURA_SPHERE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SQUIRTLE #if P_FAMILY_PIDGEY - egg_moves(PIDGEY, - MOVE_PURSUIT, - MOVE_FEINT_ATTACK, - MOVE_FORESIGHT, - MOVE_STEEL_WING, - MOVE_AIR_CUTTER, - MOVE_AIR_SLASH, - MOVE_BRAVE_BIRD, - MOVE_UPROAR, - MOVE_DEFOG), +static const u16 sPidgeyEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_FEINT_ATTACK, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_UPROAR, + MOVE_DEFOG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PIDGEY #if P_FAMILY_RATTATA - egg_moves(RATTATA, - MOVE_SCREECH, - MOVE_FLAME_WHEEL, - MOVE_FURY_SWIPES, - MOVE_BITE, - MOVE_COUNTER, - MOVE_REVERSAL, - MOVE_UPROAR, - MOVE_LAST_RESORT, - MOVE_ME_FIRST, - MOVE_REVENGE, - MOVE_FINAL_GAMBIT), +static const u16 sRattataEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_FLAME_WHEEL, + MOVE_FURY_SWIPES, + MOVE_BITE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_UPROAR, + MOVE_LAST_RESORT, + MOVE_ME_FIRST, + MOVE_REVENGE, + MOVE_FINAL_GAMBIT, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sRattataAlolanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_ALOLAN_FORMS #endif //P_FAMILY_RATTATA #if P_FAMILY_SPEAROW - egg_moves(SPEAROW, - MOVE_FEINT_ATTACK, - MOVE_SCARY_FACE, - MOVE_QUICK_ATTACK, - MOVE_TRI_ATTACK, - MOVE_ASTONISH, - MOVE_SKY_ATTACK, - MOVE_WHIRLWIND, - MOVE_UPROAR, - MOVE_FEATHER_DANCE, - MOVE_STEEL_WING, - MOVE_RAZOR_WIND), +static const u16 sSpearowEggMoveLearnset[] = { + MOVE_FEINT_ATTACK, + MOVE_SCARY_FACE, + MOVE_QUICK_ATTACK, + MOVE_TRI_ATTACK, + MOVE_ASTONISH, + MOVE_SKY_ATTACK, + MOVE_WHIRLWIND, + MOVE_UPROAR, + MOVE_FEATHER_DANCE, + MOVE_STEEL_WING, + MOVE_RAZOR_WIND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPEAROW #if P_FAMILY_EKANS - egg_moves(EKANS, - MOVE_PURSUIT, - MOVE_SLAM, - MOVE_SPITE, - MOVE_BEAT_UP, - MOVE_POISON_FANG, - MOVE_SCARY_FACE, - MOVE_POISON_TAIL, - MOVE_DISABLE, - MOVE_SWITCHEROO, - MOVE_IRON_TAIL, - MOVE_SUCKER_PUNCH, - MOVE_SNATCH), +static const u16 sEkansEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_SLAM, + MOVE_SPITE, + MOVE_BEAT_UP, + MOVE_POISON_FANG, + MOVE_SCARY_FACE, + MOVE_POISON_TAIL, + MOVE_DISABLE, + MOVE_SWITCHEROO, + MOVE_IRON_TAIL, + MOVE_SUCKER_PUNCH, + MOVE_SNATCH, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sPichuEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_PIKACHU #if P_FAMILY_SANDSHREW - egg_moves(SANDSHREW, - MOVE_FLAIL, - MOVE_COUNTER, - MOVE_RAPID_SPIN, - MOVE_METAL_CLAW, - MOVE_CRUSH_CLAW, - MOVE_NIGHT_SLASH, - MOVE_MUD_SHOT, - MOVE_ENDURE, - MOVE_CHIP_AWAY, - MOVE_ROCK_CLIMB, - MOVE_ROTOTILLER, - MOVE_HONE_CLAWS), +static const u16 sSandshrewEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_METAL_CLAW, + MOVE_CRUSH_CLAW, + MOVE_NIGHT_SLASH, + MOVE_MUD_SHOT, + MOVE_ENDURE, + MOVE_CHIP_AWAY, + MOVE_ROCK_CLIMB, + MOVE_ROTOTILLER, + MOVE_HONE_CLAWS, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sSandshrewAlolanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_ALOLAN_FORMS #endif //P_FAMILY_SANDSHREW #if P_FAMILY_NIDORAN - egg_moves(NIDORAN_F, - MOVE_SUPERSONIC, - MOVE_DISABLE, - MOVE_TAKE_DOWN, - MOVE_FOCUS_ENERGY, - MOVE_CHARM, - MOVE_COUNTER, - MOVE_BEAT_UP, - MOVE_PURSUIT, - MOVE_SKULL_BASH, - MOVE_IRON_TAIL, - MOVE_POISON_TAIL, - MOVE_ENDURE, - MOVE_CHIP_AWAY, - MOVE_VENOM_DRENCH), - - egg_moves(NIDORAN_M, - MOVE_COUNTER, - MOVE_DISABLE, - MOVE_SUPERSONIC, - MOVE_TAKE_DOWN, - MOVE_AMNESIA, - MOVE_CONFUSION, - MOVE_BEAT_UP, - MOVE_SUCKER_PUNCH, - MOVE_HEAD_SMASH, - MOVE_IRON_TAIL, - MOVE_POISON_TAIL, - MOVE_ENDURE, - MOVE_CHIP_AWAY, - MOVE_VENOM_DRENCH), +static const u16 sNidoranFEggMoveLearnset[] = { + MOVE_SUPERSONIC, + MOVE_DISABLE, + MOVE_TAKE_DOWN, + MOVE_FOCUS_ENERGY, + MOVE_CHARM, + MOVE_COUNTER, + MOVE_BEAT_UP, + MOVE_PURSUIT, + MOVE_SKULL_BASH, + MOVE_IRON_TAIL, + MOVE_POISON_TAIL, + MOVE_ENDURE, + MOVE_CHIP_AWAY, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoranMEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_DISABLE, + MOVE_SUPERSONIC, + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_CONFUSION, + MOVE_BEAT_UP, + MOVE_SUCKER_PUNCH, + MOVE_HEAD_SMASH, + MOVE_IRON_TAIL, + MOVE_POISON_TAIL, + MOVE_ENDURE, + MOVE_CHIP_AWAY, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sCleffaEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_CLEFAIRY #if P_FAMILY_VULPIX - egg_moves(VULPIX, - MOVE_FEINT_ATTACK, - MOVE_HYPNOSIS, - MOVE_FLAIL, - MOVE_SPITE, - MOVE_DISABLE, - MOVE_HOWL, - MOVE_HEAT_WAVE, - MOVE_FLARE_BLITZ, - MOVE_EXTRASENSORY, - MOVE_POWER_SWAP, - MOVE_SECRET_POWER, - MOVE_HEX, - MOVE_TAIL_SLAP, - MOVE_CAPTIVATE), +static const u16 sVulpixEggMoveLearnset[] = { + MOVE_FEINT_ATTACK, + MOVE_HYPNOSIS, + MOVE_FLAIL, + MOVE_SPITE, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_HEAT_WAVE, + MOVE_FLARE_BLITZ, + MOVE_EXTRASENSORY, + MOVE_POWER_SWAP, + MOVE_SECRET_POWER, + MOVE_HEX, + MOVE_TAIL_SLAP, + MOVE_CAPTIVATE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sVulpixAlolanEggMoveLearnset[] = { + 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_UNAVAILABLE, +}; #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), +static const u16 sIgglybuffEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_JIGGLYPUFF #if P_FAMILY_ZUBAT - egg_moves(ZUBAT, - MOVE_QUICK_ATTACK, - MOVE_PURSUIT, - MOVE_FEINT_ATTACK, - MOVE_GUST, - MOVE_WHIRLWIND, - MOVE_CURSE, - MOVE_NASTY_PLOT, - MOVE_HYPNOSIS, - MOVE_ZEN_HEADBUTT, - MOVE_BRAVE_BIRD, - MOVE_GIGA_DRAIN, - MOVE_STEEL_WING, - MOVE_DEFOG, - MOVE_VENOM_DRENCH), +static const u16 sZubatEggMoveLearnset[] = { + MOVE_QUICK_ATTACK, + MOVE_PURSUIT, + MOVE_FEINT_ATTACK, + MOVE_GUST, + MOVE_WHIRLWIND, + MOVE_CURSE, + MOVE_NASTY_PLOT, + MOVE_HYPNOSIS, + MOVE_ZEN_HEADBUTT, + MOVE_BRAVE_BIRD, + MOVE_GIGA_DRAIN, + MOVE_STEEL_WING, + MOVE_DEFOG, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ZUBAT #if P_FAMILY_ODDISH - egg_moves(ODDISH, - MOVE_RAZOR_LEAF, - MOVE_FLAIL, - MOVE_SYNTHESIS, - MOVE_CHARM, - MOVE_INGRAIN, - MOVE_TICKLE, - MOVE_TEETER_DANCE, - MOVE_SECRET_POWER, - MOVE_NATURE_POWER, - MOVE_AFTER_YOU, - MOVE_STRENGTH_SAP), +static const u16 sOddishEggMoveLearnset[] = { + MOVE_RAZOR_LEAF, + MOVE_FLAIL, + MOVE_SYNTHESIS, + MOVE_CHARM, + MOVE_INGRAIN, + MOVE_TICKLE, + MOVE_TEETER_DANCE, + MOVE_SECRET_POWER, + MOVE_NATURE_POWER, + MOVE_AFTER_YOU, + MOVE_STRENGTH_SAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ODDISH #if P_FAMILY_PARAS - egg_moves(PARAS, - MOVE_SCREECH, - MOVE_COUNTER, - MOVE_PSYBEAM, - MOVE_FLAIL, - MOVE_SWEET_SCENT, - MOVE_PURSUIT, - MOVE_METAL_CLAW, - MOVE_BUG_BITE, - MOVE_CROSS_POISON, - MOVE_AGILITY, - MOVE_ENDURE, - MOVE_NATURAL_GIFT, - MOVE_LEECH_SEED, - MOVE_WIDE_GUARD, - MOVE_ROTOTILLER, - MOVE_FELL_STINGER, - MOVE_GRASSY_TERRAIN), +static const u16 sParasEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_COUNTER, + MOVE_PSYBEAM, + MOVE_FLAIL, + MOVE_SWEET_SCENT, + MOVE_PURSUIT, + MOVE_METAL_CLAW, + MOVE_BUG_BITE, + MOVE_CROSS_POISON, + MOVE_AGILITY, + MOVE_ENDURE, + MOVE_NATURAL_GIFT, + MOVE_LEECH_SEED, + MOVE_WIDE_GUARD, + MOVE_ROTOTILLER, + MOVE_FELL_STINGER, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PARAS #if P_FAMILY_VENONAT - egg_moves(VENONAT, - MOVE_BATON_PASS, - MOVE_SCREECH, - MOVE_GIGA_DRAIN, - MOVE_SIGNAL_BEAM, - MOVE_AGILITY, - MOVE_MORNING_SUN, - MOVE_TOXIC_SPIKES, - MOVE_BUG_BITE, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_RAGE_POWDER), +static const u16 sVenonatEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_SIGNAL_BEAM, + MOVE_AGILITY, + MOVE_MORNING_SUN, + MOVE_TOXIC_SPIKES, + MOVE_BUG_BITE, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_RAGE_POWDER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VENONAT #if P_FAMILY_DIGLETT - egg_moves(DIGLETT, - MOVE_FEINT_ATTACK, - MOVE_SCREECH, - MOVE_ANCIENT_POWER, - MOVE_PURSUIT, - MOVE_BEAT_UP, - MOVE_UPROAR, - MOVE_MUD_BOMB, - MOVE_ASTONISH, - MOVE_REVERSAL, - MOVE_HEADBUTT, - MOVE_ENDURE, - MOVE_FINAL_GAMBIT, - MOVE_MEMENTO), +static const u16 sDiglettEggMoveLearnset[] = { + MOVE_FEINT_ATTACK, + MOVE_SCREECH, + MOVE_ANCIENT_POWER, + MOVE_PURSUIT, + MOVE_BEAT_UP, + MOVE_UPROAR, + MOVE_MUD_BOMB, + MOVE_ASTONISH, + MOVE_REVERSAL, + MOVE_HEADBUTT, + MOVE_ENDURE, + MOVE_FINAL_GAMBIT, + MOVE_MEMENTO, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sDiglettAlolanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_ALOLAN_FORMS #endif //P_FAMILY_DIGLETT #if P_FAMILY_MEOWTH - egg_moves(MEOWTH, - MOVE_SPITE, - MOVE_CHARM, - MOVE_HYPNOSIS, - MOVE_AMNESIA, - MOVE_ASSIST, - MOVE_ODOR_SLEUTH, - MOVE_FLAIL, - MOVE_LAST_RESORT, - MOVE_PUNISHMENT, - MOVE_TAIL_WHIP, - MOVE_SNATCH, - MOVE_IRON_TAIL, - MOVE_FOUL_PLAY), +static const u16 sMeowthEggMoveLearnset[] = { + MOVE_SPITE, + MOVE_CHARM, + MOVE_HYPNOSIS, + MOVE_AMNESIA, + MOVE_ASSIST, + MOVE_ODOR_SLEUTH, + MOVE_FLAIL, + MOVE_LAST_RESORT, + MOVE_PUNISHMENT, + MOVE_TAIL_WHIP, + MOVE_SNATCH, + MOVE_IRON_TAIL, + MOVE_FOUL_PLAY, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMeowthAlolanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMeowthGalarianEggMoveLearnset[] = { + MOVE_SPITE, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FLAIL, + MOVE_NIGHT_SLASH, + MOVE_COVET, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MEOWTH #if P_FAMILY_PSYDUCK - egg_moves(PSYDUCK, - MOVE_HYPNOSIS, - MOVE_PSYBEAM, - MOVE_FORESIGHT, - MOVE_FUTURE_SIGHT, - MOVE_CROSS_CHOP, - MOVE_REFRESH, - MOVE_CONFUSE_RAY, - MOVE_YAWN, - MOVE_MUD_BOMB, - MOVE_ENCORE, - MOVE_SECRET_POWER, - MOVE_SLEEP_TALK, - MOVE_SYNCHRONOISE, - MOVE_SIMPLE_BEAM, - MOVE_CLEAR_SMOG), +static const u16 sPsyduckEggMoveLearnset[] = { + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_CROSS_CHOP, + MOVE_REFRESH, + MOVE_CONFUSE_RAY, + MOVE_YAWN, + MOVE_MUD_BOMB, + MOVE_ENCORE, + MOVE_SECRET_POWER, + MOVE_SLEEP_TALK, + MOVE_SYNCHRONOISE, + MOVE_SIMPLE_BEAM, + MOVE_CLEAR_SMOG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PSYDUCK #if P_FAMILY_MANKEY - egg_moves(MANKEY, - MOVE_FORESIGHT, - MOVE_MEDITATE, - MOVE_COUNTER, - MOVE_REVERSAL, - MOVE_BEAT_UP, - MOVE_REVENGE, - MOVE_SMELLING_SALTS, - MOVE_CLOSE_COMBAT, - MOVE_ENCORE, - MOVE_FOCUS_PUNCH, - MOVE_SLEEP_TALK, - MOVE_NIGHT_SLASH, - MOVE_POWER_TRIP), +static const u16 sMankeyEggMoveLearnset[] = { + MOVE_FORESIGHT, + MOVE_MEDITATE, + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_REVENGE, + MOVE_SMELLING_SALTS, + MOVE_CLOSE_COMBAT, + MOVE_ENCORE, + MOVE_FOCUS_PUNCH, + MOVE_SLEEP_TALK, + MOVE_NIGHT_SLASH, + MOVE_POWER_TRIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MANKEY #if P_FAMILY_GROWLITHE - egg_moves(GROWLITHE, - MOVE_BODY_SLAM, - MOVE_CRUNCH, - MOVE_THRASH, - MOVE_FIRE_SPIN, - MOVE_HOWL, - MOVE_HEAT_WAVE, - MOVE_DOUBLE_EDGE, - MOVE_FLARE_BLITZ, - MOVE_MORNING_SUN, - MOVE_COVET, - MOVE_IRON_TAIL, - MOVE_DOUBLE_KICK, - MOVE_CLOSE_COMBAT, - MOVE_BURN_UP), +static const u16 sGrowlitheEggMoveLearnset[] = { + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_FIRE_SPIN, + MOVE_HOWL, + MOVE_HEAT_WAVE, + MOVE_DOUBLE_EDGE, + MOVE_FLARE_BLITZ, + MOVE_MORNING_SUN, + MOVE_COVET, + MOVE_IRON_TAIL, + MOVE_DOUBLE_KICK, + MOVE_CLOSE_COMBAT, + MOVE_BURN_UP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GROWLITHE #if P_FAMILY_POLIWAG - egg_moves(POLIWAG, - MOVE_MIST, - MOVE_SPLASH, - MOVE_BUBBLE_BEAM, - MOVE_HAZE, - MOVE_MIND_READER, - MOVE_WATER_SPORT, - MOVE_ICE_BALL, - MOVE_MUD_SHOT, - MOVE_REFRESH, - MOVE_ENDEAVOR, - MOVE_ENCORE, - MOVE_ENDURE, - MOVE_WATER_PULSE), +static const u16 sPoliwagEggMoveLearnset[] = { + MOVE_MIST, + MOVE_SPLASH, + MOVE_BUBBLE_BEAM, + MOVE_HAZE, + MOVE_MIND_READER, + MOVE_WATER_SPORT, + MOVE_ICE_BALL, + MOVE_MUD_SHOT, + MOVE_REFRESH, + MOVE_ENDEAVOR, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_POLIWAG #if P_FAMILY_ABRA - egg_moves(ABRA, - MOVE_ENCORE, - MOVE_BARRIER, - MOVE_KNOCK_OFF, - MOVE_FIRE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_ICE_PUNCH, - MOVE_POWER_TRICK, - MOVE_GUARD_SWAP, - MOVE_SKILL_SWAP, - MOVE_GUARD_SPLIT, - MOVE_PSYCHO_SHIFT, - MOVE_ALLY_SWITCH, - MOVE_PSYCHIC_TERRAIN), +static const u16 sAbraEggMoveLearnset[] = { + MOVE_ENCORE, + MOVE_BARRIER, + MOVE_KNOCK_OFF, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_POWER_TRICK, + MOVE_GUARD_SWAP, + MOVE_SKILL_SWAP, + MOVE_GUARD_SPLIT, + MOVE_PSYCHO_SHIFT, + MOVE_ALLY_SWITCH, + MOVE_PSYCHIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ABRA #if P_FAMILY_MACHOP - egg_moves(MACHOP, - MOVE_MEDITATE, - MOVE_ROLLING_KICK, - MOVE_ENCORE, - MOVE_SMELLING_SALTS, - MOVE_COUNTER, - MOVE_CLOSE_COMBAT, - MOVE_FIRE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_ICE_PUNCH, - MOVE_BULLET_PUNCH, - MOVE_POWER_TRICK, - MOVE_HEAVY_SLAM, - MOVE_KNOCK_OFF, - MOVE_TICKLE, - MOVE_QUICK_GUARD), +static const u16 sMachopEggMoveLearnset[] = { + MOVE_MEDITATE, + MOVE_ROLLING_KICK, + MOVE_ENCORE, + MOVE_SMELLING_SALTS, + MOVE_COUNTER, + MOVE_CLOSE_COMBAT, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_BULLET_PUNCH, + MOVE_POWER_TRICK, + MOVE_HEAVY_SLAM, + MOVE_KNOCK_OFF, + MOVE_TICKLE, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MACHOP #if P_FAMILY_BELLSPROUT - egg_moves(BELLSPROUT, - MOVE_ENCORE, - MOVE_SYNTHESIS, - MOVE_LEECH_LIFE, - MOVE_INGRAIN, - MOVE_MAGICAL_LEAF, - MOVE_WORRY_SEED, - MOVE_TICKLE, - MOVE_WEATHER_BALL, - MOVE_BULLET_SEED, - MOVE_NATURAL_GIFT, - MOVE_GIGA_DRAIN, - MOVE_CLEAR_SMOG, - MOVE_POWER_WHIP, - MOVE_ACID_SPRAY, - MOVE_BELCH, - MOVE_STRENGTH_SAP), +static const u16 sBellsproutEggMoveLearnset[] = { + MOVE_ENCORE, + MOVE_SYNTHESIS, + MOVE_LEECH_LIFE, + MOVE_INGRAIN, + MOVE_MAGICAL_LEAF, + MOVE_WORRY_SEED, + MOVE_TICKLE, + MOVE_WEATHER_BALL, + MOVE_BULLET_SEED, + MOVE_NATURAL_GIFT, + MOVE_GIGA_DRAIN, + MOVE_CLEAR_SMOG, + MOVE_POWER_WHIP, + MOVE_ACID_SPRAY, + MOVE_BELCH, + MOVE_STRENGTH_SAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BELLSPROUT #if P_FAMILY_TENTACOOL - egg_moves(TENTACOOL, - MOVE_AURORA_BEAM, - MOVE_MIRROR_COAT, - MOVE_RAPID_SPIN, - MOVE_HAZE, - MOVE_CONFUSE_RAY, - MOVE_KNOCK_OFF, - MOVE_ACUPRESSURE, - MOVE_MUDDY_WATER, - MOVE_BUBBLE, - MOVE_AQUA_RING, - MOVE_TICKLE), +static const u16 sTentacoolEggMoveLearnset[] = { + MOVE_AURORA_BEAM, + MOVE_MIRROR_COAT, + MOVE_RAPID_SPIN, + MOVE_HAZE, + MOVE_CONFUSE_RAY, + MOVE_KNOCK_OFF, + MOVE_ACUPRESSURE, + MOVE_MUDDY_WATER, + MOVE_BUBBLE, + MOVE_AQUA_RING, + MOVE_TICKLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TENTACOOL #if P_FAMILY_GEODUDE - egg_moves(GEODUDE, - MOVE_MEGA_PUNCH, - MOVE_BLOCK, - MOVE_HAMMER_ARM, - MOVE_FLAIL, - MOVE_CURSE, - MOVE_FOCUS_PUNCH, - MOVE_ROCK_CLIMB, - MOVE_ENDURE, - MOVE_AUTOTOMIZE, - MOVE_WIDE_GUARD), +static const u16 sGeodudeEggMoveLearnset[] = { + MOVE_MEGA_PUNCH, + MOVE_BLOCK, + MOVE_HAMMER_ARM, + MOVE_FLAIL, + MOVE_CURSE, + MOVE_FOCUS_PUNCH, + MOVE_ROCK_CLIMB, + MOVE_ENDURE, + MOVE_AUTOTOMIZE, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sGeodudeAlolanEggMoveLearnset[] = { + MOVE_AUTOTOMIZE, + MOVE_BLOCK, + MOVE_COUNTER, + MOVE_CURSE, + MOVE_ENDURE, + MOVE_FLAIL, + MOVE_MAGNET_RISE, + MOVE_ROCK_CLIMB, + MOVE_SCREECH, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GEODUDE #if P_FAMILY_PONYTA - egg_moves(PONYTA, - MOVE_FLAME_WHEEL, - MOVE_THRASH, - MOVE_DOUBLE_KICK, - MOVE_HYPNOSIS, - MOVE_CHARM, - MOVE_DOUBLE_EDGE, - MOVE_HORN_DRILL, - MOVE_MORNING_SUN, - MOVE_LOW_KICK, - MOVE_CAPTIVATE, - MOVE_ALLY_SWITCH, - MOVE_HIGH_HORSEPOWER), +static const u16 sPonytaEggMoveLearnset[] = { + MOVE_FLAME_WHEEL, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_HORN_DRILL, + MOVE_MORNING_SUN, + MOVE_LOW_KICK, + MOVE_CAPTIVATE, + MOVE_ALLY_SWITCH, + MOVE_HIGH_HORSEPOWER, + MOVE_UNAVAILABLE, +}; #if P_GALARIAN_FORMS - egg_moves(PONYTA_GALARIAN, - MOVE_THRASH, - MOVE_DOUBLE_KICK, - MOVE_HYPNOSIS, - MOVE_DOUBLE_EDGE, - MOVE_HORN_DRILL, - MOVE_MORNING_SUN), +static const u16 sPonytaGalarianEggMoveLearnset[] = { + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_DOUBLE_EDGE, + MOVE_HORN_DRILL, + MOVE_MORNING_SUN, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_PONYTA #if P_FAMILY_SLOWPOKE - egg_moves(SLOWPOKE, - MOVE_BELLY_DRUM, - MOVE_FUTURE_SIGHT, - MOVE_STOMP, - MOVE_MUD_SPORT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_ME_FIRST, - MOVE_BLOCK, - MOVE_ZEN_HEADBUTT, - MOVE_WONDER_ROOM, - MOVE_BELCH), +static const u16 sSlowpokeEggMoveLearnset[] = { + MOVE_BELLY_DRUM, + MOVE_FUTURE_SIGHT, + MOVE_STOMP, + MOVE_MUD_SPORT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_ME_FIRST, + MOVE_BLOCK, + MOVE_ZEN_HEADBUTT, + MOVE_WONDER_ROOM, + MOVE_BELCH, + MOVE_UNAVAILABLE, +}; #if P_GALARIAN_FORMS - egg_moves(SLOWPOKE_GALARIAN, - MOVE_BELCH, - MOVE_BELLY_DRUM, - MOVE_BLOCK, - MOVE_STOMP), +static const u16 sSlowpokeGalarianEggMoveLearnset[] = { + MOVE_BELCH, + MOVE_BELLY_DRUM, + MOVE_BLOCK, + MOVE_STOMP, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_SLOWPOKE #if P_FAMILY_FARFETCHD - egg_moves(FARFETCHD, - MOVE_STEEL_WING, - MOVE_FORESIGHT, - MOVE_MIRROR_MOVE, - MOVE_GUST, - MOVE_QUICK_ATTACK, - MOVE_FLAIL, - MOVE_FEATHER_DANCE, - MOVE_CURSE, - MOVE_COVET, - MOVE_MUD_SLAP, - MOVE_NIGHT_SLASH, - MOVE_LEAF_BLADE, - MOVE_REVENGE, - MOVE_ROOST, - MOVE_TRUMP_CARD, - MOVE_SIMPLE_BEAM, - MOVE_FIRST_IMPRESSION, - MOVE_FINAL_GAMBIT), +static const u16 sFarfetchdEggMoveLearnset[] = { + MOVE_STEEL_WING, + MOVE_FORESIGHT, + MOVE_MIRROR_MOVE, + MOVE_GUST, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_FEATHER_DANCE, + MOVE_CURSE, + MOVE_COVET, + MOVE_MUD_SLAP, + MOVE_NIGHT_SLASH, + MOVE_LEAF_BLADE, + MOVE_REVENGE, + MOVE_ROOST, + MOVE_TRUMP_CARD, + MOVE_SIMPLE_BEAM, + MOVE_FIRST_IMPRESSION, + MOVE_FINAL_GAMBIT, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sFarfetchdGalarianEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_FARFETCHD #if P_FAMILY_DODUO - egg_moves(DODUO, - MOVE_QUICK_ATTACK, - MOVE_SUPERSONIC, - MOVE_HAZE, - MOVE_FEINT_ATTACK, - MOVE_FLAIL, - MOVE_ENDEAVOR, - MOVE_MIRROR_MOVE, - MOVE_BRAVE_BIRD, - MOVE_NATURAL_GIFT, - MOVE_ASSURANCE), +static const u16 sDoduoEggMoveLearnset[] = { + MOVE_QUICK_ATTACK, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_FEINT_ATTACK, + MOVE_FLAIL, + MOVE_ENDEAVOR, + MOVE_MIRROR_MOVE, + MOVE_BRAVE_BIRD, + MOVE_NATURAL_GIFT, + MOVE_ASSURANCE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DODUO #if P_FAMILY_SEEL - egg_moves(SEEL, - MOVE_LICK, - MOVE_PERISH_SONG, - MOVE_DISABLE, - MOVE_HORN_DRILL, - MOVE_SLAM, - MOVE_ENCORE, - MOVE_FAKE_OUT, - MOVE_ICICLE_SPEAR, - MOVE_SIGNAL_BEAM, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_WATER_PULSE, - MOVE_IRON_TAIL, - MOVE_SLEEP_TALK, - MOVE_BELCH, - MOVE_ENTRAINMENT), +static const u16 sSeelEggMoveLearnset[] = { + MOVE_LICK, + MOVE_PERISH_SONG, + MOVE_DISABLE, + MOVE_HORN_DRILL, + MOVE_SLAM, + MOVE_ENCORE, + MOVE_FAKE_OUT, + MOVE_ICICLE_SPEAR, + MOVE_SIGNAL_BEAM, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_WATER_PULSE, + MOVE_IRON_TAIL, + MOVE_SLEEP_TALK, + MOVE_BELCH, + MOVE_ENTRAINMENT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SEEL #if P_FAMILY_GRIMER - egg_moves(GRIMER, - MOVE_HAZE, - MOVE_MEAN_LOOK, - MOVE_LICK, - MOVE_IMPRISON, - MOVE_CURSE, - MOVE_SHADOW_PUNCH, - MOVE_SHADOW_SNEAK, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_SCARY_FACE, - MOVE_ACID_SPRAY, - MOVE_POWER_UP_PUNCH), +static const u16 sGrimerEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_MEAN_LOOK, + MOVE_LICK, + MOVE_IMPRISON, + MOVE_CURSE, + MOVE_SHADOW_PUNCH, + MOVE_SHADOW_SNEAK, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_SCARY_FACE, + MOVE_ACID_SPRAY, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sGrimerAlolanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_ALOLAN_FORMS #endif //P_FAMILY_GRIMER #if P_FAMILY_SHELLDER - egg_moves(SHELLDER, - MOVE_BUBBLE_BEAM, - MOVE_TAKE_DOWN, - MOVE_BARRIER, - MOVE_RAPID_SPIN, - MOVE_SCREECH, - MOVE_ICICLE_SPEAR, - MOVE_MUD_SHOT, - MOVE_ROCK_BLAST, - MOVE_WATER_PULSE, - MOVE_AQUA_RING, - MOVE_AVALANCHE, - MOVE_TWINEEDLE), +static const u16 sShellderEggMoveLearnset[] = { + MOVE_BUBBLE_BEAM, + MOVE_TAKE_DOWN, + MOVE_BARRIER, + MOVE_RAPID_SPIN, + MOVE_SCREECH, + MOVE_ICICLE_SPEAR, + MOVE_MUD_SHOT, + MOVE_ROCK_BLAST, + MOVE_WATER_PULSE, + MOVE_AQUA_RING, + MOVE_AVALANCHE, + MOVE_TWINEEDLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHELLDER #if P_FAMILY_GASTLY - egg_moves(GASTLY, - MOVE_PSYWAVE, - MOVE_PERISH_SONG, - MOVE_HAZE, - MOVE_ASTONISH, - MOVE_GRUDGE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_DISABLE, - MOVE_SCARY_FACE, - MOVE_CLEAR_SMOG, - MOVE_SMOG, - MOVE_REFLECT_TYPE), +static const u16 sGastlyEggMoveLearnset[] = { + MOVE_PSYWAVE, + MOVE_PERISH_SONG, + MOVE_HAZE, + MOVE_ASTONISH, + MOVE_GRUDGE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_DISABLE, + MOVE_SCARY_FACE, + MOVE_CLEAR_SMOG, + MOVE_SMOG, + MOVE_REFLECT_TYPE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GASTLY #if P_FAMILY_ONIX - egg_moves(ONIX, - MOVE_FLAIL, - MOVE_BLOCK, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_ROCK_BLAST, - MOVE_ROCK_CLIMB, - MOVE_HEAVY_SLAM, - MOVE_STEALTH_ROCK, - MOVE_ROTOTILLER, - MOVE_WIDE_GUARD), +static const u16 sOnixEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_BLOCK, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_ROCK_BLAST, + MOVE_ROCK_CLIMB, + MOVE_HEAVY_SLAM, + MOVE_STEALTH_ROCK, + MOVE_ROTOTILLER, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ONIX #if P_FAMILY_DROWZEE - egg_moves(DROWZEE, - MOVE_BARRIER, - MOVE_ASSIST, - MOVE_ROLE_PLAY, - MOVE_FIRE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_ICE_PUNCH, - MOVE_NASTY_PLOT, - MOVE_FLATTER, - MOVE_PSYCHO_CUT, - MOVE_GUARD_SWAP, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_POWER_SPLIT, - MOVE_PSYCHIC_TERRAIN), +static const u16 sDrowzeeEggMoveLearnset[] = { + MOVE_BARRIER, + MOVE_ASSIST, + MOVE_ROLE_PLAY, + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_NASTY_PLOT, + MOVE_FLATTER, + MOVE_PSYCHO_CUT, + MOVE_GUARD_SWAP, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_POWER_SPLIT, + MOVE_PSYCHIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DROWZEE #if P_FAMILY_KRABBY - egg_moves(KRABBY, - MOVE_HAZE, - MOVE_AMNESIA, - MOVE_FLAIL, - MOVE_SLAM, - MOVE_KNOCK_OFF, - MOVE_TICKLE, - MOVE_ANCIENT_POWER, - MOVE_AGILITY, - MOVE_ENDURE, - MOVE_CHIP_AWAY, - MOVE_BIDE, - MOVE_ALLY_SWITCH), +static const u16 sKrabbyEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_AMNESIA, + MOVE_FLAIL, + MOVE_SLAM, + MOVE_KNOCK_OFF, + MOVE_TICKLE, + MOVE_ANCIENT_POWER, + MOVE_AGILITY, + MOVE_ENDURE, + MOVE_CHIP_AWAY, + MOVE_BIDE, + MOVE_ALLY_SWITCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KRABBY #if P_FAMILY_EXEGGCUTE - egg_moves(EXEGGCUTE, - MOVE_SYNTHESIS, - MOVE_MOONLIGHT, - MOVE_ANCIENT_POWER, - MOVE_INGRAIN, - MOVE_CURSE, - MOVE_NATURE_POWER, - MOVE_LUCKY_CHANT, - MOVE_LEAF_STORM, - MOVE_POWER_SWAP, - MOVE_GIGA_DRAIN, - MOVE_SKILL_SWAP, - MOVE_NATURAL_GIFT, - MOVE_BLOCK, - MOVE_GRASSY_TERRAIN), +static const u16 sExeggcuteEggMoveLearnset[] = { + MOVE_SYNTHESIS, + MOVE_MOONLIGHT, + MOVE_ANCIENT_POWER, + MOVE_INGRAIN, + MOVE_CURSE, + MOVE_NATURE_POWER, + MOVE_LUCKY_CHANT, + MOVE_LEAF_STORM, + MOVE_POWER_SWAP, + MOVE_GIGA_DRAIN, + MOVE_SKILL_SWAP, + MOVE_NATURAL_GIFT, + MOVE_BLOCK, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_EXEGGCUTE #if P_FAMILY_CUBONE - egg_moves(CUBONE, - MOVE_ANCIENT_POWER, - MOVE_BELLY_DRUM, - MOVE_SCREECH, - MOVE_SKULL_BASH, - MOVE_PERISH_SONG, - MOVE_DOUBLE_KICK, - MOVE_IRON_HEAD, - MOVE_DETECT, - MOVE_ENDURE, - MOVE_CHIP_AWAY, - MOVE_CURSE), +static const u16 sCuboneEggMoveLearnset[] = { + MOVE_ANCIENT_POWER, + MOVE_BELLY_DRUM, + MOVE_SCREECH, + MOVE_SKULL_BASH, + MOVE_PERISH_SONG, + MOVE_DOUBLE_KICK, + MOVE_IRON_HEAD, + MOVE_DETECT, + MOVE_ENDURE, + MOVE_CHIP_AWAY, + MOVE_CURSE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sTyrogueEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HITMONS #if P_FAMILY_LICKITUNG - egg_moves(LICKITUNG, - MOVE_BELLY_DRUM, - MOVE_MAGNITUDE, - MOVE_BODY_SLAM, - MOVE_CURSE, - MOVE_SMELLING_SALTS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_AMNESIA, - MOVE_HAMMER_ARM, - MOVE_MUDDY_WATER, - MOVE_ZEN_HEADBUTT, - MOVE_BELCH, - MOVE_THRASH), +static const u16 sLickitungEggMoveLearnset[] = { + MOVE_BELLY_DRUM, + MOVE_MAGNITUDE, + MOVE_BODY_SLAM, + MOVE_CURSE, + MOVE_SMELLING_SALTS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_AMNESIA, + MOVE_HAMMER_ARM, + MOVE_MUDDY_WATER, + MOVE_ZEN_HEADBUTT, + MOVE_BELCH, + MOVE_THRASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LICKITUNG #if P_FAMILY_KOFFING - egg_moves(KOFFING, - MOVE_SCREECH, - MOVE_PSYWAVE, - MOVE_PSYBEAM, - MOVE_DESTINY_BOND, - MOVE_PAIN_SPLIT, - MOVE_GRUDGE, - MOVE_SPITE, - MOVE_CURSE, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_TOXIC_SPIKES, - MOVE_VENOM_DRENCH), +static const u16 sKoffingEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_PSYWAVE, + MOVE_PSYBEAM, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_SPITE, + MOVE_CURSE, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_TOXIC_SPIKES, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KOFFING #if P_FAMILY_RHYHORN - egg_moves(RHYHORN, - MOVE_CRUNCH, - MOVE_REVERSAL, - MOVE_COUNTER, - MOVE_MAGNITUDE, - MOVE_CURSE, - MOVE_CRUSH_CLAW, - MOVE_DRAGON_RUSH, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_SKULL_BASH, - MOVE_IRON_TAIL, - MOVE_ROCK_CLIMB, - MOVE_ROTOTILLER, - MOVE_METAL_BURST, - MOVE_GUARD_SPLIT), +static const u16 sRhyhornEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_REVERSAL, + MOVE_COUNTER, + MOVE_MAGNITUDE, + MOVE_CURSE, + MOVE_CRUSH_CLAW, + MOVE_DRAGON_RUSH, + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_SKULL_BASH, + MOVE_IRON_TAIL, + MOVE_ROCK_CLIMB, + MOVE_ROTOTILLER, + MOVE_METAL_BURST, + MOVE_GUARD_SPLIT, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sHappinyEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(CHANSEY, - MOVE_PRESENT, - MOVE_METRONOME, - MOVE_HEAL_BELL, - MOVE_AROMATHERAPY, - MOVE_COUNTER, - MOVE_HELPING_HAND, - MOVE_GRAVITY, - MOVE_MUD_BOMB, - MOVE_NATURAL_GIFT, - MOVE_ENDURE, - MOVE_SEISMIC_TOSS), +static const u16 sChanseyEggMoveLearnset[] = { + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_COUNTER, + MOVE_HELPING_HAND, + MOVE_GRAVITY, + MOVE_MUD_BOMB, + MOVE_NATURAL_GIFT, + MOVE_ENDURE, + MOVE_SEISMIC_TOSS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHANSEY #if P_FAMILY_TANGELA - egg_moves(TANGELA, - MOVE_FLAIL, - MOVE_CONFUSION, - MOVE_MEGA_DRAIN, - MOVE_AMNESIA, - MOVE_LEECH_SEED, - MOVE_NATURE_POWER, - MOVE_ENDEAVOR, - MOVE_LEAF_STORM, - MOVE_POWER_SWAP, - MOVE_GIGA_DRAIN, - MOVE_RAGE_POWDER, - MOVE_NATURAL_GIFT, - MOVE_WAKE_UP_SLAP), +static const u16 sTangelaEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_CONFUSION, + MOVE_MEGA_DRAIN, + MOVE_AMNESIA, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_ENDEAVOR, + MOVE_LEAF_STORM, + MOVE_POWER_SWAP, + MOVE_GIGA_DRAIN, + MOVE_RAGE_POWDER, + MOVE_NATURAL_GIFT, + MOVE_WAKE_UP_SLAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TANGELA #if P_FAMILY_KANGASKHAN - egg_moves(KANGASKHAN, - MOVE_STOMP, - MOVE_FORESIGHT, - MOVE_FOCUS_ENERGY, - MOVE_DISABLE, - MOVE_COUNTER, - MOVE_CRUSH_CLAW, - MOVE_DOUBLE_EDGE, - MOVE_ENDEAVOR, - MOVE_HAMMER_ARM, - MOVE_FOCUS_PUNCH, - MOVE_TRUMP_CARD, - MOVE_UPROAR, - MOVE_CIRCLE_THROW), +static const u16 sKangaskhanEggMoveLearnset[] = { + MOVE_STOMP, + MOVE_FORESIGHT, + MOVE_FOCUS_ENERGY, + MOVE_DISABLE, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_DOUBLE_EDGE, + MOVE_ENDEAVOR, + MOVE_HAMMER_ARM, + MOVE_FOCUS_PUNCH, + MOVE_TRUMP_CARD, + MOVE_UPROAR, + MOVE_CIRCLE_THROW, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KANGASKHAN #if P_FAMILY_HORSEA - egg_moves(HORSEA, - MOVE_FLAIL, - MOVE_AURORA_BEAM, - MOVE_OCTAZOOKA, - MOVE_DISABLE, - MOVE_SPLASH, - MOVE_DRAGON_RAGE, - MOVE_DRAGON_BREATH, - MOVE_SIGNAL_BEAM, - MOVE_RAZOR_WIND, - MOVE_MUDDY_WATER, - MOVE_WATER_PULSE, - MOVE_CLEAR_SMOG, - MOVE_OUTRAGE), +static const u16 sHorseaEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_DISABLE, + MOVE_SPLASH, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH, + MOVE_SIGNAL_BEAM, + MOVE_RAZOR_WIND, + MOVE_MUDDY_WATER, + MOVE_WATER_PULSE, + MOVE_CLEAR_SMOG, + MOVE_OUTRAGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HORSEA #if P_FAMILY_GOLDEEN - egg_moves(GOLDEEN, - MOVE_PSYBEAM, - MOVE_HAZE, - MOVE_HYDRO_PUMP, - MOVE_SLEEP_TALK, - MOVE_MUD_SPORT, - MOVE_MUD_SLAP, - MOVE_AQUA_TAIL, - MOVE_BODY_SLAM, - MOVE_MUD_SHOT, - MOVE_SKULL_BASH, - MOVE_SIGNAL_BEAM), +static const u16 sGoldeenEggMoveLearnset[] = { + MOVE_PSYBEAM, + MOVE_HAZE, + MOVE_HYDRO_PUMP, + MOVE_SLEEP_TALK, + MOVE_MUD_SPORT, + MOVE_MUD_SLAP, + MOVE_AQUA_TAIL, + MOVE_BODY_SLAM, + MOVE_MUD_SHOT, + MOVE_SKULL_BASH, + MOVE_SIGNAL_BEAM, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMimeJrEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(MR_MIME, - MOVE_FUTURE_SIGHT, - MOVE_HYPNOSIS, - MOVE_MIMIC, - MOVE_FAKE_OUT, - MOVE_TRICK, - MOVE_CONFUSE_RAY, - MOVE_WAKE_UP_SLAP, - MOVE_TEETER_DANCE, - MOVE_NASTY_PLOT, - MOVE_POWER_SPLIT, - MOVE_MAGIC_ROOM, - MOVE_ICY_WIND, - MOVE_PSYCHIC_TERRAIN), +static const u16 sMrMimeEggMoveLearnset[] = { + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_FAKE_OUT, + MOVE_TRICK, + MOVE_CONFUSE_RAY, + MOVE_WAKE_UP_SLAP, + MOVE_TEETER_DANCE, + MOVE_NASTY_PLOT, + MOVE_POWER_SPLIT, + MOVE_MAGIC_ROOM, + MOVE_ICY_WIND, + MOVE_PSYCHIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #if P_GALARIAN_FORMS - egg_moves(MR_MIME_GALARIAN, - MOVE_FAKE_OUT, - MOVE_CONFUSE_RAY, - MOVE_POWER_SPLIT, - MOVE_TICKLE), +static const u16 sMrMimeGalarianEggMoveLearnset[] = { + MOVE_FAKE_OUT, + MOVE_CONFUSE_RAY, + MOVE_POWER_SPLIT, + MOVE_TICKLE, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MR_MIME #if P_FAMILY_SCYTHER - egg_moves(SCYTHER, - MOVE_COUNTER, - MOVE_BATON_PASS, - MOVE_RAZOR_WIND, - MOVE_REVERSAL, - MOVE_ENDURE, - MOVE_SILVER_WIND, - MOVE_BUG_BUZZ, - MOVE_NIGHT_SLASH, - MOVE_DEFOG, - MOVE_STEEL_WING, - MOVE_QUICK_GUARD), +static const u16 sScytherEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_BATON_PASS, + MOVE_RAZOR_WIND, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SILVER_WIND, + MOVE_BUG_BUZZ, + MOVE_NIGHT_SLASH, + MOVE_DEFOG, + MOVE_STEEL_WING, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sSmoochumEggMoveLearnset[] = { + MOVE_MEDITATE, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH, + MOVE_MIRACLE_EYE, + MOVE_NASTY_PLOT, + MOVE_WAKE_UP_SLAP, + MOVE_CAPTIVATE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sElekidEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMagbyEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_MAGMAR #if P_FAMILY_PINSIR - egg_moves(PINSIR, - MOVE_FURY_ATTACK, - MOVE_FLAIL, - MOVE_FEINT_ATTACK, - MOVE_QUICK_ATTACK, - MOVE_CLOSE_COMBAT, - MOVE_FEINT, - MOVE_ME_FIRST, - MOVE_BUG_BITE, - MOVE_SUPERPOWER), +static const u16 sPinsirEggMoveLearnset[] = { + MOVE_FURY_ATTACK, + MOVE_FLAIL, + MOVE_FEINT_ATTACK, + MOVE_QUICK_ATTACK, + MOVE_CLOSE_COMBAT, + MOVE_FEINT, + MOVE_ME_FIRST, + MOVE_BUG_BITE, + MOVE_SUPERPOWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PINSIR #if P_FAMILY_TAUROS #if P_PALDEAN_FORMS - egg_moves(TAUROS_PALDEAN_COMBAT_BREED, - MOVE_CURSE, - MOVE_ENDEAVOR), +static const u16 sTaurosPaldeanCombatBreedEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_ENDEAVOR, + MOVE_UNAVAILABLE, +}; - egg_moves(TAUROS_PALDEAN_BLAZE_BREED, - MOVE_CURSE, - MOVE_ENDEAVOR), +static const u16 sTaurosPaldeanBlazeBreedEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_ENDEAVOR, + MOVE_UNAVAILABLE, +}; - egg_moves(TAUROS_PALDEAN_AQUA_BREED, - MOVE_CURSE, - MOVE_ENDEAVOR), +static const u16 sTaurosPaldeanAquaBreedEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_ENDEAVOR, + MOVE_UNAVAILABLE, +}; #endif //P_PALDEAN_FORMS #endif //P_FAMILY_TAUROS #if P_FAMILY_LAPRAS - egg_moves(LAPRAS, - MOVE_FORESIGHT, - MOVE_TICKLE, - MOVE_REFRESH, - MOVE_DRAGON_DANCE, - MOVE_CURSE, - MOVE_SLEEP_TALK, - MOVE_HORN_DRILL, - MOVE_ANCIENT_POWER, - MOVE_WHIRLPOOL, - MOVE_FISSURE, - MOVE_DRAGON_PULSE, - MOVE_AVALANCHE, - MOVE_FUTURE_SIGHT, - MOVE_FREEZE_DRY), +static const u16 sLaprasEggMoveLearnset[] = { + MOVE_FORESIGHT, + MOVE_TICKLE, + MOVE_REFRESH, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HORN_DRILL, + MOVE_ANCIENT_POWER, + MOVE_WHIRLPOOL, + MOVE_FISSURE, + MOVE_DRAGON_PULSE, + MOVE_AVALANCHE, + MOVE_FUTURE_SIGHT, + MOVE_FREEZE_DRY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LAPRAS #if P_FAMILY_EEVEE - egg_moves(EEVEE, - MOVE_CHARM, - MOVE_FLAIL, - MOVE_ENDURE, - MOVE_CURSE, - MOVE_TICKLE, - MOVE_WISH, - MOVE_YAWN, - MOVE_FAKE_TEARS, - MOVE_COVET, - MOVE_DETECT, - MOVE_NATURAL_GIFT, - MOVE_STORED_POWER, - MOVE_SYNCHRONOISE, - MOVE_CAPTIVATE), +static const u16 sEeveeEggMoveLearnset[] = { + MOVE_CHARM, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_TICKLE, + MOVE_WISH, + MOVE_YAWN, + MOVE_FAKE_TEARS, + MOVE_COVET, + MOVE_DETECT, + MOVE_NATURAL_GIFT, + MOVE_STORED_POWER, + MOVE_SYNCHRONOISE, + MOVE_CAPTIVATE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_EEVEE #if P_FAMILY_OMANYTE - egg_moves(OMANYTE, - MOVE_BUBBLE_BEAM, - MOVE_AURORA_BEAM, - MOVE_SLAM, - MOVE_SUPERSONIC, - MOVE_HAZE, - MOVE_SPIKES, - MOVE_KNOCK_OFF, - MOVE_WRING_OUT, - MOVE_TOXIC_SPIKES, - MOVE_MUDDY_WATER, - MOVE_BIDE, - MOVE_WATER_PULSE, - MOVE_WHIRLPOOL, - MOVE_REFLECT_TYPE), +static const u16 sOmanyteEggMoveLearnset[] = { + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_SLAM, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SPIKES, + MOVE_KNOCK_OFF, + MOVE_WRING_OUT, + MOVE_TOXIC_SPIKES, + MOVE_MUDDY_WATER, + MOVE_BIDE, + MOVE_WATER_PULSE, + MOVE_WHIRLPOOL, + MOVE_REFLECT_TYPE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_OMANYTE #if P_FAMILY_KABUTO - egg_moves(KABUTO, - MOVE_BUBBLE_BEAM, - MOVE_AURORA_BEAM, - MOVE_RAPID_SPIN, - MOVE_FLAIL, - MOVE_KNOCK_OFF, - MOVE_CONFUSE_RAY, - MOVE_MUD_SHOT, - MOVE_ICY_WIND, - MOVE_SCREECH, - MOVE_GIGA_DRAIN, - MOVE_FORESIGHT, - MOVE_TAKE_DOWN), +static const u16 sKabutoEggMoveLearnset[] = { + MOVE_BUBBLE_BEAM, + MOVE_AURORA_BEAM, + MOVE_RAPID_SPIN, + MOVE_FLAIL, + MOVE_KNOCK_OFF, + MOVE_CONFUSE_RAY, + MOVE_MUD_SHOT, + MOVE_ICY_WIND, + MOVE_SCREECH, + MOVE_GIGA_DRAIN, + MOVE_FORESIGHT, + MOVE_TAKE_DOWN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KABUTO #if P_FAMILY_AERODACTYL - egg_moves(AERODACTYL, - MOVE_WHIRLWIND, - MOVE_PURSUIT, - MOVE_FORESIGHT, - MOVE_STEEL_WING, - MOVE_DRAGON_BREATH, - MOVE_CURSE, - MOVE_ASSURANCE, - MOVE_ROOST, - MOVE_TAILWIND, - MOVE_WIDE_GUARD), +static const u16 sAerodactylEggMoveLearnset[] = { + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_FORESIGHT, + MOVE_STEEL_WING, + MOVE_DRAGON_BREATH, + MOVE_CURSE, + MOVE_ASSURANCE, + MOVE_ROOST, + MOVE_TAILWIND, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMunchlaxEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(SNORLAX, - MOVE_LICK, - MOVE_CHARM, - MOVE_DOUBLE_EDGE, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_WHIRLWIND, - MOVE_PURSUIT, - MOVE_COUNTER, - MOVE_NATURAL_GIFT, - MOVE_AFTER_YOU, - MOVE_BELCH, - MOVE_POWER_UP_PUNCH), +static const u16 sSnorlaxEggMoveLearnset[] = { + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_NATURAL_GIFT, + MOVE_AFTER_YOU, + MOVE_BELCH, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNORLAX #if P_FAMILY_DRATINI - egg_moves(DRATINI, - MOVE_MIST, - MOVE_HAZE, - MOVE_SUPERSONIC, - MOVE_DRAGON_BREATH, - MOVE_DRAGON_DANCE, - MOVE_DRAGON_RUSH, - MOVE_EXTREME_SPEED, - MOVE_WATER_PULSE, - MOVE_AQUA_JET, - MOVE_DRAGON_PULSE, - MOVE_IRON_TAIL), +static const u16 sDratiniEggMoveLearnset[] = { + MOVE_MIST, + MOVE_HAZE, + MOVE_SUPERSONIC, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_RUSH, + MOVE_EXTREME_SPEED, + MOVE_WATER_PULSE, + MOVE_AQUA_JET, + MOVE_DRAGON_PULSE, + MOVE_IRON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DRATINI #if P_FAMILY_CHIKORITA - egg_moves(CHIKORITA, - MOVE_VINE_WHIP, - MOVE_LEECH_SEED, - MOVE_COUNTER, - MOVE_ANCIENT_POWER, - MOVE_FLAIL, - MOVE_NATURE_POWER, - MOVE_INGRAIN, - MOVE_GRASS_WHISTLE, - MOVE_LEAF_STORM, - MOVE_AROMATHERAPY, - MOVE_WRING_OUT, - MOVE_BODY_SLAM, - MOVE_REFRESH, - MOVE_HEAL_PULSE, - MOVE_GRASSY_TERRAIN), +static const u16 sChikoritaEggMoveLearnset[] = { + MOVE_VINE_WHIP, + MOVE_LEECH_SEED, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_FLAIL, + MOVE_NATURE_POWER, + MOVE_INGRAIN, + MOVE_GRASS_WHISTLE, + MOVE_LEAF_STORM, + MOVE_AROMATHERAPY, + MOVE_WRING_OUT, + MOVE_BODY_SLAM, + MOVE_REFRESH, + MOVE_HEAL_PULSE, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHIKORITA #if P_FAMILY_CYNDAQUIL - egg_moves(CYNDAQUIL, - MOVE_FURY_SWIPES, - MOVE_QUICK_ATTACK, - MOVE_REVERSAL, - MOVE_THRASH, - MOVE_FORESIGHT, - MOVE_COVET, - MOVE_HOWL, - MOVE_CRUSH_CLAW, - MOVE_DOUBLE_EDGE, - MOVE_DOUBLE_KICK, - MOVE_FLARE_BLITZ, - MOVE_EXTRASENSORY, - MOVE_NATURE_POWER, - MOVE_FLAME_BURST), +static const u16 sCyndaquilEggMoveLearnset[] = { + MOVE_FURY_SWIPES, + MOVE_QUICK_ATTACK, + MOVE_REVERSAL, + MOVE_THRASH, + MOVE_FORESIGHT, + MOVE_COVET, + MOVE_HOWL, + MOVE_CRUSH_CLAW, + MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_KICK, + MOVE_FLARE_BLITZ, + MOVE_EXTRASENSORY, + MOVE_NATURE_POWER, + MOVE_FLAME_BURST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CYNDAQUIL #if P_FAMILY_TOTODILE - egg_moves(TOTODILE, - MOVE_CRUNCH, - MOVE_THRASH, - MOVE_HYDRO_PUMP, - MOVE_ANCIENT_POWER, - MOVE_MUD_SPORT, - MOVE_WATER_SPORT, - MOVE_ICE_PUNCH, - MOVE_METAL_CLAW, - MOVE_DRAGON_DANCE, - MOVE_AQUA_JET, - MOVE_FAKE_TEARS, - MOVE_BLOCK, - MOVE_WATER_PULSE, - MOVE_FLATTER), +static const u16 sTotodileEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_HYDRO_PUMP, + MOVE_ANCIENT_POWER, + MOVE_MUD_SPORT, + MOVE_WATER_SPORT, + MOVE_ICE_PUNCH, + MOVE_METAL_CLAW, + MOVE_DRAGON_DANCE, + MOVE_AQUA_JET, + MOVE_FAKE_TEARS, + MOVE_BLOCK, + MOVE_WATER_PULSE, + MOVE_FLATTER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TOTODILE #if P_FAMILY_SENTRET - egg_moves(SENTRET, - MOVE_DOUBLE_EDGE, - MOVE_PURSUIT, - MOVE_SLASH, - MOVE_FOCUS_ENERGY, - MOVE_REVERSAL, - MOVE_TRICK, - MOVE_ASSIST, - MOVE_LAST_RESORT, - MOVE_CHARM, - MOVE_COVET, - MOVE_NATURAL_GIFT, - MOVE_IRON_TAIL, - MOVE_CAPTIVATE, - MOVE_BABY_DOLL_EYES), +static const u16 sSentretEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_TRICK, + MOVE_ASSIST, + MOVE_LAST_RESORT, + MOVE_CHARM, + MOVE_COVET, + MOVE_NATURAL_GIFT, + MOVE_IRON_TAIL, + MOVE_CAPTIVATE, + MOVE_BABY_DOLL_EYES, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SENTRET #if P_FAMILY_HOOTHOOT - egg_moves(HOOTHOOT, - MOVE_MIRROR_MOVE, - MOVE_SUPERSONIC, - MOVE_FEINT_ATTACK, - MOVE_WING_ATTACK, - MOVE_WHIRLWIND, - MOVE_SKY_ATTACK, - MOVE_FEATHER_DANCE, - MOVE_AGILITY, - MOVE_NIGHT_SHADE, - MOVE_DEFOG, - MOVE_MEAN_LOOK, - MOVE_HURRICANE), +static const u16 sHoothootEggMoveLearnset[] = { + MOVE_MIRROR_MOVE, + MOVE_SUPERSONIC, + MOVE_FEINT_ATTACK, + MOVE_WING_ATTACK, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_FEATHER_DANCE, + MOVE_AGILITY, + MOVE_NIGHT_SHADE, + MOVE_DEFOG, + MOVE_MEAN_LOOK, + MOVE_HURRICANE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HOOTHOOT #if P_FAMILY_LEDYBA - egg_moves(LEDYBA, - MOVE_PSYBEAM, - MOVE_BIDE, - MOVE_SILVER_WIND, - MOVE_BUG_BUZZ, - MOVE_SCREECH, - MOVE_ENCORE, - MOVE_KNOCK_OFF, - MOVE_BUG_BITE, - MOVE_FOCUS_PUNCH, - MOVE_DRAIN_PUNCH, - MOVE_DIZZY_PUNCH, - MOVE_TAILWIND, - MOVE_ENDURE, - MOVE_COUNTER), +static const u16 sLedybaEggMoveLearnset[] = { + MOVE_PSYBEAM, + MOVE_BIDE, + MOVE_SILVER_WIND, + MOVE_BUG_BUZZ, + MOVE_SCREECH, + MOVE_ENCORE, + MOVE_KNOCK_OFF, + MOVE_BUG_BITE, + MOVE_FOCUS_PUNCH, + MOVE_DRAIN_PUNCH, + MOVE_DIZZY_PUNCH, + MOVE_TAILWIND, + MOVE_ENDURE, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LEDYBA #if P_FAMILY_SPINARAK - egg_moves(SPINARAK, - MOVE_PSYBEAM, - MOVE_DISABLE, - MOVE_SONIC_BOOM, - MOVE_BATON_PASS, - MOVE_PURSUIT, - MOVE_SIGNAL_BEAM, - MOVE_TOXIC_SPIKES, - MOVE_TWINEEDLE, - MOVE_ELECTROWEB, - MOVE_RAGE_POWDER, - MOVE_NIGHT_SLASH, - MOVE_MEGAHORN, - MOVE_LUNGE), +static const u16 sSpinarakEggMoveLearnset[] = { + MOVE_PSYBEAM, + MOVE_DISABLE, + MOVE_SONIC_BOOM, + MOVE_BATON_PASS, + MOVE_PURSUIT, + MOVE_SIGNAL_BEAM, + MOVE_TOXIC_SPIKES, + MOVE_TWINEEDLE, + MOVE_ELECTROWEB, + MOVE_RAGE_POWDER, + MOVE_NIGHT_SLASH, + MOVE_MEGAHORN, + MOVE_LUNGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPINARAK #if P_FAMILY_CHINCHOU - egg_moves(CHINCHOU, - MOVE_FLAIL, - MOVE_SCREECH, - MOVE_AMNESIA, - MOVE_PSYBEAM, - MOVE_WHIRLPOOL, - MOVE_AGILITY, - MOVE_MIST, - MOVE_SHOCK_WAVE, - MOVE_BRINE, - MOVE_WATER_PULSE, - MOVE_SOAK), +static const u16 sChinchouEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_SCREECH, + MOVE_AMNESIA, + MOVE_PSYBEAM, + MOVE_WHIRLPOOL, + MOVE_AGILITY, + MOVE_MIST, + MOVE_SHOCK_WAVE, + MOVE_BRINE, + MOVE_WATER_PULSE, + MOVE_SOAK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHINCHOU #if P_FAMILY_TOGEPI - egg_moves(TOGEPI, - MOVE_PRESENT, - MOVE_MIRROR_MOVE, - MOVE_PECK, - MOVE_FORESIGHT, - MOVE_FUTURE_SIGHT, - MOVE_NASTY_PLOT, - MOVE_PSYCHO_SHIFT, - MOVE_LUCKY_CHANT, - MOVE_EXTRASENSORY, - MOVE_SECRET_POWER, - MOVE_STORED_POWER, - MOVE_MORNING_SUN), +static const u16 sTogepiEggMoveLearnset[] = { + MOVE_PRESENT, + MOVE_MIRROR_MOVE, + MOVE_PECK, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_NASTY_PLOT, + MOVE_PSYCHO_SHIFT, + MOVE_LUCKY_CHANT, + MOVE_EXTRASENSORY, + MOVE_SECRET_POWER, + MOVE_STORED_POWER, + MOVE_MORNING_SUN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TOGEPI #if P_FAMILY_NATU - egg_moves(NATU, - MOVE_HAZE, - MOVE_DRILL_PECK, - MOVE_QUICK_ATTACK, - MOVE_FEINT_ATTACK, - MOVE_STEEL_WING, - MOVE_FEATHER_DANCE, - MOVE_REFRESH, - MOVE_ZEN_HEADBUTT, - MOVE_SUCKER_PUNCH, - MOVE_SYNCHRONOISE, - MOVE_ROOST, - MOVE_SKILL_SWAP, - MOVE_SIMPLE_BEAM, - MOVE_ALLY_SWITCH), +static const u16 sNatuEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_DRILL_PECK, + MOVE_QUICK_ATTACK, + MOVE_FEINT_ATTACK, + MOVE_STEEL_WING, + MOVE_FEATHER_DANCE, + MOVE_REFRESH, + MOVE_ZEN_HEADBUTT, + MOVE_SUCKER_PUNCH, + MOVE_SYNCHRONOISE, + MOVE_ROOST, + MOVE_SKILL_SWAP, + MOVE_SIMPLE_BEAM, + MOVE_ALLY_SWITCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NATU #if P_FAMILY_MAREEP - egg_moves(MAREEP, - MOVE_TAKE_DOWN, - MOVE_BODY_SLAM, - MOVE_SCREECH, - MOVE_ODOR_SLEUTH, - MOVE_CHARGE, - MOVE_FLATTER, - MOVE_SAND_ATTACK, - MOVE_IRON_TAIL, - MOVE_AFTER_YOU, - MOVE_AGILITY, - MOVE_EERIE_IMPULSE, - MOVE_ELECTRIC_TERRAIN), +static const u16 sMareepEggMoveLearnset[] = { + MOVE_TAKE_DOWN, + MOVE_BODY_SLAM, + MOVE_SCREECH, + MOVE_ODOR_SLEUTH, + MOVE_CHARGE, + MOVE_FLATTER, + MOVE_SAND_ATTACK, + MOVE_IRON_TAIL, + MOVE_AFTER_YOU, + MOVE_AGILITY, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sAzurillEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_3_CROSS_EVOS - egg_moves(MARILL, - MOVE_PRESENT, - MOVE_AMNESIA, - MOVE_FUTURE_SIGHT, - MOVE_BELLY_DRUM, - MOVE_PERISH_SONG, - MOVE_SUPERSONIC, - MOVE_AQUA_JET, - MOVE_SUPERPOWER, - MOVE_REFRESH, - MOVE_BODY_SLAM, - MOVE_WATER_SPORT, - MOVE_MUDDY_WATER, - MOVE_CAMOUFLAGE), +static const u16 sMarillEggMoveLearnset[] = { + MOVE_PRESENT, + MOVE_AMNESIA, + MOVE_FUTURE_SIGHT, + MOVE_BELLY_DRUM, + MOVE_PERISH_SONG, + MOVE_SUPERSONIC, + MOVE_AQUA_JET, + MOVE_SUPERPOWER, + MOVE_REFRESH, + MOVE_BODY_SLAM, + MOVE_WATER_SPORT, + MOVE_MUDDY_WATER, + MOVE_CAMOUFLAGE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sBonslyEggMoveLearnset[] = { + MOVE_SELF_DESTRUCT, + MOVE_HEADBUTT, + MOVE_HARDEN, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_SAND_TOMB, + MOVE_STEALTH_ROCK, + MOVE_CURSE, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(SUDOWOODO, - MOVE_SELF_DESTRUCT, - MOVE_HEADBUTT, - MOVE_HARDEN, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_SAND_TOMB, - MOVE_STEALTH_ROCK, - MOVE_CURSE, - MOVE_ENDURE), +static const u16 sSudowoodoEggMoveLearnset[] = { + MOVE_SELF_DESTRUCT, + MOVE_HEADBUTT, + MOVE_HARDEN, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_SAND_TOMB, + MOVE_STEALTH_ROCK, + MOVE_CURSE, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SUDOWOODO #if P_FAMILY_HOPPIP - egg_moves(HOPPIP, - MOVE_CONFUSION, - MOVE_ENCORE, - MOVE_DOUBLE_EDGE, - MOVE_AMNESIA, - MOVE_HELPING_HAND, - MOVE_AROMATHERAPY, - MOVE_WORRY_SEED, - MOVE_COTTON_GUARD, - MOVE_SEED_BOMB, - MOVE_ENDURE, - MOVE_GRASSY_TERRAIN, - MOVE_STRENGTH_SAP), +static const u16 sHoppipEggMoveLearnset[] = { + MOVE_CONFUSION, + MOVE_ENCORE, + MOVE_DOUBLE_EDGE, + MOVE_AMNESIA, + MOVE_HELPING_HAND, + MOVE_AROMATHERAPY, + MOVE_WORRY_SEED, + MOVE_COTTON_GUARD, + MOVE_SEED_BOMB, + MOVE_ENDURE, + MOVE_GRASSY_TERRAIN, + MOVE_STRENGTH_SAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HOPPIP #if P_FAMILY_AIPOM - egg_moves(AIPOM, - MOVE_COUNTER, - MOVE_SCREECH, - MOVE_PURSUIT, - MOVE_AGILITY, - MOVE_SPITE, - MOVE_SLAM, - MOVE_DOUBLE_SLAP, - MOVE_BEAT_UP, - MOVE_FAKE_OUT, - MOVE_COVET, - MOVE_BOUNCE, - MOVE_REVENGE, - MOVE_SWITCHEROO, - MOVE_QUICK_GUARD, - MOVE_TAIL_SLAP), +static const u16 sAipomEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_SCREECH, + MOVE_PURSUIT, + MOVE_AGILITY, + MOVE_SPITE, + MOVE_SLAM, + MOVE_DOUBLE_SLAP, + MOVE_BEAT_UP, + MOVE_FAKE_OUT, + MOVE_COVET, + MOVE_BOUNCE, + MOVE_REVENGE, + MOVE_SWITCHEROO, + MOVE_QUICK_GUARD, + MOVE_TAIL_SLAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_AIPOM #if P_FAMILY_SUNKERN - egg_moves(SUNKERN, - MOVE_GRASS_WHISTLE, - MOVE_ENCORE, - MOVE_LEECH_SEED, - MOVE_NATURE_POWER, - MOVE_CURSE, - MOVE_HELPING_HAND, - MOVE_INGRAIN, - MOVE_SWEET_SCENT, - MOVE_ENDURE, - MOVE_BIDE, - MOVE_NATURAL_GIFT, - MOVE_MORNING_SUN, - MOVE_GRASSY_TERRAIN), +static const u16 sSunkernEggMoveLearnset[] = { + MOVE_GRASS_WHISTLE, + MOVE_ENCORE, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_INGRAIN, + MOVE_SWEET_SCENT, + MOVE_ENDURE, + MOVE_BIDE, + MOVE_NATURAL_GIFT, + MOVE_MORNING_SUN, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SUNKERN #if P_FAMILY_YANMA - egg_moves(YANMA, - MOVE_WHIRLWIND, - MOVE_REVERSAL, - MOVE_LEECH_LIFE, - MOVE_SIGNAL_BEAM, - MOVE_SILVER_WIND, - MOVE_FEINT, - MOVE_FEINT_ATTACK, - MOVE_PURSUIT, - MOVE_DOUBLE_EDGE, - MOVE_SECRET_POWER), +static const u16 sYanmaEggMoveLearnset[] = { + MOVE_WHIRLWIND, + MOVE_REVERSAL, + MOVE_LEECH_LIFE, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND, + MOVE_FEINT, + MOVE_FEINT_ATTACK, + MOVE_PURSUIT, + MOVE_DOUBLE_EDGE, + MOVE_SECRET_POWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_YANMA #if P_FAMILY_WOOPER - egg_moves(WOOPER, - MOVE_BODY_SLAM, - MOVE_ANCIENT_POWER, - MOVE_CURSE, - MOVE_MUD_SPORT, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_COUNTER, - MOVE_ENCORE, - MOVE_DOUBLE_KICK, - MOVE_RECOVER, - MOVE_AFTER_YOU, - MOVE_SLEEP_TALK, - MOVE_ACID_SPRAY, - MOVE_GUARD_SWAP, - MOVE_EERIE_IMPULSE, - MOVE_POWER_UP_PUNCH), +static const u16 sWooperEggMoveLearnset[] = { + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_CURSE, + MOVE_MUD_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_COUNTER, + MOVE_ENCORE, + MOVE_DOUBLE_KICK, + MOVE_RECOVER, + MOVE_AFTER_YOU, + MOVE_SLEEP_TALK, + MOVE_ACID_SPRAY, + MOVE_GUARD_SWAP, + MOVE_EERIE_IMPULSE, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sWooperPaldeanEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_PALDEAN_FORMS #endif //P_FAMILY_WOOPER #if P_FAMILY_MURKROW - egg_moves(MURKROW, - MOVE_WHIRLWIND, - MOVE_DRILL_PECK, - MOVE_MIRROR_MOVE, - MOVE_WING_ATTACK, - MOVE_SKY_ATTACK, - MOVE_CONFUSE_RAY, - MOVE_FEATHER_DANCE, - MOVE_PERISH_SONG, - MOVE_PSYCHO_SHIFT, - MOVE_SCREECH, - MOVE_FEINT_ATTACK, - MOVE_BRAVE_BIRD, - MOVE_ROOST, - MOVE_ASSURANCE, - MOVE_FLATTER, - MOVE_PUNISHMENT), +static const u16 sMurkrowEggMoveLearnset[] = { + MOVE_WHIRLWIND, + MOVE_DRILL_PECK, + MOVE_MIRROR_MOVE, + MOVE_WING_ATTACK, + MOVE_SKY_ATTACK, + MOVE_CONFUSE_RAY, + MOVE_FEATHER_DANCE, + MOVE_PERISH_SONG, + MOVE_PSYCHO_SHIFT, + MOVE_SCREECH, + MOVE_FEINT_ATTACK, + MOVE_BRAVE_BIRD, + MOVE_ROOST, + MOVE_ASSURANCE, + MOVE_FLATTER, + MOVE_PUNISHMENT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MURKROW #if P_FAMILY_MISDREAVUS - egg_moves(MISDREAVUS, - MOVE_SCREECH, - MOVE_DESTINY_BOND, - MOVE_IMPRISON, - MOVE_MEMENTO, - MOVE_SUCKER_PUNCH, - MOVE_SHADOW_SNEAK, - MOVE_CURSE, - MOVE_SPITE, - MOVE_OMINOUS_WIND, - MOVE_NASTY_PLOT, - MOVE_SKILL_SWAP, - MOVE_WONDER_ROOM, - MOVE_ME_FIRST), +static const u16 sMisdreavusEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_DESTINY_BOND, + MOVE_IMPRISON, + MOVE_MEMENTO, + MOVE_SUCKER_PUNCH, + MOVE_SHADOW_SNEAK, + MOVE_CURSE, + MOVE_SPITE, + MOVE_OMINOUS_WIND, + MOVE_NASTY_PLOT, + MOVE_SKILL_SWAP, + MOVE_WONDER_ROOM, + MOVE_ME_FIRST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MISDREAVUS #if P_FAMILY_GIRAFARIG - egg_moves(GIRAFARIG, - MOVE_TAKE_DOWN, - MOVE_AMNESIA, - MOVE_FORESIGHT, - MOVE_FUTURE_SIGHT, - MOVE_BEAT_UP, - MOVE_WISH, - MOVE_MAGIC_COAT, - MOVE_DOUBLE_KICK, - MOVE_MIRROR_COAT, - MOVE_RAZOR_WIND, - MOVE_SKILL_SWAP, - MOVE_SECRET_POWER, - MOVE_MEAN_LOOK, - MOVE_PSYCHIC_TERRAIN, - MOVE_PSYCHIC_FANGS), +static const u16 sGirafarigEggMoveLearnset[] = { + MOVE_TAKE_DOWN, + MOVE_AMNESIA, + MOVE_FORESIGHT, + MOVE_FUTURE_SIGHT, + MOVE_BEAT_UP, + MOVE_WISH, + MOVE_MAGIC_COAT, + MOVE_DOUBLE_KICK, + MOVE_MIRROR_COAT, + MOVE_RAZOR_WIND, + MOVE_SKILL_SWAP, + MOVE_SECRET_POWER, + MOVE_MEAN_LOOK, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYCHIC_FANGS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GIRAFARIG #if P_FAMILY_PINECO - egg_moves(PINECO, - MOVE_PIN_MISSILE, - MOVE_FLAIL, - MOVE_SWIFT, - MOVE_COUNTER, - MOVE_SAND_TOMB, - MOVE_REVENGE, - MOVE_DOUBLE_EDGE, - MOVE_TOXIC_SPIKES, - MOVE_POWER_TRICK, - MOVE_ENDURE, - MOVE_STEALTH_ROCK), +static const u16 sPinecoEggMoveLearnset[] = { + MOVE_PIN_MISSILE, + MOVE_FLAIL, + MOVE_SWIFT, + MOVE_COUNTER, + MOVE_SAND_TOMB, + MOVE_REVENGE, + MOVE_DOUBLE_EDGE, + MOVE_TOXIC_SPIKES, + MOVE_POWER_TRICK, + MOVE_ENDURE, + MOVE_STEALTH_ROCK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PINECO #if P_FAMILY_DUNSPARCE - egg_moves(DUNSPARCE, - MOVE_BIDE, - MOVE_ANCIENT_POWER, - MOVE_BITE, - MOVE_HEADBUTT, - MOVE_ASTONISH, - MOVE_CURSE, - MOVE_TRUMP_CARD, - MOVE_MAGIC_COAT, - MOVE_SNORE, - MOVE_AGILITY, - MOVE_SECRET_POWER, - MOVE_SLEEP_TALK, - MOVE_HEX), +static const u16 sDunsparceEggMoveLearnset[] = { + MOVE_BIDE, + MOVE_ANCIENT_POWER, + MOVE_BITE, + MOVE_HEADBUTT, + MOVE_ASTONISH, + MOVE_CURSE, + MOVE_TRUMP_CARD, + MOVE_MAGIC_COAT, + MOVE_SNORE, + MOVE_AGILITY, + MOVE_SECRET_POWER, + MOVE_SLEEP_TALK, + MOVE_HEX, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DUNSPARCE #if P_FAMILY_GLIGAR - egg_moves(GLIGAR, - MOVE_METAL_CLAW, - MOVE_WING_ATTACK, - MOVE_RAZOR_WIND, - MOVE_COUNTER, - MOVE_SAND_TOMB, - MOVE_AGILITY, - MOVE_BATON_PASS, - MOVE_DOUBLE_EDGE, - MOVE_FEINT, - MOVE_NIGHT_SLASH, - MOVE_CROSS_POISON, - MOVE_POWER_TRICK, - MOVE_ROCK_CLIMB, - MOVE_POISON_TAIL), +static const u16 sGligarEggMoveLearnset[] = { + MOVE_METAL_CLAW, + MOVE_WING_ATTACK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_SAND_TOMB, + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_DOUBLE_EDGE, + MOVE_FEINT, + MOVE_NIGHT_SLASH, + MOVE_CROSS_POISON, + MOVE_POWER_TRICK, + MOVE_ROCK_CLIMB, + MOVE_POISON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GLIGAR #if P_FAMILY_SNUBBULL - egg_moves(SNUBBULL, - MOVE_METRONOME, - MOVE_FEINT_ATTACK, - MOVE_PRESENT, - MOVE_CRUNCH, - MOVE_HEAL_BELL, - MOVE_SNORE, - MOVE_SMELLING_SALTS, - MOVE_CLOSE_COMBAT, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_FOCUS_PUNCH, - MOVE_DOUBLE_EDGE, - MOVE_MIMIC, - MOVE_FAKE_TEARS), +static const u16 sSnubbullEggMoveLearnset[] = { + MOVE_METRONOME, + MOVE_FEINT_ATTACK, + MOVE_PRESENT, + MOVE_CRUNCH, + MOVE_HEAL_BELL, + MOVE_SNORE, + MOVE_SMELLING_SALTS, + MOVE_CLOSE_COMBAT, + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_FOCUS_PUNCH, + MOVE_DOUBLE_EDGE, + MOVE_MIMIC, + MOVE_FAKE_TEARS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNUBBULL #if P_FAMILY_QWILFISH - egg_moves(QWILFISH, - MOVE_FLAIL, - MOVE_HAZE, - MOVE_BUBBLE_BEAM, - MOVE_SUPERSONIC, - MOVE_ASTONISH, - MOVE_SIGNAL_BEAM, - MOVE_AQUA_JET, - MOVE_WATER_PULSE, - MOVE_BRINE, - MOVE_ACID_SPRAY), +static const u16 sQwilfishEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_HAZE, + MOVE_BUBBLE_BEAM, + MOVE_SUPERSONIC, + MOVE_ASTONISH, + MOVE_SIGNAL_BEAM, + MOVE_AQUA_JET, + MOVE_WATER_PULSE, + MOVE_BRINE, + MOVE_ACID_SPRAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_QWILFISH #if P_FAMILY_SHUCKLE - egg_moves(SHUCKLE, - MOVE_SWEET_SCENT, - MOVE_KNOCK_OFF, - MOVE_HELPING_HAND, - MOVE_ACUPRESSURE, - MOVE_SAND_TOMB, - MOVE_MUD_SLAP, - MOVE_ACID, - MOVE_ROCK_BLAST, - MOVE_FINAL_GAMBIT), +static const u16 sShuckleEggMoveLearnset[] = { + MOVE_SWEET_SCENT, + MOVE_KNOCK_OFF, + MOVE_HELPING_HAND, + MOVE_ACUPRESSURE, + MOVE_SAND_TOMB, + MOVE_MUD_SLAP, + MOVE_ACID, + MOVE_ROCK_BLAST, + MOVE_FINAL_GAMBIT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHUCKLE #if P_FAMILY_HERACROSS - egg_moves(HERACROSS, - MOVE_HARDEN, - MOVE_BIDE, - MOVE_FLAIL, - MOVE_REVENGE, - MOVE_PURSUIT, - MOVE_DOUBLE_EDGE, - MOVE_SEISMIC_TOSS, - MOVE_FOCUS_PUNCH, - MOVE_MEGAHORN, - MOVE_ROCK_BLAST), +static const u16 sHeracrossEggMoveLearnset[] = { + MOVE_HARDEN, + MOVE_BIDE, + MOVE_FLAIL, + MOVE_REVENGE, + MOVE_PURSUIT, + MOVE_DOUBLE_EDGE, + MOVE_SEISMIC_TOSS, + MOVE_FOCUS_PUNCH, + MOVE_MEGAHORN, + MOVE_ROCK_BLAST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HERACROSS #if P_FAMILY_SNEASEL - egg_moves(SNEASEL, - MOVE_COUNTER, - MOVE_SPITE, - MOVE_FORESIGHT, - MOVE_BITE, - MOVE_CRUSH_CLAW, - MOVE_FAKE_OUT, - MOVE_DOUBLE_HIT, - MOVE_PUNISHMENT, - MOVE_PURSUIT, - MOVE_ICE_SHARD, - MOVE_ICE_PUNCH, - MOVE_ASSIST, - MOVE_AVALANCHE, - MOVE_FEINT, - MOVE_ICICLE_CRASH, - MOVE_THROAT_CHOP), +static const u16 sSneaselEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_SPITE, + MOVE_FORESIGHT, + MOVE_BITE, + MOVE_CRUSH_CLAW, + MOVE_FAKE_OUT, + MOVE_DOUBLE_HIT, + MOVE_PUNISHMENT, + MOVE_PURSUIT, + MOVE_ICE_SHARD, + MOVE_ICE_PUNCH, + MOVE_ASSIST, + MOVE_AVALANCHE, + MOVE_FEINT, + MOVE_ICICLE_CRASH, + MOVE_THROAT_CHOP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNEASEL #if P_FAMILY_TEDDIURSA - egg_moves(TEDDIURSA, - MOVE_CRUNCH, - MOVE_TAKE_DOWN, - MOVE_SEISMIC_TOSS, - MOVE_COUNTER, - MOVE_METAL_CLAW, - MOVE_FAKE_TEARS, - MOVE_YAWN, - MOVE_SLEEP_TALK, - MOVE_CROSS_CHOP, - MOVE_DOUBLE_EDGE, - MOVE_CLOSE_COMBAT, - MOVE_NIGHT_SLASH, - MOVE_BELLY_DRUM, - MOVE_CHIP_AWAY, - MOVE_PLAY_ROUGH), +static const u16 sTeddiursaEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_TAKE_DOWN, + MOVE_SEISMIC_TOSS, + MOVE_COUNTER, + MOVE_METAL_CLAW, + MOVE_FAKE_TEARS, + MOVE_YAWN, + MOVE_SLEEP_TALK, + MOVE_CROSS_CHOP, + MOVE_DOUBLE_EDGE, + MOVE_CLOSE_COMBAT, + MOVE_NIGHT_SLASH, + MOVE_BELLY_DRUM, + MOVE_CHIP_AWAY, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TEDDIURSA #if P_FAMILY_SLUGMA - egg_moves(SLUGMA, - MOVE_ACID_ARMOR, - MOVE_HEAT_WAVE, - MOVE_CURSE, - MOVE_SMOKESCREEN, - MOVE_MEMENTO, - MOVE_STOCKPILE, - MOVE_SPIT_UP, - MOVE_SWALLOW, - MOVE_ROLLOUT, - MOVE_INFERNO, - MOVE_EARTH_POWER, - MOVE_GUARD_SWAP), +static const u16 sSlugmaEggMoveLearnset[] = { + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE, + MOVE_CURSE, + MOVE_SMOKESCREEN, + MOVE_MEMENTO, + MOVE_STOCKPILE, + MOVE_SPIT_UP, + MOVE_SWALLOW, + MOVE_ROLLOUT, + MOVE_INFERNO, + MOVE_EARTH_POWER, + MOVE_GUARD_SWAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SLUGMA #if P_FAMILY_SWINUB - egg_moves(SWINUB, - MOVE_TAKE_DOWN, - MOVE_BITE, - MOVE_BODY_SLAM, - MOVE_ANCIENT_POWER, - MOVE_MUD_SHOT, - MOVE_ICICLE_SPEAR, - MOVE_DOUBLE_EDGE, - MOVE_FISSURE, - MOVE_CURSE, - MOVE_MUD_SHOT, - MOVE_AVALANCHE, - MOVE_STEALTH_ROCK, - MOVE_ICICLE_CRASH, - MOVE_FREEZE_DRY), +static const u16 sSwinubEggMoveLearnset[] = { + MOVE_TAKE_DOWN, + MOVE_BITE, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_MUD_SHOT, + MOVE_ICICLE_SPEAR, + MOVE_DOUBLE_EDGE, + MOVE_FISSURE, + MOVE_CURSE, + MOVE_MUD_SHOT, + MOVE_AVALANCHE, + MOVE_STEALTH_ROCK, + MOVE_ICICLE_CRASH, + MOVE_FREEZE_DRY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SWINUB #if P_FAMILY_CORSOLA - egg_moves(CORSOLA, - MOVE_SCREECH, - MOVE_MIST, - MOVE_AMNESIA, - MOVE_BARRIER, - MOVE_INGRAIN, - MOVE_CONFUSE_RAY, - MOVE_ICICLE_SPEAR, - MOVE_NATURE_POWER, - MOVE_AQUA_RING, - MOVE_CURSE, - MOVE_BIDE, - MOVE_WATER_PULSE, - MOVE_HEAD_SMASH, - MOVE_CAMOUFLAGE, - MOVE_LIQUIDATION), +static const u16 sCorsolaEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_MIST, + MOVE_AMNESIA, + MOVE_BARRIER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + MOVE_ICICLE_SPEAR, + MOVE_NATURE_POWER, + MOVE_AQUA_RING, + MOVE_CURSE, + MOVE_BIDE, + MOVE_WATER_PULSE, + MOVE_HEAD_SMASH, + MOVE_CAMOUFLAGE, + MOVE_LIQUIDATION, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sCorsolaGalarianEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_CONFUSE_RAY, + MOVE_NATURE_POWER, + MOVE_DESTINY_BOND, + MOVE_WATER_PULSE, + MOVE_HEAD_SMASH, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_CORSOLA #if P_FAMILY_REMORAID - egg_moves(REMORAID, - MOVE_AURORA_BEAM, - MOVE_OCTAZOOKA, - MOVE_SUPERSONIC, - MOVE_HAZE, - MOVE_SCREECH, - MOVE_ROCK_BLAST, - MOVE_SNORE, - MOVE_FLAIL, - MOVE_WATER_SPOUT, - MOVE_MUD_SHOT, - MOVE_SWIFT, - MOVE_ACID_SPRAY, - MOVE_WATER_PULSE, - MOVE_ENTRAINMENT), +static const u16 sRemoraidEggMoveLearnset[] = { + MOVE_AURORA_BEAM, + MOVE_OCTAZOOKA, + MOVE_SUPERSONIC, + MOVE_HAZE, + MOVE_SCREECH, + MOVE_ROCK_BLAST, + MOVE_SNORE, + MOVE_FLAIL, + MOVE_WATER_SPOUT, + MOVE_MUD_SHOT, + MOVE_SWIFT, + MOVE_ACID_SPRAY, + MOVE_WATER_PULSE, + MOVE_ENTRAINMENT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_REMORAID #if P_FAMILY_DELIBIRD - egg_moves(DELIBIRD, - MOVE_AURORA_BEAM, - MOVE_QUICK_ATTACK, - MOVE_FUTURE_SIGHT, - MOVE_SPLASH, - MOVE_RAPID_SPIN, - MOVE_ICE_BALL, - MOVE_ICE_SHARD, - MOVE_ICE_PUNCH, - MOVE_FAKE_OUT, - MOVE_BESTOW, - MOVE_ICY_WIND, - MOVE_FREEZE_DRY, - MOVE_DESTINY_BOND, - MOVE_SPIKES, - MOVE_COUNTER), +static const u16 sDelibirdEggMoveLearnset[] = { + MOVE_AURORA_BEAM, + MOVE_QUICK_ATTACK, + MOVE_FUTURE_SIGHT, + MOVE_SPLASH, + MOVE_RAPID_SPIN, + MOVE_ICE_BALL, + MOVE_ICE_SHARD, + MOVE_ICE_PUNCH, + MOVE_FAKE_OUT, + MOVE_BESTOW, + MOVE_ICY_WIND, + MOVE_FREEZE_DRY, + MOVE_DESTINY_BOND, + MOVE_SPIKES, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMantykeEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(MANTINE, - MOVE_TWISTER, - MOVE_HYDRO_PUMP, - MOVE_HAZE, - MOVE_SLAM, - MOVE_MUD_SPORT, - MOVE_MIRROR_COAT, - MOVE_WATER_SPORT, - MOVE_SPLASH, - MOVE_WIDE_GUARD, - MOVE_AMNESIA), +static const u16 sMantineEggMoveLearnset[] = { + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_MIRROR_COAT, + MOVE_WATER_SPORT, + MOVE_SPLASH, + MOVE_WIDE_GUARD, + MOVE_AMNESIA, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MANTINE #if P_FAMILY_SKARMORY - egg_moves(SKARMORY, - MOVE_DRILL_PECK, - MOVE_PURSUIT, - MOVE_WHIRLWIND, - MOVE_SKY_ATTACK, - MOVE_CURSE, - MOVE_BRAVE_BIRD, - MOVE_ASSURANCE, - MOVE_GUARD_SWAP, - MOVE_STEALTH_ROCK, - MOVE_ENDURE), +static const u16 sSkarmoryEggMoveLearnset[] = { + MOVE_DRILL_PECK, + MOVE_PURSUIT, + MOVE_WHIRLWIND, + MOVE_SKY_ATTACK, + MOVE_CURSE, + MOVE_BRAVE_BIRD, + MOVE_ASSURANCE, + MOVE_GUARD_SWAP, + MOVE_STEALTH_ROCK, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKARMORY #if P_FAMILY_HOUNDOUR - egg_moves(HOUNDOUR, - MOVE_FIRE_SPIN, - MOVE_RAGE, - MOVE_PURSUIT, - MOVE_COUNTER, - MOVE_SPITE, - MOVE_REVERSAL, - MOVE_BEAT_UP, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_NASTY_PLOT, - MOVE_PUNISHMENT, - MOVE_FEINT, - MOVE_SUCKER_PUNCH, - MOVE_DESTINY_BOND), +static const u16 sHoundourEggMoveLearnset[] = { + MOVE_FIRE_SPIN, + MOVE_RAGE, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_SPITE, + MOVE_REVERSAL, + MOVE_BEAT_UP, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_NASTY_PLOT, + MOVE_PUNISHMENT, + MOVE_FEINT, + MOVE_SUCKER_PUNCH, + MOVE_DESTINY_BOND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HOUNDOUR #if P_FAMILY_PHANPY - egg_moves(PHANPY, - MOVE_FOCUS_ENERGY, - MOVE_BODY_SLAM, - MOVE_ANCIENT_POWER, - MOVE_SNORE, - MOVE_COUNTER, - MOVE_FISSURE, - MOVE_ENDEAVOR, - MOVE_ICE_SHARD, - MOVE_HEAD_SMASH, - MOVE_MUD_SLAP, - MOVE_HEAVY_SLAM, - MOVE_PLAY_ROUGH, - MOVE_HIGH_HORSEPOWER), +static const u16 sPhanpyEggMoveLearnset[] = { + MOVE_FOCUS_ENERGY, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_SNORE, + MOVE_COUNTER, + MOVE_FISSURE, + MOVE_ENDEAVOR, + MOVE_ICE_SHARD, + MOVE_HEAD_SMASH, + MOVE_MUD_SLAP, + MOVE_HEAVY_SLAM, + MOVE_PLAY_ROUGH, + MOVE_HIGH_HORSEPOWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PHANPY #if P_FAMILY_STANTLER - egg_moves(STANTLER, - MOVE_SPITE, - MOVE_DISABLE, - MOVE_BITE, - MOVE_EXTRASENSORY, - MOVE_THRASH, - MOVE_DOUBLE_KICK, - MOVE_ZEN_HEADBUTT, - MOVE_MEGAHORN, - MOVE_MUD_SPORT, - MOVE_RAGE, - MOVE_ME_FIRST), +static const u16 sStantlerEggMoveLearnset[] = { + MOVE_SPITE, + MOVE_DISABLE, + MOVE_BITE, + MOVE_EXTRASENSORY, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_ZEN_HEADBUTT, + MOVE_MEGAHORN, + MOVE_MUD_SPORT, + MOVE_RAGE, + MOVE_ME_FIRST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_STANTLER #if P_FAMILY_MILTANK - egg_moves(MILTANK, - MOVE_PRESENT, - MOVE_REVERSAL, - MOVE_SEISMIC_TOSS, - MOVE_ENDURE, - MOVE_CURSE, - MOVE_HELPING_HAND, - MOVE_SLEEP_TALK, - MOVE_DIZZY_PUNCH, - MOVE_HAMMER_ARM, - MOVE_DOUBLE_EDGE, - MOVE_PUNISHMENT, - MOVE_NATURAL_GIFT, - MOVE_HEART_STAMP, - MOVE_BELCH), +static const u16 sMiltankEggMoveLearnset[] = { + MOVE_PRESENT, + MOVE_REVERSAL, + MOVE_SEISMIC_TOSS, + MOVE_ENDURE, + MOVE_CURSE, + MOVE_HELPING_HAND, + MOVE_SLEEP_TALK, + MOVE_DIZZY_PUNCH, + MOVE_HAMMER_ARM, + MOVE_DOUBLE_EDGE, + MOVE_PUNISHMENT, + MOVE_NATURAL_GIFT, + MOVE_HEART_STAMP, + MOVE_BELCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MILTANK #if P_FAMILY_LARVITAR - egg_moves(LARVITAR, - MOVE_PURSUIT, - MOVE_STOMP, - MOVE_OUTRAGE, - MOVE_FOCUS_ENERGY, - MOVE_ANCIENT_POWER, - MOVE_DRAGON_DANCE, - MOVE_CURSE, - MOVE_IRON_DEFENSE, - MOVE_ASSURANCE, - MOVE_IRON_HEAD, - MOVE_STEALTH_ROCK, - MOVE_IRON_TAIL), +static const u16 sLarvitarEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_STOMP, + MOVE_OUTRAGE, + MOVE_FOCUS_ENERGY, + MOVE_ANCIENT_POWER, + MOVE_DRAGON_DANCE, + MOVE_CURSE, + MOVE_IRON_DEFENSE, + MOVE_ASSURANCE, + MOVE_IRON_HEAD, + MOVE_STEALTH_ROCK, + MOVE_IRON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LARVITAR #if P_FAMILY_TREECKO - egg_moves(TREECKO, - MOVE_CRUNCH, - MOVE_MUD_SPORT, - MOVE_ENDEAVOR, - MOVE_LEECH_SEED, - MOVE_DRAGON_BREATH, - MOVE_CRUSH_CLAW, - MOVE_WORRY_SEED, - MOVE_DOUBLE_KICK, - MOVE_GRASS_WHISTLE, - MOVE_SYNTHESIS, - MOVE_MAGICAL_LEAF, - MOVE_LEAF_STORM, - MOVE_RAZOR_WIND, - MOVE_BULLET_SEED, - MOVE_NATURAL_GIFT, - MOVE_GRASSY_TERRAIN), +static const u16 sTreeckoEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_LEECH_SEED, + MOVE_DRAGON_BREATH, + MOVE_CRUSH_CLAW, + MOVE_WORRY_SEED, + MOVE_DOUBLE_KICK, + MOVE_GRASS_WHISTLE, + MOVE_SYNTHESIS, + MOVE_MAGICAL_LEAF, + MOVE_LEAF_STORM, + MOVE_RAZOR_WIND, + MOVE_BULLET_SEED, + MOVE_NATURAL_GIFT, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TREECKO #if P_FAMILY_TORCHIC - egg_moves(TORCHIC, - MOVE_COUNTER, - MOVE_REVERSAL, - MOVE_ENDURE, - MOVE_SMELLING_SALTS, - MOVE_CRUSH_CLAW, - MOVE_BATON_PASS, - MOVE_AGILITY, - MOVE_NIGHT_SLASH, - MOVE_LAST_RESORT, - MOVE_FEINT, - MOVE_FEATHER_DANCE, - MOVE_CURSE, - MOVE_FLAME_BURST, - MOVE_LOW_KICK), +static const u16 sTorchicEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_SMELLING_SALTS, + MOVE_CRUSH_CLAW, + MOVE_BATON_PASS, + MOVE_AGILITY, + MOVE_NIGHT_SLASH, + MOVE_LAST_RESORT, + MOVE_FEINT, + MOVE_FEATHER_DANCE, + MOVE_CURSE, + MOVE_FLAME_BURST, + MOVE_LOW_KICK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TORCHIC #if P_FAMILY_MUDKIP - egg_moves(MUDKIP, - MOVE_REFRESH, - MOVE_UPROAR, - MOVE_CURSE, - MOVE_STOMP, - MOVE_ICE_BALL, - MOVE_MIRROR_COAT, - MOVE_COUNTER, - MOVE_ANCIENT_POWER, - MOVE_WHIRLPOOL, - MOVE_BITE, - MOVE_DOUBLE_EDGE, - MOVE_MUD_BOMB, - MOVE_YAWN, - MOVE_SLUDGE, - MOVE_AVALANCHE, - MOVE_WIDE_GUARD, - MOVE_BARRIER), +static const u16 sMudkipEggMoveLearnset[] = { + MOVE_REFRESH, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_STOMP, + MOVE_ICE_BALL, + MOVE_MIRROR_COAT, + MOVE_COUNTER, + MOVE_ANCIENT_POWER, + MOVE_WHIRLPOOL, + MOVE_BITE, + MOVE_DOUBLE_EDGE, + MOVE_MUD_BOMB, + MOVE_YAWN, + MOVE_SLUDGE, + MOVE_AVALANCHE, + MOVE_WIDE_GUARD, + MOVE_BARRIER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MUDKIP #if P_FAMILY_POOCHYENA - egg_moves(POOCHYENA, - MOVE_ASTONISH, - MOVE_POISON_FANG, - MOVE_COVET, - MOVE_LEER, - MOVE_YAWN, - MOVE_SUCKER_PUNCH, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_ME_FIRST, - MOVE_SNATCH, - MOVE_SLEEP_TALK, - MOVE_PLAY_ROUGH), +static const u16 sPoochyenaEggMoveLearnset[] = { + MOVE_ASTONISH, + MOVE_POISON_FANG, + MOVE_COVET, + MOVE_LEER, + MOVE_YAWN, + MOVE_SUCKER_PUNCH, + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_ME_FIRST, + MOVE_SNATCH, + MOVE_SLEEP_TALK, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_POOCHYENA #if P_FAMILY_ZIGZAGOON - egg_moves(ZIGZAGOON, - MOVE_CHARM, - MOVE_PURSUIT, - MOVE_TICKLE, - MOVE_TRICK, - MOVE_HELPING_HAND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_ROCK_CLIMB, - MOVE_SIMPLE_BEAM, - MOVE_EXTREME_SPEED), +static const u16 sZigzagoonEggMoveLearnset[] = { + MOVE_CHARM, + MOVE_PURSUIT, + MOVE_TICKLE, + MOVE_TRICK, + MOVE_HELPING_HAND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_ROCK_CLIMB, + MOVE_SIMPLE_BEAM, + MOVE_EXTREME_SPEED, + MOVE_UNAVAILABLE, +}; #if P_GALARIAN_FORMS - egg_moves(ZIGZAGOON_GALARIAN, - MOVE_PARTING_SHOT, - MOVE_QUICK_GUARD, - MOVE_KNOCK_OFF), +static const u16 sZigzagoonGalarianEggMoveLearnset[] = { + MOVE_PARTING_SHOT, + MOVE_QUICK_GUARD, + MOVE_KNOCK_OFF, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZIGZAGOON #if P_FAMILY_LOTAD - egg_moves(LOTAD, - MOVE_SYNTHESIS, - MOVE_RAZOR_LEAF, - MOVE_SWEET_SCENT, - MOVE_LEECH_SEED, - MOVE_FLAIL, - MOVE_WATER_GUN, - MOVE_TICKLE, - MOVE_COUNTER, - MOVE_GIGA_DRAIN, - MOVE_TEETER_DANCE), +static const u16 sLotadEggMoveLearnset[] = { + MOVE_SYNTHESIS, + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_LEECH_SEED, + MOVE_FLAIL, + MOVE_WATER_GUN, + MOVE_TICKLE, + MOVE_COUNTER, + MOVE_GIGA_DRAIN, + MOVE_TEETER_DANCE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LOTAD #if P_FAMILY_SEEDOT - egg_moves(SEEDOT, - MOVE_LEECH_SEED, - MOVE_AMNESIA, - MOVE_QUICK_ATTACK, - MOVE_RAZOR_WIND, - MOVE_TAKE_DOWN, - MOVE_WORRY_SEED, - MOVE_NASTY_PLOT, - MOVE_POWER_SWAP, - MOVE_DEFOG, - MOVE_FOUL_PLAY, - MOVE_BEAT_UP, - MOVE_BULLET_SEED, - MOVE_GRASSY_TERRAIN), +static const u16 sSeedotEggMoveLearnset[] = { + MOVE_LEECH_SEED, + MOVE_AMNESIA, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_WIND, + MOVE_TAKE_DOWN, + MOVE_WORRY_SEED, + MOVE_NASTY_PLOT, + MOVE_POWER_SWAP, + MOVE_DEFOG, + MOVE_FOUL_PLAY, + MOVE_BEAT_UP, + MOVE_BULLET_SEED, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SEEDOT #if P_FAMILY_TAILLOW - egg_moves(TAILLOW, - MOVE_PURSUIT, - MOVE_SUPERSONIC, - MOVE_REFRESH, - MOVE_MIRROR_MOVE, - MOVE_RAGE, - MOVE_SKY_ATTACK, - MOVE_WHIRLWIND, - MOVE_BRAVE_BIRD, - MOVE_ROOST, - MOVE_STEEL_WING, - MOVE_DEFOG, - MOVE_BOOMBURST, - MOVE_HURRICANE), +static const u16 sTaillowEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_SUPERSONIC, + MOVE_REFRESH, + MOVE_MIRROR_MOVE, + MOVE_RAGE, + MOVE_SKY_ATTACK, + MOVE_WHIRLWIND, + MOVE_BRAVE_BIRD, + MOVE_ROOST, + MOVE_STEEL_WING, + MOVE_DEFOG, + MOVE_BOOMBURST, + MOVE_HURRICANE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TAILLOW #if P_FAMILY_WINGULL - egg_moves(WINGULL, - MOVE_MIST, - MOVE_TWISTER, - MOVE_AGILITY, - MOVE_GUST, - MOVE_WATER_SPORT, - MOVE_AQUA_RING, - MOVE_KNOCK_OFF, - MOVE_BRINE, - MOVE_ROOST, - MOVE_SOAK, - MOVE_WIDE_GUARD), +static const u16 sWingullEggMoveLearnset[] = { + MOVE_MIST, + MOVE_TWISTER, + MOVE_AGILITY, + MOVE_GUST, + MOVE_WATER_SPORT, + MOVE_AQUA_RING, + MOVE_KNOCK_OFF, + MOVE_BRINE, + MOVE_ROOST, + MOVE_SOAK, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WINGULL #if P_FAMILY_RALTS - egg_moves(RALTS, - MOVE_DISABLE, - MOVE_MEAN_LOOK, - MOVE_MEMENTO, - MOVE_DESTINY_BOND, - MOVE_GRUDGE, - MOVE_SHADOW_SNEAK, - MOVE_CONFUSE_RAY, - MOVE_ENCORE, - MOVE_SYNCHRONOISE, - MOVE_SKILL_SWAP, - MOVE_MISTY_TERRAIN, - MOVE_ALLY_SWITCH), +static const u16 sRaltsEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_DESTINY_BOND, + MOVE_GRUDGE, + MOVE_SHADOW_SNEAK, + MOVE_CONFUSE_RAY, + MOVE_ENCORE, + MOVE_SYNCHRONOISE, + MOVE_SKILL_SWAP, + MOVE_MISTY_TERRAIN, + MOVE_ALLY_SWITCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_RALTS #if P_FAMILY_SURSKIT - egg_moves(SURSKIT, - MOVE_FORESIGHT, - MOVE_MUD_SHOT, - MOVE_PSYBEAM, - MOVE_HYDRO_PUMP, - MOVE_MIND_READER, - MOVE_SIGNAL_BEAM, - MOVE_BUG_BITE, - MOVE_AQUA_JET, - MOVE_ENDURE, - MOVE_FELL_STINGER, - MOVE_POWER_SPLIT, - MOVE_LUNGE), +static const u16 sSurskitEggMoveLearnset[] = { + MOVE_FORESIGHT, + MOVE_MUD_SHOT, + MOVE_PSYBEAM, + MOVE_HYDRO_PUMP, + MOVE_MIND_READER, + MOVE_SIGNAL_BEAM, + MOVE_BUG_BITE, + MOVE_AQUA_JET, + MOVE_ENDURE, + MOVE_FELL_STINGER, + MOVE_POWER_SPLIT, + MOVE_LUNGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SURSKIT #if P_FAMILY_SHROOMISH - egg_moves(SHROOMISH, - MOVE_FAKE_TEARS, - MOVE_CHARM, - MOVE_HELPING_HAND, - MOVE_WORRY_SEED, - MOVE_WAKE_UP_SLAP, - MOVE_SEED_BOMB, - MOVE_BULLET_SEED, - MOVE_FOCUS_PUNCH, - MOVE_NATURAL_GIFT, - MOVE_DRAIN_PUNCH), +static const u16 sShroomishEggMoveLearnset[] = { + MOVE_FAKE_TEARS, + MOVE_CHARM, + MOVE_HELPING_HAND, + MOVE_WORRY_SEED, + MOVE_WAKE_UP_SLAP, + MOVE_SEED_BOMB, + MOVE_BULLET_SEED, + MOVE_FOCUS_PUNCH, + MOVE_NATURAL_GIFT, + MOVE_DRAIN_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHROOMISH #if P_FAMILY_SLAKOTH - egg_moves(SLAKOTH, - MOVE_PURSUIT, - MOVE_SLASH, - MOVE_BODY_SLAM, - MOVE_SNORE, - MOVE_CRUSH_CLAW, - MOVE_CURSE, - MOVE_SLEEP_TALK, - MOVE_HAMMER_ARM, - MOVE_NIGHT_SLASH, - MOVE_AFTER_YOU, - MOVE_TICKLE), +static const u16 sSlakothEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_SLASH, + MOVE_BODY_SLAM, + MOVE_SNORE, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_SLEEP_TALK, + MOVE_HAMMER_ARM, + MOVE_NIGHT_SLASH, + MOVE_AFTER_YOU, + MOVE_TICKLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SLAKOTH #if P_FAMILY_NINCADA - egg_moves(NINCADA, - MOVE_ENDURE, - MOVE_FEINT_ATTACK, - MOVE_GUST, - MOVE_SILVER_WIND, - MOVE_BUG_BUZZ, - MOVE_NIGHT_SLASH, - MOVE_BUG_BITE, - MOVE_FINAL_GAMBIT), +static const u16 sNincadaEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_FEINT_ATTACK, + MOVE_GUST, + MOVE_SILVER_WIND, + MOVE_BUG_BUZZ, + MOVE_NIGHT_SLASH, + MOVE_BUG_BITE, + MOVE_FINAL_GAMBIT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NINCADA #if P_FAMILY_WHISMUR - egg_moves(WHISMUR, - MOVE_TAKE_DOWN, - MOVE_SNORE, - MOVE_EXTRASENSORY, - MOVE_SMELLING_SALTS, - MOVE_SMOKESCREEN, - MOVE_ENDEAVOR, - MOVE_HAMMER_ARM, - MOVE_FAKE_TEARS, - MOVE_CIRCLE_THROW, - MOVE_DISARMING_VOICE, - MOVE_WHIRLWIND), +static const u16 sWhismurEggMoveLearnset[] = { + MOVE_TAKE_DOWN, + MOVE_SNORE, + MOVE_EXTRASENSORY, + MOVE_SMELLING_SALTS, + MOVE_SMOKESCREEN, + MOVE_ENDEAVOR, + MOVE_HAMMER_ARM, + MOVE_FAKE_TEARS, + MOVE_CIRCLE_THROW, + MOVE_DISARMING_VOICE, + MOVE_WHIRLWIND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WHISMUR #if P_FAMILY_MAKUHITA - egg_moves(MAKUHITA, - MOVE_FEINT_ATTACK, - MOVE_DETECT, - MOVE_FORESIGHT, - MOVE_HELPING_HAND, - MOVE_CROSS_CHOP, - MOVE_REVENGE, - MOVE_DYNAMIC_PUNCH, - MOVE_COUNTER, - MOVE_WAKE_UP_SLAP, - MOVE_BULLET_PUNCH, - MOVE_FEINT, - MOVE_WIDE_GUARD, - MOVE_FOCUS_PUNCH, - MOVE_CHIP_AWAY), +static const u16 sMakuhitaEggMoveLearnset[] = { + MOVE_FEINT_ATTACK, + MOVE_DETECT, + MOVE_FORESIGHT, + MOVE_HELPING_HAND, + MOVE_CROSS_CHOP, + MOVE_REVENGE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER, + MOVE_WAKE_UP_SLAP, + MOVE_BULLET_PUNCH, + MOVE_FEINT, + MOVE_WIDE_GUARD, + MOVE_FOCUS_PUNCH, + MOVE_CHIP_AWAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MAKUHITA #if P_FAMILY_NOSEPASS - egg_moves(NOSEPASS, - MOVE_MAGNITUDE, - MOVE_ROLLOUT, - MOVE_DOUBLE_EDGE, - MOVE_BLOCK, - MOVE_STEALTH_ROCK, - MOVE_ENDURE, - MOVE_WIDE_GUARD), +static const u16 sNosepassEggMoveLearnset[] = { + MOVE_MAGNITUDE, + MOVE_ROLLOUT, + MOVE_DOUBLE_EDGE, + MOVE_BLOCK, + MOVE_STEALTH_ROCK, + MOVE_ENDURE, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NOSEPASS #if P_FAMILY_SKITTY - egg_moves(SKITTY, - MOVE_HELPING_HAND, - MOVE_UPROAR, - MOVE_FAKE_TEARS, - MOVE_WISH, - MOVE_BATON_PASS, - MOVE_TICKLE, - MOVE_LAST_RESORT, - MOVE_FAKE_OUT, - MOVE_ZEN_HEADBUTT, - MOVE_SUCKER_PUNCH, - MOVE_MUD_BOMB, - MOVE_SIMPLE_BEAM, - MOVE_CAPTIVATE, - MOVE_COSMIC_POWER), +static const u16 sSkittyEggMoveLearnset[] = { + MOVE_HELPING_HAND, + MOVE_UPROAR, + MOVE_FAKE_TEARS, + MOVE_WISH, + MOVE_BATON_PASS, + MOVE_TICKLE, + MOVE_LAST_RESORT, + MOVE_FAKE_OUT, + MOVE_ZEN_HEADBUTT, + MOVE_SUCKER_PUNCH, + MOVE_MUD_BOMB, + MOVE_SIMPLE_BEAM, + MOVE_CAPTIVATE, + MOVE_COSMIC_POWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKITTY #if P_FAMILY_SABLEYE - egg_moves(SABLEYE, - MOVE_RECOVER, - MOVE_MOONLIGHT, - MOVE_NASTY_PLOT, - MOVE_FLATTER, - MOVE_FEINT, - MOVE_SUCKER_PUNCH, - MOVE_TRICK, - MOVE_CAPTIVATE, - MOVE_MEAN_LOOK, - MOVE_METAL_BURST, - MOVE_IMPRISON), +static const u16 sSableyeEggMoveLearnset[] = { + MOVE_RECOVER, + MOVE_MOONLIGHT, + MOVE_NASTY_PLOT, + MOVE_FLATTER, + MOVE_FEINT, + MOVE_SUCKER_PUNCH, + MOVE_TRICK, + MOVE_CAPTIVATE, + MOVE_MEAN_LOOK, + MOVE_METAL_BURST, + MOVE_IMPRISON, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SABLEYE #if P_FAMILY_MAWILE - egg_moves(MAWILE, - MOVE_POISON_FANG, - MOVE_ANCIENT_POWER, - MOVE_TICKLE, - MOVE_SUCKER_PUNCH, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_PUNISHMENT, - MOVE_GUARD_SWAP, - MOVE_CAPTIVATE, - MOVE_SLAM, - MOVE_METAL_BURST, - MOVE_MISTY_TERRAIN, - MOVE_SEISMIC_TOSS, - MOVE_POWER_UP_PUNCH), +static const u16 sMawileEggMoveLearnset[] = { + MOVE_POISON_FANG, + MOVE_ANCIENT_POWER, + MOVE_TICKLE, + MOVE_SUCKER_PUNCH, + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_PUNISHMENT, + MOVE_GUARD_SWAP, + MOVE_CAPTIVATE, + MOVE_SLAM, + MOVE_METAL_BURST, + MOVE_MISTY_TERRAIN, + MOVE_SEISMIC_TOSS, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MAWILE #if P_FAMILY_ARON - egg_moves(ARON, - MOVE_ENDEAVOR, - MOVE_BODY_SLAM, - MOVE_STOMP, - MOVE_SMELLING_SALTS, - MOVE_CURSE, - MOVE_SCREECH, - MOVE_IRON_HEAD, - MOVE_DRAGON_RUSH, - MOVE_HEAD_SMASH, - MOVE_SUPERPOWER, - MOVE_STEALTH_ROCK, - MOVE_REVERSAL), +static const u16 sAronEggMoveLearnset[] = { + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_STOMP, + MOVE_SMELLING_SALTS, + MOVE_CURSE, + MOVE_SCREECH, + MOVE_IRON_HEAD, + MOVE_DRAGON_RUSH, + MOVE_HEAD_SMASH, + MOVE_SUPERPOWER, + MOVE_STEALTH_ROCK, + MOVE_REVERSAL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ARON #if P_FAMILY_MEDITITE - egg_moves(MEDITITE, - MOVE_FIRE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_ICE_PUNCH, - MOVE_FORESIGHT, - MOVE_FAKE_OUT, - MOVE_BATON_PASS, - MOVE_DYNAMIC_PUNCH, - MOVE_POWER_SWAP, - MOVE_GUARD_SWAP, - MOVE_PSYCHO_CUT, - MOVE_BULLET_PUNCH, - MOVE_DRAIN_PUNCH, - MOVE_SECRET_POWER, - MOVE_QUICK_GUARD), +static const u16 sMedititeEggMoveLearnset[] = { + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FORESIGHT, + MOVE_FAKE_OUT, + MOVE_BATON_PASS, + MOVE_DYNAMIC_PUNCH, + MOVE_POWER_SWAP, + MOVE_GUARD_SWAP, + MOVE_PSYCHO_CUT, + MOVE_BULLET_PUNCH, + MOVE_DRAIN_PUNCH, + MOVE_SECRET_POWER, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MEDITITE #if P_FAMILY_ELECTRIKE - egg_moves(ELECTRIKE, - MOVE_CRUNCH, - MOVE_HEADBUTT, - MOVE_UPROAR, - MOVE_CURSE, - MOVE_SWIFT, - MOVE_DISCHARGE, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_SWITCHEROO, - MOVE_ELECTRO_BALL, - MOVE_SHOCK_WAVE, - MOVE_FLAME_BURST, - MOVE_EERIE_IMPULSE), +static const u16 sElectrikeEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_HEADBUTT, + MOVE_UPROAR, + MOVE_CURSE, + MOVE_SWIFT, + MOVE_DISCHARGE, + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_SWITCHEROO, + MOVE_ELECTRO_BALL, + MOVE_SHOCK_WAVE, + MOVE_FLAME_BURST, + MOVE_EERIE_IMPULSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ELECTRIKE #if P_FAMILY_PLUSLE - egg_moves(PLUSLE, - MOVE_WISH, - MOVE_SING, - MOVE_SWEET_KISS, - MOVE_DISCHARGE, - MOVE_LUCKY_CHANT, - MOVE_CHARM, - MOVE_FAKE_TEARS, - MOVE_TEARFUL_LOOK), +static const u16 sPlusleEggMoveLearnset[] = { + MOVE_WISH, + MOVE_SING, + MOVE_SWEET_KISS, + MOVE_DISCHARGE, + MOVE_LUCKY_CHANT, + MOVE_CHARM, + MOVE_FAKE_TEARS, + MOVE_TEARFUL_LOOK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PLUSLE #if P_FAMILY_MINUN - egg_moves(MINUN, - MOVE_WISH, - MOVE_SING, - MOVE_SWEET_KISS, - MOVE_DISCHARGE, - MOVE_LUCKY_CHANT, - MOVE_CHARM, - MOVE_FAKE_TEARS, - MOVE_TEARFUL_LOOK), +static const u16 sMinunEggMoveLearnset[] = { + MOVE_WISH, + MOVE_SING, + MOVE_SWEET_KISS, + MOVE_DISCHARGE, + MOVE_LUCKY_CHANT, + MOVE_CHARM, + MOVE_FAKE_TEARS, + MOVE_TEARFUL_LOOK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MINUN #if P_FAMILY_VOLBEAT_ILLUMISE - egg_moves(VOLBEAT, - MOVE_BATON_PASS, - MOVE_SILVER_WIND, - MOVE_TRICK, - MOVE_ENCORE, - MOVE_BUG_BUZZ, - MOVE_DIZZY_PUNCH, - MOVE_SEISMIC_TOSS, - MOVE_LUNGE), - - egg_moves(ILLUMISE, - MOVE_BATON_PASS, - MOVE_SILVER_WIND, - MOVE_GROWTH, - MOVE_ENCORE, - MOVE_BUG_BUZZ, - MOVE_CAPTIVATE, - MOVE_FAKE_TEARS, - MOVE_CONFUSE_RAY, - MOVE_AROMATHERAPY), +static const u16 sVolbeatEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_TRICK, + MOVE_ENCORE, + MOVE_BUG_BUZZ, + MOVE_DIZZY_PUNCH, + MOVE_SEISMIC_TOSS, + MOVE_LUNGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIllumiseEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_SILVER_WIND, + MOVE_GROWTH, + MOVE_ENCORE, + MOVE_BUG_BUZZ, + MOVE_CAPTIVATE, + MOVE_FAKE_TEARS, + MOVE_CONFUSE_RAY, + MOVE_AROMATHERAPY, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sBudewEggMoveLearnset[] = { + 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, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(ROSELIA, - MOVE_SPIKES, - MOVE_SYNTHESIS, - MOVE_PIN_MISSILE, - MOVE_COTTON_SPORE, - MOVE_SLEEP_POWDER, - MOVE_RAZOR_LEAF, - MOVE_MIND_READER, - MOVE_LEAF_STORM, - MOVE_SEED_BOMB, - MOVE_GIGA_DRAIN, - MOVE_NATURAL_GIFT, - MOVE_GRASS_WHISTLE, - MOVE_BULLET_SEED, - MOVE_POWER_WHIP), +static const u16 sRoseliaEggMoveLearnset[] = { + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE, + MOVE_SLEEP_POWDER, + MOVE_RAZOR_LEAF, + MOVE_MIND_READER, + MOVE_LEAF_STORM, + MOVE_SEED_BOMB, + MOVE_GIGA_DRAIN, + MOVE_NATURAL_GIFT, + MOVE_GRASS_WHISTLE, + MOVE_BULLET_SEED, + MOVE_POWER_WHIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROSELIA #if P_FAMILY_GULPIN - egg_moves(GULPIN, - MOVE_ACID_ARMOR, - MOVE_SMOG, - MOVE_PAIN_SPLIT, - MOVE_CURSE, - MOVE_DESTINY_BOND, - MOVE_MUD_SLAP, - MOVE_GUNK_SHOT, - MOVE_VENOM_DRENCH), +static const u16 sGulpinEggMoveLearnset[] = { + MOVE_ACID_ARMOR, + MOVE_SMOG, + MOVE_PAIN_SPLIT, + MOVE_CURSE, + MOVE_DESTINY_BOND, + MOVE_MUD_SLAP, + MOVE_GUNK_SHOT, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GULPIN #if P_FAMILY_CARVANHA - egg_moves(CARVANHA, - MOVE_HYDRO_PUMP, - MOVE_DOUBLE_EDGE, - MOVE_THRASH, - MOVE_ANCIENT_POWER, - MOVE_SWIFT, - MOVE_BRINE, - MOVE_DESTINY_BOND, - MOVE_PSYCHIC_FANGS), +static const u16 sCarvanhaEggMoveLearnset[] = { + MOVE_HYDRO_PUMP, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_ANCIENT_POWER, + MOVE_SWIFT, + MOVE_BRINE, + MOVE_DESTINY_BOND, + MOVE_PSYCHIC_FANGS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CARVANHA #if P_FAMILY_WAILMER - egg_moves(WAILMER, - MOVE_DOUBLE_EDGE, - MOVE_THRASH, - MOVE_SNORE, - MOVE_SLEEP_TALK, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_TICKLE, - MOVE_DEFENSE_CURL, - MOVE_BODY_SLAM, - MOVE_AQUA_RING, - MOVE_SOAK, - MOVE_ZEN_HEADBUTT, - MOVE_CLEAR_SMOG), +static const u16 sWailmerEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_SNORE, + MOVE_SLEEP_TALK, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_TICKLE, + MOVE_DEFENSE_CURL, + MOVE_BODY_SLAM, + MOVE_AQUA_RING, + MOVE_SOAK, + MOVE_ZEN_HEADBUTT, + MOVE_CLEAR_SMOG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WAILMER #if P_FAMILY_NUMEL - egg_moves(NUMEL, - MOVE_HOWL, - MOVE_SCARY_FACE, - MOVE_BODY_SLAM, - MOVE_ROLLOUT, - MOVE_DEFENSE_CURL, - MOVE_STOMP, - MOVE_YAWN, - MOVE_ANCIENT_POWER, - MOVE_MUD_BOMB, - MOVE_HEAT_WAVE, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_ENDURE, - MOVE_IRON_HEAD, - MOVE_GROWTH, - MOVE_HEAVY_SLAM), +static const u16 sNumelEggMoveLearnset[] = { + MOVE_HOWL, + MOVE_SCARY_FACE, + MOVE_BODY_SLAM, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_STOMP, + MOVE_YAWN, + MOVE_ANCIENT_POWER, + MOVE_MUD_BOMB, + MOVE_HEAT_WAVE, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_ENDURE, + MOVE_IRON_HEAD, + MOVE_GROWTH, + MOVE_HEAVY_SLAM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NUMEL #if P_FAMILY_TORKOAL - egg_moves(TORKOAL, - MOVE_ERUPTION, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_YAWN, - MOVE_FISSURE, - MOVE_SKULL_BASH, - MOVE_FLAME_BURST, - MOVE_CLEAR_SMOG, - MOVE_SUPERPOWER), +static const u16 sTorkoalEggMoveLearnset[] = { + MOVE_ERUPTION, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_YAWN, + MOVE_FISSURE, + MOVE_SKULL_BASH, + MOVE_FLAME_BURST, + MOVE_CLEAR_SMOG, + MOVE_SUPERPOWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TORKOAL #if P_FAMILY_SPOINK - egg_moves(SPOINK, - MOVE_FUTURE_SIGHT, - MOVE_EXTRASENSORY, - MOVE_TRICK, - MOVE_ZEN_HEADBUTT, - MOVE_AMNESIA, - MOVE_MIRROR_COAT, - MOVE_SKILL_SWAP, - MOVE_WHIRLWIND, - MOVE_LUCKY_CHANT, - MOVE_ENDURE, - MOVE_SIMPLE_BEAM), +static const u16 sSpoinkEggMoveLearnset[] = { + MOVE_FUTURE_SIGHT, + MOVE_EXTRASENSORY, + MOVE_TRICK, + MOVE_ZEN_HEADBUTT, + MOVE_AMNESIA, + MOVE_MIRROR_COAT, + MOVE_SKILL_SWAP, + MOVE_WHIRLWIND, + MOVE_LUCKY_CHANT, + MOVE_ENDURE, + MOVE_SIMPLE_BEAM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPOINK #if P_FAMILY_SPINDA - egg_moves(SPINDA, - MOVE_ENCORE, - MOVE_ASSIST, - MOVE_DISABLE, - MOVE_BATON_PASS, - MOVE_WISH, - MOVE_TRICK, - MOVE_SMELLING_SALTS, - MOVE_FAKE_OUT, - MOVE_ROLE_PLAY, - MOVE_PSYCHO_CUT, - MOVE_FAKE_TEARS, - MOVE_RAPID_SPIN, - MOVE_ICY_WIND, - MOVE_WATER_PULSE, - MOVE_PSYCHO_SHIFT, - MOVE_GUARD_SPLIT, - MOVE_SPOTLIGHT), +static const u16 sSpindaEggMoveLearnset[] = { + MOVE_ENCORE, + MOVE_ASSIST, + MOVE_DISABLE, + MOVE_BATON_PASS, + MOVE_WISH, + MOVE_TRICK, + MOVE_SMELLING_SALTS, + MOVE_FAKE_OUT, + MOVE_ROLE_PLAY, + MOVE_PSYCHO_CUT, + MOVE_FAKE_TEARS, + MOVE_RAPID_SPIN, + MOVE_ICY_WIND, + MOVE_WATER_PULSE, + MOVE_PSYCHO_SHIFT, + MOVE_GUARD_SPLIT, + MOVE_SPOTLIGHT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPINDA #if P_FAMILY_TRAPINCH - egg_moves(TRAPINCH, - MOVE_FOCUS_ENERGY, - MOVE_QUICK_ATTACK, - MOVE_GUST, - MOVE_FLAIL, - MOVE_FURY_CUTTER, - MOVE_MUD_SHOT, - MOVE_ENDURE, - MOVE_EARTH_POWER, - MOVE_BUG_BITE, - MOVE_SIGNAL_BEAM), +static const u16 sTrapinchEggMoveLearnset[] = { + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_GUST, + MOVE_FLAIL, + MOVE_FURY_CUTTER, + MOVE_MUD_SHOT, + MOVE_ENDURE, + MOVE_EARTH_POWER, + MOVE_BUG_BITE, + MOVE_SIGNAL_BEAM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TRAPINCH #if P_FAMILY_CACNEA - egg_moves(CACNEA, - MOVE_GRASS_WHISTLE, - MOVE_ACID, - MOVE_TEETER_DANCE, - MOVE_DYNAMIC_PUNCH, - MOVE_COUNTER, - MOVE_LOW_KICK, - MOVE_SMELLING_SALTS, - MOVE_MAGICAL_LEAF, - MOVE_SEED_BOMB, - MOVE_NASTY_PLOT, - MOVE_DISABLE, - MOVE_BLOCK, - MOVE_WORRY_SEED, - MOVE_SWITCHEROO, - MOVE_FELL_STINGER, - MOVE_BELCH, - MOVE_ROTOTILLER, - MOVE_POWER_UP_PUNCH), +static const u16 sCacneaEggMoveLearnset[] = { + MOVE_GRASS_WHISTLE, + MOVE_ACID, + MOVE_TEETER_DANCE, + MOVE_DYNAMIC_PUNCH, + MOVE_COUNTER, + MOVE_LOW_KICK, + MOVE_SMELLING_SALTS, + MOVE_MAGICAL_LEAF, + MOVE_SEED_BOMB, + MOVE_NASTY_PLOT, + MOVE_DISABLE, + MOVE_BLOCK, + MOVE_WORRY_SEED, + MOVE_SWITCHEROO, + MOVE_FELL_STINGER, + MOVE_BELCH, + MOVE_ROTOTILLER, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CACNEA #if P_FAMILY_SWABLU - egg_moves(SWABLU, - MOVE_AGILITY, - MOVE_HAZE, - MOVE_PURSUIT, - MOVE_RAGE, - MOVE_FEATHER_DANCE, - MOVE_DRAGON_RUSH, - MOVE_POWER_SWAP, - MOVE_ROOST, - MOVE_HYPER_VOICE, - MOVE_STEEL_WING, - MOVE_PLAY_ROUGH), +static const u16 sSwabluEggMoveLearnset[] = { + MOVE_AGILITY, + MOVE_HAZE, + MOVE_PURSUIT, + MOVE_RAGE, + MOVE_FEATHER_DANCE, + MOVE_DRAGON_RUSH, + MOVE_POWER_SWAP, + MOVE_ROOST, + MOVE_HYPER_VOICE, + MOVE_STEEL_WING, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SWABLU #if P_FAMILY_ZANGOOSE - egg_moves(ZANGOOSE, - MOVE_FLAIL, - MOVE_DOUBLE_KICK, - MOVE_RAZOR_WIND, - MOVE_COUNTER, - MOVE_CURSE, - MOVE_FURY_SWIPES, - MOVE_NIGHT_SLASH, - MOVE_METAL_CLAW, - MOVE_DOUBLE_HIT, - MOVE_DISABLE, - MOVE_IRON_TAIL, - MOVE_FINAL_GAMBIT, - MOVE_FEINT, - MOVE_QUICK_GUARD, - MOVE_BELLY_DRUM), +static const u16 sZangooseEggMoveLearnset[] = { + MOVE_FLAIL, + MOVE_DOUBLE_KICK, + MOVE_RAZOR_WIND, + MOVE_COUNTER, + MOVE_CURSE, + MOVE_FURY_SWIPES, + MOVE_NIGHT_SLASH, + MOVE_METAL_CLAW, + MOVE_DOUBLE_HIT, + MOVE_DISABLE, + MOVE_IRON_TAIL, + MOVE_FINAL_GAMBIT, + MOVE_FEINT, + MOVE_QUICK_GUARD, + MOVE_BELLY_DRUM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ZANGOOSE #if P_FAMILY_SEVIPER - egg_moves(SEVIPER, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_BODY_SLAM, - MOVE_SCARY_FACE, - MOVE_ASSURANCE, - MOVE_NIGHT_SLASH, - MOVE_SWITCHEROO, - MOVE_IRON_TAIL, - MOVE_WRING_OUT, - MOVE_PUNISHMENT, - MOVE_FINAL_GAMBIT), +static const u16 sSeviperEggMoveLearnset[] = { + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_BODY_SLAM, + MOVE_SCARY_FACE, + MOVE_ASSURANCE, + MOVE_NIGHT_SLASH, + MOVE_SWITCHEROO, + MOVE_IRON_TAIL, + MOVE_WRING_OUT, + MOVE_PUNISHMENT, + MOVE_FINAL_GAMBIT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SEVIPER #if P_FAMILY_BARBOACH - egg_moves(BARBOACH, - MOVE_THRASH, - MOVE_WHIRLPOOL, - MOVE_SPARK, - MOVE_HYDRO_PUMP, - MOVE_FLAIL, - MOVE_TAKE_DOWN, - MOVE_DRAGON_DANCE, - MOVE_EARTH_POWER, - MOVE_MUD_SHOT, - MOVE_MUDDY_WATER), +static const u16 sBarboachEggMoveLearnset[] = { + MOVE_THRASH, + MOVE_WHIRLPOOL, + MOVE_SPARK, + MOVE_HYDRO_PUMP, + MOVE_FLAIL, + MOVE_TAKE_DOWN, + MOVE_DRAGON_DANCE, + MOVE_EARTH_POWER, + MOVE_MUD_SHOT, + MOVE_MUDDY_WATER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BARBOACH #if P_FAMILY_CORPHISH - egg_moves(CORPHISH, - MOVE_MUD_SPORT, - MOVE_ENDEAVOR, - MOVE_BODY_SLAM, - MOVE_ANCIENT_POWER, - MOVE_KNOCK_OFF, - MOVE_SUPERPOWER, - MOVE_METAL_CLAW, - MOVE_DRAGON_DANCE, - MOVE_TRUMP_CARD, - MOVE_CHIP_AWAY, - MOVE_DOUBLE_EDGE, - MOVE_AQUA_JET, - MOVE_SWITCHEROO), +static const u16 sCorphishEggMoveLearnset[] = { + MOVE_MUD_SPORT, + MOVE_ENDEAVOR, + MOVE_BODY_SLAM, + MOVE_ANCIENT_POWER, + MOVE_KNOCK_OFF, + MOVE_SUPERPOWER, + MOVE_METAL_CLAW, + MOVE_DRAGON_DANCE, + MOVE_TRUMP_CARD, + MOVE_CHIP_AWAY, + MOVE_DOUBLE_EDGE, + MOVE_AQUA_JET, + MOVE_SWITCHEROO, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CORPHISH #if P_FAMILY_LILEEP - egg_moves(LILEEP, - MOVE_BARRIER, - MOVE_RECOVER, - MOVE_MIRROR_COAT, - MOVE_WRING_OUT, - MOVE_TICKLE, - MOVE_CURSE, - MOVE_MEGA_DRAIN, - MOVE_ENDURE, - MOVE_STEALTH_ROCK), +static const u16 sLileepEggMoveLearnset[] = { + MOVE_BARRIER, + MOVE_RECOVER, + MOVE_MIRROR_COAT, + MOVE_WRING_OUT, + MOVE_TICKLE, + MOVE_CURSE, + MOVE_MEGA_DRAIN, + MOVE_ENDURE, + MOVE_STEALTH_ROCK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LILEEP #if P_FAMILY_ANORITH - egg_moves(ANORITH, - MOVE_RAPID_SPIN, - MOVE_KNOCK_OFF, - MOVE_SCREECH, - MOVE_SAND_ATTACK, - MOVE_CROSS_POISON, - MOVE_CURSE, - MOVE_IRON_DEFENSE, - MOVE_WATER_PULSE, - MOVE_AQUA_JET), +static const u16 sAnorithEggMoveLearnset[] = { + MOVE_RAPID_SPIN, + MOVE_KNOCK_OFF, + MOVE_SCREECH, + MOVE_SAND_ATTACK, + MOVE_CROSS_POISON, + MOVE_CURSE, + MOVE_IRON_DEFENSE, + MOVE_WATER_PULSE, + MOVE_AQUA_JET, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ANORITH #if P_FAMILY_FEEBAS - egg_moves(FEEBAS, - MOVE_MIRROR_COAT, - MOVE_DRAGON_BREATH, - MOVE_MUD_SPORT, - MOVE_HYPNOSIS, - MOVE_CONFUSE_RAY, - MOVE_MIST, - MOVE_HAZE, - MOVE_TICKLE, - MOVE_BRINE, - MOVE_IRON_TAIL, - MOVE_DRAGON_PULSE, - MOVE_CAPTIVATE), +static const u16 sFeebasEggMoveLearnset[] = { + MOVE_MIRROR_COAT, + MOVE_DRAGON_BREATH, + MOVE_MUD_SPORT, + MOVE_HYPNOSIS, + MOVE_CONFUSE_RAY, + MOVE_MIST, + MOVE_HAZE, + MOVE_TICKLE, + MOVE_BRINE, + MOVE_IRON_TAIL, + MOVE_DRAGON_PULSE, + MOVE_CAPTIVATE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FEEBAS #if P_FAMILY_CASTFORM - egg_moves(CASTFORM, - MOVE_FUTURE_SIGHT, - MOVE_LUCKY_CHANT, - MOVE_DISABLE, - MOVE_AMNESIA, - MOVE_OMINOUS_WIND, - MOVE_HEX, - MOVE_CLEAR_SMOG, - MOVE_REFLECT_TYPE, - MOVE_GUARD_SWAP, - MOVE_COSMIC_POWER), +static const u16 sCastformEggMoveLearnset[] = { + MOVE_FUTURE_SIGHT, + MOVE_LUCKY_CHANT, + MOVE_DISABLE, + MOVE_AMNESIA, + MOVE_OMINOUS_WIND, + MOVE_HEX, + MOVE_CLEAR_SMOG, + MOVE_REFLECT_TYPE, + MOVE_GUARD_SWAP, + MOVE_COSMIC_POWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CASTFORM #if P_FAMILY_KECLEON - egg_moves(KECLEON, - MOVE_DISABLE, - MOVE_MAGIC_COAT, - MOVE_TRICK, - MOVE_FAKE_OUT, - MOVE_NASTY_PLOT, - MOVE_DIZZY_PUNCH, - MOVE_RECOVER, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_FOUL_PLAY, - MOVE_CAMOUFLAGE, - MOVE_POWER_UP_PUNCH), +static const u16 sKecleonEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_MAGIC_COAT, + MOVE_TRICK, + MOVE_FAKE_OUT, + MOVE_NASTY_PLOT, + MOVE_DIZZY_PUNCH, + MOVE_RECOVER, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_FOUL_PLAY, + MOVE_CAMOUFLAGE, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KECLEON #if P_FAMILY_SHUPPET - egg_moves(SHUPPET, - MOVE_DISABLE, - MOVE_DESTINY_BOND, - MOVE_FORESIGHT, - MOVE_ASTONISH, - MOVE_IMPRISON, - MOVE_PURSUIT, - MOVE_SHADOW_SNEAK, - MOVE_CONFUSE_RAY, - MOVE_OMINOUS_WIND, - MOVE_GUNK_SHOT, - MOVE_PHANTOM_FORCE), +static const u16 sShuppetEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_DESTINY_BOND, + MOVE_FORESIGHT, + MOVE_ASTONISH, + MOVE_IMPRISON, + MOVE_PURSUIT, + MOVE_SHADOW_SNEAK, + MOVE_CONFUSE_RAY, + MOVE_OMINOUS_WIND, + MOVE_GUNK_SHOT, + MOVE_PHANTOM_FORCE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHUPPET #if P_FAMILY_DUSKULL - egg_moves(DUSKULL, - MOVE_IMPRISON, - MOVE_DESTINY_BOND, - MOVE_PAIN_SPLIT, - MOVE_GRUDGE, - MOVE_MEMENTO, - MOVE_FEINT_ATTACK, - MOVE_OMINOUS_WIND, - MOVE_DARK_PULSE, - MOVE_SKILL_SWAP, - MOVE_HAZE), +static const u16 sDuskullEggMoveLearnset[] = { + MOVE_IMPRISON, + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_GRUDGE, + MOVE_MEMENTO, + MOVE_FEINT_ATTACK, + MOVE_OMINOUS_WIND, + MOVE_DARK_PULSE, + MOVE_SKILL_SWAP, + MOVE_HAZE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DUSKULL #if P_FAMILY_TROPIUS - egg_moves(TROPIUS, - MOVE_HEADBUTT, - MOVE_SLAM, - MOVE_RAZOR_WIND, - MOVE_LEECH_SEED, - MOVE_NATURE_POWER, - MOVE_LEAF_STORM, - MOVE_SYNTHESIS, - MOVE_CURSE, - MOVE_LEAF_BLADE, - MOVE_DRAGON_DANCE, - MOVE_BULLET_SEED, - MOVE_NATURAL_GIFT, - MOVE_DRAGON_HAMMER), +static const u16 sTropiusEggMoveLearnset[] = { + MOVE_HEADBUTT, + MOVE_SLAM, + MOVE_RAZOR_WIND, + MOVE_LEECH_SEED, + MOVE_NATURE_POWER, + MOVE_LEAF_STORM, + MOVE_SYNTHESIS, + MOVE_CURSE, + MOVE_LEAF_BLADE, + MOVE_DRAGON_DANCE, + MOVE_BULLET_SEED, + MOVE_NATURAL_GIFT, + MOVE_DRAGON_HAMMER, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sChinglingEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_WISH, + MOVE_FUTURE_SIGHT, + MOVE_RECOVER, + MOVE_STORED_POWER, + MOVE_SKILL_SWAP, + MOVE_COSMIC_POWER, + MOVE_UNAVAILABLE, +}; #endif //P_GEN_4_CROSS_EVOS - egg_moves(CHIMECHO, - MOVE_DISABLE, - MOVE_CURSE, - MOVE_HYPNOSIS, - MOVE_WISH, - MOVE_FUTURE_SIGHT, - MOVE_RECOVER, - MOVE_STORED_POWER, - MOVE_SKILL_SWAP, - MOVE_COSMIC_POWER, - MOVE_CRAFTY_SHIELD, - MOVE_PERISH_SONG), +static const u16 sChimechoEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_WISH, + MOVE_FUTURE_SIGHT, + MOVE_RECOVER, + MOVE_STORED_POWER, + MOVE_SKILL_SWAP, + MOVE_COSMIC_POWER, + MOVE_CRAFTY_SHIELD, + MOVE_PERISH_SONG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHIMECHO #if P_FAMILY_ABSOL - egg_moves(ABSOL, - MOVE_BATON_PASS, - MOVE_FEINT_ATTACK, - MOVE_DOUBLE_EDGE, - MOVE_MAGIC_COAT, - MOVE_CURSE, - MOVE_MEAN_LOOK, - MOVE_ZEN_HEADBUTT, - MOVE_PUNISHMENT, - MOVE_SUCKER_PUNCH, - MOVE_ASSURANCE, - MOVE_ME_FIRST, - MOVE_MEGAHORN, - MOVE_HEX, - MOVE_PERISH_SONG, - MOVE_PLAY_ROUGH), +static const u16 sAbsolEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_FEINT_ATTACK, + MOVE_DOUBLE_EDGE, + MOVE_MAGIC_COAT, + MOVE_CURSE, + MOVE_MEAN_LOOK, + MOVE_ZEN_HEADBUTT, + MOVE_PUNISHMENT, + MOVE_SUCKER_PUNCH, + MOVE_ASSURANCE, + MOVE_ME_FIRST, + MOVE_MEGAHORN, + MOVE_HEX, + MOVE_PERISH_SONG, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ABSOL #if P_FAMILY_SNORUNT - egg_moves(SNORUNT, - MOVE_BLOCK, - MOVE_SPIKES, - MOVE_ROLLOUT, - MOVE_DISABLE, - MOVE_BIDE, - MOVE_WEATHER_BALL, - MOVE_AVALANCHE, - MOVE_HEX, - MOVE_FAKE_TEARS, - MOVE_SWITCHEROO), +static const u16 sSnoruntEggMoveLearnset[] = { + MOVE_BLOCK, + MOVE_SPIKES, + MOVE_ROLLOUT, + MOVE_DISABLE, + MOVE_BIDE, + MOVE_WEATHER_BALL, + MOVE_AVALANCHE, + MOVE_HEX, + MOVE_FAKE_TEARS, + MOVE_SWITCHEROO, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNORUNT #if P_FAMILY_SPHEAL - egg_moves(SPHEAL, - MOVE_WATER_SPORT, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_YAWN, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_SIGNAL_BEAM, - MOVE_AQUA_RING, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_WATER_PULSE, - MOVE_BELLY_DRUM), +static const u16 sSphealEggMoveLearnset[] = { + MOVE_WATER_SPORT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_SIGNAL_BEAM, + MOVE_AQUA_RING, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_WATER_PULSE, + MOVE_BELLY_DRUM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPHEAL #if P_FAMILY_CLAMPERL - egg_moves(CLAMPERL, - MOVE_REFRESH, - MOVE_MUD_SPORT, - MOVE_BODY_SLAM, - MOVE_SUPERSONIC, - MOVE_BARRIER, - MOVE_CONFUSE_RAY, - MOVE_AQUA_RING, - MOVE_MUDDY_WATER, - MOVE_WATER_PULSE, - MOVE_BRINE, - MOVE_ENDURE), +static const u16 sClamperlEggMoveLearnset[] = { + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_BODY_SLAM, + MOVE_SUPERSONIC, + MOVE_BARRIER, + MOVE_CONFUSE_RAY, + MOVE_AQUA_RING, + MOVE_MUDDY_WATER, + MOVE_WATER_PULSE, + MOVE_BRINE, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CLAMPERL #if P_FAMILY_RELICANTH - egg_moves(RELICANTH, - MOVE_MAGNITUDE, - MOVE_SKULL_BASH, - MOVE_WATER_SPORT, - MOVE_AMNESIA, - MOVE_SLEEP_TALK, - MOVE_AQUA_TAIL, - MOVE_SNORE, - MOVE_MUD_SLAP, - MOVE_MUDDY_WATER, - MOVE_MUD_SHOT, - MOVE_BRINE, - MOVE_ZEN_HEADBUTT), +static const u16 sRelicanthEggMoveLearnset[] = { + MOVE_MAGNITUDE, + MOVE_SKULL_BASH, + MOVE_WATER_SPORT, + MOVE_AMNESIA, + MOVE_SLEEP_TALK, + MOVE_AQUA_TAIL, + MOVE_SNORE, + MOVE_MUD_SLAP, + MOVE_MUDDY_WATER, + MOVE_MUD_SHOT, + MOVE_BRINE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_RELICANTH #if P_FAMILY_LUVDISC - egg_moves(LUVDISC, - MOVE_SPLASH, - MOVE_SUPERSONIC, - MOVE_WATER_SPORT, - MOVE_MUD_SPORT, - MOVE_CAPTIVATE, - MOVE_AQUA_RING, - MOVE_AQUA_JET, - MOVE_HEAL_PULSE, - MOVE_BRINE, - MOVE_ENTRAINMENT), +static const u16 sLuvdiscEggMoveLearnset[] = { + MOVE_SPLASH, + MOVE_SUPERSONIC, + MOVE_WATER_SPORT, + MOVE_MUD_SPORT, + MOVE_CAPTIVATE, + MOVE_AQUA_RING, + MOVE_AQUA_JET, + MOVE_HEAL_PULSE, + MOVE_BRINE, + MOVE_ENTRAINMENT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LUVDISC #if P_FAMILY_BAGON - egg_moves(BAGON, - MOVE_HYDRO_PUMP, - MOVE_THRASH, - MOVE_DRAGON_RAGE, - MOVE_TWISTER, - MOVE_DRAGON_DANCE, - MOVE_FIRE_FANG, - MOVE_DRAGON_RUSH, - MOVE_DRAGON_PULSE, - MOVE_ENDURE, - MOVE_DEFENSE_CURL), +static const u16 sBagonEggMoveLearnset[] = { + MOVE_HYDRO_PUMP, + MOVE_THRASH, + MOVE_DRAGON_RAGE, + MOVE_TWISTER, + MOVE_DRAGON_DANCE, + MOVE_FIRE_FANG, + MOVE_DRAGON_RUSH, + MOVE_DRAGON_PULSE, + MOVE_ENDURE, + MOVE_DEFENSE_CURL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BAGON #if P_FAMILY_TURTWIG - egg_moves(TURTWIG, - MOVE_WORRY_SEED, - MOVE_GROWTH, - MOVE_TICKLE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_SAND_TOMB, - MOVE_SEED_BOMB, - MOVE_THRASH, - MOVE_AMNESIA, - MOVE_SUPERPOWER, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_EARTH_POWER, - MOVE_WIDE_GUARD, - MOVE_GRASSY_TERRAIN, - MOVE_HEAVY_SLAM), +static const u16 sTurtwigEggMoveLearnset[] = { + MOVE_WORRY_SEED, + MOVE_GROWTH, + MOVE_TICKLE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_SAND_TOMB, + MOVE_SEED_BOMB, + MOVE_THRASH, + MOVE_AMNESIA, + MOVE_SUPERPOWER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_EARTH_POWER, + MOVE_WIDE_GUARD, + MOVE_GRASSY_TERRAIN, + MOVE_HEAVY_SLAM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TURTWIG #if P_FAMILY_CHIMCHAR - egg_moves(CHIMCHAR, - MOVE_FIRE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_DOUBLE_KICK, - MOVE_ENCORE, - MOVE_HEAT_WAVE, - MOVE_FOCUS_ENERGY, - MOVE_HELPING_HAND, - MOVE_FAKE_OUT, - MOVE_BLAZE_KICK, - MOVE_COUNTER, - MOVE_ASSIST, - MOVE_QUICK_GUARD, - MOVE_FOCUS_PUNCH, - MOVE_SUBMISSION, - MOVE_POWER_UP_PUNCH), +static const u16 sChimcharEggMoveLearnset[] = { + MOVE_FIRE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_DOUBLE_KICK, + MOVE_ENCORE, + MOVE_HEAT_WAVE, + MOVE_FOCUS_ENERGY, + MOVE_HELPING_HAND, + MOVE_FAKE_OUT, + MOVE_BLAZE_KICK, + MOVE_COUNTER, + MOVE_ASSIST, + MOVE_QUICK_GUARD, + MOVE_FOCUS_PUNCH, + MOVE_SUBMISSION, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHIMCHAR #if P_FAMILY_PIPLUP - egg_moves(PIPLUP, - MOVE_DOUBLE_HIT, - MOVE_SUPERSONIC, - MOVE_YAWN, - MOVE_MUD_SPORT, - MOVE_MUD_SLAP, - MOVE_SNORE, - MOVE_FLAIL, - MOVE_AGILITY, - MOVE_AQUA_RING, - MOVE_HYDRO_PUMP, - MOVE_FEATHER_DANCE, - MOVE_BIDE, - MOVE_ICY_WIND, - MOVE_POWER_TRIP), +static const u16 sPiplupEggMoveLearnset[] = { + MOVE_DOUBLE_HIT, + MOVE_SUPERSONIC, + MOVE_YAWN, + MOVE_MUD_SPORT, + MOVE_MUD_SLAP, + MOVE_SNORE, + MOVE_FLAIL, + MOVE_AGILITY, + MOVE_AQUA_RING, + MOVE_HYDRO_PUMP, + MOVE_FEATHER_DANCE, + MOVE_BIDE, + MOVE_ICY_WIND, + MOVE_POWER_TRIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PIPLUP #if P_FAMILY_STARLY - egg_moves(STARLY, - MOVE_FEATHER_DANCE, - MOVE_FURY_ATTACK, - MOVE_PURSUIT, - MOVE_ASTONISH, - MOVE_SAND_ATTACK, - MOVE_FORESIGHT, - MOVE_DOUBLE_EDGE, - MOVE_STEEL_WING, - MOVE_UPROAR, - MOVE_ROOST, - MOVE_DETECT, - MOVE_REVENGE, - MOVE_MIRROR_MOVE), +static const u16 sStarlyEggMoveLearnset[] = { + MOVE_FEATHER_DANCE, + MOVE_FURY_ATTACK, + MOVE_PURSUIT, + MOVE_ASTONISH, + MOVE_SAND_ATTACK, + MOVE_FORESIGHT, + MOVE_DOUBLE_EDGE, + MOVE_STEEL_WING, + MOVE_UPROAR, + MOVE_ROOST, + MOVE_DETECT, + MOVE_REVENGE, + MOVE_MIRROR_MOVE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_STARLY #if P_FAMILY_BIDOOF - egg_moves(BIDOOF, - MOVE_QUICK_ATTACK, - MOVE_WATER_SPORT, - MOVE_DOUBLE_EDGE, - MOVE_FURY_SWIPES, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_ODOR_SLEUTH, - MOVE_AQUA_TAIL, - MOVE_ROCK_CLIMB, - MOVE_SLEEP_TALK, - MOVE_ENDURE, - MOVE_SKULL_BASH, - MOVE_MUD_SPORT), +static const u16 sBidoofEggMoveLearnset[] = { + MOVE_QUICK_ATTACK, + MOVE_WATER_SPORT, + MOVE_DOUBLE_EDGE, + MOVE_FURY_SWIPES, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_ODOR_SLEUTH, + MOVE_AQUA_TAIL, + MOVE_ROCK_CLIMB, + MOVE_SLEEP_TALK, + MOVE_ENDURE, + MOVE_SKULL_BASH, + MOVE_MUD_SPORT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BIDOOF #if P_FAMILY_SHINX - egg_moves(SHINX, - MOVE_ICE_FANG, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_QUICK_ATTACK, - MOVE_HOWL, - MOVE_TAKE_DOWN, - MOVE_NIGHT_SLASH, - MOVE_SHOCK_WAVE, - MOVE_SWIFT, - MOVE_DOUBLE_KICK, - MOVE_SIGNAL_BEAM, - MOVE_HELPING_HAND, - MOVE_EERIE_IMPULSE, - MOVE_FAKE_TEARS), +static const u16 sShinxEggMoveLearnset[] = { + MOVE_ICE_FANG, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_QUICK_ATTACK, + MOVE_HOWL, + MOVE_TAKE_DOWN, + MOVE_NIGHT_SLASH, + MOVE_SHOCK_WAVE, + MOVE_SWIFT, + MOVE_DOUBLE_KICK, + MOVE_SIGNAL_BEAM, + MOVE_HELPING_HAND, + MOVE_EERIE_IMPULSE, + MOVE_FAKE_TEARS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHINX #if P_FAMILY_CRANIDOS - egg_moves(CRANIDOS, - MOVE_CRUNCH, - MOVE_THRASH, - MOVE_DOUBLE_EDGE, - MOVE_LEER, - MOVE_SLAM, - MOVE_STOMP, - MOVE_WHIRLWIND, - MOVE_HAMMER_ARM, - MOVE_CURSE, - MOVE_IRON_TAIL, - MOVE_IRON_HEAD), +static const u16 sCranidosEggMoveLearnset[] = { + MOVE_CRUNCH, + MOVE_THRASH, + MOVE_DOUBLE_EDGE, + MOVE_LEER, + MOVE_SLAM, + MOVE_STOMP, + MOVE_WHIRLWIND, + MOVE_HAMMER_ARM, + MOVE_CURSE, + MOVE_IRON_TAIL, + MOVE_IRON_HEAD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CRANIDOS #if P_FAMILY_SHIELDON - egg_moves(SHIELDON, - MOVE_HEADBUTT, - MOVE_SCARY_FACE, - MOVE_FOCUS_ENERGY, - MOVE_DOUBLE_EDGE, - MOVE_ROCK_BLAST, - MOVE_BODY_SLAM, - MOVE_SCREECH, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_COUNTER, - MOVE_STEALTH_ROCK, - MOVE_WIDE_GUARD, - MOVE_GUARD_SPLIT), +static const u16 sShieldonEggMoveLearnset[] = { + MOVE_HEADBUTT, + MOVE_SCARY_FACE, + MOVE_FOCUS_ENERGY, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_BLAST, + MOVE_BODY_SLAM, + MOVE_SCREECH, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_COUNTER, + MOVE_STEALTH_ROCK, + MOVE_WIDE_GUARD, + MOVE_GUARD_SPLIT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHIELDON #if P_FAMILY_PACHIRISU - egg_moves(PACHIRISU, - MOVE_COVET, - MOVE_BITE, - MOVE_FAKE_TEARS, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_FLATTER, - MOVE_FLAIL, - MOVE_IRON_TAIL, - MOVE_TAIL_WHIP, - MOVE_FOLLOW_ME, - MOVE_CHARGE, - MOVE_BESTOW, - MOVE_ION_DELUGE, - MOVE_BABY_DOLL_EYES), +static const u16 sPachirisuEggMoveLearnset[] = { + MOVE_COVET, + MOVE_BITE, + MOVE_FAKE_TEARS, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_FLATTER, + MOVE_FLAIL, + MOVE_IRON_TAIL, + MOVE_TAIL_WHIP, + MOVE_FOLLOW_ME, + MOVE_CHARGE, + MOVE_BESTOW, + MOVE_ION_DELUGE, + MOVE_BABY_DOLL_EYES, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PACHIRISU #if P_FAMILY_BUIZEL - egg_moves(BUIZEL, - MOVE_MUD_SLAP, - MOVE_HEADBUTT, - MOVE_FURY_SWIPES, - MOVE_SLASH, - MOVE_ODOR_SLEUTH, - MOVE_DOUBLE_SLAP, - MOVE_FURY_CUTTER, - MOVE_BATON_PASS, - MOVE_AQUA_TAIL, - MOVE_AQUA_RING, - MOVE_ME_FIRST, - MOVE_SWITCHEROO, - MOVE_TAIL_SLAP, - MOVE_SOAK, - MOVE_HELPING_HAND), +static const u16 sBuizelEggMoveLearnset[] = { + MOVE_MUD_SLAP, + MOVE_HEADBUTT, + MOVE_FURY_SWIPES, + MOVE_SLASH, + MOVE_ODOR_SLEUTH, + MOVE_DOUBLE_SLAP, + MOVE_FURY_CUTTER, + MOVE_BATON_PASS, + MOVE_AQUA_TAIL, + MOVE_AQUA_RING, + MOVE_ME_FIRST, + MOVE_SWITCHEROO, + MOVE_TAIL_SLAP, + MOVE_SOAK, + MOVE_HELPING_HAND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BUIZEL #if P_FAMILY_CHERUBI - egg_moves(CHERUBI, - MOVE_RAZOR_LEAF, - MOVE_SWEET_SCENT, - MOVE_TICKLE, - MOVE_NATURE_POWER, - MOVE_GRASS_WHISTLE, - MOVE_AROMATHERAPY, - MOVE_WEATHER_BALL, - MOVE_HEAL_PULSE, - MOVE_HEALING_WISH, - MOVE_SEED_BOMB, - MOVE_NATURAL_GIFT, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_FLOWER_SHIELD, - MOVE_GRASSY_TERRAIN), +static const u16 sCherubiEggMoveLearnset[] = { + MOVE_RAZOR_LEAF, + MOVE_SWEET_SCENT, + MOVE_TICKLE, + MOVE_NATURE_POWER, + MOVE_GRASS_WHISTLE, + MOVE_AROMATHERAPY, + MOVE_WEATHER_BALL, + MOVE_HEAL_PULSE, + MOVE_HEALING_WISH, + MOVE_SEED_BOMB, + MOVE_NATURAL_GIFT, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_FLOWER_SHIELD, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHERUBI #if P_FAMILY_SHELLOS - egg_moves(SHELLOS_WEST_SEA, - MOVE_COUNTER, - MOVE_MIRROR_COAT, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_YAWN, - MOVE_MEMENTO, - MOVE_CURSE, - MOVE_AMNESIA, - MOVE_FISSURE, - MOVE_TRUMP_CARD, - MOVE_SLUDGE, - MOVE_CLEAR_SMOG, - MOVE_BRINE, - MOVE_MIST, - MOVE_ACID_ARMOR), +static const u16 sShellosEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_MIRROR_COAT, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_YAWN, + MOVE_MEMENTO, + MOVE_CURSE, + MOVE_AMNESIA, + MOVE_FISSURE, + MOVE_TRUMP_CARD, + MOVE_SLUDGE, + MOVE_CLEAR_SMOG, + MOVE_BRINE, + MOVE_MIST, + MOVE_ACID_ARMOR, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHELLOS #if P_FAMILY_DRIFLOON - egg_moves(DRIFLOON, - MOVE_MEMENTO, - MOVE_BODY_SLAM, - MOVE_DESTINY_BOND, - MOVE_DISABLE, - MOVE_HAZE, - MOVE_HYPNOSIS, - MOVE_WEATHER_BALL, - MOVE_CLEAR_SMOG, - MOVE_DEFOG, - MOVE_TAILWIND), +static const u16 sDrifloonEggMoveLearnset[] = { + MOVE_MEMENTO, + MOVE_BODY_SLAM, + MOVE_DESTINY_BOND, + MOVE_DISABLE, + MOVE_HAZE, + MOVE_HYPNOSIS, + MOVE_WEATHER_BALL, + MOVE_CLEAR_SMOG, + MOVE_DEFOG, + MOVE_TAILWIND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DRIFLOON #if P_FAMILY_BUNEARY - egg_moves(BUNEARY, - MOVE_FAKE_TEARS, - MOVE_FAKE_OUT, - MOVE_ENCORE, - MOVE_SWEET_KISS, - MOVE_DOUBLE_HIT, - MOVE_LOW_KICK, - MOVE_SKY_UPPERCUT, - MOVE_SWITCHEROO, - MOVE_THUNDER_PUNCH, - MOVE_ICE_PUNCH, - MOVE_FIRE_PUNCH, - MOVE_FLAIL, - MOVE_FOCUS_PUNCH, - MOVE_CIRCLE_THROW, - MOVE_COPYCAT, - MOVE_TEETER_DANCE, - MOVE_COSMIC_POWER, - MOVE_MUD_SPORT, - MOVE_POWER_UP_PUNCH), +static const u16 sBunearyEggMoveLearnset[] = { + MOVE_FAKE_TEARS, + MOVE_FAKE_OUT, + MOVE_ENCORE, + MOVE_SWEET_KISS, + MOVE_DOUBLE_HIT, + MOVE_LOW_KICK, + MOVE_SKY_UPPERCUT, + MOVE_SWITCHEROO, + MOVE_THUNDER_PUNCH, + MOVE_ICE_PUNCH, + MOVE_FIRE_PUNCH, + MOVE_FLAIL, + MOVE_FOCUS_PUNCH, + MOVE_CIRCLE_THROW, + MOVE_COPYCAT, + MOVE_TEETER_DANCE, + MOVE_COSMIC_POWER, + MOVE_MUD_SPORT, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BUNEARY #if P_FAMILY_GLAMEOW - egg_moves(GLAMEOW, - MOVE_BITE, - MOVE_TAIL_WHIP, - MOVE_QUICK_ATTACK, - MOVE_SAND_ATTACK, - MOVE_FAKE_TEARS, - MOVE_ASSURANCE, - MOVE_FLAIL, - MOVE_SNATCH, - MOVE_WAKE_UP_SLAP, - MOVE_LAST_RESORT), +static const u16 sGlameowEggMoveLearnset[] = { + MOVE_BITE, + MOVE_TAIL_WHIP, + MOVE_QUICK_ATTACK, + MOVE_SAND_ATTACK, + MOVE_FAKE_TEARS, + MOVE_ASSURANCE, + MOVE_FLAIL, + MOVE_SNATCH, + MOVE_WAKE_UP_SLAP, + MOVE_LAST_RESORT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GLAMEOW #if P_FAMILY_STUNKY - egg_moves(STUNKY, - MOVE_PURSUIT, - MOVE_LEER, - MOVE_SMOG, - MOVE_DOUBLE_EDGE, - MOVE_CRUNCH, - MOVE_SCARY_FACE, - MOVE_ASTONISH, - MOVE_PUNISHMENT, - MOVE_HAZE, - MOVE_IRON_TAIL, - MOVE_FOUL_PLAY, - MOVE_FLAME_BURST, - MOVE_PLAY_ROUGH), +static const u16 sStunkyEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_LEER, + MOVE_SMOG, + MOVE_DOUBLE_EDGE, + MOVE_CRUNCH, + MOVE_SCARY_FACE, + MOVE_ASTONISH, + MOVE_PUNISHMENT, + MOVE_HAZE, + MOVE_IRON_TAIL, + MOVE_FOUL_PLAY, + MOVE_FLAME_BURST, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_STUNKY #if P_FAMILY_CHATOT - egg_moves(CHATOT, - MOVE_ENCORE, - MOVE_NIGHT_SHADE, - MOVE_AGILITY, - MOVE_NASTY_PLOT, - MOVE_SUPERSONIC, - MOVE_STEEL_WING, - MOVE_SLEEP_TALK, - MOVE_DEFOG, - MOVE_AIR_CUTTER, - MOVE_BOOMBURST), +static const u16 sChatotEggMoveLearnset[] = { + MOVE_ENCORE, + MOVE_NIGHT_SHADE, + MOVE_AGILITY, + MOVE_NASTY_PLOT, + MOVE_SUPERSONIC, + MOVE_STEEL_WING, + MOVE_SLEEP_TALK, + MOVE_DEFOG, + MOVE_AIR_CUTTER, + MOVE_BOOMBURST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHATOT #if P_FAMILY_SPIRITOMB - egg_moves(SPIRITOMB, - MOVE_DESTINY_BOND, - MOVE_PAIN_SPLIT, - MOVE_SMOKESCREEN, - MOVE_IMPRISON, - MOVE_GRUDGE, - MOVE_SHADOW_SNEAK, - MOVE_CAPTIVATE, - MOVE_NIGHTMARE, - MOVE_FOUL_PLAY, - MOVE_DISABLE), +static const u16 sSpiritombEggMoveLearnset[] = { + MOVE_DESTINY_BOND, + MOVE_PAIN_SPLIT, + MOVE_SMOKESCREEN, + MOVE_IMPRISON, + MOVE_GRUDGE, + MOVE_SHADOW_SNEAK, + MOVE_CAPTIVATE, + MOVE_NIGHTMARE, + MOVE_FOUL_PLAY, + MOVE_DISABLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPIRITOMB #if P_FAMILY_GIBLE - egg_moves(GIBLE, - MOVE_DRAGON_BREATH, - MOVE_OUTRAGE, - MOVE_TWISTER, - MOVE_SCARY_FACE, - MOVE_DOUBLE_EDGE, - MOVE_THRASH, - MOVE_METAL_CLAW, - MOVE_SAND_TOMB, - MOVE_BODY_SLAM, - MOVE_IRON_HEAD, - MOVE_MUD_SHOT, - MOVE_ROCK_CLIMB, - MOVE_IRON_TAIL), +static const u16 sGibleEggMoveLearnset[] = { + MOVE_DRAGON_BREATH, + MOVE_OUTRAGE, + MOVE_TWISTER, + MOVE_SCARY_FACE, + MOVE_DOUBLE_EDGE, + MOVE_THRASH, + MOVE_METAL_CLAW, + MOVE_SAND_TOMB, + MOVE_BODY_SLAM, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_ROCK_CLIMB, + MOVE_IRON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GIBLE #if P_FAMILY_RIOLU - egg_moves(RIOLU, - MOVE_CROSS_CHOP, - MOVE_DETECT, - MOVE_BITE, - MOVE_MIND_READER, - MOVE_SKY_UPPERCUT, - MOVE_HIGH_JUMP_KICK, - MOVE_AGILITY, - MOVE_VACUUM_WAVE, - MOVE_CRUNCH, - MOVE_LOW_KICK, - MOVE_IRON_DEFENSE, - MOVE_BLAZE_KICK, - MOVE_BULLET_PUNCH, - MOVE_FOLLOW_ME, - MOVE_CIRCLE_THROW, - MOVE_METEOR_MASH), +static const u16 sRioluEggMoveLearnset[] = { + MOVE_CROSS_CHOP, + MOVE_DETECT, + MOVE_BITE, + MOVE_MIND_READER, + MOVE_SKY_UPPERCUT, + MOVE_HIGH_JUMP_KICK, + MOVE_AGILITY, + MOVE_VACUUM_WAVE, + MOVE_CRUNCH, + MOVE_LOW_KICK, + MOVE_IRON_DEFENSE, + MOVE_BLAZE_KICK, + MOVE_BULLET_PUNCH, + MOVE_FOLLOW_ME, + MOVE_CIRCLE_THROW, + MOVE_METEOR_MASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_RIOLU #if P_FAMILY_HIPPOPOTAS - egg_moves(HIPPOPOTAS, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_CURSE, - MOVE_SLACK_OFF, - MOVE_BODY_SLAM, - MOVE_SAND_TOMB, - MOVE_REVENGE, - MOVE_SLEEP_TALK, - MOVE_WHIRLWIND), +static const u16 sHippopotasEggMoveLearnset[] = { + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_CURSE, + MOVE_SLACK_OFF, + MOVE_BODY_SLAM, + MOVE_SAND_TOMB, + MOVE_REVENGE, + MOVE_SLEEP_TALK, + MOVE_WHIRLWIND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HIPPOPOTAS #if P_FAMILY_SKORUPI - egg_moves(SKORUPI, - MOVE_FEINT_ATTACK, - MOVE_SCREECH, - MOVE_SAND_ATTACK, - MOVE_SLASH, - MOVE_CONFUSE_RAY, - MOVE_WHIRLWIND, - MOVE_AGILITY, - MOVE_PURSUIT, - MOVE_NIGHT_SLASH, - MOVE_IRON_TAIL, - MOVE_TWINEEDLE, - MOVE_POISON_TAIL), +static const u16 sSkorupiEggMoveLearnset[] = { + MOVE_FEINT_ATTACK, + MOVE_SCREECH, + MOVE_SAND_ATTACK, + MOVE_SLASH, + MOVE_CONFUSE_RAY, + MOVE_WHIRLWIND, + MOVE_AGILITY, + MOVE_PURSUIT, + MOVE_NIGHT_SLASH, + MOVE_IRON_TAIL, + MOVE_TWINEEDLE, + MOVE_POISON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKORUPI #if P_FAMILY_CROAGUNK - egg_moves(CROAGUNK, - MOVE_ME_FIRST, - MOVE_FEINT, - MOVE_DYNAMIC_PUNCH, - MOVE_HEADBUTT, - MOVE_VACUUM_WAVE, - MOVE_MEDITATE, - MOVE_FAKE_OUT, - MOVE_WAKE_UP_SLAP, - MOVE_SMELLING_SALTS, - MOVE_CROSS_CHOP, - MOVE_BULLET_PUNCH, - MOVE_COUNTER, - MOVE_DRAIN_PUNCH, - MOVE_ACUPRESSURE, - MOVE_QUICK_GUARD), +static const u16 sCroagunkEggMoveLearnset[] = { + MOVE_ME_FIRST, + MOVE_FEINT, + MOVE_DYNAMIC_PUNCH, + MOVE_HEADBUTT, + MOVE_VACUUM_WAVE, + MOVE_MEDITATE, + MOVE_FAKE_OUT, + MOVE_WAKE_UP_SLAP, + MOVE_SMELLING_SALTS, + MOVE_CROSS_CHOP, + MOVE_BULLET_PUNCH, + MOVE_COUNTER, + MOVE_DRAIN_PUNCH, + MOVE_ACUPRESSURE, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CROAGUNK #if P_FAMILY_CARNIVINE - egg_moves(CARNIVINE, - MOVE_SLEEP_POWDER, - MOVE_STUN_SPORE, - MOVE_RAZOR_LEAF, - MOVE_SLAM, - MOVE_SYNTHESIS, - MOVE_MAGICAL_LEAF, - MOVE_LEECH_SEED, - MOVE_WORRY_SEED, - MOVE_GIGA_DRAIN, - MOVE_RAGE_POWDER, - MOVE_GRASS_WHISTLE, - MOVE_ACID_SPRAY), +static const u16 sCarnivineEggMoveLearnset[] = { + MOVE_SLEEP_POWDER, + MOVE_STUN_SPORE, + MOVE_RAZOR_LEAF, + MOVE_SLAM, + MOVE_SYNTHESIS, + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_WORRY_SEED, + MOVE_GIGA_DRAIN, + MOVE_RAGE_POWDER, + MOVE_GRASS_WHISTLE, + MOVE_ACID_SPRAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CARNIVINE #if P_FAMILY_FINNEON - egg_moves(FINNEON, - MOVE_SWEET_KISS, - MOVE_CHARM, - MOVE_FLAIL, - MOVE_AQUA_TAIL, - MOVE_SPLASH, - MOVE_PSYBEAM, - MOVE_TICKLE, - MOVE_AGILITY, - MOVE_BRINE, - MOVE_AURORA_BEAM, - MOVE_SIGNAL_BEAM, - MOVE_CONFUSE_RAY), +static const u16 sFinneonEggMoveLearnset[] = { + MOVE_SWEET_KISS, + MOVE_CHARM, + MOVE_FLAIL, + MOVE_AQUA_TAIL, + MOVE_SPLASH, + MOVE_PSYBEAM, + MOVE_TICKLE, + MOVE_AGILITY, + MOVE_BRINE, + MOVE_AURORA_BEAM, + MOVE_SIGNAL_BEAM, + MOVE_CONFUSE_RAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FINNEON #if P_FAMILY_SNOVER - egg_moves(SNOVER, - MOVE_LEECH_SEED, - MOVE_MAGICAL_LEAF, - MOVE_SEED_BOMB, - MOVE_GROWTH, - MOVE_DOUBLE_EDGE, - MOVE_MIST, - MOVE_STOMP, - MOVE_SKULL_BASH, - MOVE_AVALANCHE, - MOVE_NATURAL_GIFT, - MOVE_BULLET_SEED), +static const u16 sSnoverEggMoveLearnset[] = { + MOVE_LEECH_SEED, + MOVE_MAGICAL_LEAF, + MOVE_SEED_BOMB, + MOVE_GROWTH, + MOVE_DOUBLE_EDGE, + MOVE_MIST, + MOVE_STOMP, + MOVE_SKULL_BASH, + MOVE_AVALANCHE, + MOVE_NATURAL_GIFT, + MOVE_BULLET_SEED, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNOVER #if P_FAMILY_SNIVY - egg_moves(SNIVY, - MOVE_CAPTIVATE, - MOVE_NATURAL_GIFT, - MOVE_GLARE, - MOVE_IRON_TAIL, - MOVE_MAGICAL_LEAF, - MOVE_SWEET_SCENT, - MOVE_MIRROR_COAT, - MOVE_PURSUIT, - MOVE_MEAN_LOOK, - MOVE_TWISTER, - MOVE_GRASSY_TERRAIN), +static const u16 sSnivyEggMoveLearnset[] = { + MOVE_CAPTIVATE, + MOVE_NATURAL_GIFT, + MOVE_GLARE, + MOVE_IRON_TAIL, + MOVE_MAGICAL_LEAF, + MOVE_SWEET_SCENT, + MOVE_MIRROR_COAT, + MOVE_PURSUIT, + MOVE_MEAN_LOOK, + MOVE_TWISTER, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNIVY #if P_FAMILY_TEPIG - egg_moves(TEPIG, - MOVE_COVET, - MOVE_BODY_SLAM, - MOVE_THRASH, - MOVE_MAGNITUDE, - MOVE_SUPERPOWER, - MOVE_CURSE, - MOVE_ENDEAVOR, - MOVE_YAWN, - MOVE_SLEEP_TALK, - MOVE_HEAVY_SLAM, - MOVE_SUCKER_PUNCH, - MOVE_BURN_UP), +static const u16 sTepigEggMoveLearnset[] = { + MOVE_COVET, + MOVE_BODY_SLAM, + MOVE_THRASH, + MOVE_MAGNITUDE, + MOVE_SUPERPOWER, + MOVE_CURSE, + MOVE_ENDEAVOR, + MOVE_YAWN, + MOVE_SLEEP_TALK, + MOVE_HEAVY_SLAM, + MOVE_SUCKER_PUNCH, + MOVE_BURN_UP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TEPIG #if P_FAMILY_OSHAWOTT - egg_moves(OSHAWOTT, - MOVE_COPYCAT, - MOVE_DETECT, - MOVE_AIR_SLASH, - MOVE_ASSURANCE, - MOVE_BRINE, - MOVE_NIGHT_SLASH, - MOVE_TRUMP_CARD, - MOVE_SCREECH, - MOVE_SACRED_SWORD), +static const u16 sOshawottEggMoveLearnset[] = { + MOVE_COPYCAT, + MOVE_DETECT, + MOVE_AIR_SLASH, + MOVE_ASSURANCE, + MOVE_BRINE, + MOVE_NIGHT_SLASH, + MOVE_TRUMP_CARD, + MOVE_SCREECH, + MOVE_SACRED_SWORD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_OSHAWOTT #if P_FAMILY_PATRAT - egg_moves(PATRAT, - MOVE_FORESIGHT, - MOVE_IRON_TAIL, - MOVE_SCREECH, - MOVE_ASSURANCE, - MOVE_PURSUIT, - MOVE_REVENGE, - MOVE_FLAIL, - MOVE_TEARFUL_LOOK, - MOVE_BULLET_SEED), +static const u16 sPatratEggMoveLearnset[] = { + MOVE_FORESIGHT, + MOVE_IRON_TAIL, + MOVE_SCREECH, + MOVE_ASSURANCE, + MOVE_PURSUIT, + MOVE_REVENGE, + MOVE_FLAIL, + MOVE_TEARFUL_LOOK, + MOVE_BULLET_SEED, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PATRAT #if P_FAMILY_LILLIPUP - egg_moves(LILLIPUP, - MOVE_HOWL, - MOVE_SAND_ATTACK, - MOVE_MUD_SLAP, - MOVE_LICK, - MOVE_CHARM, - MOVE_ENDURE, - MOVE_YAWN, - MOVE_PURSUIT, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_ICE_FANG, - MOVE_AFTER_YOU, - MOVE_PSYCHIC_FANGS), +static const u16 sLillipupEggMoveLearnset[] = { + MOVE_HOWL, + MOVE_SAND_ATTACK, + MOVE_MUD_SLAP, + MOVE_LICK, + MOVE_CHARM, + MOVE_ENDURE, + MOVE_YAWN, + MOVE_PURSUIT, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_ICE_FANG, + MOVE_AFTER_YOU, + MOVE_PSYCHIC_FANGS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LILLIPUP #if P_FAMILY_PURRLOIN - egg_moves(PURRLOIN, - MOVE_PAY_DAY, - MOVE_FOUL_PLAY, - MOVE_FEINT_ATTACK, - MOVE_FAKE_TEARS, - MOVE_CHARM, - MOVE_ENCORE, - MOVE_YAWN, - MOVE_COVET, - MOVE_COPYCAT), +static const u16 sPurrloinEggMoveLearnset[] = { + MOVE_PAY_DAY, + MOVE_FOUL_PLAY, + MOVE_FEINT_ATTACK, + MOVE_FAKE_TEARS, + MOVE_CHARM, + MOVE_ENCORE, + MOVE_YAWN, + MOVE_COVET, + MOVE_COPYCAT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PURRLOIN #if P_FAMILY_PANSAGE - egg_moves(PANSAGE, - MOVE_COVET, - MOVE_LOW_KICK, - MOVE_TICKLE, - MOVE_NASTY_PLOT, - MOVE_ROLE_PLAY, - MOVE_ASTONISH, - MOVE_GRASS_WHISTLE, - MOVE_MAGICAL_LEAF, - MOVE_BULLET_SEED, - MOVE_LEAF_STORM, - MOVE_DISARMING_VOICE, - MOVE_SPIKY_SHIELD), +static const u16 sPansageEggMoveLearnset[] = { + MOVE_COVET, + MOVE_LOW_KICK, + MOVE_TICKLE, + MOVE_NASTY_PLOT, + MOVE_ROLE_PLAY, + MOVE_ASTONISH, + MOVE_GRASS_WHISTLE, + MOVE_MAGICAL_LEAF, + MOVE_BULLET_SEED, + MOVE_LEAF_STORM, + MOVE_DISARMING_VOICE, + MOVE_SPIKY_SHIELD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PANSAGE #if P_FAMILY_PANSEAR - egg_moves(PANSEAR, - MOVE_COVET, - MOVE_LOW_KICK, - MOVE_TICKLE, - MOVE_NASTY_PLOT, - MOVE_ROLE_PLAY, - MOVE_ASTONISH, - MOVE_SLEEP_TALK, - MOVE_FIRE_SPIN, - MOVE_FIRE_PUNCH, - MOVE_HEAT_WAVE, - MOVE_DISARMING_VOICE, - MOVE_BELCH, - MOVE_FLARE_BLITZ), +static const u16 sPansearEggMoveLearnset[] = { + MOVE_COVET, + MOVE_LOW_KICK, + MOVE_TICKLE, + MOVE_NASTY_PLOT, + MOVE_ROLE_PLAY, + MOVE_ASTONISH, + MOVE_SLEEP_TALK, + MOVE_FIRE_SPIN, + MOVE_FIRE_PUNCH, + MOVE_HEAT_WAVE, + MOVE_DISARMING_VOICE, + MOVE_BELCH, + MOVE_FLARE_BLITZ, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PANSEAR #if P_FAMILY_PANPOUR - egg_moves(PANPOUR, - MOVE_COVET, - MOVE_LOW_KICK, - MOVE_TICKLE, - MOVE_NASTY_PLOT, - MOVE_ROLE_PLAY, - MOVE_ASTONISH, - MOVE_AQUA_RING, - MOVE_AQUA_TAIL, - MOVE_MUD_SPORT, - MOVE_HYDRO_PUMP, - MOVE_DISARMING_VOICE), +static const u16 sPanpourEggMoveLearnset[] = { + MOVE_COVET, + MOVE_LOW_KICK, + MOVE_TICKLE, + MOVE_NASTY_PLOT, + MOVE_ROLE_PLAY, + MOVE_ASTONISH, + MOVE_AQUA_RING, + MOVE_AQUA_TAIL, + MOVE_MUD_SPORT, + MOVE_HYDRO_PUMP, + MOVE_DISARMING_VOICE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PANPOUR #if P_FAMILY_MUNNA - egg_moves(MUNNA, - MOVE_SLEEP_TALK, - MOVE_SECRET_POWER, - MOVE_BARRIER, - MOVE_MAGIC_COAT, - MOVE_HELPING_HAND, - MOVE_BATON_PASS, - MOVE_SWIFT, - MOVE_CURSE, - MOVE_SONIC_BOOM, - MOVE_HEALING_WISH), +static const u16 sMunnaEggMoveLearnset[] = { + MOVE_SLEEP_TALK, + MOVE_SECRET_POWER, + MOVE_BARRIER, + MOVE_MAGIC_COAT, + MOVE_HELPING_HAND, + MOVE_BATON_PASS, + MOVE_SWIFT, + MOVE_CURSE, + MOVE_SONIC_BOOM, + MOVE_HEALING_WISH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MUNNA #if P_FAMILY_PIDOVE - egg_moves(PIDOVE, - MOVE_STEEL_WING, - MOVE_HYPNOSIS, - MOVE_UPROAR, - MOVE_BESTOW, - MOVE_WISH, - MOVE_MORNING_SUN, - MOVE_LUCKY_CHANT, - MOVE_NIGHT_SLASH), +static const u16 sPidoveEggMoveLearnset[] = { + MOVE_STEEL_WING, + MOVE_HYPNOSIS, + MOVE_UPROAR, + MOVE_BESTOW, + MOVE_WISH, + MOVE_MORNING_SUN, + MOVE_LUCKY_CHANT, + MOVE_NIGHT_SLASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PIDOVE #if P_FAMILY_BLITZLE - egg_moves(BLITZLE, - MOVE_ME_FIRST, - MOVE_TAKE_DOWN, - MOVE_SAND_ATTACK, - MOVE_DOUBLE_KICK, - MOVE_SCREECH, - MOVE_RAGE, - MOVE_ENDURE, - MOVE_DOUBLE_EDGE, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_FEINT), +static const u16 sBlitzleEggMoveLearnset[] = { + MOVE_ME_FIRST, + MOVE_TAKE_DOWN, + MOVE_SAND_ATTACK, + MOVE_DOUBLE_KICK, + MOVE_SCREECH, + MOVE_RAGE, + MOVE_ENDURE, + MOVE_DOUBLE_EDGE, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_FEINT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BLITZLE #if P_FAMILY_ROGGENROLA - egg_moves(ROGGENROLA, - MOVE_MAGNITUDE, - MOVE_CURSE, - MOVE_AUTOTOMIZE, - MOVE_ROCK_TOMB, - MOVE_LOCK_ON, - MOVE_HEAVY_SLAM, - MOVE_TAKE_DOWN, - MOVE_GRAVITY, - MOVE_WIDE_GUARD), +static const u16 sRoggenrolaEggMoveLearnset[] = { + MOVE_MAGNITUDE, + MOVE_CURSE, + MOVE_AUTOTOMIZE, + MOVE_ROCK_TOMB, + MOVE_LOCK_ON, + MOVE_HEAVY_SLAM, + MOVE_TAKE_DOWN, + MOVE_GRAVITY, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROGGENROLA #if P_FAMILY_WOOBAT - egg_moves(WOOBAT, - MOVE_CHARM, - MOVE_KNOCK_OFF, - MOVE_FAKE_TEARS, - MOVE_SUPERSONIC, - MOVE_SYNCHRONOISE, - MOVE_STORED_POWER, - MOVE_ROOST, - MOVE_FLATTER, - MOVE_HELPING_HAND, - MOVE_CAPTIVATE, - MOVE_VENOM_DRENCH, - MOVE_PSYCHO_SHIFT), +static const u16 sWoobatEggMoveLearnset[] = { + MOVE_CHARM, + MOVE_KNOCK_OFF, + MOVE_FAKE_TEARS, + MOVE_SUPERSONIC, + MOVE_SYNCHRONOISE, + MOVE_STORED_POWER, + MOVE_ROOST, + MOVE_FLATTER, + MOVE_HELPING_HAND, + MOVE_CAPTIVATE, + MOVE_VENOM_DRENCH, + MOVE_PSYCHO_SHIFT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WOOBAT #if P_FAMILY_DRILBUR - egg_moves(DRILBUR, - MOVE_IRON_DEFENSE, - MOVE_RAPID_SPIN, - MOVE_EARTH_POWER, - MOVE_CRUSH_CLAW, - MOVE_METAL_SOUND, - MOVE_SUBMISSION, - MOVE_SKULL_BASH, - MOVE_ROCK_CLIMB), +static const u16 sDrilburEggMoveLearnset[] = { + MOVE_IRON_DEFENSE, + MOVE_RAPID_SPIN, + MOVE_EARTH_POWER, + MOVE_CRUSH_CLAW, + MOVE_METAL_SOUND, + MOVE_SUBMISSION, + MOVE_SKULL_BASH, + MOVE_ROCK_CLIMB, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DRILBUR #if P_FAMILY_AUDINO - egg_moves(AUDINO, - MOVE_WISH, - MOVE_HEAL_BELL, - MOVE_LUCKY_CHANT, - MOVE_ENCORE, - MOVE_BESTOW, - MOVE_SWEET_KISS, - MOVE_YAWN, - MOVE_SLEEP_TALK, - MOVE_HEALING_WISH, - MOVE_AMNESIA, - MOVE_DRAINING_KISS), +static const u16 sAudinoEggMoveLearnset[] = { + MOVE_WISH, + MOVE_HEAL_BELL, + MOVE_LUCKY_CHANT, + MOVE_ENCORE, + MOVE_BESTOW, + MOVE_SWEET_KISS, + MOVE_YAWN, + MOVE_SLEEP_TALK, + MOVE_HEALING_WISH, + MOVE_AMNESIA, + MOVE_DRAINING_KISS, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_AUDINO #if P_FAMILY_TIMBURR - egg_moves(TIMBURR, - MOVE_DRAIN_PUNCH, - MOVE_ENDURE, - MOVE_COUNTER, - MOVE_COMET_PUNCH, - MOVE_FORESIGHT, - MOVE_SMELLING_SALTS, - MOVE_DETECT, - MOVE_WIDE_GUARD, - MOVE_FORCE_PALM, - MOVE_REVERSAL, - MOVE_MACH_PUNCH, - MOVE_POWER_UP_PUNCH), +static const u16 sTimburrEggMoveLearnset[] = { + MOVE_DRAIN_PUNCH, + MOVE_ENDURE, + MOVE_COUNTER, + MOVE_COMET_PUNCH, + MOVE_FORESIGHT, + MOVE_SMELLING_SALTS, + MOVE_DETECT, + MOVE_WIDE_GUARD, + MOVE_FORCE_PALM, + MOVE_REVERSAL, + MOVE_MACH_PUNCH, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TIMBURR #if P_FAMILY_TYMPOLE - egg_moves(TYMPOLE, - MOVE_WATER_PULSE, - MOVE_REFRESH, - MOVE_MUD_SPORT, - MOVE_MUD_BOMB, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_MIST, - MOVE_EARTH_POWER, - MOVE_AFTER_YOU, - MOVE_VENOM_DRENCH), +static const u16 sTympoleEggMoveLearnset[] = { + MOVE_WATER_PULSE, + MOVE_REFRESH, + MOVE_MUD_SPORT, + MOVE_MUD_BOMB, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_MIST, + MOVE_EARTH_POWER, + MOVE_AFTER_YOU, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TYMPOLE #if P_FAMILY_SEWADDLE - egg_moves(SEWADDLE, - MOVE_SILVER_WIND, - MOVE_SCREECH, - MOVE_RAZOR_WIND, - MOVE_MIND_READER, - MOVE_AGILITY, - MOVE_ME_FIRST, - MOVE_BATON_PASS, - MOVE_CAMOUFLAGE, - MOVE_AIR_SLASH, - MOVE_GRASSY_TERRAIN), +static const u16 sSewaddleEggMoveLearnset[] = { + MOVE_SILVER_WIND, + MOVE_SCREECH, + MOVE_RAZOR_WIND, + MOVE_MIND_READER, + MOVE_AGILITY, + MOVE_ME_FIRST, + MOVE_BATON_PASS, + MOVE_CAMOUFLAGE, + MOVE_AIR_SLASH, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SEWADDLE #if P_FAMILY_VENIPEDE - egg_moves(VENIPEDE, - MOVE_TWINEEDLE, - MOVE_PIN_MISSILE, - MOVE_TOXIC_SPIKES, - MOVE_SPIKES, - MOVE_TAKE_DOWN, - MOVE_ROCK_CLIMB), +static const u16 sVenipedeEggMoveLearnset[] = { + MOVE_TWINEEDLE, + MOVE_PIN_MISSILE, + MOVE_TOXIC_SPIKES, + MOVE_SPIKES, + MOVE_TAKE_DOWN, + MOVE_ROCK_CLIMB, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VENIPEDE #if P_FAMILY_COTTONEE - egg_moves(COTTONEE, - MOVE_NATURAL_GIFT, - MOVE_ENCORE, - MOVE_TICKLE, - MOVE_FAKE_TEARS, - MOVE_GRASS_WHISTLE, - MOVE_MEMENTO, - MOVE_BEAT_UP, - MOVE_SWITCHEROO, - MOVE_WORRY_SEED, - MOVE_CAPTIVATE, - MOVE_MISTY_TERRAIN), +static const u16 sCottoneeEggMoveLearnset[] = { + MOVE_NATURAL_GIFT, + MOVE_ENCORE, + MOVE_TICKLE, + MOVE_FAKE_TEARS, + MOVE_GRASS_WHISTLE, + MOVE_MEMENTO, + MOVE_BEAT_UP, + MOVE_SWITCHEROO, + MOVE_WORRY_SEED, + MOVE_CAPTIVATE, + MOVE_MISTY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_COTTONEE #if P_FAMILY_PETILIL - egg_moves(PETILIL, - MOVE_NATURAL_GIFT, - MOVE_CHARM, - MOVE_ENDURE, - MOVE_INGRAIN, - MOVE_WORRY_SEED, - MOVE_GRASS_WHISTLE, - MOVE_SWEET_SCENT, - MOVE_BIDE, - MOVE_HEALING_WISH, - MOVE_ENCORE), +static const u16 sPetililEggMoveLearnset[] = { + MOVE_NATURAL_GIFT, + MOVE_CHARM, + MOVE_ENDURE, + MOVE_INGRAIN, + MOVE_WORRY_SEED, + MOVE_GRASS_WHISTLE, + MOVE_SWEET_SCENT, + MOVE_BIDE, + MOVE_HEALING_WISH, + MOVE_ENCORE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PETILIL #if P_FAMILY_BASCULIN - egg_moves(BASCULIN, - MOVE_SWIFT, - MOVE_BUBBLE_BEAM, - MOVE_MUD_SHOT, - MOVE_MUDDY_WATER, - MOVE_AGILITY, - MOVE_WHIRLPOOL, - MOVE_RAGE, - MOVE_BRINE, - MOVE_REVENGE, - MOVE_HEAD_SMASH), +static const u16 sBasculinEggMoveLearnset[] = { + MOVE_SWIFT, + MOVE_BUBBLE_BEAM, + MOVE_MUD_SHOT, + MOVE_MUDDY_WATER, + MOVE_AGILITY, + MOVE_WHIRLPOOL, + MOVE_RAGE, + MOVE_BRINE, + MOVE_REVENGE, + MOVE_HEAD_SMASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BASCULIN #if P_FAMILY_SANDILE - egg_moves(SANDILE, - MOVE_DOUBLE_EDGE, - MOVE_ROCK_CLIMB, - MOVE_PURSUIT, - MOVE_UPROAR, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_BEAT_UP, - MOVE_FOCUS_ENERGY, - MOVE_COUNTER, - MOVE_MEAN_LOOK, - MOVE_ME_FIRST, - MOVE_POWER_TRIP), +static const u16 sSandileEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_ROCK_CLIMB, + MOVE_PURSUIT, + MOVE_UPROAR, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_BEAT_UP, + MOVE_FOCUS_ENERGY, + MOVE_COUNTER, + MOVE_MEAN_LOOK, + MOVE_ME_FIRST, + MOVE_POWER_TRIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SANDILE #if P_FAMILY_DARUMAKA - egg_moves(DARUMAKA, - MOVE_SLEEP_TALK, - MOVE_FOCUS_PUNCH, - MOVE_FOCUS_ENERGY, - MOVE_ENDURE, - MOVE_HAMMER_ARM, - MOVE_TAKE_DOWN, - MOVE_FLAME_WHEEL, - MOVE_ENCORE, - MOVE_YAWN, - MOVE_SNATCH, - MOVE_EXTRASENSORY), +static const u16 sDarumakaEggMoveLearnset[] = { + MOVE_SLEEP_TALK, + MOVE_FOCUS_PUNCH, + MOVE_FOCUS_ENERGY, + MOVE_ENDURE, + MOVE_HAMMER_ARM, + MOVE_TAKE_DOWN, + MOVE_FLAME_WHEEL, + MOVE_ENCORE, + MOVE_YAWN, + MOVE_SNATCH, + MOVE_EXTRASENSORY, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sDarumakaGalarianEggMoveLearnset[] = { + MOVE_FOCUS_PUNCH, + MOVE_HAMMER_ARM, + MOVE_TAKE_DOWN, + MOVE_FLAME_WHEEL, + MOVE_YAWN, + MOVE_FREEZE_DRY, + MOVE_INCINERATE, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_DARUMAKA #if P_FAMILY_MARACTUS - egg_moves(MARACTUS, - MOVE_BULLET_SEED, - MOVE_BOUNCE, - MOVE_WORRY_SEED, - MOVE_LEECH_SEED, - MOVE_SEED_BOMB, - MOVE_WOOD_HAMMER, - MOVE_SPIKES, - MOVE_GRASS_WHISTLE, - MOVE_GRASSY_TERRAIN), +static const u16 sMaractusEggMoveLearnset[] = { + MOVE_BULLET_SEED, + MOVE_BOUNCE, + MOVE_WORRY_SEED, + MOVE_LEECH_SEED, + MOVE_SEED_BOMB, + MOVE_WOOD_HAMMER, + MOVE_SPIKES, + MOVE_GRASS_WHISTLE, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MARACTUS #if P_FAMILY_DWEBBLE - egg_moves(DWEBBLE, - MOVE_ENDURE, - MOVE_IRON_DEFENSE, - MOVE_NIGHT_SLASH, - MOVE_SAND_TOMB, - MOVE_COUNTER, - MOVE_CURSE, - MOVE_SPIKES, - MOVE_BLOCK, - MOVE_WIDE_GUARD, - MOVE_ROTOTILLER), +static const u16 sDwebbleEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_IRON_DEFENSE, + MOVE_NIGHT_SLASH, + MOVE_SAND_TOMB, + MOVE_COUNTER, + MOVE_CURSE, + MOVE_SPIKES, + MOVE_BLOCK, + MOVE_WIDE_GUARD, + MOVE_ROTOTILLER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DWEBBLE #if P_FAMILY_SCRAGGY - egg_moves(SCRAGGY, - MOVE_DRAIN_PUNCH, - MOVE_COUNTER, - MOVE_DRAGON_DANCE, - MOVE_DETECT, - MOVE_FAKE_OUT, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_AMNESIA, - MOVE_FEINT_ATTACK, - MOVE_ZEN_HEADBUTT, - MOVE_QUICK_GUARD, - MOVE_POWER_UP_PUNCH, - MOVE_ACID_SPRAY), +static const u16 sScraggyEggMoveLearnset[] = { + MOVE_DRAIN_PUNCH, + MOVE_COUNTER, + MOVE_DRAGON_DANCE, + MOVE_DETECT, + MOVE_FAKE_OUT, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_AMNESIA, + MOVE_FEINT_ATTACK, + MOVE_ZEN_HEADBUTT, + MOVE_QUICK_GUARD, + MOVE_POWER_UP_PUNCH, + MOVE_ACID_SPRAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SCRAGGY #if P_FAMILY_SIGILYPH - egg_moves(SIGILYPH, - MOVE_STORED_POWER, - MOVE_PSYCHO_SHIFT, - MOVE_ANCIENT_POWER, - MOVE_STEEL_WING, - MOVE_ROOST, - MOVE_SKILL_SWAP, - MOVE_FUTURE_SIGHT), +static const u16 sSigilyphEggMoveLearnset[] = { + MOVE_STORED_POWER, + MOVE_PSYCHO_SHIFT, + MOVE_ANCIENT_POWER, + MOVE_STEEL_WING, + MOVE_ROOST, + MOVE_SKILL_SWAP, + MOVE_FUTURE_SIGHT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SIGILYPH #if P_FAMILY_YAMASK - egg_moves(YAMASK, - MOVE_MEMENTO, - MOVE_FAKE_TEARS, - MOVE_NASTY_PLOT, - MOVE_ENDURE, - MOVE_HEAL_BLOCK, - MOVE_IMPRISON, - MOVE_NIGHTMARE, - MOVE_DISABLE, - MOVE_ALLY_SWITCH, - MOVE_TOXIC_SPIKES, - MOVE_CRAFTY_SHIELD), +static const u16 sYamaskEggMoveLearnset[] = { + MOVE_MEMENTO, + MOVE_FAKE_TEARS, + MOVE_NASTY_PLOT, + MOVE_ENDURE, + MOVE_HEAL_BLOCK, + MOVE_IMPRISON, + MOVE_NIGHTMARE, + MOVE_DISABLE, + MOVE_ALLY_SWITCH, + MOVE_TOXIC_SPIKES, + MOVE_CRAFTY_SHIELD, + MOVE_UNAVAILABLE, +}; #if P_GALARIAN_FORMS - egg_moves(YAMASK_GALARIAN, - MOVE_MEMENTO), +static const u16 sYamaskGalarianEggMoveLearnset[] = { + MOVE_MEMENTO, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_YAMASK #if P_FAMILY_TIRTOUGA - egg_moves(TIRTOUGA, - MOVE_WATER_PULSE, - MOVE_KNOCK_OFF, - MOVE_ROCK_THROW, - MOVE_SLAM, - MOVE_IRON_DEFENSE, - MOVE_FLAIL, - MOVE_WHIRLPOOL, - MOVE_BODY_SLAM, - MOVE_BIDE, - MOVE_GUARD_SWAP, - MOVE_LIQUIDATION), +static const u16 sTirtougaEggMoveLearnset[] = { + MOVE_WATER_PULSE, + MOVE_KNOCK_OFF, + MOVE_ROCK_THROW, + MOVE_SLAM, + MOVE_IRON_DEFENSE, + MOVE_FLAIL, + MOVE_WHIRLPOOL, + MOVE_BODY_SLAM, + MOVE_BIDE, + MOVE_GUARD_SWAP, + MOVE_LIQUIDATION, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TIRTOUGA #if P_FAMILY_ARCHEN - egg_moves(ARCHEN, - MOVE_STEEL_WING, - MOVE_DEFOG, - MOVE_DRAGON_PULSE, - MOVE_HEAD_SMASH, - MOVE_KNOCK_OFF, - MOVE_EARTH_POWER, - MOVE_BITE, - MOVE_ALLY_SWITCH, - MOVE_SWITCHEROO), +static const u16 sArchenEggMoveLearnset[] = { + MOVE_STEEL_WING, + MOVE_DEFOG, + MOVE_DRAGON_PULSE, + MOVE_HEAD_SMASH, + MOVE_KNOCK_OFF, + MOVE_EARTH_POWER, + MOVE_BITE, + MOVE_ALLY_SWITCH, + MOVE_SWITCHEROO, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ARCHEN #if P_FAMILY_TRUBBISH - egg_moves(TRUBBISH, - MOVE_SPIKES, - MOVE_ROLLOUT, - MOVE_HAZE, - MOVE_CURSE, - MOVE_ROCK_BLAST, - MOVE_SAND_ATTACK, - MOVE_MUD_SPORT, - MOVE_SELF_DESTRUCT, - MOVE_AUTOTOMIZE), +static const u16 sTrubbishEggMoveLearnset[] = { + MOVE_SPIKES, + MOVE_ROLLOUT, + MOVE_HAZE, + MOVE_CURSE, + MOVE_ROCK_BLAST, + MOVE_SAND_ATTACK, + MOVE_MUD_SPORT, + MOVE_SELF_DESTRUCT, + MOVE_AUTOTOMIZE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TRUBBISH #if P_FAMILY_ZORUA - egg_moves(ZORUA, - MOVE_DETECT, - MOVE_CAPTIVATE, - MOVE_DARK_PULSE, - MOVE_SNATCH, - MOVE_MEMENTO, - MOVE_SUCKER_PUNCH, - MOVE_EXTRASENSORY, - MOVE_COUNTER, - MOVE_COPYCAT), +static const u16 sZoruaEggMoveLearnset[] = { + MOVE_DETECT, + MOVE_CAPTIVATE, + MOVE_DARK_PULSE, + MOVE_SNATCH, + MOVE_MEMENTO, + MOVE_SUCKER_PUNCH, + MOVE_EXTRASENSORY, + MOVE_COUNTER, + MOVE_COPYCAT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ZORUA #if P_FAMILY_MINCCINO - egg_moves(MINCCINO, - MOVE_IRON_TAIL, - MOVE_TAIL_WHIP, - MOVE_AQUA_TAIL, - MOVE_MUD_SLAP, - MOVE_KNOCK_OFF, - MOVE_FAKE_TEARS, - MOVE_SLEEP_TALK, - MOVE_ENDURE, - MOVE_FLAIL), +static const u16 sMinccinoEggMoveLearnset[] = { + MOVE_IRON_TAIL, + MOVE_TAIL_WHIP, + MOVE_AQUA_TAIL, + MOVE_MUD_SLAP, + MOVE_KNOCK_OFF, + MOVE_FAKE_TEARS, + MOVE_SLEEP_TALK, + MOVE_ENDURE, + MOVE_FLAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MINCCINO #if P_FAMILY_GOTHITA - egg_moves(GOTHITA, - MOVE_MIRROR_COAT, - MOVE_UPROAR, - MOVE_MIRACLE_EYE, - MOVE_CAPTIVATE, - MOVE_MEAN_LOOK, - MOVE_DARK_PULSE, - MOVE_HEAL_PULSE), +static const u16 sGothitaEggMoveLearnset[] = { + MOVE_MIRROR_COAT, + MOVE_UPROAR, + MOVE_MIRACLE_EYE, + MOVE_CAPTIVATE, + MOVE_MEAN_LOOK, + MOVE_DARK_PULSE, + MOVE_HEAL_PULSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GOTHITA #if P_FAMILY_SOLOSIS - egg_moves(SOLOSIS, - MOVE_NIGHT_SHADE, - MOVE_ASTONISH, - MOVE_CONFUSE_RAY, - MOVE_ACID_ARMOR, - MOVE_TRICK, - MOVE_IMPRISON, - MOVE_SECRET_POWER, - MOVE_ASTONISH, - MOVE_HELPING_HAND), +static const u16 sSolosisEggMoveLearnset[] = { + MOVE_NIGHT_SHADE, + MOVE_ASTONISH, + MOVE_CONFUSE_RAY, + MOVE_ACID_ARMOR, + MOVE_TRICK, + MOVE_IMPRISON, + MOVE_SECRET_POWER, + MOVE_ASTONISH, + MOVE_HELPING_HAND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SOLOSIS #if P_FAMILY_DUCKLETT - egg_moves(DUCKLETT, - MOVE_STEEL_WING, - MOVE_BRINE, - MOVE_GUST, - MOVE_AIR_CUTTER, - MOVE_MIRROR_MOVE, - MOVE_ME_FIRST, - MOVE_LUCKY_CHANT, - MOVE_MUD_SPORT, - MOVE_AQUA_JET), +static const u16 sDucklettEggMoveLearnset[] = { + MOVE_STEEL_WING, + MOVE_BRINE, + MOVE_GUST, + MOVE_AIR_CUTTER, + MOVE_MIRROR_MOVE, + MOVE_ME_FIRST, + MOVE_LUCKY_CHANT, + MOVE_MUD_SPORT, + MOVE_AQUA_JET, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DUCKLETT #if P_FAMILY_VANILLITE - egg_moves(VANILLITE, - MOVE_WATER_PULSE, - MOVE_NATURAL_GIFT, - MOVE_IMPRISON, - MOVE_AUTOTOMIZE, - MOVE_IRON_DEFENSE, - MOVE_MAGNET_RISE, - MOVE_ICE_SHARD, - MOVE_POWDER_SNOW), +static const u16 sVanilliteEggMoveLearnset[] = { + MOVE_WATER_PULSE, + MOVE_NATURAL_GIFT, + MOVE_IMPRISON, + MOVE_AUTOTOMIZE, + MOVE_IRON_DEFENSE, + MOVE_MAGNET_RISE, + MOVE_ICE_SHARD, + MOVE_POWDER_SNOW, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VANILLITE #if P_FAMILY_DEERLING - egg_moves(DEERLING, - MOVE_FAKE_TEARS, - MOVE_NATURAL_GIFT, - MOVE_SYNTHESIS, - MOVE_WORRY_SEED, - MOVE_ODOR_SLEUTH, - MOVE_AGILITY, - MOVE_SLEEP_TALK, - MOVE_BATON_PASS, - MOVE_GRASS_WHISTLE, - MOVE_HEADBUTT), +static const u16 sDeerlingEggMoveLearnset[] = { + MOVE_FAKE_TEARS, + MOVE_NATURAL_GIFT, + MOVE_SYNTHESIS, + MOVE_WORRY_SEED, + MOVE_ODOR_SLEUTH, + MOVE_AGILITY, + MOVE_SLEEP_TALK, + MOVE_BATON_PASS, + MOVE_GRASS_WHISTLE, + MOVE_HEADBUTT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DEERLING #if P_FAMILY_EMOLGA - egg_moves(EMOLGA, - MOVE_ROOST, - MOVE_IRON_TAIL, - MOVE_ASTONISH, - MOVE_AIR_SLASH, - MOVE_SHOCK_WAVE, - MOVE_CHARM, - MOVE_COVET, - MOVE_TICKLE, - MOVE_BATON_PASS, - MOVE_ION_DELUGE, - MOVE_SPEED_SWAP), +static const u16 sEmolgaEggMoveLearnset[] = { + MOVE_ROOST, + MOVE_IRON_TAIL, + MOVE_ASTONISH, + MOVE_AIR_SLASH, + MOVE_SHOCK_WAVE, + MOVE_CHARM, + MOVE_COVET, + MOVE_TICKLE, + MOVE_BATON_PASS, + MOVE_ION_DELUGE, + MOVE_SPEED_SWAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_EMOLGA #if P_FAMILY_KARRABLAST - egg_moves(KARRABLAST, - MOVE_MEGAHORN, - MOVE_PURSUIT, - MOVE_COUNTER, - MOVE_HORN_ATTACK, - MOVE_FEINT_ATTACK, - MOVE_BUG_BITE, - MOVE_SCREECH, - MOVE_KNOCK_OFF, - MOVE_DRILL_RUN), +static const u16 sKarrablastEggMoveLearnset[] = { + MOVE_MEGAHORN, + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_HORN_ATTACK, + MOVE_FEINT_ATTACK, + MOVE_BUG_BITE, + MOVE_SCREECH, + MOVE_KNOCK_OFF, + MOVE_DRILL_RUN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KARRABLAST #if P_FAMILY_FOONGUS - egg_moves(FOONGUS, - MOVE_GASTRO_ACID, - MOVE_GROWTH, - MOVE_POISON_POWDER, - MOVE_STUN_SPORE, - MOVE_ROLLOUT, - MOVE_DEFENSE_CURL, - MOVE_ENDURE, - MOVE_BODY_SLAM), +static const u16 sFoongusEggMoveLearnset[] = { + MOVE_GASTRO_ACID, + MOVE_GROWTH, + MOVE_POISON_POWDER, + MOVE_STUN_SPORE, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_BODY_SLAM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FOONGUS #if P_FAMILY_FRILLISH - egg_moves(FRILLISH, - MOVE_ACID_ARMOR, - MOVE_CONFUSE_RAY, - MOVE_PAIN_SPLIT, - MOVE_MIST, - MOVE_RECOVER, - MOVE_CONSTRICT), +static const u16 sFrillishEggMoveLearnset[] = { + MOVE_ACID_ARMOR, + MOVE_CONFUSE_RAY, + MOVE_PAIN_SPLIT, + MOVE_MIST, + MOVE_RECOVER, + MOVE_CONSTRICT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FRILLISH #if P_FAMILY_ALOMOMOLA - egg_moves(ALOMOMOLA, - MOVE_PAIN_SPLIT, - MOVE_REFRESH, - MOVE_TICKLE, - MOVE_MIRROR_COAT, - MOVE_MIST, - MOVE_ENDURE), +static const u16 sAlomomolaEggMoveLearnset[] = { + MOVE_PAIN_SPLIT, + MOVE_REFRESH, + MOVE_TICKLE, + MOVE_MIRROR_COAT, + MOVE_MIST, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ALOMOMOLA #if P_FAMILY_JOLTIK - egg_moves(JOLTIK, - MOVE_PIN_MISSILE, - MOVE_POISON_STING, - MOVE_CROSS_POISON, - MOVE_ROCK_CLIMB, - MOVE_PURSUIT, - MOVE_DISABLE, - MOVE_FEINT_ATTACK, - MOVE_CAMOUFLAGE, - MOVE_LUNGE), +static const u16 sJoltikEggMoveLearnset[] = { + MOVE_PIN_MISSILE, + MOVE_POISON_STING, + MOVE_CROSS_POISON, + MOVE_ROCK_CLIMB, + MOVE_PURSUIT, + MOVE_DISABLE, + MOVE_FEINT_ATTACK, + MOVE_CAMOUFLAGE, + MOVE_LUNGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_JOLTIK #if P_FAMILY_FERROSEED - egg_moves(FERROSEED, - MOVE_BULLET_SEED, - MOVE_LEECH_SEED, - MOVE_SPIKES, - MOVE_WORRY_SEED, - MOVE_SEED_BOMB, - MOVE_GRAVITY, - MOVE_ROCK_CLIMB, - MOVE_STEALTH_ROCK, - MOVE_ACID_SPRAY), +static const u16 sFerroseedEggMoveLearnset[] = { + MOVE_BULLET_SEED, + MOVE_LEECH_SEED, + MOVE_SPIKES, + MOVE_WORRY_SEED, + MOVE_SEED_BOMB, + MOVE_GRAVITY, + MOVE_ROCK_CLIMB, + MOVE_STEALTH_ROCK, + MOVE_ACID_SPRAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FERROSEED #if P_FAMILY_ELGYEM - egg_moves(ELGYEM, - MOVE_TELEPORT, - MOVE_DISABLE, - MOVE_ASTONISH, - MOVE_POWER_SWAP, - MOVE_GUARD_SWAP, - MOVE_BARRIER, - MOVE_NASTY_PLOT, - MOVE_SKILL_SWAP, - MOVE_COSMIC_POWER, - MOVE_ALLY_SWITCH), +static const u16 sElgyemEggMoveLearnset[] = { + MOVE_TELEPORT, + MOVE_DISABLE, + MOVE_ASTONISH, + MOVE_POWER_SWAP, + MOVE_GUARD_SWAP, + MOVE_BARRIER, + MOVE_NASTY_PLOT, + MOVE_SKILL_SWAP, + MOVE_COSMIC_POWER, + MOVE_ALLY_SWITCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ELGYEM #if P_FAMILY_LITWICK - egg_moves(LITWICK, - MOVE_ACID_ARMOR, - MOVE_HEAT_WAVE, - MOVE_HAZE, - MOVE_ENDURE, - MOVE_CAPTIVATE, - MOVE_ACID, - MOVE_CLEAR_SMOG, - MOVE_POWER_SPLIT), +static const u16 sLitwickEggMoveLearnset[] = { + MOVE_ACID_ARMOR, + MOVE_HEAT_WAVE, + MOVE_HAZE, + MOVE_ENDURE, + MOVE_CAPTIVATE, + MOVE_ACID, + MOVE_CLEAR_SMOG, + MOVE_POWER_SPLIT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LITWICK #if P_FAMILY_AXEW - egg_moves(AXEW, - MOVE_COUNTER, - MOVE_FOCUS_ENERGY, - MOVE_REVERSAL, - MOVE_ENDURE, - MOVE_RAZOR_WIND, - MOVE_NIGHT_SLASH, - MOVE_ENDEAVOR, - MOVE_IRON_TAIL, - MOVE_DRAGON_PULSE, - MOVE_HARDEN), +static const u16 sAxewEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_FOCUS_ENERGY, + MOVE_REVERSAL, + MOVE_ENDURE, + MOVE_RAZOR_WIND, + MOVE_NIGHT_SLASH, + MOVE_ENDEAVOR, + MOVE_IRON_TAIL, + MOVE_DRAGON_PULSE, + MOVE_HARDEN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_AXEW #if P_FAMILY_CUBCHOO - egg_moves(CUBCHOO, - MOVE_YAWN, - MOVE_AVALANCHE, - MOVE_ENCORE, - MOVE_ICE_PUNCH, - MOVE_NIGHT_SLASH, - MOVE_ASSURANCE, - MOVE_SLEEP_TALK, - MOVE_FOCUS_PUNCH, - MOVE_PLAY_ROUGH), +static const u16 sCubchooEggMoveLearnset[] = { + MOVE_YAWN, + MOVE_AVALANCHE, + MOVE_ENCORE, + MOVE_ICE_PUNCH, + MOVE_NIGHT_SLASH, + MOVE_ASSURANCE, + MOVE_SLEEP_TALK, + MOVE_FOCUS_PUNCH, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CUBCHOO #if P_FAMILY_SHELMET - egg_moves(SHELMET, - MOVE_ENDURE, - MOVE_BATON_PASS, - MOVE_DOUBLE_EDGE, - MOVE_ENCORE, - MOVE_GUARD_SPLIT, - MOVE_MIND_READER, - MOVE_MUD_SLAP, - MOVE_SPIKES, - MOVE_FEINT, - MOVE_PURSUIT, - MOVE_TOXIC_SPIKES), +static const u16 sShelmetEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_BATON_PASS, + MOVE_DOUBLE_EDGE, + MOVE_ENCORE, + MOVE_GUARD_SPLIT, + MOVE_MIND_READER, + MOVE_MUD_SLAP, + MOVE_SPIKES, + MOVE_FEINT, + MOVE_PURSUIT, + MOVE_TOXIC_SPIKES, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SHELMET #if P_FAMILY_STUNFISK - egg_moves(STUNFISK, - MOVE_SHOCK_WAVE, - MOVE_EARTH_POWER, - MOVE_YAWN, - MOVE_SLEEP_TALK, - MOVE_ASTONISH, - MOVE_CURSE, - MOVE_SPITE, - MOVE_SPARK, - MOVE_PAIN_SPLIT, - MOVE_EERIE_IMPULSE, - MOVE_REFLECT_TYPE, - MOVE_ME_FIRST), +static const u16 sStunfiskEggMoveLearnset[] = { + MOVE_SHOCK_WAVE, + MOVE_EARTH_POWER, + MOVE_YAWN, + MOVE_SLEEP_TALK, + MOVE_ASTONISH, + MOVE_CURSE, + MOVE_SPITE, + MOVE_SPARK, + MOVE_PAIN_SPLIT, + MOVE_EERIE_IMPULSE, + MOVE_REFLECT_TYPE, + MOVE_ME_FIRST, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sStunfiskGalarianEggMoveLearnset[] = { + MOVE_BIND, + MOVE_YAWN, + MOVE_ASTONISH, + MOVE_CURSE, + MOVE_SPITE, + MOVE_COUNTER, + MOVE_PAIN_SPLIT, + MOVE_REFLECT_TYPE, + MOVE_UNAVAILABLE, +}; #endif //P_GALARIAN_FORMS #endif //P_FAMILY_STUNFISK #if P_FAMILY_MIENFOO - egg_moves(MIENFOO, - MOVE_ENDURE, - MOVE_VITAL_THROW, - MOVE_BATON_PASS, - MOVE_SMELLING_SALTS, - MOVE_LOW_KICK, - MOVE_FEINT, - MOVE_ME_FIRST, - MOVE_KNOCK_OFF, - MOVE_ALLY_SWITCH), +static const u16 sMienfooEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_VITAL_THROW, + MOVE_BATON_PASS, + MOVE_SMELLING_SALTS, + MOVE_LOW_KICK, + MOVE_FEINT, + MOVE_ME_FIRST, + MOVE_KNOCK_OFF, + MOVE_ALLY_SWITCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MIENFOO #if P_FAMILY_DRUDDIGON - egg_moves(DRUDDIGON, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_CRUSH_CLAW, - MOVE_FEINT_ATTACK, - MOVE_PURSUIT, - MOVE_IRON_TAIL, - MOVE_POISON_TAIL, - MOVE_SNATCH, - MOVE_METAL_CLAW, - MOVE_GLARE, - MOVE_SUCKER_PUNCH), +static const u16 sDruddigonEggMoveLearnset[] = { + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_CRUSH_CLAW, + MOVE_FEINT_ATTACK, + MOVE_PURSUIT, + MOVE_IRON_TAIL, + MOVE_POISON_TAIL, + MOVE_SNATCH, + MOVE_METAL_CLAW, + MOVE_GLARE, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DRUDDIGON #if P_FAMILY_PAWNIARD - egg_moves(PAWNIARD, - MOVE_REVENGE, - MOVE_SUCKER_PUNCH, - MOVE_PURSUIT, - MOVE_HEADBUTT, - MOVE_STEALTH_ROCK, - MOVE_PSYCHO_CUT, - MOVE_MEAN_LOOK, - MOVE_QUICK_GUARD), +static const u16 sPawniardEggMoveLearnset[] = { + MOVE_REVENGE, + MOVE_SUCKER_PUNCH, + MOVE_PURSUIT, + MOVE_HEADBUTT, + MOVE_STEALTH_ROCK, + MOVE_PSYCHO_CUT, + MOVE_MEAN_LOOK, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PAWNIARD #if P_FAMILY_BOUFFALANT - egg_moves(BOUFFALANT, - MOVE_STOMP, - MOVE_ROCK_CLIMB, - MOVE_HEADBUTT, - MOVE_SKULL_BASH, - MOVE_MUD_SHOT, - MOVE_MUD_SLAP, - MOVE_IRON_HEAD, - MOVE_AMNESIA, - MOVE_BELCH, - MOVE_COTTON_GUARD), +static const u16 sBouffalantEggMoveLearnset[] = { + MOVE_STOMP, + MOVE_ROCK_CLIMB, + MOVE_HEADBUTT, + MOVE_SKULL_BASH, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_IRON_HEAD, + MOVE_AMNESIA, + MOVE_BELCH, + MOVE_COTTON_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BOUFFALANT #if P_FAMILY_VULLABY - egg_moves(VULLABY, - MOVE_STEEL_WING, - MOVE_MEAN_LOOK, - MOVE_ROOST, - MOVE_SCARY_FACE, - MOVE_KNOCK_OFF, - MOVE_FAKE_TEARS, - MOVE_FOUL_PLAY), +static const u16 sVullabyEggMoveLearnset[] = { + MOVE_STEEL_WING, + MOVE_MEAN_LOOK, + MOVE_ROOST, + MOVE_SCARY_FACE, + MOVE_KNOCK_OFF, + MOVE_FAKE_TEARS, + MOVE_FOUL_PLAY, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VULLABY #if P_FAMILY_HEATMOR - egg_moves(HEATMOR, - MOVE_PURSUIT, - MOVE_WRAP, - MOVE_NIGHT_SLASH, - MOVE_CURSE, - MOVE_BODY_SLAM, - MOVE_HEAT_WAVE, - MOVE_FEINT_ATTACK, - MOVE_SUCKER_PUNCH, - MOVE_TICKLE, - MOVE_SLEEP_TALK, - MOVE_BELCH), +static const u16 sHeatmorEggMoveLearnset[] = { + MOVE_PURSUIT, + MOVE_WRAP, + MOVE_NIGHT_SLASH, + MOVE_CURSE, + MOVE_BODY_SLAM, + MOVE_HEAT_WAVE, + MOVE_FEINT_ATTACK, + MOVE_SUCKER_PUNCH, + MOVE_TICKLE, + MOVE_SLEEP_TALK, + MOVE_BELCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HEATMOR #if P_FAMILY_DURANT - egg_moves(DURANT, - MOVE_SCREECH, - MOVE_ENDURE, - MOVE_ROCK_CLIMB, - MOVE_BATON_PASS, - MOVE_THUNDER_FANG, - MOVE_FEINT_ATTACK), +static const u16 sDurantEggMoveLearnset[] = { + MOVE_SCREECH, + MOVE_ENDURE, + MOVE_ROCK_CLIMB, + MOVE_BATON_PASS, + MOVE_THUNDER_FANG, + MOVE_FEINT_ATTACK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DURANT #if P_FAMILY_DEINO - egg_moves(DEINO, - MOVE_FIRE_FANG, - MOVE_THUNDER_FANG, - MOVE_ICE_FANG, - MOVE_DOUBLE_HIT, - MOVE_ASTONISH, - MOVE_EARTH_POWER, - MOVE_SCREECH, - MOVE_HEAD_SMASH, - MOVE_ASSURANCE, - MOVE_DARK_PULSE, - MOVE_BELCH), +static const u16 sDeinoEggMoveLearnset[] = { + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_ICE_FANG, + MOVE_DOUBLE_HIT, + MOVE_ASTONISH, + MOVE_EARTH_POWER, + MOVE_SCREECH, + MOVE_HEAD_SMASH, + MOVE_ASSURANCE, + MOVE_DARK_PULSE, + MOVE_BELCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DEINO #if P_FAMILY_LARVESTA - egg_moves(LARVESTA, - MOVE_STRING_SHOT, - MOVE_HARDEN, - MOVE_FORESIGHT, - MOVE_ENDURE, - MOVE_ZEN_HEADBUTT, - MOVE_MORNING_SUN, - MOVE_MAGNET_RISE), +static const u16 sLarvestaEggMoveLearnset[] = { + MOVE_STRING_SHOT, + MOVE_HARDEN, + MOVE_FORESIGHT, + MOVE_ENDURE, + MOVE_ZEN_HEADBUTT, + MOVE_MORNING_SUN, + MOVE_MAGNET_RISE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LARVESTA #if P_FAMILY_CHESPIN - egg_moves(CHESPIN, - MOVE_SYNTHESIS, - MOVE_BELLY_DRUM, - MOVE_CURSE, - MOVE_QUICK_GUARD, - MOVE_SPIKES, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_POWER_UP_PUNCH), +static const u16 sChespinEggMoveLearnset[] = { + MOVE_SYNTHESIS, + MOVE_BELLY_DRUM, + MOVE_CURSE, + MOVE_QUICK_GUARD, + MOVE_SPIKES, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHESPIN #if P_FAMILY_FENNEKIN - egg_moves(FENNEKIN, - MOVE_WISH, - MOVE_HYPNOSIS, - MOVE_HEAT_WAVE, - MOVE_MAGIC_COAT, - MOVE_PSYCHIC_TERRAIN), +static const u16 sFennekinEggMoveLearnset[] = { + MOVE_WISH, + MOVE_HYPNOSIS, + MOVE_HEAT_WAVE, + MOVE_MAGIC_COAT, + MOVE_PSYCHIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FENNEKIN #if P_FAMILY_FROAKIE - egg_moves(FROAKIE, - MOVE_BESTOW, - MOVE_MIND_READER, - MOVE_TOXIC_SPIKES, - MOVE_MUD_SPORT, - MOVE_CAMOUFLAGE, - MOVE_WATER_SPORT, - MOVE_POWER_UP_PUNCH), +static const u16 sFroakieEggMoveLearnset[] = { + MOVE_BESTOW, + MOVE_MIND_READER, + MOVE_TOXIC_SPIKES, + MOVE_MUD_SPORT, + MOVE_CAMOUFLAGE, + MOVE_WATER_SPORT, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FROAKIE #if P_FAMILY_BUNNELBY - egg_moves(BUNNELBY, - MOVE_SPIKES, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT), +static const u16 sBunnelbyEggMoveLearnset[] = { + MOVE_SPIKES, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BUNNELBY #if P_FAMILY_FLETCHLING - egg_moves(FLETCHLING, - MOVE_TAILWIND, - MOVE_SNATCH, - MOVE_QUICK_GUARD), +static const u16 sFletchlingEggMoveLearnset[] = { + MOVE_TAILWIND, + MOVE_SNATCH, + MOVE_QUICK_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FLETCHLING #if P_FAMILY_SCATTERBUG - egg_moves(SCATTERBUG, - MOVE_STUN_SPORE, - MOVE_POISON_POWDER, - MOVE_RAGE_POWDER), +static const u16 sScatterbugEggMoveLearnset[] = { + MOVE_STUN_SPORE, + MOVE_POISON_POWDER, + MOVE_RAGE_POWDER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SCATTERBUG #if P_FAMILY_LITLEO - egg_moves(LITLEO, - MOVE_ENTRAINMENT, - MOVE_YAWN, - MOVE_SNATCH, - MOVE_FIRE_SPIN, - MOVE_FLARE_BLITZ), +static const u16 sLitleoEggMoveLearnset[] = { + MOVE_ENTRAINMENT, + MOVE_YAWN, + MOVE_SNATCH, + MOVE_FIRE_SPIN, + MOVE_FLARE_BLITZ, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LITLEO #if P_FAMILY_FLABEBE - egg_moves(FLABEBE, - MOVE_COPYCAT, - MOVE_CAPTIVATE, - MOVE_CAMOUFLAGE, - MOVE_TEARFUL_LOOK), +static const u16 sFlabebeEggMoveLearnset[] = { + MOVE_COPYCAT, + MOVE_CAPTIVATE, + MOVE_CAMOUFLAGE, + MOVE_TEARFUL_LOOK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FLABEBE #if P_FAMILY_SKIDDO - egg_moves(SKIDDO, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_MILK_DRINK, - MOVE_GRASSY_TERRAIN), +static const u16 sSkiddoEggMoveLearnset[] = { + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_MILK_DRINK, + MOVE_GRASSY_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKIDDO #if P_FAMILY_PANCHAM - egg_moves(PANCHAM, - MOVE_QUASH, - MOVE_ME_FIRST, - MOVE_QUICK_GUARD, - MOVE_FOUL_PLAY, - MOVE_STORM_THROW, - MOVE_POWER_TRIP), +static const u16 sPanchamEggMoveLearnset[] = { + MOVE_QUASH, + MOVE_ME_FIRST, + MOVE_QUICK_GUARD, + MOVE_FOUL_PLAY, + MOVE_STORM_THROW, + MOVE_POWER_TRIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PANCHAM #if P_FAMILY_FURFROU - egg_moves(FURFROU, - MOVE_ROLE_PLAY, - MOVE_WORK_UP, - MOVE_MIMIC, - MOVE_CAPTIVATE, - MOVE_REFRESH), +static const u16 sFurfrouEggMoveLearnset[] = { + MOVE_ROLE_PLAY, + MOVE_WORK_UP, + MOVE_MIMIC, + MOVE_CAPTIVATE, + MOVE_REFRESH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FURFROU #if P_FAMILY_ESPURR - egg_moves(ESPURR, - MOVE_TRICK, - MOVE_YAWN, - MOVE_ASSIST, - MOVE_BARRIER), +static const u16 sEspurrEggMoveLearnset[] = { + MOVE_TRICK, + MOVE_YAWN, + MOVE_ASSIST, + MOVE_BARRIER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ESPURR #if P_FAMILY_HONEDGE - egg_moves(HONEDGE, - MOVE_METAL_SOUND, - MOVE_SHADOW_SNEAK, - MOVE_DESTINY_BOND, - MOVE_WIDE_GUARD), +static const u16 sHonedgeEggMoveLearnset[] = { + MOVE_METAL_SOUND, + MOVE_SHADOW_SNEAK, + MOVE_DESTINY_BOND, + MOVE_WIDE_GUARD, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HONEDGE #if P_FAMILY_SPRITZEE - egg_moves(SPRITZEE, - MOVE_DISABLE, - MOVE_WISH, - MOVE_CAPTIVATE, - MOVE_REFRESH, - MOVE_NASTY_PLOT), +static const u16 sSpritzeeEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_WISH, + MOVE_CAPTIVATE, + MOVE_REFRESH, + MOVE_NASTY_PLOT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPRITZEE #if P_FAMILY_SWIRLIX - egg_moves(SWIRLIX, - MOVE_AFTER_YOU, - MOVE_YAWN, - MOVE_BELLY_DRUM, - MOVE_COPYCAT, - MOVE_STICKY_WEB), +static const u16 sSwirlixEggMoveLearnset[] = { + MOVE_AFTER_YOU, + MOVE_YAWN, + MOVE_BELLY_DRUM, + MOVE_COPYCAT, + MOVE_STICKY_WEB, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SWIRLIX #if P_FAMILY_INKAY - egg_moves(INKAY, - MOVE_SIMPLE_BEAM, - MOVE_POWER_SPLIT, - MOVE_CAMOUFLAGE, - MOVE_FLATTER, - MOVE_DESTINY_BOND, - MOVE_GUARD_SWAP), +static const u16 sInkayEggMoveLearnset[] = { + MOVE_SIMPLE_BEAM, + MOVE_POWER_SPLIT, + MOVE_CAMOUFLAGE, + MOVE_FLATTER, + MOVE_DESTINY_BOND, + MOVE_GUARD_SWAP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_INKAY #if P_FAMILY_BINACLE - egg_moves(BINACLE, - MOVE_TICKLE, - MOVE_SWITCHEROO, - MOVE_HELPING_HAND, - MOVE_WATER_SPORT), +static const u16 sBinacleEggMoveLearnset[] = { + MOVE_TICKLE, + MOVE_SWITCHEROO, + MOVE_HELPING_HAND, + MOVE_WATER_SPORT, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sSkrelpEggMoveLearnset[] = { + MOVE_TOXIC_SPIKES, + MOVE_PLAY_ROUGH, + MOVE_HAZE, + MOVE_ACID_ARMOR, + MOVE_VENOM_DRENCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKRELP #if P_FAMILY_CLAUNCHER - egg_moves(CLAUNCHER, - MOVE_AQUA_JET, - MOVE_ENTRAINMENT, - MOVE_ENDURE, - MOVE_CRABHAMMER, - MOVE_HELPING_HAND), +static const u16 sClauncherEggMoveLearnset[] = { + MOVE_AQUA_JET, + MOVE_ENTRAINMENT, + MOVE_ENDURE, + MOVE_CRABHAMMER, + MOVE_HELPING_HAND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CLAUNCHER #if P_FAMILY_HELIOPTILE - egg_moves(HELIOPTILE, - MOVE_AGILITY, - MOVE_GLARE, - MOVE_CAMOUFLAGE, - MOVE_ELECTRIC_TERRAIN), +static const u16 sHelioptileEggMoveLearnset[] = { + MOVE_AGILITY, + MOVE_GLARE, + MOVE_CAMOUFLAGE, + MOVE_ELECTRIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HELIOPTILE #if P_FAMILY_TYRUNT - egg_moves(TYRUNT, - MOVE_DRAGON_DANCE, - MOVE_THUNDER_FANG, - MOVE_ICE_FANG, - MOVE_POISON_FANG, - MOVE_ROCK_POLISH, - MOVE_FIRE_FANG, - MOVE_CURSE), +static const u16 sTyruntEggMoveLearnset[] = { + MOVE_DRAGON_DANCE, + MOVE_THUNDER_FANG, + MOVE_ICE_FANG, + MOVE_POISON_FANG, + MOVE_ROCK_POLISH, + MOVE_FIRE_FANG, + MOVE_CURSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TYRUNT #if P_FAMILY_AMAURA - egg_moves(AMAURA, - MOVE_HAZE, - MOVE_BARRIER, - MOVE_MIRROR_COAT, - MOVE_MAGNET_RISE, - MOVE_DISCHARGE), +static const u16 sAmauraEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_BARRIER, + MOVE_MIRROR_COAT, + MOVE_MAGNET_RISE, + MOVE_DISCHARGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_AMAURA #if P_FAMILY_HAWLUCHA - egg_moves(HAWLUCHA, - MOVE_AGILITY, - MOVE_ME_FIRST, - MOVE_ALLY_SWITCH, - MOVE_ENTRAINMENT, - MOVE_MUD_SPORT, - MOVE_BATON_PASS, - MOVE_QUICK_GUARD, - MOVE_FEINT), +static const u16 sHawluchaEggMoveLearnset[] = { + MOVE_AGILITY, + MOVE_ME_FIRST, + MOVE_ALLY_SWITCH, + MOVE_ENTRAINMENT, + MOVE_MUD_SPORT, + MOVE_BATON_PASS, + MOVE_QUICK_GUARD, + MOVE_FEINT, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sDedenneEggMoveLearnset[] = { + MOVE_EERIE_IMPULSE, + MOVE_COVET, + MOVE_HELPING_HAND, + MOVE_NATURAL_GIFT, + MOVE_TEARFUL_LOOK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DEDENNE #if P_FAMILY_GOOMY - egg_moves(GOOMY, - MOVE_ACID_ARMOR, - MOVE_CURSE, - MOVE_IRON_TAIL, - MOVE_POISON_TAIL, - MOVE_COUNTER, - MOVE_ENDURE), +static const u16 sGoomyEggMoveLearnset[] = { + MOVE_ACID_ARMOR, + MOVE_CURSE, + MOVE_IRON_TAIL, + MOVE_POISON_TAIL, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GOOMY #if P_FAMILY_KLEFKI - egg_moves(KLEFKI, - MOVE_SWITCHEROO, - MOVE_THIEF, - MOVE_LOCK_ON, - MOVE_IRON_DEFENSE), +static const u16 sKlefkiEggMoveLearnset[] = { + MOVE_SWITCHEROO, + MOVE_THIEF, + MOVE_LOCK_ON, + MOVE_IRON_DEFENSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KLEFKI #if P_FAMILY_PHANTUMP - egg_moves(PHANTUMP, - MOVE_GRUDGE, - MOVE_BESTOW, - MOVE_IMPRISON, - MOVE_VENOM_DRENCH, - MOVE_POWER_UP_PUNCH), +static const u16 sPhantumpEggMoveLearnset[] = { + MOVE_GRUDGE, + MOVE_BESTOW, + MOVE_IMPRISON, + MOVE_VENOM_DRENCH, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PHANTUMP #if P_FAMILY_PUMPKABOO - egg_moves(PUMPKABOO, - MOVE_DISABLE, - MOVE_BESTOW, - MOVE_DESTINY_BOND, - MOVE_CURSE), +static const u16 sPumpkabooEggMoveLearnset[] = { + MOVE_DISABLE, + MOVE_BESTOW, + MOVE_DESTINY_BOND, + MOVE_CURSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PUMPKABOO #if P_FAMILY_BERGMITE - egg_moves(BERGMITE, - MOVE_RECOVER, - MOVE_MIST, - MOVE_BARRIER, - MOVE_MIRROR_COAT), +static const u16 sBergmiteEggMoveLearnset[] = { + MOVE_RECOVER, + MOVE_MIST, + MOVE_BARRIER, + MOVE_MIRROR_COAT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BERGMITE #if P_FAMILY_NOIBAT - egg_moves(NOIBAT, - MOVE_SWITCHEROO, - MOVE_SNATCH, - MOVE_OUTRAGE, - MOVE_TAILWIND), +static const u16 sNoibatEggMoveLearnset[] = { + MOVE_SWITCHEROO, + MOVE_SNATCH, + MOVE_OUTRAGE, + MOVE_TAILWIND, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NOIBAT #if P_FAMILY_ROWLET - egg_moves(ROWLET, - MOVE_CURSE, - MOVE_CONFUSE_RAY, - MOVE_OMINOUS_WIND, - MOVE_HAZE, - MOVE_BATON_PASS, - MOVE_DEFOG), +static const u16 sRowletEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_CONFUSE_RAY, + MOVE_OMINOUS_WIND, + MOVE_HAZE, + MOVE_BATON_PASS, + MOVE_DEFOG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROWLET #if P_FAMILY_LITTEN - egg_moves(LITTEN, - MOVE_NASTY_PLOT, - MOVE_BODY_SLAM, - MOVE_CRUNCH, - MOVE_FAKE_OUT, - MOVE_REVENGE, - MOVE_HEAT_WAVE, - MOVE_POWER_TRIP), +static const u16 sLittenEggMoveLearnset[] = { + MOVE_NASTY_PLOT, + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_FAKE_OUT, + MOVE_REVENGE, + MOVE_HEAT_WAVE, + MOVE_POWER_TRIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LITTEN #if P_FAMILY_POPPLIO - egg_moves(POPPLIO, - MOVE_CHARM, - MOVE_AMNESIA, - MOVE_AQUA_RING, - MOVE_AROMATIC_MIST, - MOVE_PERISH_SONG, - MOVE_WONDER_ROOM), +static const u16 sPopplioEggMoveLearnset[] = { + MOVE_CHARM, + MOVE_AMNESIA, + MOVE_AQUA_RING, + MOVE_AROMATIC_MIST, + MOVE_PERISH_SONG, + MOVE_WONDER_ROOM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_POPPLIO #if P_FAMILY_PIKIPEK - egg_moves(PIKIPEK, - MOVE_BRAVE_BIRD, - MOVE_BOOMBURST, - MOVE_MIRROR_MOVE, - MOVE_TAILWIND, - MOVE_UPROAR), +static const u16 sPikipekEggMoveLearnset[] = { + MOVE_BRAVE_BIRD, + MOVE_BOOMBURST, + MOVE_MIRROR_MOVE, + MOVE_TAILWIND, + MOVE_UPROAR, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sYungoosEggMoveLearnset[] = { + MOVE_REVENGE, + MOVE_LAST_RESORT, + MOVE_FIRE_FANG, + MOVE_ICE_FANG, + MOVE_THUNDER_FANG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_YUNGOOS #if P_FAMILY_GRUBBIN - egg_moves(GRUBBIN, - MOVE_HARDEN, - MOVE_ELECTROWEB, - MOVE_MUD_SHOT, - MOVE_ENDURE), +static const u16 sGrubbinEggMoveLearnset[] = { + MOVE_HARDEN, + MOVE_ELECTROWEB, + MOVE_MUD_SHOT, + MOVE_ENDURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GRUBBIN #if P_FAMILY_CRABRAWLER - egg_moves(CRABRAWLER, - MOVE_WIDE_GUARD, - MOVE_SUPERPOWER, - MOVE_ENDEAVOR, - MOVE_AMNESIA), +static const u16 sCrabrawlerEggMoveLearnset[] = { + MOVE_WIDE_GUARD, + MOVE_SUPERPOWER, + MOVE_ENDEAVOR, + MOVE_AMNESIA, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CRABRAWLER #if P_FAMILY_ORICORIO - egg_moves(ORICORIO_BAILE, - MOVE_PLUCK, - MOVE_TAILWIND, - MOVE_SAFEGUARD, - MOVE_CAPTIVATE), +static const u16 sOricorioEggMoveLearnset[] = { + MOVE_PLUCK, + MOVE_TAILWIND, + MOVE_SAFEGUARD, + MOVE_CAPTIVATE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ORICORIO #if P_FAMILY_CUTIEFLY - egg_moves(CUTIEFLY, - MOVE_BATON_PASS, - MOVE_SKILL_SWAP, - MOVE_SPEED_SWAP, - MOVE_BESTOW, - MOVE_MOONBLAST, - MOVE_POWDER, - MOVE_STICKY_WEB), +static const u16 sCutieflyEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_SKILL_SWAP, + MOVE_SPEED_SWAP, + MOVE_BESTOW, + MOVE_MOONBLAST, + MOVE_POWDER, + MOVE_STICKY_WEB, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sRockruffEggMoveLearnset[] = { + MOVE_CRUSH_CLAW, + MOVE_FIRE_FANG, + MOVE_THUNDER_FANG, + MOVE_SUCKER_PUNCH, + MOVE_THRASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROCKRUFF #if P_FAMILY_WISHIWASHI - egg_moves(WISHIWASHI, - MOVE_MUDDY_WATER, - MOVE_MIST, - MOVE_WATER_PULSE, - MOVE_WATER_SPORT, - MOVE_WHIRLPOOL), +static const u16 sWishiwashiEggMoveLearnset[] = { + MOVE_MUDDY_WATER, + MOVE_MIST, + MOVE_WATER_PULSE, + MOVE_WATER_SPORT, + MOVE_WHIRLPOOL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WISHIWASHI #if P_FAMILY_MAREANIE - egg_moves(MAREANIE, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_HAZE), +static const u16 sMareanieEggMoveLearnset[] = { + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_HAZE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sMudbrayEggMoveLearnset[] = { + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_MAGNITUDE, + MOVE_CLOSE_COMBAT, + MOVE_MUD_BOMB, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sDewpiderEggMoveLearnset[] = { + MOVE_POWER_SPLIT, + MOVE_AURORA_BEAM, + MOVE_STOCKPILE, + MOVE_SPIT_UP, + MOVE_STICKY_WEB, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DEWPIDER #if P_FAMILY_FOMANTIS - egg_moves(FOMANTIS, - MOVE_WEATHER_BALL, - MOVE_GIGA_DRAIN, - MOVE_AROMATHERAPY, - MOVE_DEFOG, - MOVE_LEAF_STORM), +static const u16 sFomantisEggMoveLearnset[] = { + MOVE_WEATHER_BALL, + MOVE_GIGA_DRAIN, + MOVE_AROMATHERAPY, + MOVE_DEFOG, + MOVE_LEAF_STORM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FOMANTIS #if P_FAMILY_MORELULL - egg_moves(MORELULL, - MOVE_AMNESIA, - MOVE_POISON_POWDER, - MOVE_STUN_SPORE, - MOVE_GROWTH, - MOVE_LEECH_SEED), +static const u16 sMorelullEggMoveLearnset[] = { + MOVE_AMNESIA, + MOVE_POISON_POWDER, + MOVE_STUN_SPORE, + MOVE_GROWTH, + MOVE_LEECH_SEED, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MORELULL #if P_FAMILY_SALANDIT - egg_moves(SALANDIT, - MOVE_BELCH, - MOVE_KNOCK_OFF, - MOVE_SAND_ATTACK, - MOVE_SNATCH, - MOVE_FAKE_OUT), +static const u16 sSalanditEggMoveLearnset[] = { + MOVE_BELCH, + MOVE_KNOCK_OFF, + MOVE_SAND_ATTACK, + MOVE_SNATCH, + MOVE_FAKE_OUT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SALANDIT #if P_FAMILY_STUFFUL - egg_moves(STUFFUL, - MOVE_ICE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_FORCE_PALM, - MOVE_ENDURE, - MOVE_WIDE_GUARD, - MOVE_MEGA_KICK, - MOVE_STOMPING_TANTRUM), +static const u16 sStuffulEggMoveLearnset[] = { + MOVE_ICE_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_FORCE_PALM, + MOVE_ENDURE, + MOVE_WIDE_GUARD, + MOVE_MEGA_KICK, + MOVE_STOMPING_TANTRUM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_STUFFUL #if P_FAMILY_BOUNSWEET - egg_moves(BOUNSWEET, - MOVE_GRASS_WHISTLE, - MOVE_SYNTHESIS, - MOVE_PLAY_ROUGH, - MOVE_FEINT, - MOVE_CHARM, - MOVE_ACUPRESSURE), +static const u16 sBounsweetEggMoveLearnset[] = { + MOVE_GRASS_WHISTLE, + MOVE_SYNTHESIS, + MOVE_PLAY_ROUGH, + MOVE_FEINT, + MOVE_CHARM, + MOVE_ACUPRESSURE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BOUNSWEET #if P_FAMILY_COMFEY - egg_moves(COMFEY, - MOVE_ENDURE, - MOVE_AMNESIA, - MOVE_AFTER_YOU, - MOVE_LUCKY_CHANT), +static const u16 sComfeyEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_AMNESIA, + MOVE_AFTER_YOU, + MOVE_LUCKY_CHANT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_COMFEY #if P_FAMILY_ORANGURU - egg_moves(ORANGURU, - MOVE_EXTRASENSORY, - MOVE_WONDER_ROOM, - MOVE_PSYCHIC_TERRAIN), +static const u16 sOranguruEggMoveLearnset[] = { + MOVE_EXTRASENSORY, + MOVE_WONDER_ROOM, + MOVE_PSYCHIC_TERRAIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ORANGURU #if P_FAMILY_PASSIMIAN - egg_moves(PASSIMIAN, - MOVE_SEISMIC_TOSS, - MOVE_VITAL_THROW, - MOVE_QUICK_GUARD, - MOVE_IRON_HEAD, - MOVE_QUICK_ATTACK, - MOVE_FEINT), +static const u16 sPassimianEggMoveLearnset[] = { + MOVE_SEISMIC_TOSS, + MOVE_VITAL_THROW, + MOVE_QUICK_GUARD, + MOVE_IRON_HEAD, + MOVE_QUICK_ATTACK, + MOVE_FEINT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PASSIMIAN #if P_FAMILY_WIMPOD - egg_moves(WIMPOD, - MOVE_SPIKES, - MOVE_METAL_CLAW, - MOVE_WIDE_GUARD, - MOVE_HARDEN, - MOVE_AQUA_JET), +static const u16 sWimpodEggMoveLearnset[] = { + MOVE_SPIKES, + MOVE_METAL_CLAW, + MOVE_WIDE_GUARD, + MOVE_HARDEN, + MOVE_AQUA_JET, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WIMPOD #if P_FAMILY_SANDYGAST - egg_moves(SANDYGAST, - MOVE_AMNESIA, - MOVE_DESTINY_BOND, - MOVE_ANCIENT_POWER, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SPIT_UP, - MOVE_CURSE), +static const u16 sSandygastEggMoveLearnset[] = { + MOVE_AMNESIA, + MOVE_DESTINY_BOND, + MOVE_ANCIENT_POWER, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SPIT_UP, + MOVE_CURSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SANDYGAST #if P_FAMILY_PYUKUMUKU - egg_moves(PYUKUMUKU, - MOVE_ENDURE, - MOVE_VENOM_DRENCH, - MOVE_BESTOW, - MOVE_TICKLE, - MOVE_SPITE), +static const u16 sPyukumukuEggMoveLearnset[] = { + MOVE_ENDURE, + MOVE_VENOM_DRENCH, + MOVE_BESTOW, + MOVE_TICKLE, + MOVE_SPITE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PYUKUMUKU #if P_FAMILY_KOMALA - egg_moves(KOMALA, - MOVE_CHARM, - MOVE_WISH, - MOVE_PLAY_ROUGH, - MOVE_SING), +static const u16 sKomalaEggMoveLearnset[] = { + MOVE_CHARM, + MOVE_WISH, + MOVE_PLAY_ROUGH, + MOVE_SING, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KOMALA #if P_FAMILY_TURTONATOR - egg_moves(TURTONATOR, - MOVE_WIDE_GUARD, - MOVE_REVENGE, - MOVE_HEAD_SMASH, - MOVE_FIRE_SPIN), +static const u16 sTurtonatorEggMoveLearnset[] = { + MOVE_WIDE_GUARD, + MOVE_REVENGE, + MOVE_HEAD_SMASH, + MOVE_FIRE_SPIN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TURTONATOR #if P_FAMILY_TOGEDEMARU - egg_moves(TOGEDEMARU, - MOVE_REVERSAL, - MOVE_PRESENT, - MOVE_ENCORE, - MOVE_TWINEEDLE, - MOVE_WISH, - MOVE_FAKE_OUT, - MOVE_TICKLE, - MOVE_FLAIL, - MOVE_DISARMING_VOICE), +static const u16 sTogedemaruEggMoveLearnset[] = { + MOVE_REVERSAL, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_TWINEEDLE, + MOVE_WISH, + MOVE_FAKE_OUT, + MOVE_TICKLE, + MOVE_FLAIL, + MOVE_DISARMING_VOICE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TOGEDEMARU #if P_FAMILY_MIMIKYU - egg_moves(MIMIKYU, - MOVE_GRUDGE, - MOVE_DESTINY_BOND, - MOVE_CURSE, - MOVE_NIGHTMARE), +static const u16 sMimikyuEggMoveLearnset[] = { + MOVE_GRUDGE, + MOVE_DESTINY_BOND, + MOVE_CURSE, + MOVE_NIGHTMARE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MIMIKYU #if P_FAMILY_BRUXISH - egg_moves(BRUXISH, - MOVE_WATER_PULSE, - MOVE_POISON_FANG, - MOVE_ICE_FANG, - MOVE_RAGE), +static const u16 sBruxishEggMoveLearnset[] = { + MOVE_WATER_PULSE, + MOVE_POISON_FANG, + MOVE_ICE_FANG, + MOVE_RAGE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BRUXISH #if P_FAMILY_DRAMPA - egg_moves(DRAMPA, - MOVE_HURRICANE, - MOVE_DRAGON_RUSH, - MOVE_RAZOR_WIND, - MOVE_MIST, - MOVE_PLAY_ROUGH), +static const u16 sDrampaEggMoveLearnset[] = { + MOVE_HURRICANE, + MOVE_DRAGON_RUSH, + MOVE_RAZOR_WIND, + MOVE_MIST, + MOVE_PLAY_ROUGH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DRAMPA #if P_FAMILY_JANGMO_O - egg_moves(JANGMO_O, - MOVE_COUNTER, - MOVE_REVERSAL, - MOVE_DRAGON_BREATH), +static const u16 sJangmoOEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_REVERSAL, + MOVE_DRAGON_BREATH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_JANGMO_O #if P_FAMILY_GROOKEY - egg_moves(GROOKEY, - MOVE_GROWTH, - MOVE_HAMMER_ARM, - MOVE_FAKE_OUT, - MOVE_STRENGTH, - MOVE_NATURE_POWER, - MOVE_WORRY_SEED, - MOVE_LEECH_SEED), +static const u16 sGrookeyEggMoveLearnset[] = { + MOVE_GROWTH, + MOVE_HAMMER_ARM, + MOVE_FAKE_OUT, + MOVE_STRENGTH, + MOVE_NATURE_POWER, + MOVE_WORRY_SEED, + MOVE_LEECH_SEED, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GROOKEY #if P_FAMILY_SCORBUNNY - egg_moves(SCORBUNNY, - MOVE_HIGH_JUMP_KICK, - MOVE_SAND_ATTACK, - MOVE_SUCKER_PUNCH, - MOVE_SUPER_FANG), +static const u16 sScorbunnyEggMoveLearnset[] = { + MOVE_HIGH_JUMP_KICK, + MOVE_SAND_ATTACK, + MOVE_SUCKER_PUNCH, + MOVE_SUPER_FANG, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SCORBUNNY #if P_FAMILY_SOBBLE - egg_moves(SOBBLE, - MOVE_AQUA_JET, - MOVE_DOUBLE_TEAM, - MOVE_AQUA_RING, - MOVE_MIST, - MOVE_HAZE, - MOVE_ICE_SHARD, - MOVE_FELL_STINGER), +static const u16 sSobbleEggMoveLearnset[] = { + MOVE_AQUA_JET, + MOVE_DOUBLE_TEAM, + MOVE_AQUA_RING, + MOVE_MIST, + MOVE_HAZE, + MOVE_ICE_SHARD, + MOVE_FELL_STINGER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SOBBLE #if P_FAMILY_SKWOVET - egg_moves(SKWOVET, - MOVE_ROLLOUT, - MOVE_DEFENSE_CURL, - MOVE_LAST_RESORT, - MOVE_BELLY_DRUM), +static const u16 sSkwovetEggMoveLearnset[] = { + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_LAST_RESORT, + MOVE_BELLY_DRUM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SKWOVET #if P_FAMILY_ROOKIDEE - egg_moves(ROOKIDEE, - MOVE_SKY_ATTACK, - MOVE_SAND_ATTACK, - MOVE_TAILWIND, - MOVE_DEFOG, - MOVE_ROCK_SMASH, - MOVE_SPITE, - MOVE_ROOST), +static const u16 sRookideeEggMoveLearnset[] = { + MOVE_SKY_ATTACK, + MOVE_SAND_ATTACK, + MOVE_TAILWIND, + MOVE_DEFOG, + MOVE_ROCK_SMASH, + MOVE_SPITE, + MOVE_ROOST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROOKIDEE #if P_FAMILY_BLIPBUG - egg_moves(BLIPBUG, - MOVE_INFESTATION, - MOVE_SUPERSONIC, - MOVE_STICKY_WEB, - MOVE_RECOVER), +static const u16 sBlipbugEggMoveLearnset[] = { + MOVE_INFESTATION, + MOVE_SUPERSONIC, + MOVE_STICKY_WEB, + MOVE_RECOVER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BLIPBUG #if P_FAMILY_NICKIT - egg_moves(NICKIT, - MOVE_QUICK_GUARD, - MOVE_KNOCK_OFF, - MOVE_HOWL, - MOVE_TORMENT), +static const u16 sNickitEggMoveLearnset[] = { + MOVE_QUICK_GUARD, + MOVE_KNOCK_OFF, + MOVE_HOWL, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NICKIT #if P_FAMILY_GOSSIFLEUR - egg_moves(GOSSIFLEUR, - MOVE_GROWTH, - MOVE_LEECH_SEED, - MOVE_WORRY_SEED, - MOVE_POISON_POWDER, - MOVE_STUN_SPORE, - MOVE_SLEEP_POWDER), +static const u16 sGossifleurEggMoveLearnset[] = { + MOVE_GROWTH, + MOVE_LEECH_SEED, + MOVE_WORRY_SEED, + MOVE_POISON_POWDER, + MOVE_STUN_SPORE, + MOVE_SLEEP_POWDER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GOSSIFLEUR #if P_FAMILY_WOOLOO - egg_moves(WOOLOO, - MOVE_STOMP, - MOVE_SWAGGER, - MOVE_COUNTER), +static const u16 sWoolooEggMoveLearnset[] = { + MOVE_STOMP, + MOVE_SWAGGER, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WOOLOO #if P_FAMILY_CHEWTLE - egg_moves(CHEWTLE, - MOVE_SKULL_BASH, - MOVE_GASTRO_ACID, - MOVE_DRAGON_TAIL), +static const u16 sChewtleEggMoveLearnset[] = { + MOVE_SKULL_BASH, + MOVE_GASTRO_ACID, + MOVE_DRAGON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHEWTLE #if P_FAMILY_YAMPER - egg_moves(YAMPER, - MOVE_DOUBLE_EDGE, - MOVE_SAND_ATTACK, - MOVE_FLAME_CHARGE, - MOVE_DISCHARGE, - MOVE_HOWL), +static const u16 sYamperEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_SAND_ATTACK, + MOVE_FLAME_CHARGE, + MOVE_DISCHARGE, + MOVE_HOWL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_YAMPER #if P_FAMILY_ROLYCOLY - egg_moves(ROLYCOLY, - MOVE_EXPLOSION, - MOVE_MUD_SLAP, - MOVE_BLOCK), +static const u16 sRolycolyEggMoveLearnset[] = { + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_BLOCK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ROLYCOLY #if P_FAMILY_APPLIN - egg_moves(APPLIN, - MOVE_SUCKER_PUNCH, - MOVE_ROLLOUT, - MOVE_DEFENSE_CURL, - MOVE_RECYCLE), +static const u16 sApplinEggMoveLearnset[] = { + MOVE_SUCKER_PUNCH, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_RECYCLE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sSilicobraEggMoveLearnset[] = { + MOVE_DRAGON_RUSH, + MOVE_MUD_SLAP, + MOVE_LAST_RESORT, + MOVE_BELCH, + MOVE_POISON_TAIL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SILICOBRA #if P_FAMILY_CRAMORANT - egg_moves(CRAMORANT, - MOVE_DEFOG, - MOVE_AERIAL_ACE, - MOVE_FEATHER_DANCE, - MOVE_AQUA_RING, - MOVE_ROOST), +static const u16 sCramorantEggMoveLearnset[] = { + MOVE_DEFOG, + MOVE_AERIAL_ACE, + MOVE_FEATHER_DANCE, + MOVE_AQUA_RING, + MOVE_ROOST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CRAMORANT #if P_FAMILY_ARROKUDA - egg_moves(ARROKUDA, - MOVE_THRASH, - MOVE_ACUPRESSURE, - MOVE_SLASH, - MOVE_NIGHT_SLASH), +static const u16 sArrokudaEggMoveLearnset[] = { + MOVE_THRASH, + MOVE_ACUPRESSURE, + MOVE_SLASH, + MOVE_NIGHT_SLASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ARROKUDA #if P_FAMILY_TOXEL - egg_moves(TOXEL, - MOVE_ENDEAVOR, - MOVE_METAL_SOUND, - MOVE_POWER_UP_PUNCH), +static const u16 sToxelEggMoveLearnset[] = { + MOVE_ENDEAVOR, + MOVE_METAL_SOUND, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TOXEL #if P_FAMILY_SIZZLIPEDE - egg_moves(SIZZLIPEDE, - MOVE_KNOCK_OFF, - MOVE_STRUGGLE_BUG, - MOVE_ROLLOUT, - MOVE_DEFENSE_CURL), +static const u16 sSizzlipedeEggMoveLearnset[] = { + MOVE_KNOCK_OFF, + MOVE_STRUGGLE_BUG, + MOVE_ROLLOUT, + MOVE_DEFENSE_CURL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SIZZLIPEDE #if P_FAMILY_CLOBBOPUS - egg_moves(CLOBBOPUS, - MOVE_PAIN_SPLIT, - MOVE_SOAK, - MOVE_SUCKER_PUNCH, - MOVE_CIRCLE_THROW, - MOVE_SEISMIC_TOSS, - MOVE_POWER_UP_PUNCH), +static const u16 sClobbopusEggMoveLearnset[] = { + MOVE_PAIN_SPLIT, + MOVE_SOAK, + MOVE_SUCKER_PUNCH, + MOVE_CIRCLE_THROW, + MOVE_SEISMIC_TOSS, + MOVE_POWER_UP_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CLOBBOPUS #if P_FAMILY_HATENNA - egg_moves(HATENNA, - MOVE_AROMATIC_MIST, - MOVE_NUZZLE, - MOVE_AFTER_YOU, - MOVE_QUASH), +static const u16 sHatennaEggMoveLearnset[] = { + MOVE_AROMATIC_MIST, + MOVE_NUZZLE, + MOVE_AFTER_YOU, + MOVE_QUASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_HATENNA #if P_FAMILY_MILCERY - egg_moves(MILCERY, - MOVE_BABY_DOLL_EYES, - MOVE_LAST_RESORT), +static const u16 sMilceryEggMoveLearnset[] = { + MOVE_BABY_DOLL_EYES, + MOVE_LAST_RESORT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MILCERY #if P_FAMILY_PINCURCHIN - egg_moves(PINCURCHIN, - MOVE_MEMENTO, - MOVE_SUCKER_PUNCH), +static const u16 sPincurchinEggMoveLearnset[] = { + MOVE_MEMENTO, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PINCURCHIN #if P_FAMILY_SNOM - egg_moves(SNOM, - MOVE_FAIRY_WIND, - MOVE_MIRROR_COAT, - MOVE_BUG_BITE), +static const u16 sSnomEggMoveLearnset[] = { + MOVE_FAIRY_WIND, + MOVE_MIRROR_COAT, + MOVE_BUG_BITE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SNOM #if P_FAMILY_STONJOURNER - egg_moves(STONJOURNER, - MOVE_CURSE, - MOVE_ANCIENT_POWER), +static const u16 sStonjournerEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_ANCIENT_POWER, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE - egg_moves(EISCUE, - MOVE_SOAK, - MOVE_AQUA_RING, - MOVE_BELLY_DRUM, - MOVE_DOUBLE_EDGE, - MOVE_ICICLE_CRASH, - MOVE_HEAD_SMASH), +static const u16 sEiscueEggMoveLearnset[] = { + MOVE_SOAK, + MOVE_AQUA_RING, + MOVE_BELLY_DRUM, + MOVE_DOUBLE_EDGE, + MOVE_ICICLE_CRASH, + MOVE_HEAD_SMASH, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sIndeedeeEggMoveLearnset[] = { + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_EXTRASENSORY, + MOVE_UNAVAILABLE, +}; + +static const u16 sIndeedeeFemaleEggMoveLearnset[] = { + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_PSYCHO_SHIFT, + MOVE_HEAL_PULSE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_INDEEDEE #if P_FAMILY_MORPEKO - egg_moves(MORPEKO, - MOVE_SWAGGER, - MOVE_SUPER_FANG, - MOVE_CHARGE, - MOVE_TICKLE, - MOVE_RAPID_SPIN, - MOVE_QUASH, - MOVE_PARTING_SHOT, - MOVE_FAKE_OUT), +static const u16 sMorpekoEggMoveLearnset[] = { + MOVE_SWAGGER, + MOVE_SUPER_FANG, + MOVE_CHARGE, + MOVE_TICKLE, + MOVE_RAPID_SPIN, + MOVE_QUASH, + MOVE_PARTING_SHOT, + MOVE_FAKE_OUT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_MORPEKO #if P_FAMILY_CUFANT - egg_moves(CUFANT, - MOVE_DOUBLE_EDGE, - MOVE_BELCH, - MOVE_CURSE, - MOVE_SLAM, - MOVE_FISSURE, - MOVE_SWAGGER, - MOVE_WHIRLWIND, - MOVE_DEFENSE_CURL), +static const u16 sCufantEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_BELCH, + MOVE_CURSE, + MOVE_SLAM, + MOVE_FISSURE, + MOVE_SWAGGER, + MOVE_WHIRLWIND, + MOVE_DEFENSE_CURL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CUFANT #if P_FAMILY_DURALUDON - egg_moves(DURALUDON, - MOVE_SLASH, - MOVE_NIGHT_SLASH, - MOVE_MIRROR_COAT), +static const u16 sDuraludonEggMoveLearnset[] = { + MOVE_SLASH, + MOVE_NIGHT_SLASH, + MOVE_MIRROR_COAT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY - egg_moves(DREEPY, - MOVE_CURSE, - MOVE_GRUDGE, - MOVE_CONFUSE_RAY, - MOVE_DOUBLE_TEAM, - MOVE_DISABLE, - MOVE_DRAGON_TAIL, - MOVE_SUCKER_PUNCH), +static const u16 sDreepyEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_GRUDGE, + MOVE_CONFUSE_RAY, + MOVE_DOUBLE_TEAM, + MOVE_DISABLE, + MOVE_DRAGON_TAIL, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DREEPY #if P_FAMILY_SPRIGATITO - egg_moves(SPRIGATITO, - MOVE_ALLY_SWITCH, - MOVE_COPYCAT, - MOVE_LEECH_SEED, - MOVE_PETAL_BLIZZARD, - MOVE_SUCKER_PUNCH), +static const u16 sSprigatitoEggMoveLearnset[] = { + MOVE_ALLY_SWITCH, + MOVE_COPYCAT, + MOVE_LEECH_SEED, + MOVE_PETAL_BLIZZARD, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SPRIGATITO #if P_FAMILY_FUECOCO - egg_moves(FUECOCO, - MOVE_BELCH, - MOVE_CURSE, - MOVE_ENCORE, - MOVE_SLACK_OFF), +static const u16 sFuecocoEggMoveLearnset[] = { + MOVE_BELCH, + MOVE_CURSE, + MOVE_ENCORE, + MOVE_SLACK_OFF, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FUECOCO #if P_FAMILY_QUAXLY - egg_moves(QUAXLY, - MOVE_DETECT, - MOVE_LAST_RESORT, - MOVE_RAPID_SPIN, - MOVE_ROOST), +static const u16 sQuaxlyEggMoveLearnset[] = { + MOVE_DETECT, + MOVE_LAST_RESORT, + MOVE_RAPID_SPIN, + MOVE_ROOST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK - egg_moves(LECHONK, - MOVE_ENDEAVOR, - MOVE_SPIT_UP, - MOVE_STOCKPILE, - MOVE_STUFF_CHEEKS, - MOVE_SWALLOW), +static const u16 sLechonkEggMoveLearnset[] = { + MOVE_ENDEAVOR, + MOVE_SPIT_UP, + MOVE_STOCKPILE, + MOVE_STUFF_CHEEKS, + MOVE_SWALLOW, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_LECHONK #if P_FAMILY_TAROUNTULA - egg_moves(TAROUNTULA, - MOVE_FIRST_IMPRESSION, - MOVE_LUNGE, - MOVE_MEMENTO, - MOVE_SUCKER_PUNCH), +static const u16 sTarountulaEggMoveLearnset[] = { + MOVE_FIRST_IMPRESSION, + MOVE_LUNGE, + MOVE_MEMENTO, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TAROUNTULA #if P_FAMILY_NYMBLE - egg_moves(NYMBLE, - MOVE_COUNTER, - MOVE_SKITTER_SMACK), +static const u16 sNymbleEggMoveLearnset[] = { + MOVE_COUNTER, + MOVE_SKITTER_SMACK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NYMBLE #if P_FAMILY_PAWMI - egg_moves(PAWMI, - MOVE_FAKE_OUT, - MOVE_MACH_PUNCH, - MOVE_SWEET_KISS, - MOVE_WISH), +static const u16 sPawmiEggMoveLearnset[] = { + MOVE_FAKE_OUT, + MOVE_MACH_PUNCH, + MOVE_SWEET_KISS, + MOVE_WISH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_PAWMI #if P_FAMILY_TANDEMAUS - egg_moves(TANDEMAUS, - MOVE_AFTER_YOU, - MOVE_BATON_PASS, - MOVE_BITE, - MOVE_FEINT, - MOVE_SWITCHEROO, - MOVE_TICKLE), +static const u16 sTandemausEggMoveLearnset[] = { + MOVE_AFTER_YOU, + MOVE_BATON_PASS, + MOVE_BITE, + MOVE_FEINT, + MOVE_SWITCHEROO, + MOVE_TICKLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TANDEMAUS #if P_FAMILY_FIDOUGH - egg_moves(FIDOUGH, - MOVE_COPYCAT, - MOVE_HOWL, - MOVE_SWEET_SCENT, - MOVE_WISH, - MOVE_YAWN), +static const u16 sFidoughEggMoveLearnset[] = { + MOVE_COPYCAT, + MOVE_HOWL, + MOVE_SWEET_SCENT, + MOVE_WISH, + MOVE_YAWN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FIDOUGH #if P_FAMILY_SMOLIV - egg_moves(SMOLIV, - MOVE_MEMENTO, - MOVE_STRENGTH_SAP, - MOVE_SYNTHESIS, - MOVE_WEATHER_BALL), +static const u16 sSmolivEggMoveLearnset[] = { + MOVE_MEMENTO, + MOVE_STRENGTH_SAP, + MOVE_SYNTHESIS, + MOVE_WEATHER_BALL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SMOLIV #if P_FAMILY_SQUAWKABILLY - egg_moves(SQUAWKABILLY, - MOVE_DOUBLE_EDGE, - MOVE_FINAL_GAMBIT, - MOVE_FLATTER, - MOVE_PARTING_SHOT), +static const u16 sSquawkabillyEggMoveLearnset[] = { + MOVE_DOUBLE_EDGE, + MOVE_FINAL_GAMBIT, + MOVE_FLATTER, + MOVE_PARTING_SHOT, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_SQUAWKABILLY #if P_FAMILY_NACLI - egg_moves(NACLI, - MOVE_ANCIENT_POWER, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_POWER_GEM), +static const u16 sNacliEggMoveLearnset[] = { + MOVE_ANCIENT_POWER, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_POWER_GEM, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_NACLI #if P_FAMILY_CHARCADET - egg_moves(CHARCADET, - MOVE_DESTINY_BOND, - MOVE_DISABLE, - MOVE_SPITE), +static const u16 sCharcadetEggMoveLearnset[] = { + MOVE_DESTINY_BOND, + MOVE_DISABLE, + MOVE_SPITE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CHARCADET #if P_FAMILY_TADBULB - egg_moves(TADBULB, - MOVE_MUDDY_WATER, - MOVE_PARABOLIC_CHARGE, - MOVE_SOAK), +static const u16 sTadbulbEggMoveLearnset[] = { + MOVE_MUDDY_WATER, + MOVE_PARABOLIC_CHARGE, + MOVE_SOAK, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sWattrelEggMoveLearnset[] = { + MOVE_ENDEAVOR, + MOVE_FEATHER_DANCE, + MOVE_SPIT_UP, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_WEATHER_BALL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_WATTREL #if P_FAMILY_MASCHIFF - egg_moves(MASCHIFF, - MOVE_DESTINY_BOND, - MOVE_ENDEAVOR, - MOVE_PLAY_ROUGH, - MOVE_RETALIATE), +static const u16 sMaschiffEggMoveLearnset[] = { + MOVE_DESTINY_BOND, + MOVE_ENDEAVOR, + MOVE_PLAY_ROUGH, + MOVE_RETALIATE, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sShroodleEggMoveLearnset[] = { + MOVE_COPYCAT, + MOVE_CROSS_POISON, + MOVE_PARTING_SHOT, + MOVE_SUPER_FANG, + MOVE_SWAGGER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sBramblinEggMoveLearnset[] = { + MOVE_BEAT_UP, + MOVE_BLOCK, + MOVE_LEECH_SEED, + MOVE_SHADOW_SNEAK, + MOVE_STRENGTH_SAP, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sToedscoolEggMoveLearnset[] = { + MOVE_ACUPRESSURE, + MOVE_KNOCK_OFF, + MOVE_LEECH_SEED, + MOVE_MIRROR_COAT, + MOVE_RAGE_POWDER, + MOVE_RAPID_SPIN, + MOVE_TICKLE, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TOEDSCOOL #if P_FAMILY_KLAWF - egg_moves(KLAWF, - MOVE_ANCIENT_POWER, - MOVE_CRABHAMMER, - MOVE_ENDEAVOR, - MOVE_KNOCK_OFF), +static const u16 sKlawfEggMoveLearnset[] = { + MOVE_ANCIENT_POWER, + MOVE_CRABHAMMER, + MOVE_ENDEAVOR, + MOVE_KNOCK_OFF, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_KLAWF #if P_FAMILY_CAPSAKID - egg_moves(CAPSAKID, - MOVE_INGRAIN, - MOVE_LEECH_SEED, - MOVE_RAGE_POWDER, - MOVE_ROLLOUT, - MOVE_WORRY_SEED), +static const u16 sCapsakidEggMoveLearnset[] = { + MOVE_INGRAIN, + MOVE_LEECH_SEED, + MOVE_RAGE_POWDER, + MOVE_ROLLOUT, + MOVE_WORRY_SEED, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CAPSAKID #if P_FAMILY_RELLOR - egg_moves(RELLOR, - MOVE_COSMIC_POWER, - MOVE_MEMENTO, - MOVE_RECOVER, - MOVE_WEATHER_BALL), +static const u16 sRellorEggMoveLearnset[] = { + MOVE_COSMIC_POWER, + MOVE_MEMENTO, + MOVE_RECOVER, + MOVE_WEATHER_BALL, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_RELLOR #if P_FAMILY_FLITTLE - egg_moves(FLITTLE, - MOVE_ALLY_SWITCH, - MOVE_HYPNOSIS, - MOVE_ROOST), +static const u16 sFlittleEggMoveLearnset[] = { + MOVE_ALLY_SWITCH, + MOVE_HYPNOSIS, + MOVE_ROOST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FLITTLE #if P_FAMILY_TINKATINK - egg_moves(TINKATINK, - MOVE_FEINT, - MOVE_ICE_HAMMER, - MOVE_QUASH), +static const u16 sTinkatinkEggMoveLearnset[] = { + MOVE_FEINT, + MOVE_ICE_HAMMER, + MOVE_QUASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_TINKATINK #if P_FAMILY_WIGLETT - egg_moves(WIGLETT, - MOVE_FINAL_GAMBIT, - MOVE_MEMENTO), +static const u16 sWiglettEggMoveLearnset[] = { + MOVE_FINAL_GAMBIT, + MOVE_MEMENTO, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sBombirdierEggMoveLearnset[] = { + MOVE_FEATHER_DANCE, + MOVE_POWER_TRIP, + MOVE_ROOST, + MOVE_SKY_ATTACK, + MOVE_SUCKER_PUNCH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_BOMBIRDIER #if P_FAMILY_FINIZEN - egg_moves(FINIZEN, - MOVE_BOOMBURST, - MOVE_BOUNCE, - MOVE_COUNTER, - MOVE_HAZE, - MOVE_TICKLE), +static const u16 sFinizenEggMoveLearnset[] = { + MOVE_BOOMBURST, + MOVE_BOUNCE, + MOVE_COUNTER, + MOVE_HAZE, + MOVE_TICKLE, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FINIZEN #if P_FAMILY_VAROOM - egg_moves(VAROOM, - MOVE_HAZE, - MOVE_PARTING_SHOT, - MOVE_SELF_DESTRUCT, - MOVE_TORMENT, - MOVE_TOXIC), +static const u16 sVaroomEggMoveLearnset[] = { + MOVE_HAZE, + MOVE_PARTING_SHOT, + MOVE_SELF_DESTRUCT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VAROOM #if P_FAMILY_CYCLIZAR - egg_moves(CYCLIZAR, - MOVE_AQUA_TAIL, - MOVE_IRON_TAIL, - MOVE_KNOCK_OFF, - MOVE_POWER_WHIP), +static const u16 sCyclizarEggMoveLearnset[] = { + MOVE_AQUA_TAIL, + MOVE_IRON_TAIL, + MOVE_KNOCK_OFF, + MOVE_POWER_WHIP, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CYCLIZAR #if P_FAMILY_ORTHWORM - egg_moves(ORTHWORM, - MOVE_COIL, - MOVE_CURSE, - MOVE_METAL_BURST), +static const u16 sOrthwormEggMoveLearnset[] = { + MOVE_COIL, + MOVE_CURSE, + MOVE_METAL_BURST, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_ORTHWORM #if P_FAMILY_GLIMMET - egg_moves(GLIMMET, - MOVE_EXPLOSION, - MOVE_MEMENTO, - MOVE_TOXIC), +static const u16 sGlimmetEggMoveLearnset[] = { + MOVE_EXPLOSION, + MOVE_MEMENTO, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; #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), +static const u16 sGreavardEggMoveLearnset[] = { + MOVE_ALLY_SWITCH, + MOVE_DESTINY_BOND, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_MEMENTO, + MOVE_SHADOW_SNEAK, + MOVE_YAWN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_GREAVARD #if P_FAMILY_FLAMIGO - egg_moves(FLAMIGO, - MOVE_DOUBLE_TEAM, - MOVE_QUICK_GUARD, - MOVE_SKY_ATTACK), +static const u16 sFlamigoEggMoveLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_QUICK_GUARD, + MOVE_SKY_ATTACK, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_FLAMIGO #if P_FAMILY_CETODDLE - egg_moves(CETODDLE, - MOVE_BELLY_DRUM, - MOVE_ENTRAINMENT, - MOVE_ICICLE_CRASH, - MOVE_SUPERPOWER, - MOVE_YAWN), +static const u16 sCetoddleEggMoveLearnset[] = { + MOVE_BELLY_DRUM, + MOVE_ENTRAINMENT, + MOVE_ICICLE_CRASH, + MOVE_SUPERPOWER, + MOVE_YAWN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_CETODDLE #if P_FAMILY_VELUZA - egg_moves(VELUZA, - MOVE_RECOVER, - MOVE_THRASH), +static const u16 sVeluzaEggMoveLearnset[] = { + MOVE_RECOVER, + MOVE_THRASH, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_VELUZA #if P_FAMILY_DONDOZO - egg_moves(DONDOZO, - MOVE_CURSE, - MOVE_FISSURE, - MOVE_THRASH, - MOVE_YAWN), +static const u16 sDondozoEggMoveLearnset[] = { + MOVE_CURSE, + MOVE_FISSURE, + MOVE_THRASH, + MOVE_YAWN, + MOVE_UNAVAILABLE, +}; #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI - egg_moves(TATSUGIRI, - MOVE_BATON_PASS, - MOVE_COUNTER, - MOVE_RAPID_SPIN), +static const u16 sTatsugiriEggMoveLearnset[] = { + MOVE_BATON_PASS, + MOVE_COUNTER, + MOVE_RAPID_SPIN, + MOVE_UNAVAILABLE, +}; #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 +static const u16 sFrigibaxEggMoveLearnset[] = { + MOVE_AQUA_TAIL, + MOVE_DRAGON_RUSH, + MOVE_FREEZE_DRY, + MOVE_ICICLE_SPEAR, + MOVE_UNAVAILABLE, }; - +#endif //P_FAMILY_FRIGIBAX diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 84b7a86088db..52f888a55b32 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -779,6 +779,14 @@ static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { }; #endif //P_FAMILY_FROAKIE +#if P_FAMILY_FURFROU +static const struct FormChange sFurfrouFormChangeTable[] = { + {FORM_CHANGE_WITHDRAW, SPECIES_FURFROU_NATURAL}, + {FORM_CHANGE_DAYS_PASSED, SPECIES_FURFROU_NATURAL, 5}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_FURFROU + #if P_FAMILY_HONEDGE static const struct FormChange sAegislashFormChangeTable[] = { {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD}, @@ -841,8 +849,9 @@ static const struct FormChange sDiancieFormChangeTable[] = { #if P_FAMILY_HOOPA static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, - {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_DAYS_PASSED, SPECIES_HOOPA_CONFINED, 3}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_HOOPA @@ -1259,21 +1268,27 @@ static const struct FormChange sPalafinZeroFormChangeTable[] = #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_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}, +#if P_TERA_FORMS + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_TEAL_MASK_TERA, TYPE_GRASS}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_WELLSPRING_MASK_TERA, TYPE_WATER}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_HEARTHFLAME_MASK_TERA, TYPE_FIRE}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_OGERPON_CORNERSTONE_MASK_TERA, TYPE_ROCK}, +#endif {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_OGERPON #if P_FAMILY_TERAPAGOS static const struct FormChange sTerapagosFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_TERAPAGOS_TERASTAL}, //needs to be tied to the ability + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_TERAPAGOS_TERASTAL, ABILITY_TERA_SHIFT}, #if P_TERA_FORMS - //{FORM_CHANGE_TERASTALLIZATION, SPECIES_TERAPAGOS_STELLAR}, + {FORM_CHANGE_BATTLE_TERASTALLIZATION, SPECIES_TERAPAGOS_STELLAR, TYPE_STELLAR}, #endif - {FORM_CHANGE_END_BATTLE, SPECIES_TERAPAGOS_NORMAL}, + {FORM_CHANGE_END_BATTLE, SPECIES_TERAPAGOS_NORMAL}, {FORM_CHANGE_TERMINATOR}, }; #endif //P_FAMILY_TERAPAGOS diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 9ae2c3ebdb89..f099f8665fd0 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -2161,6 +2161,12 @@ static const u16 sOgerponFormSpeciesIdTable[] = { SPECIES_OGERPON_WELLSPRING_MASK, SPECIES_OGERPON_HEARTHFLAME_MASK, SPECIES_OGERPON_CORNERSTONE_MASK, +#if P_TERA_FORMS + SPECIES_OGERPON_TEAL_MASK_TERA, + SPECIES_OGERPON_WELLSPRING_MASK_TERA, + SPECIES_OGERPON_HEARTHFLAME_MASK_TERA, + SPECIES_OGERPON_CORNERSTONE_MASK_TERA, +#endif FORM_SPECIES_END, }; #endif //P_FAMILY_OGERPON @@ -2169,7 +2175,7 @@ static const u16 sOgerponFormSpeciesIdTable[] = { static const u16 sTerapagosFormSpeciesIdTable[] = { SPECIES_TERAPAGOS_NORMAL, SPECIES_TERAPAGOS_TERASTAL, -#if P_TERA_FORMS +#if P_TERA_FORMS SPECIES_TERAPAGOS_STELLAR, #endif FORM_SPECIES_END, diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index c9bfa7a24643..4f21223eee3d 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -11,6 +11,45 @@ #define FOOTPRINT(sprite) #endif +#define SIZE_32x32 1 +#define SIZE_64x64 0 + +// Set .compressed = OW_GFX_COMPRESS +#define COMP OW_GFX_COMPRESS + +#if OW_POKEMON_OBJECT_EVENTS +#if OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE +#define OVERWORLD_PAL(...) \ + .overworldPalette = DEFAULT(NULL, __VA_ARGS__), \ + .overworldShinyPalette = DEFAULT_2(NULL, __VA_ARGS__), +#else +#define OVERWORLD_PAL(...) +#endif //OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + +#define OVERWORLD(picTable, _size, shadow, _tracks, ...) \ +.overworldData = { \ + .tileTag = TAG_NONE, \ + .paletteTag = OBJ_EVENT_PAL_TAG_DYNAMIC, \ + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, \ + .size = (_size == SIZE_32x32 ? 512 : 2048), \ + .width = (_size == SIZE_32x32 ? 32 : 64), \ + .height = (_size == SIZE_32x32 ? 32 : 64), \ + .paletteSlot = PALSLOT_NPC_1, \ + .shadowSize = shadow, \ + .inanimate = FALSE, \ + .compressed = COMP, \ + .tracks = _tracks, \ + .oam = (_size == SIZE_32x32 ? &gObjectEventBaseOam_32x32 : &gObjectEventBaseOam_64x64), \ + .subspriteTables = (_size == SIZE_32x32 ? sOamTables_32x32 : sOamTables_64x64), \ + .anims = sAnimTable_Following, \ + .images = picTable, \ + .affineAnims = gDummySpriteAffineAnimTable, \ +}, \ + OVERWORLD_PAL(__VA_ARGS__) +#else +#define OVERWORLD(picTable, _size, shadow, _tracks, ...) +#endif //OW_POKEMON_OBJECT_EVENTS + // 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)) @@ -21,6 +60,12 @@ #define FLIP 0 #define NO_FLIP 1 +#if POKEMON_NAME_LENGTH >= 12 +#define HANDLE_EXPANDED_SPECIES_NAME(_name, ...) _(DEFAULT(_name, __VA_ARGS__)) +#else +#define HANDLE_EXPANDED_SPECIES_NAME(_name, ...) _(_name) +#endif + const struct SpeciesInfo gSpeciesInfo[] = { [SPECIES_NONE] = @@ -50,8 +95,29 @@ const struct SpeciesInfo gSpeciesInfo[] = .iconSprite = gMonIcon_QuestionMark, .iconPalIndex = 0, FOOTPRINT(QuestionMark) + #if OW_POKEMON_OBJECT_EVENTS + .overworldData = { + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE, + .reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE, + .size = 512, + .width = 32, + .height = 32, + .paletteSlot = PALSLOT_NPC_1, + .shadowSize = SHADOW_SIZE_M, + .inanimate = FALSE, + .compressed = COMP, + .tracks = TRACKS_FOOT, + .oam = &gObjectEventBaseOam_32x32, + .subspriteTables = sOamTables_32x32, + .anims = sAnimTable_Following, + .images = sPicTable_Substitute, + .affineAnims = gDummySpriteAffineAnimTable, + }, + #endif .levelUpLearnset = sNoneLevelUpLearnset, .teachableLearnset = sNoneTeachableLearnset, + .eggMoveLearnset = sNoneEggMoveLearnset, }, #include "species_info/gen_1_families.h" diff --git a/src/data/pokemon/species_info/gen_1_families.h b/src/data/pokemon/species_info/gen_1_families.h index 717ee9b2b7d4..e35bb848b7e3 100644 --- a/src/data/pokemon/species_info/gen_1_families.h +++ b/src/data/pokemon/species_info/gen_1_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Bulbasaur, .iconPalIndex = 4, FOOTPRINT(Bulbasaur) + OVERWORLD( + sPicTable_Bulbasaur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bulbasaur, + gShinyOverworldPalette_Bulbasaur + ) .levelUpLearnset = sBulbasaurLevelUpLearnset, .teachableLearnset = sBulbasaurTeachableLearnset, + .eggMoveLearnset = sBulbasaurEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), }, @@ -106,6 +115,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Ivysaur, .iconPalIndex = 4, FOOTPRINT(Ivysaur) + OVERWORLD( + sPicTable_Ivysaur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ivysaur, + gShinyOverworldPalette_Ivysaur + ) .levelUpLearnset = sIvysaurLevelUpLearnset, .teachableLearnset = sIvysaurTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_VENUSAUR}), @@ -170,6 +187,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Venusaur, .iconPalIndex = 4, FOOTPRINT(Venusaur) + OVERWORLD( + sPicTable_Venusaur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Venusaur, + gShinyOverworldPalette_Venusaur + ) .levelUpLearnset = sVenusaurLevelUpLearnset, .teachableLearnset = sVenusaurTeachableLearnset, .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, @@ -341,8 +366,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Charmander, .iconPalIndex = 0, FOOTPRINT(Charmander) + OVERWORLD( + sPicTable_Charmander, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Charmander, + gShinyOverworldPalette_Charmander + ) .levelUpLearnset = sCharmanderLevelUpLearnset, .teachableLearnset = sCharmanderTeachableLearnset, + .eggMoveLearnset = sCharmanderEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CHARMELEON}), }, @@ -395,6 +429,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Charmeleon, .iconPalIndex = 0, FOOTPRINT(Charmeleon) + OVERWORLD( + sPicTable_Charmeleon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Charmeleon, + gShinyOverworldPalette_Charmeleon + ) .levelUpLearnset = sCharmeleonLevelUpLearnset, .teachableLearnset = sCharmeleonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHARIZARD}), @@ -454,6 +496,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Charizard, .iconPalIndex = 0, FOOTPRINT(Charizard) + OVERWORLD( + sPicTable_Charizard, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Charizard, + gShinyOverworldPalette_Charizard + ) .levelUpLearnset = sCharizardLevelUpLearnset, .teachableLearnset = sCharizardTeachableLearnset, .formSpeciesIdTable = sCharizardFormSpeciesIdTable, @@ -678,8 +728,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Squirtle, .iconPalIndex = 0, FOOTPRINT(Squirtle) + OVERWORLD( + sPicTable_Squirtle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Squirtle, + gShinyOverworldPalette_Squirtle + ) .levelUpLearnset = sSquirtleLevelUpLearnset, .teachableLearnset = sSquirtleTeachableLearnset, + .eggMoveLearnset = sSquirtleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_WARTORTLE}), }, @@ -732,6 +791,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Wartortle, .iconPalIndex = 2, FOOTPRINT(Wartortle) + OVERWORLD( + sPicTable_Wartortle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wartortle, + gShinyOverworldPalette_Wartortle + ) .levelUpLearnset = sWartortleLevelUpLearnset, .teachableLearnset = sWartortleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLASTOISE}), @@ -792,6 +859,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Blastoise, .iconPalIndex = 2, FOOTPRINT(Blastoise) + OVERWORLD( + sPicTable_Blastoise, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blastoise, + gShinyOverworldPalette_Blastoise + ) .levelUpLearnset = sBlastoiseLevelUpLearnset, .teachableLearnset = sBlastoiseTeachableLearnset, .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, @@ -962,6 +1037,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Caterpie, .iconPalIndex = 1, FOOTPRINT(Caterpie) + OVERWORLD( + sPicTable_Caterpie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Caterpie, + gShinyOverworldPalette_Caterpie + ) .tmIlliterate = TRUE, .levelUpLearnset = sCaterpieLevelUpLearnset, .teachableLearnset = sCaterpieTeachableLearnset, @@ -1016,6 +1099,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Metapod, .iconPalIndex = 1, FOOTPRINT(Metapod) + OVERWORLD( + sPicTable_Metapod, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Metapod, + gShinyOverworldPalette_Metapod + ) .tmIlliterate = TRUE, .levelUpLearnset = sMetapodLevelUpLearnset, .teachableLearnset = sMetapodTeachableLearnset, @@ -1087,6 +1178,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Butterfree, .iconPalIndex = 0, FOOTPRINT(Butterfree) + OVERWORLD( + sPicTable_Butterfree, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Butterfree, + gShinyOverworldPalette_Butterfree + ) .levelUpLearnset = sButterfreeLevelUpLearnset, .teachableLearnset = sButterfreeTeachableLearnset, .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, @@ -1204,6 +1303,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Weedle, .iconPalIndex = 2, FOOTPRINT(Weedle) + OVERWORLD( + sPicTable_Weedle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Weedle, + gShinyOverworldPalette_Weedle + ) .tmIlliterate = TRUE, .levelUpLearnset = sWeedleLevelUpLearnset, .teachableLearnset = sWeedleTeachableLearnset, @@ -1259,6 +1366,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kakuna, .iconPalIndex = 2, FOOTPRINT(Kakuna) + OVERWORLD( + sPicTable_Kakuna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Kakuna, + gShinyOverworldPalette_Kakuna + ) .tmIlliterate = TRUE, .levelUpLearnset = sKakunaLevelUpLearnset, .teachableLearnset = sKakunaTeachableLearnset, @@ -1326,6 +1441,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Beedrill, .iconPalIndex = 2, FOOTPRINT(Beedrill) + OVERWORLD( + sPicTable_Beedrill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Beedrill, + gShinyOverworldPalette_Beedrill + ) .levelUpLearnset = sBeedrillLevelUpLearnset, .teachableLearnset = sBeedrillTeachableLearnset, .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, @@ -1446,8 +1569,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Pidgey, .iconPalIndex = 0, FOOTPRINT(Pidgey) + OVERWORLD( + sPicTable_Pidgey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pidgey, + gShinyOverworldPalette_Pidgey + ) .levelUpLearnset = sPidgeyLevelUpLearnset, .teachableLearnset = sPidgeyTeachableLearnset, + .eggMoveLearnset = sPidgeyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PIDGEOTTO}), }, @@ -1504,6 +1636,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Pidgeotto, .iconPalIndex = 0, FOOTPRINT(Pidgeotto) + OVERWORLD( + sPicTable_Pidgeotto, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pidgeotto, + gShinyOverworldPalette_Pidgeotto + ) .levelUpLearnset = sPidgeottoLevelUpLearnset, .teachableLearnset = sPidgeottoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_PIDGEOT}), @@ -1572,6 +1712,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Pidgeot, .iconPalIndex = 0, FOOTPRINT(Pidgeot) + OVERWORLD( + sPicTable_Pidgeot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pidgeot, + gShinyOverworldPalette_Pidgeot + ) .levelUpLearnset = sPidgeotLevelUpLearnset, .teachableLearnset = sPidgeotTeachableLearnset, .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, @@ -1689,8 +1837,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Rattata, .iconPalIndex = 2, FOOTPRINT(Rattata) + OVERWORLD( + sPicTable_Rattata, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rattata, + gShinyOverworldPalette_Rattata + ) .levelUpLearnset = sRattataLevelUpLearnset, .teachableLearnset = sRattataTeachableLearnset, + .eggMoveLearnset = sRattataEggMoveLearnset, .formSpeciesIdTable = sRattataFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_RATICATE}), }, @@ -1747,6 +1904,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Raticate, .iconPalIndex = 2, FOOTPRINT(Raticate) + OVERWORLD( + sPicTable_Raticate, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Raticate, + gShinyOverworldPalette_Raticate + ) .levelUpLearnset = sRaticateLevelUpLearnset, .teachableLearnset = sRaticateTeachableLearnset, .formSpeciesIdTable = sRaticateFormSpeciesIdTable, @@ -1802,9 +1967,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_RattataAlolan, .iconPalIndex = 2, FOOTPRINT(Rattata) + OVERWORLD( + sPicTable_RattataAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RattataAlolan, + gShinyOverworldPalette_RattataAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sRattataAlolanLevelUpLearnset, .teachableLearnset = sRattataAlolanTeachableLearnset, + .eggMoveLearnset = sRattataAlolanEggMoveLearnset, .formSpeciesIdTable = sRattataFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}, {EVO_NONE, 0, SPECIES_RATICATE_ALOLAN_TOTEM}), @@ -1855,6 +2029,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_RaticateAlolan, .iconPalIndex = 2, FOOTPRINT(Raticate) + OVERWORLD( + sPicTable_RaticateAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RaticateAlolan, + gShinyOverworldPalette_RaticateAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sRaticateAlolanLevelUpLearnset, .teachableLearnset = sRaticateAlolanTeachableLearnset, @@ -1965,8 +2147,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Spearow, .iconPalIndex = 0, FOOTPRINT(Spearow) + OVERWORLD( + sPicTable_Spearow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spearow, + gShinyOverworldPalette_Spearow + ) .levelUpLearnset = sSpearowLevelUpLearnset, .teachableLearnset = sSpearowTeachableLearnset, + .eggMoveLearnset = sSpearowEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_FEAROW}), }, @@ -2021,6 +2212,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Fearow, .iconPalIndex = 0, FOOTPRINT(Fearow) + OVERWORLD( + sPicTable_Fearow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fearow, + gShinyOverworldPalette_Fearow + ) .levelUpLearnset = sFearowLevelUpLearnset, .teachableLearnset = sFearowTeachableLearnset, }, @@ -2076,8 +2275,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Ekans, .iconPalIndex = 2, FOOTPRINT(Ekans) + OVERWORLD( + sPicTable_Ekans, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Ekans, + gShinyOverworldPalette_Ekans + ) .levelUpLearnset = sEkansLevelUpLearnset, .teachableLearnset = sEkansTeachableLearnset, + .eggMoveLearnset = sEkansEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARBOK}), }, @@ -2135,6 +2343,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Arbok, .iconPalIndex = 2, FOOTPRINT(Arbok) + OVERWORLD( + sPicTable_Arbok, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Arbok, + gShinyOverworldPalette_Arbok + ) .levelUpLearnset = sArbokLevelUpLearnset, .teachableLearnset = sArbokTeachableLearnset, }, @@ -2187,8 +2403,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Pichu, .iconPalIndex = 1, FOOTPRINT(Pichu) + OVERWORLD( + sPicTable_Pichu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pichu, + gShinyOverworldPalette_Pichu + ) .levelUpLearnset = sPichuLevelUpLearnset, .teachableLearnset = sPichuTeachableLearnset, + .eggMoveLearnset = sPichuEggMoveLearnset, .formSpeciesIdTable = sPichuFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}), }, @@ -2238,8 +2463,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_PichuSpikyEared, .iconPalIndex = 1, FOOTPRINT(Pichu) + OVERWORLD( + sPicTable_PichuSpikyEared, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_PichuSpikyEared, + gShinyOverworldPalette_PichuSpikyEared + ) .levelUpLearnset = sPichuLevelUpLearnset, .teachableLearnset = sPichuTeachableLearnset, + .eggMoveLearnset = sPichuEggMoveLearnset, .formSpeciesIdTable = sPichuFormSpeciesIdTable, }, #endif //P_GEN_2_CROSS_EVOS @@ -2305,6 +2539,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSpriteFemale = gMonIcon_PikachuF, .iconPalIndexFemale = 2, #endif + OVERWORLD( + sPicTable_Pikachu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pikachu, + gShinyOverworldPalette_Pikachu + ) FOOTPRINT(Pikachu) .levelUpLearnset = sPikachuLevelUpLearnset, .teachableLearnset = sPikachuTeachableLearnset, @@ -3237,6 +3479,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Raichu, .iconPalIndex = 0, FOOTPRINT(Raichu) + OVERWORLD( + sPicTable_Raichu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Raichu, + gShinyOverworldPalette_Raichu + ) .levelUpLearnset = sRaichuLevelUpLearnset, .teachableLearnset = sRaichuTeachableLearnset, .formSpeciesIdTable = sRaichuFormSpeciesIdTable, @@ -3292,6 +3542,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_RaichuAlolan, .iconPalIndex = 2, FOOTPRINT(Raichu) + OVERWORLD( + sPicTable_RaichuAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RaichuAlolan, + gShinyOverworldPalette_RaichuAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sRaichuAlolanLevelUpLearnset, .teachableLearnset = sRaichuAlolanTeachableLearnset, @@ -3350,8 +3608,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Sandshrew, .iconPalIndex = 2, FOOTPRINT(Sandshrew) + OVERWORLD( + sPicTable_Sandshrew, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sandshrew, + gShinyOverworldPalette_Sandshrew + ) .levelUpLearnset = sSandshrewLevelUpLearnset, .teachableLearnset = sSandshrewTeachableLearnset, + .eggMoveLearnset = sSandshrewEggMoveLearnset, .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SANDSLASH}), }, @@ -3405,6 +3672,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Sandslash, .iconPalIndex = 2, FOOTPRINT(Sandslash) + OVERWORLD( + sPicTable_Sandslash, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sandslash, + gShinyOverworldPalette_Sandslash + ) .levelUpLearnset = sSandslashLevelUpLearnset, .teachableLearnset = sSandslashTeachableLearnset, .formSpeciesIdTable = sSandslashFormSpeciesIdTable, @@ -3460,9 +3735,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_SandshrewAlolan, .iconPalIndex = 0, FOOTPRINT(Sandshrew) + OVERWORLD( + sPicTable_SandshrewAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SandshrewAlolan, + gShinyOverworldPalette_SandshrewAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sSandshrewAlolanLevelUpLearnset, .teachableLearnset = sSandshrewAlolanTeachableLearnset, + .eggMoveLearnset = sSandshrewAlolanEggMoveLearnset, .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}), }, @@ -3516,6 +3800,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_SandslashAlolan, .iconPalIndex = 0, FOOTPRINT(Sandslash) + OVERWORLD( + sPicTable_SandslashAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SandslashAlolan, + gShinyOverworldPalette_SandslashAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sSandslashAlolanLevelUpLearnset, .teachableLearnset = sSandslashAlolanTeachableLearnset, @@ -3578,8 +3870,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_NidoranF, .iconPalIndex = 0, FOOTPRINT(NidoranF) + OVERWORLD( + sPicTable_NidoranF, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_NidoranF, + gShinyOverworldPalette_NidoranF + ) .levelUpLearnset = sNidoranFLevelUpLearnset, .teachableLearnset = sNidoranFTeachableLearnset, + .eggMoveLearnset = sNidoranFEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINA}), }, @@ -3635,6 +3936,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Nidorina, .iconPalIndex = 0, FOOTPRINT(Nidorina) + OVERWORLD( + sPicTable_Nidorina, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nidorina, + gShinyOverworldPalette_Nidorina + ) .levelUpLearnset = sNidorinaLevelUpLearnset, .teachableLearnset = sNidorinaTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}), @@ -3700,6 +4009,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Nidoqueen, .iconPalIndex = 2, FOOTPRINT(Nidoqueen) + OVERWORLD( + sPicTable_Nidoqueen, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nidoqueen, + gShinyOverworldPalette_Nidoqueen + ) .levelUpLearnset = sNidoqueenLevelUpLearnset, .teachableLearnset = sNidoqueenTeachableLearnset, }, @@ -3756,8 +4073,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_NidoranM, .iconPalIndex = 2, FOOTPRINT(NidoranM) + OVERWORLD( + sPicTable_NidoranM, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_NidoranM, + gShinyOverworldPalette_NidoranM + ) .levelUpLearnset = sNidoranMLevelUpLearnset, .teachableLearnset = sNidoranMTeachableLearnset, + .eggMoveLearnset = sNidoranMEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINO}), }, @@ -3813,6 +4139,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Nidorino, .iconPalIndex = 2, FOOTPRINT(Nidorino) + OVERWORLD( + sPicTable_Nidorino, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nidorino, + gShinyOverworldPalette_Nidorino + ) .levelUpLearnset = sNidorinoLevelUpLearnset, .teachableLearnset = sNidorinoTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}), @@ -3879,6 +4213,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Nidoking, .iconPalIndex = 2, FOOTPRINT(Nidoking) + OVERWORLD( + sPicTable_Nidoking, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nidoking, + gShinyOverworldPalette_Nidoking + ) .levelUpLearnset = sNidokingLevelUpLearnset, .teachableLearnset = sNidokingTeachableLearnset, }, @@ -3946,8 +4288,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Cleffa, .iconPalIndex = 0, FOOTPRINT(Cleffa) + OVERWORLD( + sPicTable_Cleffa, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cleffa, + gShinyOverworldPalette_Cleffa + ) .levelUpLearnset = sCleffaLevelUpLearnset, .teachableLearnset = sCleffaTeachableLearnset, + .eggMoveLearnset = sCleffaEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), }, #endif //P_GEN_2_CROSS_EVOS @@ -4006,6 +4357,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Clefairy, .iconPalIndex = 0, FOOTPRINT(Clefairy) + OVERWORLD( + sPicTable_Clefairy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Clefairy, + gShinyOverworldPalette_Clefairy + ) .levelUpLearnset = sClefairyLevelUpLearnset, .teachableLearnset = sClefairyTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}), @@ -4073,6 +4432,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Clefable, .iconPalIndex = 0, FOOTPRINT(Clefable) + OVERWORLD( + sPicTable_Clefable, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Clefable, + gShinyOverworldPalette_Clefable + ) .levelUpLearnset = sClefableLevelUpLearnset, .teachableLearnset = sClefableTeachableLearnset, }, @@ -4128,8 +4495,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Vulpix, .iconPalIndex = 5, FOOTPRINT(Vulpix) + OVERWORLD( + sPicTable_Vulpix, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vulpix, + gShinyOverworldPalette_Vulpix + ) .levelUpLearnset = sVulpixLevelUpLearnset, .teachableLearnset = sVulpixTeachableLearnset, + .eggMoveLearnset = sVulpixEggMoveLearnset, .formSpeciesIdTable = sVulpixFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}), }, @@ -4184,6 +4560,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Ninetales, .iconPalIndex = 3, FOOTPRINT(Ninetales) + OVERWORLD( + sPicTable_Ninetales, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ninetales, + gShinyOverworldPalette_Ninetales + ) .levelUpLearnset = sNinetalesLevelUpLearnset, .teachableLearnset = sNinetalesTeachableLearnset, .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, @@ -4239,9 +4623,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_VulpixAlolan, .iconPalIndex = 2, FOOTPRINT(Vulpix) + OVERWORLD( + sPicTable_VulpixAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_VulpixAlolan, + gShinyOverworldPalette_VulpixAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sVulpixAlolanLevelUpLearnset, .teachableLearnset = sVulpixAlolanTeachableLearnset, + .eggMoveLearnset = sVulpixAlolanEggMoveLearnset, .formSpeciesIdTable = sVulpixFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), }, @@ -4296,6 +4689,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_NinetalesAlolan, .iconPalIndex = 2, FOOTPRINT(Ninetales) + OVERWORLD( + sPicTable_NinetalesAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_NinetalesAlolan, + gShinyOverworldPalette_NinetalesAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sNinetalesAlolanLevelUpLearnset, .teachableLearnset = sNinetalesAlolanTeachableLearnset, @@ -4365,8 +4766,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Igglybuff, .iconPalIndex = 1, FOOTPRINT(Igglybuff) + OVERWORLD( + sPicTable_Igglybuff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Igglybuff, + gShinyOverworldPalette_Igglybuff + ) .levelUpLearnset = sIgglybuffLevelUpLearnset, .teachableLearnset = sIgglybuffTeachableLearnset, + .eggMoveLearnset = sIgglybuffEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), }, #endif //P_GEN_2_CROSS_EVOS @@ -4425,6 +4835,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Jigglypuff, .iconPalIndex = 0, FOOTPRINT(Jigglypuff) + OVERWORLD( + sPicTable_Jigglypuff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Jigglypuff, + gShinyOverworldPalette_Jigglypuff + ) .levelUpLearnset = sJigglypuffLevelUpLearnset, .teachableLearnset = sJigglypuffTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), @@ -4492,6 +4910,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Wigglytuff, .iconPalIndex = 0, FOOTPRINT(Wigglytuff) + OVERWORLD( + sPicTable_Wigglytuff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wigglytuff, + gShinyOverworldPalette_Wigglytuff + ) .levelUpLearnset = sWigglytuffLevelUpLearnset, .teachableLearnset = sWigglytuffTeachableLearnset, }, @@ -4551,8 +4977,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Zubat, .iconPalIndex = 2, FOOTPRINT(Zubat) + OVERWORLD( + sPicTable_Zubat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zubat, + gShinyOverworldPalette_Zubat + ) .levelUpLearnset = sZubatLevelUpLearnset, .teachableLearnset = sZubatTeachableLearnset, + .eggMoveLearnset = sZubatEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_GOLBAT}), }, @@ -4609,6 +5044,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Golbat, .iconPalIndex = 2, FOOTPRINT(Golbat) + OVERWORLD( + sPicTable_Golbat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golbat, + gShinyOverworldPalette_Golbat + ) .levelUpLearnset = sGolbatLevelUpLearnset, .teachableLearnset = sGolbatTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), @@ -4670,6 +5113,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Crobat, .iconPalIndex = 2, FOOTPRINT(Crobat) + OVERWORLD( + sPicTable_Crobat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Crobat, + gShinyOverworldPalette_Crobat + ) .levelUpLearnset = sCrobatLevelUpLearnset, .teachableLearnset = sCrobatTeachableLearnset, }, @@ -4726,8 +5177,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Oddish, .iconPalIndex = 4, FOOTPRINT(Oddish) + OVERWORLD( + sPicTable_Oddish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Oddish, + gShinyOverworldPalette_Oddish + ) .levelUpLearnset = sOddishLevelUpLearnset, .teachableLearnset = sOddishTeachableLearnset, + .eggMoveLearnset = sOddishEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_GLOOM}), }, @@ -4784,6 +5244,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Gloom, .iconPalIndex = 0, FOOTPRINT(Gloom) + OVERWORLD( + sPicTable_Gloom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gloom, + gShinyOverworldPalette_Gloom + ) .levelUpLearnset = sGloomLevelUpLearnset, .teachableLearnset = sGloomTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, @@ -4851,6 +5319,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Vileplume, .iconPalIndex = 0, FOOTPRINT(Vileplume) + OVERWORLD( + sPicTable_Vileplume, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vileplume, + gShinyOverworldPalette_Vileplume + ) .levelUpLearnset = sVileplumeLevelUpLearnset, .teachableLearnset = sVileplumeTeachableLearnset, }, @@ -4913,6 +5389,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Bellossom, .iconPalIndex = 1, FOOTPRINT(Bellossom) + OVERWORLD( + sPicTable_Bellossom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bellossom, + gShinyOverworldPalette_Bellossom + ) .levelUpLearnset = sBellossomLevelUpLearnset, .teachableLearnset = sBellossomTeachableLearnset, }, @@ -4975,8 +5459,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Paras, .iconPalIndex = 0, FOOTPRINT(Paras) + OVERWORLD( + sPicTable_Paras, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Paras, + gShinyOverworldPalette_Paras + ) .levelUpLearnset = sParasLevelUpLearnset, .teachableLearnset = sParasTeachableLearnset, + .eggMoveLearnset = sParasEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_PARASECT}), }, @@ -5036,6 +5529,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Parasect, .iconPalIndex = 0, FOOTPRINT(Parasect) + OVERWORLD( + sPicTable_Parasect, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Parasect, + gShinyOverworldPalette_Parasect + ) .levelUpLearnset = sParasectLevelUpLearnset, .teachableLearnset = sParasectTeachableLearnset, }, @@ -5095,8 +5596,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Venonat, .iconPalIndex = 2, FOOTPRINT(Venonat) + OVERWORLD( + sPicTable_Venonat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Venonat, + gShinyOverworldPalette_Venonat + ) .levelUpLearnset = sVenonatLevelUpLearnset, .teachableLearnset = sVenonatTeachableLearnset, + .eggMoveLearnset = sVenonatEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_VENOMOTH}), }, @@ -5155,6 +5665,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Venomoth, .iconPalIndex = 2, FOOTPRINT(Venomoth) + OVERWORLD( + sPicTable_Venomoth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Venomoth, + gShinyOverworldPalette_Venomoth + ) .levelUpLearnset = sVenomothLevelUpLearnset, .teachableLearnset = sVenomothTeachableLearnset, }, @@ -5222,8 +5740,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Diglett, .iconPalIndex = 2, FOOTPRINT(Diglett) + OVERWORLD( + sPicTable_Diglett, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Diglett, + gShinyOverworldPalette_Diglett + ) .levelUpLearnset = sDiglettLevelUpLearnset, .teachableLearnset = sDiglettTeachableLearnset, + .eggMoveLearnset = sDiglettEggMoveLearnset, .formSpeciesIdTable = sDiglettFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO}), }, @@ -5278,6 +5805,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dugtrio, .iconPalIndex = 2, FOOTPRINT(Dugtrio) + OVERWORLD( + sPicTable_Dugtrio, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Dugtrio, + gShinyOverworldPalette_Dugtrio + ) .levelUpLearnset = sDugtrioLevelUpLearnset, .teachableLearnset = sDugtrioTeachableLearnset, .formSpeciesIdTable = sDugtrioFormSpeciesIdTable, @@ -5333,9 +5868,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_DiglettAlolan, .iconPalIndex = 2, FOOTPRINT(Diglett) + OVERWORLD( + sPicTable_DiglettAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DiglettAlolan, + gShinyOverworldPalette_DiglettAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sDiglettAlolanLevelUpLearnset, .teachableLearnset = sDiglettAlolanTeachableLearnset, + .eggMoveLearnset = sDiglettAlolanEggMoveLearnset, .formSpeciesIdTable = sDiglettFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}), }, @@ -5390,6 +5934,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_DugtrioAlolan, .iconPalIndex = 2, FOOTPRINT(Dugtrio) + OVERWORLD( + sPicTable_DugtrioAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DugtrioAlolan, + gShinyOverworldPalette_DugtrioAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sDugtrioAlolanLevelUpLearnset, .teachableLearnset = sDugtrioAlolanTeachableLearnset, @@ -5453,8 +6005,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Meowth, .iconPalIndex = 1, FOOTPRINT(Meowth) + OVERWORLD( + sPicTable_Meowth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Meowth, + gShinyOverworldPalette_Meowth + ) .levelUpLearnset = sMeowthLevelUpLearnset, .teachableLearnset = sMeowthTeachableLearnset, + .eggMoveLearnset = sMeowthEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .formChangeTable = sMeowthFormChangeTable, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERSIAN}), @@ -5514,6 +6075,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Persian, .iconPalIndex = 1, FOOTPRINT(Persian) + OVERWORLD( + sPicTable_Persian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Persian, + gShinyOverworldPalette_Persian + ) .levelUpLearnset = sPersianLevelUpLearnset, .teachableLearnset = sPersianTeachableLearnset, .formSpeciesIdTable = sPersianFormSpeciesIdTable, @@ -5569,9 +6138,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MeowthAlolan, .iconPalIndex = 2, FOOTPRINT(Meowth) + OVERWORLD( + sPicTable_MeowthAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeowthAlolan, + gShinyOverworldPalette_MeowthAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sMeowthAlolanLevelUpLearnset, .teachableLearnset = sMeowthAlolanTeachableLearnset, + .eggMoveLearnset = sMeowthAlolanEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLAN}), }, @@ -5625,6 +6203,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_PersianAlolan, .iconPalIndex = 2, FOOTPRINT(Persian) + OVERWORLD( + sPicTable_PersianAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_PersianAlolan, + gShinyOverworldPalette_PersianAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sPersianAlolanLevelUpLearnset, .teachableLearnset = sPersianAlolanTeachableLearnset, @@ -5681,9 +6267,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MeowthGalarian, .iconPalIndex = 0, FOOTPRINT(Meowth) + OVERWORLD( + sPicTable_MeowthGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeowthGalarian, + gShinyOverworldPalette_MeowthGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sMeowthGalarianLevelUpLearnset, .teachableLearnset = sMeowthGalarianTeachableLearnset, + .eggMoveLearnset = sMeowthGalarianEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERRSERKER}), }, @@ -5735,6 +6330,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Perrserker, .iconPalIndex = 2, FOOTPRINT(Perrserker) + OVERWORLD( + sPicTable_Perrserker, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Perrserker, + gShinyOverworldPalette_Perrserker + ) .levelUpLearnset = sPerrserkerLevelUpLearnset, .teachableLearnset = sPerrserkerTeachableLearnset, }, @@ -5793,6 +6396,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isGigantamax = TRUE, .levelUpLearnset = sMeowthLevelUpLearnset, .teachableLearnset = sMeowthTeachableLearnset, + .eggMoveLearnset = sMeowthEggMoveLearnset, .formSpeciesIdTable = sMeowthFormSpeciesIdTable, .formChangeTable = sMeowthFormChangeTable, }, @@ -5848,8 +6452,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Psyduck, .iconPalIndex = 1, FOOTPRINT(Psyduck) + OVERWORLD( + sPicTable_Psyduck, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Psyduck, + gShinyOverworldPalette_Psyduck + ) .levelUpLearnset = sPsyduckLevelUpLearnset, .teachableLearnset = sPsyduckTeachableLearnset, + .eggMoveLearnset = sPsyduckEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_GOLDUCK}), }, @@ -5901,6 +6514,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Golduck, .iconPalIndex = 0, FOOTPRINT(Golduck) + OVERWORLD( + sPicTable_Golduck, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golduck, + gShinyOverworldPalette_Golduck + ) .levelUpLearnset = sGolduckLevelUpLearnset, .teachableLearnset = sGolduckTeachableLearnset, }, @@ -5960,8 +6581,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Mankey, .iconPalIndex = 1, FOOTPRINT(Mankey) + OVERWORLD( + sPicTable_Mankey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mankey, + gShinyOverworldPalette_Mankey + ) .levelUpLearnset = sMankeyLevelUpLearnset, .teachableLearnset = sMankeyTeachableLearnset, + .eggMoveLearnset = sMankeyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PRIMEAPE}), }, @@ -6017,9 +6647,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Primeape, .iconPalIndex = 2, FOOTPRINT(Primeape) + OVERWORLD( + sPicTable_Primeape, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Primeape, + gShinyOverworldPalette_Primeape + ) .levelUpLearnset = sPrimeapeLevelUpLearnset, .teachableLearnset = sPrimeapeTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), + .evolutions = EVOLUTION({EVO_USE_MOVE_TWENTY_TIMES, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), }, #if P_GEN_9_CROSS_EVOS @@ -6127,8 +6765,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Growlithe, .iconPalIndex = 3, FOOTPRINT(Growlithe) + OVERWORLD( + sPicTable_Growlithe, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Growlithe, + gShinyOverworldPalette_Growlithe + ) .levelUpLearnset = sGrowlitheLevelUpLearnset, .teachableLearnset = sGrowlitheTeachableLearnset, + .eggMoveLearnset = sGrowlitheEggMoveLearnset, .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}), }, @@ -6182,6 +6829,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Arcanine, .iconPalIndex = 3, FOOTPRINT(Arcanine) + OVERWORLD( + sPicTable_Arcanine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Arcanine, + gShinyOverworldPalette_Arcanine + ) .levelUpLearnset = sArcanineLevelUpLearnset, .teachableLearnset = sArcanineTeachableLearnset, .formSpeciesIdTable = sArcanineFormSpeciesIdTable, @@ -6236,6 +6891,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_GrowlitheHisuian, .iconPalIndex = 0, FOOTPRINT(Growlithe) + OVERWORLD( + sPicTable_GrowlitheHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GrowlitheHisuian, + gShinyOverworldPalette_GrowlitheHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sGrowlitheHisuianLevelUpLearnset, .teachableLearnset = sGrowlitheHisuianTeachableLearnset, @@ -6291,6 +6954,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_ArcanineHisuian, .iconPalIndex = 0, FOOTPRINT(Arcanine) + OVERWORLD( + sPicTable_ArcanineHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ArcanineHisuian, + gShinyOverworldPalette_ArcanineHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sArcanineHisuianLevelUpLearnset, .teachableLearnset = sArcanineHisuianTeachableLearnset, @@ -6349,8 +7020,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Poliwag, .iconPalIndex = 0, FOOTPRINT(Poliwag) + OVERWORLD( + sPicTable_Poliwag, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Poliwag, + gShinyOverworldPalette_Poliwag + ) .levelUpLearnset = sPoliwagLevelUpLearnset, .teachableLearnset = sPoliwagTeachableLearnset, + .eggMoveLearnset = sPoliwagEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_POLIWHIRL}), }, @@ -6405,6 +7085,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Poliwhirl, .iconPalIndex = 0, FOOTPRINT(Poliwhirl) + OVERWORLD( + sPicTable_Poliwhirl, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Poliwhirl, + gShinyOverworldPalette_Poliwhirl + ) .levelUpLearnset = sPoliwhirlLevelUpLearnset, .teachableLearnset = sPoliwhirlTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, @@ -6470,6 +7158,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Poliwrath, .iconPalIndex = 0, FOOTPRINT(Poliwrath) + OVERWORLD( + sPicTable_Poliwrath, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Poliwrath, + gShinyOverworldPalette_Poliwrath + ) .levelUpLearnset = sPoliwrathLevelUpLearnset, .teachableLearnset = sPoliwrathTeachableLearnset, }, @@ -6536,6 +7232,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Politoed, .iconPalIndex = 1, FOOTPRINT(Politoed) + OVERWORLD( + sPicTable_Politoed, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Politoed, + gShinyOverworldPalette_Politoed + ) .levelUpLearnset = sPolitoedLevelUpLearnset, .teachableLearnset = sPolitoedTeachableLearnset, }, @@ -6598,8 +7302,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Abra, .iconPalIndex = 2, FOOTPRINT(Abra) + OVERWORLD( + sPicTable_Abra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Abra, + gShinyOverworldPalette_Abra + ) .levelUpLearnset = sAbraLevelUpLearnset, .teachableLearnset = sAbraTeachableLearnset, + .eggMoveLearnset = sAbraEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_KADABRA}), }, @@ -6657,6 +7370,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kadabra, .iconPalIndex = 2, FOOTPRINT(Kadabra) + OVERWORLD( + sPicTable_Kadabra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Kadabra, + gShinyOverworldPalette_Kadabra + ) .levelUpLearnset = sKadabraLevelUpLearnset, .teachableLearnset = sKadabraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ALAKAZAM}, @@ -6726,6 +7447,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Alakazam, .iconPalIndex = 2, FOOTPRINT(Alakazam) + OVERWORLD( + sPicTable_Alakazam, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Alakazam, + gShinyOverworldPalette_Alakazam + ) .levelUpLearnset = sAlakazamLevelUpLearnset, .teachableLearnset = sAlakazamTeachableLearnset, .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, @@ -6851,8 +7580,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Machop, .iconPalIndex = 0, FOOTPRINT(Machop) + OVERWORLD( + sPicTable_Machop, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Machop, + gShinyOverworldPalette_Machop + ) .levelUpLearnset = sMachopLevelUpLearnset, .teachableLearnset = sMachopTeachableLearnset, + .eggMoveLearnset = sMachopEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MACHOKE}), }, @@ -6910,6 +7648,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Machoke, .iconPalIndex = 2, FOOTPRINT(Machoke) + OVERWORLD( + sPicTable_Machoke, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Machoke, + gShinyOverworldPalette_Machoke + ) .levelUpLearnset = sMachokeLevelUpLearnset, .teachableLearnset = sMachokeTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MACHAMP}, @@ -6977,6 +7723,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Machamp, .iconPalIndex = 0, FOOTPRINT(Machamp) + OVERWORLD( + sPicTable_Machamp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Machamp, + gShinyOverworldPalette_Machamp + ) .levelUpLearnset = sMachampLevelUpLearnset, .teachableLearnset = sMachampTeachableLearnset, .formSpeciesIdTable = sMachampFormSpeciesIdTable, @@ -7095,8 +7849,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Bellsprout, .iconPalIndex = 1, FOOTPRINT(Bellsprout) + OVERWORLD( + sPicTable_Bellsprout, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bellsprout, + gShinyOverworldPalette_Bellsprout + ) .levelUpLearnset = sBellsproutLevelUpLearnset, .teachableLearnset = sBellsproutTeachableLearnset, + .eggMoveLearnset = sBellsproutEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_WEEPINBELL}), }, @@ -7149,6 +7912,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Weepinbell, .iconPalIndex = 1, FOOTPRINT(Weepinbell) + OVERWORLD( + sPicTable_Weepinbell, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Weepinbell, + gShinyOverworldPalette_Weepinbell + ) .levelUpLearnset = sWeepinbellLevelUpLearnset, .teachableLearnset = sWeepinbellTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), @@ -7210,6 +7981,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Victreebel, .iconPalIndex = 1, FOOTPRINT(Victreebel) + OVERWORLD( + sPicTable_Victreebel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Victreebel, + gShinyOverworldPalette_Victreebel + ) .levelUpLearnset = sVictreebelLevelUpLearnset, .teachableLearnset = sVictreebelTeachableLearnset, }, @@ -7265,8 +8044,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tentacool, .iconPalIndex = 0, FOOTPRINT(Tentacool) + OVERWORLD( + sPicTable_Tentacool, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Tentacool, + gShinyOverworldPalette_Tentacool + ) .levelUpLearnset = sTentacoolLevelUpLearnset, .teachableLearnset = sTentacoolTeachableLearnset, + .eggMoveLearnset = sTentacoolEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TENTACRUEL}), }, @@ -7319,6 +8107,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tentacruel, .iconPalIndex = 0, FOOTPRINT(Tentacruel) + OVERWORLD( + sPicTable_Tentacruel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Tentacruel, + gShinyOverworldPalette_Tentacruel + ) .levelUpLearnset = sTentacruelLevelUpLearnset, .teachableLearnset = sTentacruelTeachableLearnset, }, @@ -7396,8 +8192,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Geodude, .iconPalIndex = 1, FOOTPRINT(Geodude) + OVERWORLD( + sPicTable_Geodude, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Geodude, + gShinyOverworldPalette_Geodude + ) .levelUpLearnset = sGeodudeLevelUpLearnset, .teachableLearnset = sGeodudeTeachableLearnset, + .eggMoveLearnset = sGeodudeEggMoveLearnset, .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER}), }, @@ -7451,6 +8256,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Graveler, .iconPalIndex = 1, FOOTPRINT(Graveler) + OVERWORLD( + sPicTable_Graveler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Graveler, + gShinyOverworldPalette_Graveler + ) .levelUpLearnset = sGravelerLevelUpLearnset, .teachableLearnset = sGravelerTeachableLearnset, .formSpeciesIdTable = sGravelerFormSpeciesIdTable, @@ -7507,6 +8320,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Golem, .iconPalIndex = 2, FOOTPRINT(Golem) + OVERWORLD( + sPicTable_Golem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golem, + gShinyOverworldPalette_Golem + ) .levelUpLearnset = sGolemLevelUpLearnset, .teachableLearnset = sGolemTeachableLearnset, .formSpeciesIdTable = sGolemFormSpeciesIdTable, @@ -7563,9 +8384,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_GeodudeAlolan, .iconPalIndex = 2, FOOTPRINT(Geodude) + OVERWORLD( + sPicTable_GeodudeAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GeodudeAlolan, + gShinyOverworldPalette_GeodudeAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sGeodudeAlolanLevelUpLearnset, .teachableLearnset = sGeodudeAlolanTeachableLearnset, + .eggMoveLearnset = sGeodudeAlolanEggMoveLearnset, .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}), }, @@ -7619,6 +8449,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_GravelerAlolan, .iconPalIndex = 2, FOOTPRINT(Graveler) + OVERWORLD( + sPicTable_GravelerAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GravelerAlolan, + gShinyOverworldPalette_GravelerAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sGravelerAlolanLevelUpLearnset, .teachableLearnset = sGravelerAlolanTeachableLearnset, @@ -7676,6 +8514,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_GolemAlolan, .iconPalIndex = 2, FOOTPRINT(Golem) + OVERWORLD( + sPicTable_GolemAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GolemAlolan, + gShinyOverworldPalette_GolemAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sGolemAlolanLevelUpLearnset, .teachableLearnset = sGolemAlolanTeachableLearnset, @@ -7734,8 +8580,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Ponyta, .iconPalIndex = 3, FOOTPRINT(Ponyta) + OVERWORLD( + sPicTable_Ponyta, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ponyta, + gShinyOverworldPalette_Ponyta + ) .levelUpLearnset = sPonytaLevelUpLearnset, .teachableLearnset = sPonytaTeachableLearnset, + .eggMoveLearnset = sPonytaEggMoveLearnset, .formSpeciesIdTable = sPonytaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH}), }, @@ -7788,6 +8643,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Rapidash, .iconPalIndex = 3, FOOTPRINT(Rapidash) + OVERWORLD( + sPicTable_Rapidash, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rapidash, + gShinyOverworldPalette_Rapidash + ) .levelUpLearnset = sRapidashLevelUpLearnset, .teachableLearnset = sRapidashTeachableLearnset, .formSpeciesIdTable = sRapidashFormSpeciesIdTable, @@ -7842,9 +8705,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_PonytaGalarian, .iconPalIndex = 2, FOOTPRINT(Ponyta) + OVERWORLD( + sPicTable_PonytaGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_PonytaGalarian, + gShinyOverworldPalette_PonytaGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sPonytaGalarianLevelUpLearnset, .teachableLearnset = sPonytaGalarianTeachableLearnset, + .eggMoveLearnset = sPonytaGalarianEggMoveLearnset, .formSpeciesIdTable = sPonytaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}), }, @@ -7897,6 +8769,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_RapidashGalarian, .iconPalIndex = 2, FOOTPRINT(Rapidash) + OVERWORLD( + sPicTable_RapidashGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RapidashGalarian, + gShinyOverworldPalette_RapidashGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sRapidashGalarianLevelUpLearnset, .teachableLearnset = sRapidashGalarianTeachableLearnset, @@ -7955,8 +8835,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Slowpoke, .iconPalIndex = 0, FOOTPRINT(Slowpoke) + OVERWORLD( + sPicTable_Slowpoke, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slowpoke, + gShinyOverworldPalette_Slowpoke + ) .levelUpLearnset = sSlowpokeLevelUpLearnset, .teachableLearnset = sSlowpokeTeachableLearnset, + .eggMoveLearnset = sSlowpokeEggMoveLearnset, .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_SLOWBRO}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, @@ -8012,6 +8901,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Slowbro, .iconPalIndex = 0, FOOTPRINT(Slowbro) + OVERWORLD( + sPicTable_Slowbro, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slowbro, + gShinyOverworldPalette_Slowbro + ) .levelUpLearnset = sSlowbroLevelUpLearnset, .teachableLearnset = sSlowbroTeachableLearnset, .formSpeciesIdTable = sSlowbroFormSpeciesIdTable, @@ -8068,6 +8965,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Slowking, .iconPalIndex = 0, FOOTPRINT(Slowking) + OVERWORLD( + sPicTable_Slowking, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slowking, + gShinyOverworldPalette_Slowking + ) .levelUpLearnset = sSlowkingLevelUpLearnset, .teachableLearnset = sSlowkingTeachableLearnset, .formSpeciesIdTable = sSlowkingFormSpeciesIdTable, @@ -8181,9 +9086,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_SlowpokeGalarian, .iconPalIndex = 0, FOOTPRINT(Slowpoke) + OVERWORLD( + sPicTable_SlowpokeGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SlowpokeGalarian, + gShinyOverworldPalette_SlowpokeGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sSlowpokeGalarianLevelUpLearnset, .teachableLearnset = sSlowpokeGalarianTeachableLearnset, + .eggMoveLearnset = sSlowpokeGalarianEggMoveLearnset, .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}), @@ -8238,6 +9152,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_SlowbroGalarian, .iconPalIndex = 0, FOOTPRINT(Slowbro) + OVERWORLD( + sPicTable_SlowbroGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SlowbroGalarian, + gShinyOverworldPalette_SlowbroGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sSlowbroGalarianLevelUpLearnset, .teachableLearnset = sSlowbroGalarianTeachableLearnset, @@ -8293,6 +9215,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_SlowkingGalarian, .iconPalIndex = 0, FOOTPRINT(Slowking) + OVERWORLD( + sPicTable_SlowkingGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SlowkingGalarian, + gShinyOverworldPalette_SlowkingGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sSlowkingGalarianLevelUpLearnset, .teachableLearnset = sSlowkingGalarianTeachableLearnset, @@ -8353,6 +9283,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magnemite, .iconPalIndex = 0, FOOTPRINT(Magnemite) + OVERWORLD( + sPicTable_Magnemite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Magnemite, + gShinyOverworldPalette_Magnemite + ) .levelUpLearnset = sMagnemiteLevelUpLearnset, .teachableLearnset = sMagnemiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGNETON}), @@ -8408,6 +9346,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magneton, .iconPalIndex = 0, FOOTPRINT(Magneton) + OVERWORLD( + sPicTable_Magneton, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Magneton, + gShinyOverworldPalette_Magneton + ) .levelUpLearnset = sMagnetonLevelUpLearnset, .teachableLearnset = sMagnetonTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, @@ -8471,6 +9417,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magnezone, .iconPalIndex = 0, FOOTPRINT(Magnezone) + OVERWORLD( + sPicTable_Magnezone, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Magnezone, + gShinyOverworldPalette_Magnezone + ) .levelUpLearnset = sMagnezoneLevelUpLearnset, .teachableLearnset = sMagnezoneTeachableLearnset, }, @@ -8537,8 +9491,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Farfetchd, .iconPalIndex = 1, FOOTPRINT(Farfetchd) + OVERWORLD( + sPicTable_Farfetchd, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Farfetchd, + gShinyOverworldPalette_Farfetchd + ) .levelUpLearnset = sFarfetchdLevelUpLearnset, .teachableLearnset = sFarfetchdTeachableLearnset, + .eggMoveLearnset = sFarfetchdEggMoveLearnset, .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, }, @@ -8592,9 +9555,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_FarfetchdGalarian, .iconPalIndex = 1, FOOTPRINT(Farfetchd) + OVERWORLD( + sPicTable_FarfetchdGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_FarfetchdGalarian, + gShinyOverworldPalette_FarfetchdGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sFarfetchdGalarianLevelUpLearnset, .teachableLearnset = sFarfetchdGalarianTeachableLearnset, + .eggMoveLearnset = sFarfetchdGalarianEggMoveLearnset, .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}), }, @@ -8648,6 +9620,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Sirfetchd, .iconPalIndex = 1, FOOTPRINT(Sirfetchd) + OVERWORLD( + sPicTable_Sirfetchd, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sirfetchd, + gShinyOverworldPalette_Sirfetchd + ) .levelUpLearnset = sSirfetchdLevelUpLearnset, .teachableLearnset = sSirfetchdTeachableLearnset, }, @@ -8708,8 +9688,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Doduo, .iconPalIndex = 2, FOOTPRINT(Doduo) + OVERWORLD( + sPicTable_Doduo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Doduo, + gShinyOverworldPalette_Doduo + ) .levelUpLearnset = sDoduoLevelUpLearnset, .teachableLearnset = sDoduoTeachableLearnset, + .eggMoveLearnset = sDoduoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_DODRIO}), }, @@ -8772,6 +9761,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dodrio, .iconPalIndex = 2, FOOTPRINT(Dodrio) + OVERWORLD( + sPicTable_Dodrio, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dodrio, + gShinyOverworldPalette_Dodrio + ) .levelUpLearnset = sDodrioLevelUpLearnset, .teachableLearnset = sDodrioTeachableLearnset, }, @@ -8830,8 +9827,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Seel, .iconPalIndex = 0, FOOTPRINT(Seel) + OVERWORLD( + sPicTable_Seel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Seel, + gShinyOverworldPalette_Seel + ) .levelUpLearnset = sSeelLevelUpLearnset, .teachableLearnset = sSeelTeachableLearnset, + .eggMoveLearnset = sSeelEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DEWGONG}), }, @@ -8887,6 +9893,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dewgong, .iconPalIndex = 2, FOOTPRINT(Dewgong) + OVERWORLD( + sPicTable_Dewgong, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dewgong, + gShinyOverworldPalette_Dewgong + ) .levelUpLearnset = sDewgongLevelUpLearnset, .teachableLearnset = sDewgongTeachableLearnset, }, @@ -8942,8 +9956,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Grimer, .iconPalIndex = 2, FOOTPRINT(Grimer) + OVERWORLD( + sPicTable_Grimer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Grimer, + gShinyOverworldPalette_Grimer + ) .levelUpLearnset = sGrimerLevelUpLearnset, .teachableLearnset = sGrimerTeachableLearnset, + .eggMoveLearnset = sGrimerEggMoveLearnset, .formSpeciesIdTable = sGrimerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK}), }, @@ -8999,6 +10022,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Muk, .iconPalIndex = 2, FOOTPRINT(Muk) + OVERWORLD( + sPicTable_Muk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Muk, + gShinyOverworldPalette_Muk + ) .levelUpLearnset = sMukLevelUpLearnset, .teachableLearnset = sMukTeachableLearnset, .formSpeciesIdTable = sMukFormSpeciesIdTable, @@ -9054,9 +10085,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_GrimerAlolan, .iconPalIndex = 1, FOOTPRINT(Grimer) + OVERWORLD( + sPicTable_GrimerAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GrimerAlolan, + gShinyOverworldPalette_GrimerAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sGrimerAlolanLevelUpLearnset, .teachableLearnset = sGrimerAlolanTeachableLearnset, + .eggMoveLearnset = sGrimerAlolanEggMoveLearnset, .formSpeciesIdTable = sGrimerFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}), }, @@ -9112,6 +10152,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MukAlolan, .iconPalIndex = 0, FOOTPRINT(Muk) + OVERWORLD( + sPicTable_MukAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MukAlolan, + gShinyOverworldPalette_MukAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sMukAlolanLevelUpLearnset, .teachableLearnset = sMukAlolanTeachableLearnset, @@ -9176,8 +10224,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Shellder, .iconPalIndex = 2, FOOTPRINT(Shellder) + OVERWORLD( + sPicTable_Shellder, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Shellder, + gShinyOverworldPalette_Shellder + ) .levelUpLearnset = sShellderLevelUpLearnset, .teachableLearnset = sShellderTeachableLearnset, + .eggMoveLearnset = sShellderEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}), }, @@ -9235,6 +10292,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Cloyster, .iconPalIndex = 2, FOOTPRINT(Cloyster) + OVERWORLD( + sPicTable_Cloyster, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Cloyster, + gShinyOverworldPalette_Cloyster + ) .levelUpLearnset = sCloysterLevelUpLearnset, .teachableLearnset = sCloysterTeachableLearnset, }, @@ -9290,8 +10355,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Gastly, .iconPalIndex = 2, FOOTPRINT(Gastly) + OVERWORLD( + sPicTable_Gastly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Gastly, + gShinyOverworldPalette_Gastly + ) .levelUpLearnset = sGastlyLevelUpLearnset, .teachableLearnset = sGastlyTeachableLearnset, + .eggMoveLearnset = sGastlyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_HAUNTER}), }, @@ -9345,6 +10419,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Haunter, .iconPalIndex = 2, FOOTPRINT(Haunter) + OVERWORLD( + sPicTable_Haunter, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Haunter, + gShinyOverworldPalette_Haunter + ) .levelUpLearnset = sHaunterLevelUpLearnset, .teachableLearnset = sHaunterTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GENGAR}, @@ -9411,6 +10493,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Gengar, .iconPalIndex = 2, FOOTPRINT(Gengar) + OVERWORLD( + sPicTable_Gengar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gengar, + gShinyOverworldPalette_Gengar + ) .levelUpLearnset = sGengarLevelUpLearnset, .teachableLearnset = sGengarTeachableLearnset, .formSpeciesIdTable = sGengarFormSpeciesIdTable, @@ -9581,8 +10671,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Onix, .iconPalIndex = 2, FOOTPRINT(Onix) + OVERWORLD( + sPicTable_Onix, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Onix, + gShinyOverworldPalette_Onix + ) .levelUpLearnset = sOnixLevelUpLearnset, .teachableLearnset = sOnixTeachableLearnset, + .eggMoveLearnset = sOnixEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}), }, @@ -9642,6 +10741,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Steelix, .iconPalIndex = 0, FOOTPRINT(Steelix) + OVERWORLD( + sPicTable_Steelix, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Steelix, + gShinyOverworldPalette_Steelix + ) .levelUpLearnset = sSteelixLevelUpLearnset, .teachableLearnset = sSteelixTeachableLearnset, .formSpeciesIdTable = sSteelixFormSpeciesIdTable, @@ -9762,8 +10869,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Drowzee, .iconPalIndex = 2, FOOTPRINT(Drowzee) + OVERWORLD( + sPicTable_Drowzee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drowzee, + gShinyOverworldPalette_Drowzee + ) .levelUpLearnset = sDrowzeeLevelUpLearnset, .teachableLearnset = sDrowzeeTeachableLearnset, + .eggMoveLearnset = sDrowzeeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_HYPNO}), }, @@ -9824,6 +10940,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Hypno, .iconPalIndex = 2, FOOTPRINT(Hypno) + OVERWORLD( + sPicTable_Hypno, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hypno, + gShinyOverworldPalette_Hypno + ) .levelUpLearnset = sHypnoLevelUpLearnset, .teachableLearnset = sHypnoTeachableLearnset, }, @@ -9878,8 +11002,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Krabby, .iconPalIndex = 0, FOOTPRINT(Krabby) + OVERWORLD( + sPicTable_Krabby, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Krabby, + gShinyOverworldPalette_Krabby + ) .levelUpLearnset = sKrabbyLevelUpLearnset, .teachableLearnset = sKrabbyTeachableLearnset, + .eggMoveLearnset = sKrabbyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_KINGLER}), }, @@ -9933,6 +11066,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kingler, .iconPalIndex = 0, FOOTPRINT(Kingler) + OVERWORLD( + sPicTable_Kingler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kingler, + gShinyOverworldPalette_Kingler + ) .levelUpLearnset = sKinglerLevelUpLearnset, .teachableLearnset = sKinglerTeachableLearnset, .formSpeciesIdTable = sKinglerFormSpeciesIdTable, @@ -10055,6 +11196,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Voltorb, .iconPalIndex = 0, FOOTPRINT(Voltorb) + OVERWORLD( + sPicTable_Voltorb, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Voltorb, + gShinyOverworldPalette_Voltorb + ) .levelUpLearnset = sVoltorbLevelUpLearnset, .teachableLearnset = sVoltorbTeachableLearnset, .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, @@ -10109,6 +11258,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Electrode, .iconPalIndex = 0, FOOTPRINT(Electrode) + OVERWORLD( + sPicTable_Electrode, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Electrode, + gShinyOverworldPalette_Electrode + ) .levelUpLearnset = sElectrodeLevelUpLearnset, .teachableLearnset = sElectrodeTeachableLearnset, .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, @@ -10163,6 +11320,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_VoltorbHisuian, .iconPalIndex = 0, FOOTPRINT(Voltorb) + OVERWORLD( + sPicTable_VoltorbHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_VoltorbHisuian, + gShinyOverworldPalette_VoltorbHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sVoltorbHisuianLevelUpLearnset, .teachableLearnset = sVoltorbHisuianTeachableLearnset, @@ -10218,6 +11383,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_ElectrodeHisuian, .iconPalIndex = 1, FOOTPRINT(Electrode) + OVERWORLD( + sPicTable_ElectrodeHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ElectrodeHisuian, + gShinyOverworldPalette_ElectrodeHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sElectrodeHisuianLevelUpLearnset, .teachableLearnset = sElectrodeHisuianTeachableLearnset, @@ -10276,8 +11449,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Exeggcute, .iconPalIndex = 0, FOOTPRINT(Exeggcute) + OVERWORLD( + sPicTable_Exeggcute, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Exeggcute, + gShinyOverworldPalette_Exeggcute + ) .levelUpLearnset = sExeggcuteLevelUpLearnset, .teachableLearnset = sExeggcuteTeachableLearnset, + .eggMoveLearnset = sExeggcuteEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), }, @@ -10340,6 +11522,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Exeggutor, .iconPalIndex = 1, FOOTPRINT(Exeggutor) + OVERWORLD( + sPicTable_Exeggutor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Exeggutor, + gShinyOverworldPalette_Exeggutor + ) .levelUpLearnset = sExeggutorLevelUpLearnset, .teachableLearnset = sExeggutorTeachableLearnset, .formSpeciesIdTable = sExeggutorFormSpeciesIdTable, @@ -10394,6 +11584,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_ExeggutorAlolan, .iconPalIndex = 1, FOOTPRINT(Exeggutor) + OVERWORLD( + sPicTable_ExeggutorAlolan, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ExeggutorAlolan, + gShinyOverworldPalette_ExeggutorAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sExeggutorAlolanLevelUpLearnset, .teachableLearnset = sExeggutorAlolanTeachableLearnset, @@ -10453,8 +11651,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Cubone, .iconPalIndex = 2, FOOTPRINT(Cubone) + OVERWORLD( + sPicTable_Cubone, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cubone, + gShinyOverworldPalette_Cubone + ) .levelUpLearnset = sCuboneLevelUpLearnset, .teachableLearnset = sCuboneTeachableLearnset, + .eggMoveLearnset = sCuboneEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}, {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN_TOTEM}), @@ -10509,6 +11716,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Marowak, .iconPalIndex = 2, FOOTPRINT(Marowak) + OVERWORLD( + sPicTable_Marowak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Marowak, + gShinyOverworldPalette_Marowak + ) .levelUpLearnset = sMarowakLevelUpLearnset, .teachableLearnset = sMarowakTeachableLearnset, .formSpeciesIdTable = sMarowakFormSpeciesIdTable, @@ -10560,6 +11775,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MarowakAlolan, .iconPalIndex = 1, FOOTPRINT(Marowak) + OVERWORLD( + sPicTable_MarowakAlolan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MarowakAlolan, + gShinyOverworldPalette_MarowakAlolan + ) .isAlolanForm = TRUE, .levelUpLearnset = sMarowakAlolanLevelUpLearnset, .teachableLearnset = sMarowakAlolanTeachableLearnset, @@ -10674,8 +11897,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tyrogue, .iconPalIndex = 2, FOOTPRINT(Tyrogue) + OVERWORLD( + sPicTable_Tyrogue, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tyrogue, + gShinyOverworldPalette_Tyrogue + ) .levelUpLearnset = sTyrogueLevelUpLearnset, .teachableLearnset = sTyrogueTeachableLearnset, + .eggMoveLearnset = sTyrogueEggMoveLearnset, .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}), @@ -10734,6 +11966,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Hitmonlee, .iconPalIndex = 2, FOOTPRINT(Hitmonlee) + OVERWORLD( + sPicTable_Hitmonlee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hitmonlee, + gShinyOverworldPalette_Hitmonlee + ) .levelUpLearnset = sHitmonleeLevelUpLearnset, .teachableLearnset = sHitmonleeTeachableLearnset, }, @@ -10790,6 +12030,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Hitmonchan, .iconPalIndex = 2, FOOTPRINT(Hitmonchan) + OVERWORLD( + sPicTable_Hitmonchan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hitmonchan, + gShinyOverworldPalette_Hitmonchan + ) .levelUpLearnset = sHitmonchanLevelUpLearnset, .teachableLearnset = sHitmonchanTeachableLearnset, }, @@ -10847,6 +12095,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Hitmontop, .iconPalIndex = 2, FOOTPRINT(Hitmontop) + OVERWORLD( + sPicTable_Hitmontop, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hitmontop, + gShinyOverworldPalette_Hitmontop + ) .levelUpLearnset = sHitmontopLevelUpLearnset, .teachableLearnset = sHitmontopTeachableLearnset, }, @@ -10903,8 +12159,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Lickitung, .iconPalIndex = 0, FOOTPRINT(Lickitung) + OVERWORLD( + sPicTable_Lickitung, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lickitung, + gShinyOverworldPalette_Lickitung + ) .levelUpLearnset = sLickitungLevelUpLearnset, .teachableLearnset = sLickitungTeachableLearnset, + .eggMoveLearnset = sLickitungEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), }, @@ -10958,6 +12223,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Lickilicky, .iconPalIndex = 1, FOOTPRINT(Lickilicky) + OVERWORLD( + sPicTable_Lickilicky, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lickilicky, + gShinyOverworldPalette_Lickilicky + ) .levelUpLearnset = sLickilickyLevelUpLearnset, .teachableLearnset = sLickilickyTeachableLearnset, }, @@ -11019,8 +12292,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Koffing, .iconPalIndex = 2, FOOTPRINT(Koffing) + OVERWORLD( + sPicTable_Koffing, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Koffing, + gShinyOverworldPalette_Koffing + ) .levelUpLearnset = sKoffingLevelUpLearnset, .teachableLearnset = sKoffingTeachableLearnset, + .eggMoveLearnset = sKoffingEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_WEEZING}, {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}), }, @@ -11080,6 +12362,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Weezing, .iconPalIndex = 2, FOOTPRINT(Weezing) + OVERWORLD( + sPicTable_Weezing, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Weezing, + gShinyOverworldPalette_Weezing + ) .levelUpLearnset = sWeezingLevelUpLearnset, .teachableLearnset = sWeezingTeachableLearnset, .formSpeciesIdTable = sWeezingFormSpeciesIdTable, @@ -11137,6 +12427,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_WeezingGalarian, .iconPalIndex = 1, FOOTPRINT(Weezing) + OVERWORLD( + sPicTable_WeezingGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_WeezingGalarian, + gShinyOverworldPalette_WeezingGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sWeezingGalarianLevelUpLearnset, .teachableLearnset = sWeezingGalarianTeachableLearnset, @@ -11198,8 +12496,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Rhyhorn, .iconPalIndex = 1, FOOTPRINT(Rhyhorn) + OVERWORLD( + sPicTable_Rhyhorn, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rhyhorn, + gShinyOverworldPalette_Rhyhorn + ) .levelUpLearnset = sRhyhornLevelUpLearnset, .teachableLearnset = sRhyhornTeachableLearnset, + .eggMoveLearnset = sRhyhornEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_RHYDON}), }, @@ -11255,6 +12562,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Rhydon, .iconPalIndex = 1, FOOTPRINT(Rhydon) + OVERWORLD( + sPicTable_Rhydon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rhydon, + gShinyOverworldPalette_Rhydon + ) .levelUpLearnset = sRhydonLevelUpLearnset, .teachableLearnset = sRhydonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, @@ -11320,6 +12635,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Rhyperior, .iconPalIndex = 0, FOOTPRINT(Rhyperior) + OVERWORLD( + sPicTable_Rhyperior, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rhyperior, + gShinyOverworldPalette_Rhyperior + ) .levelUpLearnset = sRhyperiorLevelUpLearnset, .teachableLearnset = sRhyperiorTeachableLearnset, }, @@ -11377,8 +12700,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Happiny, .iconPalIndex = 0, FOOTPRINT(Happiny) + OVERWORLD( + sPicTable_Happiny, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Happiny, + gShinyOverworldPalette_Happiny + ) .levelUpLearnset = sHappinyLevelUpLearnset, .teachableLearnset = sHappinyTeachableLearnset, + .eggMoveLearnset = sHappinyEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}), }, @@ -11433,8 +12765,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Chansey, .iconPalIndex = 0, FOOTPRINT(Chansey) + OVERWORLD( + sPicTable_Chansey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chansey, + gShinyOverworldPalette_Chansey + ) .levelUpLearnset = sChanseyLevelUpLearnset, .teachableLearnset = sChanseyTeachableLearnset, + .eggMoveLearnset = sChanseyEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), }, @@ -11488,6 +12829,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Blissey, .iconPalIndex = 0, FOOTPRINT(Blissey) + OVERWORLD( + sPicTable_Blissey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blissey, + gShinyOverworldPalette_Blissey + ) .levelUpLearnset = sBlisseyLevelUpLearnset, .teachableLearnset = sBlisseyTeachableLearnset, }, @@ -11547,8 +12896,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tangela, .iconPalIndex = 0, FOOTPRINT(Tangela) + OVERWORLD( + sPicTable_Tangela, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tangela, + gShinyOverworldPalette_Tangela + ) .levelUpLearnset = sTangelaLevelUpLearnset, .teachableLearnset = sTangelaTeachableLearnset, + .eggMoveLearnset = sTangelaEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), }, @@ -11603,6 +12961,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tangrowth, .iconPalIndex = 0, FOOTPRINT(Tangrowth) + OVERWORLD( + sPicTable_Tangrowth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tangrowth, + gShinyOverworldPalette_Tangrowth + ) .levelUpLearnset = sTangrowthLevelUpLearnset, .teachableLearnset = sTangrowthTeachableLearnset, }, @@ -11658,8 +13024,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kangaskhan, .iconPalIndex = 2, FOOTPRINT(Kangaskhan) + OVERWORLD( + sPicTable_Kangaskhan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kangaskhan, + gShinyOverworldPalette_Kangaskhan + ) .levelUpLearnset = sKangaskhanLevelUpLearnset, .teachableLearnset = sKangaskhanTeachableLearnset, + .eggMoveLearnset = sKangaskhanEggMoveLearnset, .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, .formChangeTable = sKangaskhanFormChangeTable, }, @@ -11716,6 +13091,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isMegaEvolution = TRUE, .levelUpLearnset = sKangaskhanLevelUpLearnset, .teachableLearnset = sKangaskhanTeachableLearnset, + .eggMoveLearnset = sKangaskhanEggMoveLearnset, .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, .formChangeTable = sKangaskhanFormChangeTable, }, @@ -11776,8 +13152,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Horsea, .iconPalIndex = 0, FOOTPRINT(Horsea) + OVERWORLD( + sPicTable_Horsea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Horsea, + gShinyOverworldPalette_Horsea + ) .levelUpLearnset = sHorseaLevelUpLearnset, .teachableLearnset = sHorseaTeachableLearnset, + .eggMoveLearnset = sHorseaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEADRA}), }, @@ -11835,6 +13220,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Seadra, .iconPalIndex = 0, FOOTPRINT(Seadra) + OVERWORLD( + sPicTable_Seadra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Seadra, + gShinyOverworldPalette_Seadra + ) .levelUpLearnset = sSeadraLevelUpLearnset, .teachableLearnset = sSeadraTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, @@ -11903,6 +13296,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kingdra, .iconPalIndex = 0, FOOTPRINT(Kingdra) + OVERWORLD( + sPicTable_Kingdra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Kingdra, + gShinyOverworldPalette_Kingdra + ) .levelUpLearnset = sKingdraLevelUpLearnset, .teachableLearnset = sKingdraTeachableLearnset, }, @@ -11963,8 +13364,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Goldeen, .iconPalIndex = 0, FOOTPRINT(Goldeen) + OVERWORLD( + sPicTable_Goldeen, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Goldeen, + gShinyOverworldPalette_Goldeen + ) .levelUpLearnset = sGoldeenLevelUpLearnset, .teachableLearnset = sGoldeenTeachableLearnset, + .eggMoveLearnset = sGoldeenEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SEAKING}), }, @@ -12021,6 +13431,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Seaking, .iconPalIndex = 0, FOOTPRINT(Seaking) + OVERWORLD( + sPicTable_Seaking, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Seaking, + gShinyOverworldPalette_Seaking + ) .levelUpLearnset = sSeakingLevelUpLearnset, .teachableLearnset = sSeakingTeachableLearnset, }, @@ -12078,6 +13496,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Staryu, .iconPalIndex = 2, FOOTPRINT(Staryu) + OVERWORLD( + sPicTable_Staryu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Staryu, + gShinyOverworldPalette_Staryu + ) .levelUpLearnset = sStaryuLevelUpLearnset, .teachableLearnset = sStaryuTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}), @@ -12133,6 +13559,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Starmie, .iconPalIndex = 2, FOOTPRINT(Starmie) + OVERWORLD( + sPicTable_Starmie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Starmie, + gShinyOverworldPalette_Starmie + ) .levelUpLearnset = sStarmieLevelUpLearnset, .teachableLearnset = sStarmieTeachableLearnset, }, @@ -12196,8 +13630,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MimeJr, .iconPalIndex = 0, FOOTPRINT(MimeJr) + OVERWORLD( + sPicTable_MimeJr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MimeJr, + gShinyOverworldPalette_MimeJr + ) .levelUpLearnset = sMimeJrLevelUpLearnset, .teachableLearnset = sMimeJrTeachableLearnset, + .eggMoveLearnset = sMimeJrEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}), }, @@ -12255,8 +13698,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MrMime, .iconPalIndex = 0, FOOTPRINT(MrMime) + OVERWORLD( + sPicTable_MrMime, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MrMime, + gShinyOverworldPalette_MrMime + ) .levelUpLearnset = sMrMimeLevelUpLearnset, .teachableLearnset = sMrMimeTeachableLearnset, + .eggMoveLearnset = sMrMimeEggMoveLearnset, .formSpeciesIdTable = sMrMimeFormSpeciesIdTable, }, @@ -12309,9 +13761,18 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MrMimeGalarian, .iconPalIndex = 0, FOOTPRINT(MrMime) + OVERWORLD( + sPicTable_MrMimeGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MrMimeGalarian, + gShinyOverworldPalette_MrMimeGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sMrMimeGalarianLevelUpLearnset, .teachableLearnset = sMrMimeGalarianTeachableLearnset, + .eggMoveLearnset = sMrMimeGalarianEggMoveLearnset, .formSpeciesIdTable = sMrMimeFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_MR_RIME}), }, @@ -12363,6 +13824,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MrRime, .iconPalIndex = 0, FOOTPRINT(MrRime) + OVERWORLD( + sPicTable_MrRime, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MrRime, + gShinyOverworldPalette_MrRime + ) .levelUpLearnset = sMrRimeLevelUpLearnset, .teachableLearnset = sMrRimeTeachableLearnset, }, @@ -12425,8 +13894,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Scyther, .iconPalIndex = 1, FOOTPRINT(Scyther) + OVERWORLD( + sPicTable_Scyther, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scyther, + gShinyOverworldPalette_Scyther + ) .levelUpLearnset = sScytherLevelUpLearnset, .teachableLearnset = sScytherTeachableLearnset, + .eggMoveLearnset = sScytherEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}), @@ -12488,6 +13966,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Scizor, .iconPalIndex = 0, FOOTPRINT(Scizor) + OVERWORLD( + sPicTable_Scizor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scizor, + gShinyOverworldPalette_Scizor + ) .levelUpLearnset = sScizorLevelUpLearnset, .teachableLearnset = sScizorTeachableLearnset, .formSpeciesIdTable = sScizorFormSpeciesIdTable, @@ -12601,6 +14087,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kleavor, .iconPalIndex = 2, FOOTPRINT(Kleavor) + OVERWORLD( + sPicTable_Kleavor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kleavor, + gShinyOverworldPalette_Kleavor + ) .levelUpLearnset = sKleavorLevelUpLearnset, .teachableLearnset = sKleavorTeachableLearnset, }, @@ -12662,8 +14156,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Smoochum, .iconPalIndex = 1, FOOTPRINT(Smoochum) + OVERWORLD( + sPicTable_Smoochum, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Smoochum, + gShinyOverworldPalette_Smoochum + ) .levelUpLearnset = sSmoochumLevelUpLearnset, .teachableLearnset = sSmoochumTeachableLearnset, + .eggMoveLearnset = sSmoochumEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_JYNX}), }, #endif //P_GEN_2_CROSS_EVOS @@ -12720,6 +14223,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Jynx, .iconPalIndex = 2, FOOTPRINT(Jynx) + OVERWORLD( + sPicTable_Jynx, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Jynx, + gShinyOverworldPalette_Jynx + ) .levelUpLearnset = sJynxLevelUpLearnset, .teachableLearnset = sJynxTeachableLearnset, }, @@ -12777,8 +14288,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Elekid, .iconPalIndex = 1, FOOTPRINT(Elekid) + OVERWORLD( + sPicTable_Elekid, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Elekid, + gShinyOverworldPalette_Elekid + ) .levelUpLearnset = sElekidLevelUpLearnset, .teachableLearnset = sElekidTeachableLearnset, + .eggMoveLearnset = sElekidEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTABUZZ}), }, #endif //P_GEN_2_CROSS_EVOS @@ -12833,6 +14353,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Electabuzz, .iconPalIndex = 1, FOOTPRINT(Electabuzz) + OVERWORLD( + sPicTable_Electabuzz, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Electabuzz, + gShinyOverworldPalette_Electabuzz + ) .levelUpLearnset = sElectabuzzLevelUpLearnset, .teachableLearnset = sElectabuzzTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, @@ -12895,6 +14423,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Electivire, .iconPalIndex = 1, FOOTPRINT(Electivire) + OVERWORLD( + sPicTable_Electivire, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Electivire, + gShinyOverworldPalette_Electivire + ) .levelUpLearnset = sElectivireLevelUpLearnset, .teachableLearnset = sElectivireTeachableLearnset, }, @@ -12953,8 +14489,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magby, .iconPalIndex = 0, FOOTPRINT(Magby) + OVERWORLD( + sPicTable_Magby, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Magby, + gShinyOverworldPalette_Magby + ) .levelUpLearnset = sMagbyLevelUpLearnset, .teachableLearnset = sMagbyTeachableLearnset, + .eggMoveLearnset = sMagbyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGMAR}), }, #endif //P_GEN_2_CROSS_EVOS @@ -13008,6 +14553,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magmar, .iconPalIndex = 0, FOOTPRINT(Magmar) + OVERWORLD( + sPicTable_Magmar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Magmar, + gShinyOverworldPalette_Magmar + ) .levelUpLearnset = sMagmarLevelUpLearnset, .teachableLearnset = sMagmarTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, @@ -13071,6 +14624,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magmortar, .iconPalIndex = 0, FOOTPRINT(Magmortar) + OVERWORLD( + sPicTable_Magmortar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Magmortar, + gShinyOverworldPalette_Magmortar + ) .levelUpLearnset = sMagmortarLevelUpLearnset, .teachableLearnset = sMagmortarTeachableLearnset, }, @@ -13130,8 +14691,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Pinsir, .iconPalIndex = 2, FOOTPRINT(Pinsir) + OVERWORLD( + sPicTable_Pinsir, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pinsir, + gShinyOverworldPalette_Pinsir + ) .levelUpLearnset = sPinsirLevelUpLearnset, .teachableLearnset = sPinsirTeachableLearnset, + .eggMoveLearnset = sPinsirEggMoveLearnset, .formSpeciesIdTable = sPinsirFormSpeciesIdTable, .formChangeTable = sPinsirFormChangeTable, }, @@ -13189,6 +14759,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isMegaEvolution = TRUE, .levelUpLearnset = sPinsirLevelUpLearnset, .teachableLearnset = sPinsirTeachableLearnset, + .eggMoveLearnset = sPinsirEggMoveLearnset, .formSpeciesIdTable = sPinsirFormSpeciesIdTable, .formChangeTable = sPinsirFormChangeTable, }, @@ -13250,6 +14821,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Tauros, .iconPalIndex = 2, FOOTPRINT(Tauros) + OVERWORLD( + sPicTable_Tauros, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tauros, + gShinyOverworldPalette_Tauros + ) .levelUpLearnset = sTaurosLevelUpLearnset, .teachableLearnset = sTaurosTeachableLearnset, .formSpeciesIdTable = sTaurosFormSpeciesIdTable, @@ -13307,6 +14886,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isPaldeanForm = TRUE, .levelUpLearnset = sTaurosPaldeanCombatBreedLevelUpLearnset, .teachableLearnset = sTaurosPaldeanCombatBreedTeachableLearnset, + .eggMoveLearnset = sTaurosPaldeanCombatBreedEggMoveLearnset, .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, @@ -13361,6 +14941,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isPaldeanForm = TRUE, .levelUpLearnset = sTaurosPaldeanBlazeBreedLevelUpLearnset, .teachableLearnset = sTaurosPaldeanBlazeBreedTeachableLearnset, + .eggMoveLearnset = sTaurosPaldeanBlazeBreedEggMoveLearnset, .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, @@ -13415,6 +14996,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isPaldeanForm = TRUE, .levelUpLearnset = sTaurosPaldeanAquaBreedLevelUpLearnset, .teachableLearnset = sTaurosPaldeanAquaBreedTeachableLearnset, + .eggMoveLearnset = sTaurosPaldeanAquaBreedEggMoveLearnset, .formSpeciesIdTable = sTaurosFormSpeciesIdTable, }, #endif //P_PALDEAN_FORMS @@ -13473,6 +15055,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Magikarp, .iconPalIndex = 0, FOOTPRINT(Magikarp) + OVERWORLD( + sPicTable_Magikarp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Magikarp, + gShinyOverworldPalette_Magikarp + ) .tmIlliterate = TRUE, .levelUpLearnset = sMagikarpLevelUpLearnset, .teachableLearnset = sMagikarpTeachableLearnset, @@ -13531,6 +15121,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Gyarados, .iconPalIndex = 0, FOOTPRINT(Gyarados) + OVERWORLD( + sPicTable_Gyarados, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Gyarados, + gShinyOverworldPalette_Gyarados + ) .levelUpLearnset = sGyaradosLevelUpLearnset, .teachableLearnset = sGyaradosTeachableLearnset, .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, @@ -13647,8 +15245,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Lapras, .iconPalIndex = 2, FOOTPRINT(Lapras) + OVERWORLD( + sPicTable_Lapras, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Lapras, + gShinyOverworldPalette_Lapras + ) .levelUpLearnset = sLaprasLevelUpLearnset, .teachableLearnset = sLaprasTeachableLearnset, + .eggMoveLearnset = sLaprasEggMoveLearnset, .formSpeciesIdTable = sLaprasFormSpeciesIdTable, .formChangeTable = sLaprasFormChangeTable, }, @@ -13707,6 +15314,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isGigantamax = TRUE, .levelUpLearnset = sLaprasLevelUpLearnset, .teachableLearnset = sLaprasTeachableLearnset, + .eggMoveLearnset = sLaprasEggMoveLearnset, .formSpeciesIdTable = sLaprasFormSpeciesIdTable, .formChangeTable = sLaprasFormChangeTable, }, @@ -13764,6 +15372,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Ditto, .iconPalIndex = 2, FOOTPRINT(Ditto) + OVERWORLD( + sPicTable_Ditto, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Ditto, + gShinyOverworldPalette_Ditto + ) .tmIlliterate = TRUE, .levelUpLearnset = sDittoLevelUpLearnset, .teachableLearnset = sDittoTeachableLearnset, @@ -13823,8 +15439,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Eevee, .iconPalIndex = 2, FOOTPRINT(Eevee) + OVERWORLD( + sPicTable_Eevee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Eevee, + gShinyOverworldPalette_Eevee + ) .levelUpLearnset = sEeveeLevelUpLearnset, .teachableLearnset = sEeveeTeachableLearnset, + .eggMoveLearnset = sEeveeEggMoveLearnset, .formSpeciesIdTable = sEeveeFormSpeciesIdTable, .formChangeTable = sEeveeFormChangeTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, @@ -13891,6 +15516,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isGigantamax = TRUE, .levelUpLearnset = sEeveeLevelUpLearnset, .teachableLearnset = sEeveeTeachableLearnset, + .eggMoveLearnset = sEeveeEggMoveLearnset, .formSpeciesIdTable = sEeveeFormSpeciesIdTable, .formChangeTable = sEeveeFormChangeTable, }, @@ -13952,6 +15578,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .allPerfectIVs = TRUE, .levelUpLearnset = sEeveeLevelUpLearnset, .teachableLearnset = sEeveeTeachableLearnset, + .eggMoveLearnset = sEeveeEggMoveLearnset, .formSpeciesIdTable = sEeveeFormSpeciesIdTable, }, @@ -14003,6 +15630,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Vaporeon, .iconPalIndex = 0, FOOTPRINT(Vaporeon) + OVERWORLD( + sPicTable_Vaporeon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vaporeon, + gShinyOverworldPalette_Vaporeon + ) .levelUpLearnset = sVaporeonLevelUpLearnset, .teachableLearnset = sVaporeonTeachableLearnset, }, @@ -14055,6 +15690,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Jolteon, .iconPalIndex = 2, FOOTPRINT(Jolteon) + OVERWORLD( + sPicTable_Jolteon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Jolteon, + gShinyOverworldPalette_Jolteon + ) .levelUpLearnset = sJolteonLevelUpLearnset, .teachableLearnset = sJolteonTeachableLearnset, }, @@ -14107,6 +15750,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Flareon, .iconPalIndex = 3, FOOTPRINT(Flareon) + OVERWORLD( + sPicTable_Flareon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Flareon, + gShinyOverworldPalette_Flareon + ) .levelUpLearnset = sFlareonLevelUpLearnset, .teachableLearnset = sFlareonTeachableLearnset, }, @@ -14160,6 +15811,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Espeon, .iconPalIndex = 2, FOOTPRINT(Espeon) + OVERWORLD( + sPicTable_Espeon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Espeon, + gShinyOverworldPalette_Espeon + ) .levelUpLearnset = sEspeonLevelUpLearnset, .teachableLearnset = sEspeonTeachableLearnset, }, @@ -14212,6 +15871,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Umbreon, .iconPalIndex = 0, FOOTPRINT(Umbreon) + OVERWORLD( + sPicTable_Umbreon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Umbreon, + gShinyOverworldPalette_Umbreon + ) .levelUpLearnset = sUmbreonLevelUpLearnset, .teachableLearnset = sUmbreonTeachableLearnset, }, @@ -14266,6 +15933,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Leafeon, .iconPalIndex = 1, FOOTPRINT(Leafeon) + OVERWORLD( + sPicTable_Leafeon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Leafeon, + gShinyOverworldPalette_Leafeon + ) .levelUpLearnset = sLeafeonLevelUpLearnset, .teachableLearnset = sLeafeonTeachableLearnset, }, @@ -14318,6 +15993,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Glaceon, .iconPalIndex = 0, FOOTPRINT(Glaceon) + OVERWORLD( + sPicTable_Glaceon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Glaceon, + gShinyOverworldPalette_Glaceon + ) .levelUpLearnset = sGlaceonLevelUpLearnset, .teachableLearnset = sGlaceonTeachableLearnset, }, @@ -14373,6 +16056,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Sylveon, .iconPalIndex = 0, FOOTPRINT(Sylveon) + OVERWORLD( + sPicTable_Sylveon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sylveon, + gShinyOverworldPalette_Sylveon + ) .levelUpLearnset = sSylveonLevelUpLearnset, .teachableLearnset = sSylveonTeachableLearnset, }, @@ -14432,6 +16123,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Porygon, .iconPalIndex = 0, FOOTPRINT(Porygon) + OVERWORLD( + sPicTable_Porygon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Porygon, + gShinyOverworldPalette_Porygon + ) .levelUpLearnset = sPorygonLevelUpLearnset, .teachableLearnset = sPorygonTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, @@ -14492,6 +16191,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Porygon2, .iconPalIndex = 0, FOOTPRINT(Porygon2) + OVERWORLD( + sPicTable_Porygon2, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Porygon2, + gShinyOverworldPalette_Porygon2 + ) .levelUpLearnset = sPorygon2LevelUpLearnset, .teachableLearnset = sPorygon2TeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, @@ -14554,6 +16261,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_PorygonZ, .iconPalIndex = 0, FOOTPRINT(PorygonZ) + OVERWORLD( + sPicTable_PorygonZ, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_PorygonZ, + gShinyOverworldPalette_PorygonZ + ) .levelUpLearnset = sPorygonZLevelUpLearnset, .teachableLearnset = sPorygonZTeachableLearnset, }, @@ -14616,8 +16331,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Omanyte, .iconPalIndex = 0, FOOTPRINT(Omanyte) + OVERWORLD( + sPicTable_Omanyte, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Omanyte, + gShinyOverworldPalette_Omanyte + ) .levelUpLearnset = sOmanyteLevelUpLearnset, .teachableLearnset = sOmanyteTeachableLearnset, + .eggMoveLearnset = sOmanyteEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_OMASTAR}), }, @@ -14669,6 +16393,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Omastar, .iconPalIndex = 0, FOOTPRINT(Omastar) + OVERWORLD( + sPicTable_Omastar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Omastar, + gShinyOverworldPalette_Omastar + ) .levelUpLearnset = sOmastarLevelUpLearnset, .teachableLearnset = sOmastarTeachableLearnset, }, @@ -14729,8 +16461,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kabuto, .iconPalIndex = 2, FOOTPRINT(Kabuto) + OVERWORLD( + sPicTable_Kabuto, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Kabuto, + gShinyOverworldPalette_Kabuto + ) .levelUpLearnset = sKabutoLevelUpLearnset, .teachableLearnset = sKabutoTeachableLearnset, + .eggMoveLearnset = sKabutoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KABUTOPS}), }, @@ -14788,6 +16529,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Kabutops, .iconPalIndex = 2, FOOTPRINT(Kabutops) + OVERWORLD( + sPicTable_Kabutops, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kabutops, + gShinyOverworldPalette_Kabutops + ) .levelUpLearnset = sKabutopsLevelUpLearnset, .teachableLearnset = sKabutopsTeachableLearnset, }, @@ -14843,8 +16592,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Aerodactyl, .iconPalIndex = 2, FOOTPRINT(Aerodactyl) + OVERWORLD( + sPicTable_Aerodactyl, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Aerodactyl, + gShinyOverworldPalette_Aerodactyl + ) .levelUpLearnset = sAerodactylLevelUpLearnset, .teachableLearnset = sAerodactylTeachableLearnset, + .eggMoveLearnset = sAerodactylEggMoveLearnset, .formSpeciesIdTable = sAerodactylFormSpeciesIdTable, .formChangeTable = sAerodactylFormChangeTable, }, @@ -14901,6 +16659,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isMegaEvolution = TRUE, .levelUpLearnset = sAerodactylLevelUpLearnset, .teachableLearnset = sAerodactylTeachableLearnset, + .eggMoveLearnset = sAerodactylEggMoveLearnset, .formSpeciesIdTable = sAerodactylFormSpeciesIdTable, .formChangeTable = sAerodactylFormChangeTable, }, @@ -14959,8 +16718,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Munchlax, .iconPalIndex = 3, FOOTPRINT(Munchlax) + OVERWORLD( + sPicTable_Munchlax, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Munchlax, + gShinyOverworldPalette_Munchlax + ) .levelUpLearnset = sMunchlaxLevelUpLearnset, .teachableLearnset = sMunchlaxTeachableLearnset, + .eggMoveLearnset = sMunchlaxEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}), }, #endif //P_GEN_4_CROSS_EVOS @@ -15015,8 +16783,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Snorlax, .iconPalIndex = 3, FOOTPRINT(Snorlax) + OVERWORLD( + sPicTable_Snorlax, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snorlax, + gShinyOverworldPalette_Snorlax + ) .levelUpLearnset = sSnorlaxLevelUpLearnset, .teachableLearnset = sSnorlaxTeachableLearnset, + .eggMoveLearnset = sSnorlaxEggMoveLearnset, .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, .formChangeTable = sSnorlaxFormChangeTable, }, @@ -15075,6 +16852,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .isGigantamax = TRUE, .levelUpLearnset = sSnorlaxLevelUpLearnset, .teachableLearnset = sSnorlaxTeachableLearnset, + .eggMoveLearnset = sSnorlaxEggMoveLearnset, .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, .formChangeTable = sSnorlaxFormChangeTable, }, @@ -15136,6 +16914,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Articuno, .iconPalIndex = 2, FOOTPRINT(Articuno) + OVERWORLD( + sPicTable_Articuno, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Articuno, + gShinyOverworldPalette_Articuno + ) .isLegendary = TRUE, .levelUpLearnset = sArticunoLevelUpLearnset, .teachableLearnset = sArticunoTeachableLearnset, @@ -15192,6 +16978,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_ArticunoGalarian, .iconPalIndex = 2, FOOTPRINT(Articuno) + OVERWORLD( + sPicTable_ArticunoGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ArticunoGalarian, + gShinyOverworldPalette_ArticunoGalarian + ) .isLegendary = TRUE, .isGalarianForm = TRUE, .levelUpLearnset = sArticunoGalarianLevelUpLearnset, @@ -15261,6 +17055,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Zapdos, .iconPalIndex = 0, FOOTPRINT(Zapdos) + OVERWORLD( + sPicTable_Zapdos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Zapdos, + gShinyOverworldPalette_Zapdos + ) .isLegendary = TRUE, .levelUpLearnset = sZapdosLevelUpLearnset, .teachableLearnset = sZapdosTeachableLearnset, @@ -15316,6 +17118,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_ZapdosGalarian, .iconPalIndex = 0, FOOTPRINT(Zapdos) + OVERWORLD( + sPicTable_ZapdosGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZapdosGalarian, + gShinyOverworldPalette_ZapdosGalarian + ) .isLegendary = TRUE, .isGalarianForm = TRUE, .levelUpLearnset = sZapdosGalarianLevelUpLearnset, @@ -15380,6 +17190,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Moltres, .iconPalIndex = 0, FOOTPRINT(Moltres) + OVERWORLD( + sPicTable_Moltres, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Moltres, + gShinyOverworldPalette_Moltres + ) .isLegendary = TRUE, .levelUpLearnset = sMoltresLevelUpLearnset, .teachableLearnset = sMoltresTeachableLearnset, @@ -15435,6 +17253,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_MoltresGalarian, .iconPalIndex = 0, FOOTPRINT(Moltres) + OVERWORLD( + sPicTable_MoltresGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MoltresGalarian, + gShinyOverworldPalette_MoltresGalarian + ) .isLegendary = TRUE, .isGalarianForm = TRUE, .levelUpLearnset = sMoltresGalarianLevelUpLearnset, @@ -15494,8 +17320,17 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dratini, .iconPalIndex = 0, FOOTPRINT(Dratini) + OVERWORLD( + sPicTable_Dratini, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Dratini, + gShinyOverworldPalette_Dratini + ) .levelUpLearnset = sDratiniLevelUpLearnset, .teachableLearnset = sDratiniTeachableLearnset, + .eggMoveLearnset = sDratiniEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_DRAGONAIR}), }, @@ -15548,6 +17383,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dragonair, .iconPalIndex = 0, FOOTPRINT(Dragonair) + OVERWORLD( + sPicTable_Dragonair, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Dragonair, + gShinyOverworldPalette_Dragonair + ) .levelUpLearnset = sDragonairLevelUpLearnset, .teachableLearnset = sDragonairTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_DRAGONITE}), @@ -15608,6 +17451,14 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Dragonite, .iconPalIndex = 2, FOOTPRINT(Dragonite) + OVERWORLD( + sPicTable_Dragonite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Dragonite, + gShinyOverworldPalette_Dragonite + ) .levelUpLearnset = sDragoniteLevelUpLearnset, .teachableLearnset = sDragoniteTeachableLearnset, }, @@ -15668,7 +17519,16 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Mewtwo, .iconPalIndex = 2, FOOTPRINT(Mewtwo) + OVERWORLD( + sPicTable_Mewtwo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mewtwo, + gShinyOverworldPalette_Mewtwo + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15726,6 +17586,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15783,6 +17644,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = FOOTPRINT(Mewtwo) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewtwoLevelUpLearnset, .teachableLearnset = sMewtwoTeachableLearnset, .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, @@ -15849,7 +17711,16 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .iconSprite = gMonIcon_Mew, .iconPalIndex = 0, FOOTPRINT(Mew) + OVERWORLD( + sPicTable_Mew, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Mew, + gShinyOverworldPalette_Mew + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMewLevelUpLearnset, .teachableLearnset = sMewTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_2_families.h b/src/data/pokemon/species_info/gen_2_families.h index ebba260d04ff..1bfbb41bec48 100644 --- a/src/data/pokemon/species_info/gen_2_families.h +++ b/src/data/pokemon/species_info/gen_2_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Chikorita, .iconPalIndex = 1, FOOTPRINT(Chikorita) + OVERWORLD( + sPicTable_Chikorita, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chikorita, + gShinyOverworldPalette_Chikorita + ) .levelUpLearnset = sChikoritaLevelUpLearnset, .teachableLearnset = sChikoritaTeachableLearnset, + .eggMoveLearnset = sChikoritaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BAYLEEF}), }, @@ -106,6 +115,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Bayleef, .iconPalIndex = 1, FOOTPRINT(Bayleef) + OVERWORLD( + sPicTable_Bayleef, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bayleef, + gShinyOverworldPalette_Bayleef + ) .levelUpLearnset = sBayleefLevelUpLearnset, .teachableLearnset = sBayleefTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MEGANIUM}), @@ -170,6 +187,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Meganium, .iconPalIndex = 1, FOOTPRINT(Meganium) + OVERWORLD( + sPicTable_Meganium, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Meganium, + gShinyOverworldPalette_Meganium + ) .levelUpLearnset = sMeganiumLevelUpLearnset, .teachableLearnset = sMeganiumTeachableLearnset, }, @@ -224,8 +249,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Cyndaquil, .iconPalIndex = 3, FOOTPRINT(Cyndaquil) + OVERWORLD( + sPicTable_Cyndaquil, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cyndaquil, + gShinyOverworldPalette_Cyndaquil + ) .levelUpLearnset = sCyndaquilLevelUpLearnset, .teachableLearnset = sCyndaquilTeachableLearnset, + .eggMoveLearnset = sCyndaquilEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_QUILAVA}), }, @@ -278,6 +312,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Quilava, .iconPalIndex = 3, FOOTPRINT(Quilava) + OVERWORLD( + sPicTable_Quilava, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Quilava, + gShinyOverworldPalette_Quilava + ) .levelUpLearnset = sQuilavaLevelUpLearnset, .teachableLearnset = sQuilavaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, @@ -341,6 +383,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Typhlosion, .iconPalIndex = 3, FOOTPRINT(Typhlosion) + OVERWORLD( + sPicTable_Typhlosion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Typhlosion, + gShinyOverworldPalette_Typhlosion + ) .levelUpLearnset = sTyphlosionLevelUpLearnset, .teachableLearnset = sTyphlosionTeachableLearnset, .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable, @@ -395,6 +445,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_TyphlosionHisuian, .iconPalIndex = 1, FOOTPRINT(Typhlosion) + OVERWORLD( + sPicTable_TyphlosionHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TyphlosionHisuian, + gShinyOverworldPalette_TyphlosionHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sTyphlosionHisuianLevelUpLearnset, .teachableLearnset = sTyphlosionHisuianTeachableLearnset, @@ -452,8 +510,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Totodile, .iconPalIndex = 0, FOOTPRINT(Totodile) + OVERWORLD( + sPicTable_Totodile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Totodile, + gShinyOverworldPalette_Totodile + ) .levelUpLearnset = sTotodileLevelUpLearnset, .teachableLearnset = sTotodileTeachableLearnset, + .eggMoveLearnset = sTotodileEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CROCONAW}), }, @@ -507,6 +574,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Croconaw, .iconPalIndex = 0, FOOTPRINT(Croconaw) + OVERWORLD( + sPicTable_Croconaw, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Croconaw, + gShinyOverworldPalette_Croconaw + ) .levelUpLearnset = sCroconawLevelUpLearnset, .teachableLearnset = sCroconawTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_FERALIGATR}), @@ -568,6 +643,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Feraligatr, .iconPalIndex = 0, FOOTPRINT(Feraligatr) + OVERWORLD( + sPicTable_Feraligatr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Feraligatr, + gShinyOverworldPalette_Feraligatr + ) .levelUpLearnset = sFeraligatrLevelUpLearnset, .teachableLearnset = sFeraligatrTeachableLearnset, }, @@ -622,8 +705,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sentret, .iconPalIndex = 2, FOOTPRINT(Sentret) + OVERWORLD( + sPicTable_Sentret, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sentret, + gShinyOverworldPalette_Sentret + ) .levelUpLearnset = sSentretLevelUpLearnset, .teachableLearnset = sSentretTeachableLearnset, + .eggMoveLearnset = sSentretEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FURRET}), }, @@ -675,6 +767,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Furret, .iconPalIndex = 2, FOOTPRINT(Furret) + OVERWORLD( + sPicTable_Furret, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Furret, + gShinyOverworldPalette_Furret + ) .levelUpLearnset = sFurretLevelUpLearnset, .teachableLearnset = sFurretTeachableLearnset, }, @@ -729,8 +829,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Hoothoot, .iconPalIndex = 2, FOOTPRINT(Hoothoot) + OVERWORLD( + sPicTable_Hoothoot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hoothoot, + gShinyOverworldPalette_Hoothoot + ) .levelUpLearnset = sHoothootLevelUpLearnset, .teachableLearnset = sHoothootTeachableLearnset, + .eggMoveLearnset = sHoothootEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NOCTOWL}), }, @@ -788,6 +897,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Noctowl, .iconPalIndex = 2, FOOTPRINT(Noctowl) + OVERWORLD( + sPicTable_Noctowl, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Noctowl, + gShinyOverworldPalette_Noctowl + ) .levelUpLearnset = sNoctowlLevelUpLearnset, .teachableLearnset = sNoctowlTeachableLearnset, }, @@ -846,8 +963,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ledyba, .iconPalIndex = 0, FOOTPRINT(Ledyba) + OVERWORLD( + sPicTable_Ledyba, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Ledyba, + gShinyOverworldPalette_Ledyba + ) .levelUpLearnset = sLedybaLevelUpLearnset, .teachableLearnset = sLedybaTeachableLearnset, + .eggMoveLearnset = sLedybaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_LEDIAN}), }, @@ -904,6 +1030,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ledian, .iconPalIndex = 0, FOOTPRINT(Ledian) + OVERWORLD( + sPicTable_Ledian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ledian, + gShinyOverworldPalette_Ledian + ) .levelUpLearnset = sLedianLevelUpLearnset, .teachableLearnset = sLedianTeachableLearnset, }, @@ -958,8 +1092,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Spinarak, .iconPalIndex = 1, FOOTPRINT(Spinarak) + OVERWORLD( + sPicTable_Spinarak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Spinarak, + gShinyOverworldPalette_Spinarak + ) .levelUpLearnset = sSpinarakLevelUpLearnset, .teachableLearnset = sSpinarakTeachableLearnset, + .eggMoveLearnset = sSpinarakEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARIADOS}), }, @@ -1017,6 +1160,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ariados, .iconPalIndex = 0, FOOTPRINT(Ariados) + OVERWORLD( + sPicTable_Ariados, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Ariados, + gShinyOverworldPalette_Ariados + ) .levelUpLearnset = sAriadosLevelUpLearnset, .teachableLearnset = sAriadosTeachableLearnset, }, @@ -1072,8 +1223,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Chinchou, .iconPalIndex = 2, FOOTPRINT(Chinchou) + OVERWORLD( + sPicTable_Chinchou, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Chinchou, + gShinyOverworldPalette_Chinchou + ) .levelUpLearnset = sChinchouLevelUpLearnset, .teachableLearnset = sChinchouTeachableLearnset, + .eggMoveLearnset = sChinchouEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_LANTURN}), }, @@ -1126,6 +1286,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Lanturn, .iconPalIndex = 0, FOOTPRINT(Lanturn) + OVERWORLD( + sPicTable_Lanturn, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Lanturn, + gShinyOverworldPalette_Lanturn + ) .levelUpLearnset = sLanturnLevelUpLearnset, .teachableLearnset = sLanturnTeachableLearnset, }, @@ -1182,8 +1350,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Togepi, .iconPalIndex = 0, FOOTPRINT(Togepi) + OVERWORLD( + sPicTable_Togepi, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Togepi, + gShinyOverworldPalette_Togepi + ) .levelUpLearnset = sTogepiLevelUpLearnset, .teachableLearnset = sTogepiTeachableLearnset, + .eggMoveLearnset = sTogepiEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), }, @@ -1235,6 +1412,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Togetic, .iconPalIndex = 0, FOOTPRINT(Togetic) + OVERWORLD( + sPicTable_Togetic, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Togetic, + gShinyOverworldPalette_Togetic + ) .levelUpLearnset = sTogeticLevelUpLearnset, .teachableLearnset = sTogeticTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}), @@ -1298,6 +1483,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Togekiss, .iconPalIndex = 2, FOOTPRINT(Togekiss) + OVERWORLD( + sPicTable_Togekiss, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Togekiss, + gShinyOverworldPalette_Togekiss + ) .levelUpLearnset = sTogekissLevelUpLearnset, .teachableLearnset = sTogekissTeachableLearnset, }, @@ -1354,8 +1547,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Natu, .iconPalIndex = 1, FOOTPRINT(Natu) + OVERWORLD( + sPicTable_Natu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Natu, + gShinyOverworldPalette_Natu + ) .levelUpLearnset = sNatuLevelUpLearnset, .teachableLearnset = sNatuTeachableLearnset, + .eggMoveLearnset = sNatuEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_XATU}), }, @@ -1410,6 +1612,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Xatu, .iconPalIndex = 1, FOOTPRINT(Xatu) + OVERWORLD( + sPicTable_Xatu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Xatu, + gShinyOverworldPalette_Xatu + ) .levelUpLearnset = sXatuLevelUpLearnset, .teachableLearnset = sXatuTeachableLearnset, }, @@ -1465,8 +1675,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Mareep, .iconPalIndex = 0, FOOTPRINT(Mareep) + OVERWORLD( + sPicTable_Mareep, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mareep, + gShinyOverworldPalette_Mareep + ) .levelUpLearnset = sMareepLevelUpLearnset, .teachableLearnset = sMareepTeachableLearnset, + .eggMoveLearnset = sMareepEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FLAAFFY}), }, @@ -1518,6 +1737,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Flaaffy, .iconPalIndex = 0, FOOTPRINT(Flaaffy) + OVERWORLD( + sPicTable_Flaaffy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Flaaffy, + gShinyOverworldPalette_Flaaffy + ) .levelUpLearnset = sFlaaffyLevelUpLearnset, .teachableLearnset = sFlaaffyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_AMPHAROS}), @@ -1582,6 +1809,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ampharos, .iconPalIndex = 0, FOOTPRINT(Ampharos) + OVERWORLD( + sPicTable_Ampharos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ampharos, + gShinyOverworldPalette_Ampharos + ) .levelUpLearnset = sAmpharosLevelUpLearnset, .teachableLearnset = sAmpharosTeachableLearnset, .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, @@ -1700,8 +1935,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Azurill, .iconPalIndex = 0, FOOTPRINT(Azurill) + OVERWORLD( + sPicTable_Azurill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Azurill, + gShinyOverworldPalette_Azurill + ) .levelUpLearnset = sAzurillLevelUpLearnset, .teachableLearnset = sAzurillTeachableLearnset, + .eggMoveLearnset = sAzurillEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), }, #endif //P_GEN_3_CROSS_EVOS @@ -1758,8 +2002,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Marill, .iconPalIndex = 0, FOOTPRINT(Marill) + OVERWORLD( + sPicTable_Marill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Marill, + gShinyOverworldPalette_Marill + ) .levelUpLearnset = sMarillLevelUpLearnset, .teachableLearnset = sMarillTeachableLearnset, + .eggMoveLearnset = sMarillEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_AZUMARILL}), }, @@ -1823,6 +2076,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Azumarill, .iconPalIndex = 0, FOOTPRINT(Azumarill) + OVERWORLD( + sPicTable_Azumarill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Azumarill, + gShinyOverworldPalette_Azumarill + ) .levelUpLearnset = sAzumarillLevelUpLearnset, .teachableLearnset = sAzumarillTeachableLearnset, }, @@ -1878,8 +2139,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Bonsly, .iconPalIndex = 1, FOOTPRINT(Bonsly) + OVERWORLD( + sPicTable_Bonsly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bonsly, + gShinyOverworldPalette_Bonsly + ) .levelUpLearnset = sBonslyLevelUpLearnset, .teachableLearnset = sBonslyTeachableLearnset, + .eggMoveLearnset = sBonslyEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), }, #endif //P_GEN_4_CROSS_EVOS @@ -1936,8 +2206,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sudowoodo, .iconPalIndex = 1, FOOTPRINT(Sudowoodo) + OVERWORLD( + sPicTable_Sudowoodo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sudowoodo, + gShinyOverworldPalette_Sudowoodo + ) .levelUpLearnset = sSudowoodoLevelUpLearnset, .teachableLearnset = sSudowoodoTeachableLearnset, + .eggMoveLearnset = sSudowoodoEggMoveLearnset, }, #endif //P_FAMILY_SUDOWOODO @@ -1995,8 +2274,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Hoppip, .iconPalIndex = 1, FOOTPRINT(Hoppip) + OVERWORLD( + sPicTable_Hoppip, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Hoppip, + gShinyOverworldPalette_Hoppip + ) .levelUpLearnset = sHoppipLevelUpLearnset, .teachableLearnset = sHoppipTeachableLearnset, + .eggMoveLearnset = sHoppipEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_SKIPLOOM}), }, @@ -2053,6 +2341,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Skiploom, .iconPalIndex = 1, FOOTPRINT(Skiploom) + OVERWORLD( + sPicTable_Skiploom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Skiploom, + gShinyOverworldPalette_Skiploom + ) .levelUpLearnset = sSkiploomLevelUpLearnset, .teachableLearnset = sSkiploomTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_JUMPLUFF}), @@ -2119,6 +2415,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Jumpluff, .iconPalIndex = 2, FOOTPRINT(Jumpluff) + OVERWORLD( + sPicTable_Jumpluff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Jumpluff, + gShinyOverworldPalette_Jumpluff + ) .levelUpLearnset = sJumpluffLevelUpLearnset, .teachableLearnset = sJumpluffTeachableLearnset, }, @@ -2177,8 +2481,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Aipom, .iconPalIndex = 2, FOOTPRINT(Aipom) + OVERWORLD( + sPicTable_Aipom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Aipom, + gShinyOverworldPalette_Aipom + ) .levelUpLearnset = sAipomLevelUpLearnset, .teachableLearnset = sAipomTeachableLearnset, + .eggMoveLearnset = sAipomEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), }, @@ -2235,6 +2548,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ambipom, .iconPalIndex = 2, FOOTPRINT(Ambipom) + OVERWORLD( + sPicTable_Ambipom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ambipom, + gShinyOverworldPalette_Ambipom + ) .levelUpLearnset = sAmbipomLevelUpLearnset, .teachableLearnset = sAmbipomTeachableLearnset, }, @@ -2294,8 +2615,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sunkern, .iconPalIndex = 1, FOOTPRINT(Sunkern) + OVERWORLD( + sPicTable_Sunkern, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Sunkern, + gShinyOverworldPalette_Sunkern + ) .levelUpLearnset = sSunkernLevelUpLearnset, .teachableLearnset = sSunkernTeachableLearnset, + .eggMoveLearnset = sSunkernEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}), }, @@ -2351,6 +2681,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sunflora, .iconPalIndex = 1, FOOTPRINT(Sunflora) + OVERWORLD( + sPicTable_Sunflora, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sunflora, + gShinyOverworldPalette_Sunflora + ) .levelUpLearnset = sSunfloraLevelUpLearnset, .teachableLearnset = sSunfloraTeachableLearnset, }, @@ -2407,8 +2745,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Yanma, .iconPalIndex = 1, FOOTPRINT(Yanma) + OVERWORLD( + sPicTable_Yanma, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Yanma, + gShinyOverworldPalette_Yanma + ) .levelUpLearnset = sYanmaLevelUpLearnset, .teachableLearnset = sYanmaTeachableLearnset, + .eggMoveLearnset = sYanmaEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), }, @@ -2463,6 +2810,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Yanmega, .iconPalIndex = 1, FOOTPRINT(Yanmega) + OVERWORLD( + sPicTable_Yanmega, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Yanmega, + gShinyOverworldPalette_Yanmega + ) .levelUpLearnset = sYanmegaLevelUpLearnset, .teachableLearnset = sYanmegaTeachableLearnset, }, @@ -2522,8 +2877,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Wooper, .iconPalIndex = 0, FOOTPRINT(Wooper) + OVERWORLD( + sPicTable_Wooper, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wooper, + gShinyOverworldPalette_Wooper + ) .levelUpLearnset = sWooperLevelUpLearnset, .teachableLearnset = sWooperTeachableLearnset, + .eggMoveLearnset = sWooperEggMoveLearnset, .formSpeciesIdTable = sWooperFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_QUAGSIRE}), }, @@ -2580,6 +2944,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Quagsire, .iconPalIndex = 0, FOOTPRINT(Quagsire) + OVERWORLD( + sPicTable_Quagsire, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Quagsire, + gShinyOverworldPalette_Quagsire + ) .levelUpLearnset = sQuagsireLevelUpLearnset, .teachableLearnset = sQuagsireTeachableLearnset, }, @@ -2636,6 +3008,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .isPaldeanForm = TRUE, .levelUpLearnset = sWooperPaldeanLevelUpLearnset, .teachableLearnset = sWooperPaldeanTeachableLearnset, + .eggMoveLearnset = sWooperPaldeanEggMoveLearnset, .formSpeciesIdTable = sWooperFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CLODSIRE}), }, @@ -2752,8 +3125,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Murkrow, .iconPalIndex = 2, FOOTPRINT(Murkrow) + OVERWORLD( + sPicTable_Murkrow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Murkrow, + gShinyOverworldPalette_Murkrow + ) .levelUpLearnset = sMurkrowLevelUpLearnset, .teachableLearnset = sMurkrowTeachableLearnset, + .eggMoveLearnset = sMurkrowEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}), }, @@ -2806,6 +3188,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Honchkrow, .iconPalIndex = 2, FOOTPRINT(Honchkrow) + OVERWORLD( + sPicTable_Honchkrow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Honchkrow, + gShinyOverworldPalette_Honchkrow + ) .levelUpLearnset = sHonchkrowLevelUpLearnset, .teachableLearnset = sHonchkrowTeachableLearnset, }, @@ -2863,8 +3253,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Misdreavus, .iconPalIndex = 0, FOOTPRINT(Misdreavus) + OVERWORLD( + sPicTable_Misdreavus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Misdreavus, + gShinyOverworldPalette_Misdreavus + ) .levelUpLearnset = sMisdreavusLevelUpLearnset, .teachableLearnset = sMisdreavusTeachableLearnset, + .eggMoveLearnset = sMisdreavusEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}), }, @@ -2919,6 +3318,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Mismagius, .iconPalIndex = 2, FOOTPRINT(Mismagius) + OVERWORLD( + sPicTable_Mismagius, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mismagius, + gShinyOverworldPalette_Mismagius + ) .levelUpLearnset = sMismagiusLevelUpLearnset, .teachableLearnset = sMismagiusTeachableLearnset, }, @@ -2973,6 +3380,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Unown ##letter, \ .iconPalIndex = 0, \ FOOTPRINT(Unown) \ + OVERWORLD( \ + sPicTable_Unown ##letter, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_NONE, \ + gOverworldPalette_Unown, \ + gShinyOverworldPalette_Unown, \ + ) \ .levelUpLearnset = sUnownLevelUpLearnset, \ .teachableLearnset = sUnownTeachableLearnset, \ .tmIlliterate = TRUE, \ @@ -3060,6 +3475,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Wynaut, .iconPalIndex = 0, FOOTPRINT(Wynaut) + OVERWORLD( + sPicTable_Wynaut, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wynaut, + gShinyOverworldPalette_Wynaut + ) .tmIlliterate = TRUE, .levelUpLearnset = sWynautLevelUpLearnset, .teachableLearnset = sWynautTeachableLearnset, @@ -3123,6 +3546,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconPalIndexFemale = 0, #endif FOOTPRINT(Wobbuffet) + OVERWORLD( + sPicTable_Wobbuffet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wobbuffet, + gShinyOverworldPalette_Wobbuffet + ) .tmIlliterate = TRUE, .levelUpLearnset = sWobbuffetLevelUpLearnset, .teachableLearnset = sWobbuffetTeachableLearnset, @@ -3182,8 +3613,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Girafarig, .iconPalIndex = 1, FOOTPRINT(Girafarig) + OVERWORLD( + sPicTable_Girafarig, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Girafarig, + gShinyOverworldPalette_Girafarig + ) .levelUpLearnset = sGirafarigLevelUpLearnset, .teachableLearnset = sGirafarigTeachableLearnset, + .eggMoveLearnset = sGirafarigEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), }, @@ -3291,8 +3731,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Pineco, .iconPalIndex = 0, FOOTPRINT(Pineco) + OVERWORLD( + sPicTable_Pineco, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Pineco, + gShinyOverworldPalette_Pineco + ) .levelUpLearnset = sPinecoLevelUpLearnset, .teachableLearnset = sPinecoTeachableLearnset, + .eggMoveLearnset = sPinecoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_FORRETRESS}), }, @@ -3344,6 +3793,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Forretress, .iconPalIndex = 2, FOOTPRINT(Forretress) + OVERWORLD( + sPicTable_Forretress, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Forretress, + gShinyOverworldPalette_Forretress + ) .levelUpLearnset = sForretressLevelUpLearnset, .teachableLearnset = sForretressTeachableLearnset, }, @@ -3405,8 +3862,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Dunsparce, .iconPalIndex = 0, FOOTPRINT(Dunsparce) + OVERWORLD( + sPicTable_Dunsparce, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Dunsparce, + gShinyOverworldPalette_Dunsparce + ) .levelUpLearnset = sDunsparceLevelUpLearnset, .teachableLearnset = sDunsparceTeachableLearnset, + .eggMoveLearnset = sDunsparceEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE_TWO_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_TWO_SEGMENT}, {EVO_MOVE_THREE_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_THREE_SEGMENT}), }, @@ -3431,7 +3897,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("Dudunsprce"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Dudunsprce", "Dudunsparce"), .cryId = CRY_DUDUNSPARCE, .natDexNum = NATIONAL_DEX_DUDUNSPARCE, .categoryName = _("Land Snake"), @@ -3484,7 +3950,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD), .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("Dudunsprce"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Dudunsprce", "Dudunsparce"), .cryId = CRY_DUDUNSPARCE, .natDexNum = NATIONAL_DEX_DUDUNSPARCE, .categoryName = _("Land Snake"), @@ -3574,8 +4040,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Gligar, .iconPalIndex = 0, FOOTPRINT(Gligar) + OVERWORLD( + sPicTable_Gligar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Gligar, + gShinyOverworldPalette_Gligar + ) .levelUpLearnset = sGligarLevelUpLearnset, .teachableLearnset = sGligarTeachableLearnset, + .eggMoveLearnset = sGligarEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}), }, @@ -3630,6 +4105,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Gliscor, .iconPalIndex = 2, FOOTPRINT(Gliscor) + OVERWORLD( + sPicTable_Gliscor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gliscor, + gShinyOverworldPalette_Gliscor + ) .levelUpLearnset = sGliscorLevelUpLearnset, .teachableLearnset = sGliscorTeachableLearnset, }, @@ -3689,8 +4172,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Snubbull, .iconPalIndex = 0, FOOTPRINT(Snubbull) + OVERWORLD( + sPicTable_Snubbull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snubbull, + gShinyOverworldPalette_Snubbull + ) .levelUpLearnset = sSnubbullLevelUpLearnset, .teachableLearnset = sSnubbullTeachableLearnset, + .eggMoveLearnset = sSnubbullEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_GRANBULL}), }, @@ -3750,6 +4242,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Granbull, .iconPalIndex = 2, FOOTPRINT(Granbull) + OVERWORLD( + sPicTable_Granbull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Granbull, + gShinyOverworldPalette_Granbull + ) .levelUpLearnset = sGranbullLevelUpLearnset, .teachableLearnset = sGranbullTeachableLearnset, }, @@ -3815,8 +4315,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Qwilfish, .iconPalIndex = 0, FOOTPRINT(Qwilfish) + OVERWORLD( + sPicTable_Qwilfish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Qwilfish, + gShinyOverworldPalette_Qwilfish + ) .levelUpLearnset = sQwilfishLevelUpLearnset, .teachableLearnset = sQwilfishTeachableLearnset, + .eggMoveLearnset = sQwilfishEggMoveLearnset, .formSpeciesIdTable = sQwilfishFormSpeciesIdTable, }, @@ -3871,6 +4380,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_QwilfishHisuian, .iconPalIndex = 1, FOOTPRINT(Qwilfish) + OVERWORLD( + sPicTable_QwilfishHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_QwilfishHisuian, + gShinyOverworldPalette_QwilfishHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sQwilfishHisuianLevelUpLearnset, .teachableLearnset = sQwilfishHisuianTeachableLearnset, @@ -3926,6 +4443,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Overqwil, .iconPalIndex = 2, FOOTPRINT(Overqwil) + OVERWORLD( + sPicTable_Overqwil, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Overqwil, + gShinyOverworldPalette_Overqwil + ) .levelUpLearnset = sOverqwilLevelUpLearnset, .teachableLearnset = sOverqwilTeachableLearnset, }, @@ -3988,8 +4513,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Shuckle, .iconPalIndex = 1, FOOTPRINT(Shuckle) + OVERWORLD( + sPicTable_Shuckle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shuckle, + gShinyOverworldPalette_Shuckle + ) .levelUpLearnset = sShuckleLevelUpLearnset, .teachableLearnset = sShuckleTeachableLearnset, + .eggMoveLearnset = sShuckleEggMoveLearnset, }, #endif //P_FAMILY_SHUCKLE @@ -4046,8 +4580,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Heracross, .iconPalIndex = 0, FOOTPRINT(Heracross) + OVERWORLD( + sPicTable_Heracross, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Heracross, + gShinyOverworldPalette_Heracross + ) .levelUpLearnset = sHeracrossLevelUpLearnset, .teachableLearnset = sHeracrossTeachableLearnset, + .eggMoveLearnset = sHeracrossEggMoveLearnset, .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, .formChangeTable = sHeracrossFormChangeTable, }, @@ -4104,6 +4647,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .isMegaEvolution = TRUE, .levelUpLearnset = sHeracrossLevelUpLearnset, .teachableLearnset = sHeracrossTeachableLearnset, + .eggMoveLearnset = sHeracrossEggMoveLearnset, .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, .formChangeTable = sHeracrossFormChangeTable, }, @@ -4165,8 +4709,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sneasel, .iconPalIndex = 0, FOOTPRINT(Sneasel) + OVERWORLD( + sPicTable_Sneasel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sneasel, + gShinyOverworldPalette_Sneasel + ) .levelUpLearnset = sSneaselLevelUpLearnset, .teachableLearnset = sSneaselTeachableLearnset, + .eggMoveLearnset = sSneaselEggMoveLearnset, .formSpeciesIdTable = sSneaselFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}, {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}), @@ -4227,6 +4780,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Weavile, .iconPalIndex = 0, FOOTPRINT(Weavile) + OVERWORLD( + sPicTable_Weavile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Weavile, + gShinyOverworldPalette_Weavile + ) .levelUpLearnset = sWeavileLevelUpLearnset, .teachableLearnset = sWeavileTeachableLearnset, }, @@ -4287,6 +4848,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_SneaselHisuian, .iconPalIndex = 0, FOOTPRINT(Sneasel) + OVERWORLD( + sPicTable_SneaselHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SneaselHisuian, + gShinyOverworldPalette_SneaselHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sSneaselHisuianLevelUpLearnset, .teachableLearnset = sSneaselHisuianTeachableLearnset, @@ -4343,6 +4912,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Sneasler, .iconPalIndex = 2, FOOTPRINT(Sneasler) + OVERWORLD( + sPicTable_Sneasler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sneasler, + gShinyOverworldPalette_Sneasler + ) .levelUpLearnset = sSneaslerLevelUpLearnset, .teachableLearnset = sSneaslerTeachableLearnset, }, @@ -4404,8 +4981,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Teddiursa, .iconPalIndex = 0, FOOTPRINT(Teddiursa) + OVERWORLD( + sPicTable_Teddiursa, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Teddiursa, + gShinyOverworldPalette_Teddiursa + ) .levelUpLearnset = sTeddiursaLevelUpLearnset, .teachableLearnset = sTeddiursaTeachableLearnset, + .eggMoveLearnset = sTeddiursaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_URSARING}), }, @@ -4465,6 +5051,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ursaring, .iconPalIndex = 2, FOOTPRINT(Ursaring) + OVERWORLD( + sPicTable_Ursaring, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ursaring, + gShinyOverworldPalette_Ursaring + ) .levelUpLearnset = sUrsaringLevelUpLearnset, .teachableLearnset = sUrsaringTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, @@ -4519,6 +5113,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Ursaluna, .iconPalIndex = 2, FOOTPRINT(Ursaluna) + OVERWORLD( + sPicTable_Ursaluna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ursaluna, + gShinyOverworldPalette_Ursaluna + ) .levelUpLearnset = sUrsalunaLevelUpLearnset, .teachableLearnset = sUrsalunaTeachableLearnset, .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable, @@ -4628,8 +5230,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Slugma, .iconPalIndex = 0, FOOTPRINT(Slugma) + OVERWORLD( + sPicTable_Slugma, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Slugma, + gShinyOverworldPalette_Slugma + ) .levelUpLearnset = sSlugmaLevelUpLearnset, .teachableLearnset = sSlugmaTeachableLearnset, + .eggMoveLearnset = sSlugmaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MAGCARGO}), }, @@ -4688,6 +5299,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Magcargo, .iconPalIndex = 0, FOOTPRINT(Magcargo) + OVERWORLD( + sPicTable_Magcargo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Magcargo, + gShinyOverworldPalette_Magcargo + ) .levelUpLearnset = sMagcargoLevelUpLearnset, .teachableLearnset = sMagcargoTeachableLearnset, }, @@ -4746,8 +5365,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Swinub, .iconPalIndex = 2, FOOTPRINT(Swinub) + OVERWORLD( + sPicTable_Swinub, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swinub, + gShinyOverworldPalette_Swinub + ) .levelUpLearnset = sSwinubLevelUpLearnset, .teachableLearnset = sSwinubTeachableLearnset, + .eggMoveLearnset = sSwinubEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_PILOSWINE}), }, @@ -4808,6 +5436,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Piloswine, .iconPalIndex = 2, FOOTPRINT(Piloswine) + OVERWORLD( + sPicTable_Piloswine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Piloswine, + gShinyOverworldPalette_Piloswine + ) .levelUpLearnset = sPiloswineLevelUpLearnset, .teachableLearnset = sPiloswineTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), @@ -4870,6 +5506,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Mamoswine, .iconPalIndex = 2, FOOTPRINT(Mamoswine) + OVERWORLD( + sPicTable_Mamoswine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mamoswine, + gShinyOverworldPalette_Mamoswine + ) .levelUpLearnset = sMamoswineLevelUpLearnset, .teachableLearnset = sMamoswineTeachableLearnset, }, @@ -4937,8 +5581,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Corsola, .iconPalIndex = 0, FOOTPRINT(Corsola) + OVERWORLD( + sPicTable_Corsola, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Corsola, + gShinyOverworldPalette_Corsola + ) .levelUpLearnset = sCorsolaLevelUpLearnset, .teachableLearnset = sCorsolaTeachableLearnset, + .eggMoveLearnset = sCorsolaEggMoveLearnset, .formSpeciesIdTable = sCorsolaFormSpeciesIdTable, }, @@ -4991,9 +5644,18 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_CorsolaGalarian, .iconPalIndex = 0, FOOTPRINT(Corsola) + OVERWORLD( + sPicTable_CorsolaGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_CorsolaGalarian, + gShinyOverworldPalette_CorsolaGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sCorsolaGalarianLevelUpLearnset, .teachableLearnset = sCorsolaGalarianTeachableLearnset, + .eggMoveLearnset = sCorsolaGalarianEggMoveLearnset, .formSpeciesIdTable = sCorsolaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CURSOLA}), }, @@ -5046,6 +5708,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Cursola, .iconPalIndex = 0, FOOTPRINT(Cursola) + OVERWORLD( + sPicTable_Cursola, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cursola, + gShinyOverworldPalette_Cursola + ) .levelUpLearnset = sCursolaLevelUpLearnset, .teachableLearnset = sCursolaTeachableLearnset, }, @@ -5105,8 +5775,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Remoraid, .iconPalIndex = 0, FOOTPRINT(Remoraid) + OVERWORLD( + sPicTable_Remoraid, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Remoraid, + gShinyOverworldPalette_Remoraid + ) .levelUpLearnset = sRemoraidLevelUpLearnset, .teachableLearnset = sRemoraidTeachableLearnset, + .eggMoveLearnset = sRemoraidEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_OCTILLERY}), }, @@ -5168,6 +5847,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Octillery, .iconPalIndex = 0, FOOTPRINT(Octillery) + OVERWORLD( + sPicTable_Octillery, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Octillery, + gShinyOverworldPalette_Octillery + ) .levelUpLearnset = sOctilleryLevelUpLearnset, .teachableLearnset = sOctilleryTeachableLearnset, }, @@ -5222,8 +5909,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Delibird, .iconPalIndex = 1, FOOTPRINT(Delibird) + OVERWORLD( + sPicTable_Delibird, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Delibird, + gShinyOverworldPalette_Delibird + ) .levelUpLearnset = sDelibirdLevelUpLearnset, .teachableLearnset = sDelibirdTeachableLearnset, + .eggMoveLearnset = sDelibirdEggMoveLearnset, }, #endif //P_FAMILY_DELIBIRD @@ -5277,8 +5973,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Mantyke, .iconPalIndex = 0, FOOTPRINT(Mantyke) + OVERWORLD( + sPicTable_Mantyke, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mantyke, + gShinyOverworldPalette_Mantyke + ) .levelUpLearnset = sMantykeLevelUpLearnset, .teachableLearnset = sMantykeTeachableLearnset, + .eggMoveLearnset = sMantykeEggMoveLearnset, .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), }, #endif //P_GEN_4_CROSS_EVOS @@ -5338,8 +6043,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Mantine, .iconPalIndex = 2, FOOTPRINT(Mantine) + OVERWORLD( + sPicTable_Mantine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Mantine, + gShinyOverworldPalette_Mantine + ) .levelUpLearnset = sMantineLevelUpLearnset, .teachableLearnset = sMantineTeachableLearnset, + .eggMoveLearnset = sMantineEggMoveLearnset, }, #endif //P_FAMILY_MANTINE @@ -5393,8 +6107,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Skarmory, .iconPalIndex = 0, FOOTPRINT(Skarmory) + OVERWORLD( + sPicTable_Skarmory, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skarmory, + gShinyOverworldPalette_Skarmory + ) .levelUpLearnset = sSkarmoryLevelUpLearnset, .teachableLearnset = sSkarmoryTeachableLearnset, + .eggMoveLearnset = sSkarmoryEggMoveLearnset, }, #endif //P_FAMILY_SKARMORY @@ -5447,8 +6170,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Houndour, .iconPalIndex = 0, FOOTPRINT(Houndour) + OVERWORLD( + sPicTable_Houndour, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Houndour, + gShinyOverworldPalette_Houndour + ) .levelUpLearnset = sHoundourLevelUpLearnset, .teachableLearnset = sHoundourTeachableLearnset, + .eggMoveLearnset = sHoundourEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HOUNDOOM}), }, @@ -5504,6 +6236,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Houndoom, .iconPalIndex = 0, FOOTPRINT(Houndoom) + OVERWORLD( + sPicTable_Houndoom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Houndoom, + gShinyOverworldPalette_Houndoom + ) .levelUpLearnset = sHoundoomLevelUpLearnset, .teachableLearnset = sHoundoomTeachableLearnset, .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, @@ -5616,8 +6356,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Phanpy, .iconPalIndex = 0, FOOTPRINT(Phanpy) + OVERWORLD( + sPicTable_Phanpy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Phanpy, + gShinyOverworldPalette_Phanpy + ) .levelUpLearnset = sPhanpyLevelUpLearnset, .teachableLearnset = sPhanpyTeachableLearnset, + .eggMoveLearnset = sPhanpyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DONPHAN}), }, @@ -5674,6 +6423,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Donphan, .iconPalIndex = 0, FOOTPRINT(Donphan) + OVERWORLD( + sPicTable_Donphan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Donphan, + gShinyOverworldPalette_Donphan + ) .levelUpLearnset = sDonphanLevelUpLearnset, .teachableLearnset = sDonphanTeachableLearnset, }, @@ -5732,9 +6489,18 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Stantler, .iconPalIndex = 2, FOOTPRINT(Stantler) + OVERWORLD( + sPicTable_Stantler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stantler, + gShinyOverworldPalette_Stantler + ) .levelUpLearnset = sStantlerLevelUpLearnset, .teachableLearnset = sStantlerTeachableLearnset, - .evolutions = EVOLUTION({EVO_LEVEL_MOVE_TWENTY_TIMES, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), + .eggMoveLearnset = sStantlerEggMoveLearnset, + .evolutions = EVOLUTION({EVO_USE_MOVE_TWENTY_TIMES, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), }, #if P_GEN_8_CROSS_EVOS @@ -5787,6 +6553,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Wyrdeer, .iconPalIndex = 2, FOOTPRINT(Wyrdeer) + OVERWORLD( + sPicTable_Wyrdeer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wyrdeer, + gShinyOverworldPalette_Wyrdeer + ) .levelUpLearnset = sWyrdeerLevelUpLearnset, .teachableLearnset = sWyrdeerTeachableLearnset, }, @@ -5846,6 +6620,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Smeargle, .iconPalIndex = 1, FOOTPRINT(Smeargle) + OVERWORLD( + sPicTable_Smeargle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Smeargle, + gShinyOverworldPalette_Smeargle + ) .tmIlliterate = TRUE, .levelUpLearnset = sSmeargleLevelUpLearnset, .teachableLearnset = sSmeargleTeachableLearnset, @@ -5907,8 +6689,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Miltank, .iconPalIndex = 0, FOOTPRINT(Miltank) + OVERWORLD( + sPicTable_Miltank, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Miltank, + gShinyOverworldPalette_Miltank + ) .levelUpLearnset = sMiltankLevelUpLearnset, .teachableLearnset = sMiltankTeachableLearnset, + .eggMoveLearnset = sMiltankEggMoveLearnset, }, #endif //P_FAMILY_MILTANK @@ -5972,6 +6763,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Raikou, .iconPalIndex = 2, FOOTPRINT(Raikou) + OVERWORLD( + sPicTable_Raikou, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Raikou, + gShinyOverworldPalette_Raikou + ) .isLegendary = TRUE, .levelUpLearnset = sRaikouLevelUpLearnset, .teachableLearnset = sRaikouTeachableLearnset, @@ -6038,6 +6837,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Entei, .iconPalIndex = 2, FOOTPRINT(Entei) + OVERWORLD( + sPicTable_Entei, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Entei, + gShinyOverworldPalette_Entei + ) .isLegendary = TRUE, .levelUpLearnset = sEnteiLevelUpLearnset, .teachableLearnset = sEnteiTeachableLearnset, @@ -6104,6 +6911,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Suicune, .iconPalIndex = 2, FOOTPRINT(Suicune) + OVERWORLD( + sPicTable_Suicune, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Suicune, + gShinyOverworldPalette_Suicune + ) .isLegendary = TRUE, .levelUpLearnset = sSuicuneLevelUpLearnset, .teachableLearnset = sSuicuneTeachableLearnset, @@ -6159,8 +6974,17 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Larvitar, .iconPalIndex = 1, FOOTPRINT(Larvitar) + OVERWORLD( + sPicTable_Larvitar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Larvitar, + gShinyOverworldPalette_Larvitar + ) .levelUpLearnset = sLarvitarLevelUpLearnset, .teachableLearnset = sLarvitarTeachableLearnset, + .eggMoveLearnset = sLarvitarEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_PUPITAR}), }, @@ -6212,6 +7036,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Pupitar, .iconPalIndex = 2, FOOTPRINT(Pupitar) + OVERWORLD( + sPicTable_Pupitar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Pupitar, + gShinyOverworldPalette_Pupitar + ) .levelUpLearnset = sPupitarLevelUpLearnset, .teachableLearnset = sPupitarTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_TYRANITAR}), @@ -6272,6 +7104,14 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Tyranitar, .iconPalIndex = 4, FOOTPRINT(Tyranitar) + OVERWORLD( + sPicTable_Tyranitar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tyranitar, + gShinyOverworldPalette_Tyranitar + ) .levelUpLearnset = sTyranitarLevelUpLearnset, .teachableLearnset = sTyranitarTeachableLearnset, .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, @@ -6393,7 +7233,16 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Lugia, .iconPalIndex = 0, FOOTPRINT(Lugia) + OVERWORLD( + sPicTable_Lugia, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Lugia, + gShinyOverworldPalette_Lugia + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sLugiaLevelUpLearnset, .teachableLearnset = sLugiaTeachableLearnset, }, @@ -6457,7 +7306,16 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_HoOh, .iconPalIndex = 1, FOOTPRINT(HoOh) + OVERWORLD( + sPicTable_HoOh, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_HoOh, + gShinyOverworldPalette_HoOh + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoOhLevelUpLearnset, .teachableLearnset = sHoOhTeachableLearnset, }, @@ -6521,7 +7379,16 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .iconSprite = gMonIcon_Celebi, .iconPalIndex = 1, FOOTPRINT(Celebi) + OVERWORLD( + sPicTable_Celebi, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Celebi, + gShinyOverworldPalette_Celebi + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCelebiLevelUpLearnset, .teachableLearnset = sCelebiTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_3_families.h b/src/data/pokemon/species_info/gen_3_families.h index 1e3ea5539f32..8a23bb05fd2f 100644 --- a/src/data/pokemon/species_info/gen_3_families.h +++ b/src/data/pokemon/species_info/gen_3_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Treecko, .iconPalIndex = 1, FOOTPRINT(Treecko) + OVERWORLD( + sPicTable_Treecko, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Treecko, + gShinyOverworldPalette_Treecko + ) .levelUpLearnset = sTreeckoLevelUpLearnset, .teachableLearnset = sTreeckoTeachableLearnset, + .eggMoveLearnset = sTreeckoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_GROVYLE}), }, @@ -105,6 +114,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Grovyle, .iconPalIndex = 1, FOOTPRINT(Grovyle) + OVERWORLD( + sPicTable_Grovyle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grovyle, + gShinyOverworldPalette_Grovyle + ) .levelUpLearnset = sGrovyleLevelUpLearnset, .teachableLearnset = sGrovyleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SCEPTILE}), @@ -164,6 +181,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Sceptile, .iconPalIndex = 1, FOOTPRINT(Sceptile) + OVERWORLD( + sPicTable_Sceptile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sceptile, + gShinyOverworldPalette_Sceptile + ) .levelUpLearnset = sSceptileLevelUpLearnset, .teachableLearnset = sSceptileTeachableLearnset, .formSpeciesIdTable = sSceptileFormSpeciesIdTable, @@ -279,8 +304,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Torchic, .iconPalIndex = 0, FOOTPRINT(Torchic) + OVERWORLD( + sPicTable_Torchic, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Torchic, + gShinyOverworldPalette_Torchic + ) .levelUpLearnset = sTorchicLevelUpLearnset, .teachableLearnset = sTorchicTeachableLearnset, + .eggMoveLearnset = sTorchicEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_COMBUSKEN}), }, @@ -337,6 +371,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Combusken, .iconPalIndex = 0, FOOTPRINT(Combusken) + OVERWORLD( + sPicTable_Combusken, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Combusken, + gShinyOverworldPalette_Combusken + ) .levelUpLearnset = sCombuskenLevelUpLearnset, .teachableLearnset = sCombuskenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLAZIKEN}), @@ -400,6 +442,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Blaziken, .iconPalIndex = 0, FOOTPRINT(Blaziken) + OVERWORLD( + sPicTable_Blaziken, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blaziken, + gShinyOverworldPalette_Blaziken + ) .levelUpLearnset = sBlazikenLevelUpLearnset, .teachableLearnset = sBlazikenTeachableLearnset, .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, @@ -513,8 +563,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Mudkip, .iconPalIndex = 0, FOOTPRINT(Mudkip) + OVERWORLD( + sPicTable_Mudkip, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mudkip, + gShinyOverworldPalette_Mudkip + ) .levelUpLearnset = sMudkipLevelUpLearnset, .teachableLearnset = sMudkipTeachableLearnset, + .eggMoveLearnset = sMudkipEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_MARSHTOMP}), }, @@ -566,6 +625,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Marshtomp, .iconPalIndex = 0, FOOTPRINT(Marshtomp) + OVERWORLD( + sPicTable_Marshtomp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Marshtomp, + gShinyOverworldPalette_Marshtomp + ) .levelUpLearnset = sMarshtompLevelUpLearnset, .teachableLearnset = sMarshtompTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SWAMPERT}), @@ -625,6 +692,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Swampert, .iconPalIndex = 0, FOOTPRINT(Swampert) + OVERWORLD( + sPicTable_Swampert, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swampert, + gShinyOverworldPalette_Swampert + ) .levelUpLearnset = sSwampertLevelUpLearnset, .teachableLearnset = sSwampertTeachableLearnset, .formSpeciesIdTable = sSwampertFormSpeciesIdTable, @@ -748,8 +823,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Poochyena, .iconPalIndex = 2, FOOTPRINT(Poochyena) + OVERWORLD( + sPicTable_Poochyena, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Poochyena, + gShinyOverworldPalette_Poochyena + ) .levelUpLearnset = sPoochyenaLevelUpLearnset, .teachableLearnset = sPoochyenaTeachableLearnset, + .eggMoveLearnset = sPoochyenaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_MIGHTYENA}), }, @@ -805,6 +889,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Mightyena, .iconPalIndex = 2, FOOTPRINT(Mightyena) + OVERWORLD( + sPicTable_Mightyena, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mightyena, + gShinyOverworldPalette_Mightyena + ) .levelUpLearnset = sMightyenaLevelUpLearnset, .teachableLearnset = sMightyenaTeachableLearnset, }, @@ -873,8 +965,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Zigzagoon, .iconPalIndex = 2, FOOTPRINT(Zigzagoon) + OVERWORLD( + sPicTable_Zigzagoon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zigzagoon, + gShinyOverworldPalette_Zigzagoon + ) .levelUpLearnset = sZigzagoonLevelUpLearnset, .teachableLearnset = sZigzagoonTeachableLearnset, + .eggMoveLearnset = sZigzagoonEggMoveLearnset, .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE}), }, @@ -933,6 +1034,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Linoone, .iconPalIndex = 2, FOOTPRINT(Linoone) + OVERWORLD( + sPicTable_Linoone, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Linoone, + gShinyOverworldPalette_Linoone + ) .levelUpLearnset = sLinooneLevelUpLearnset, .teachableLearnset = sLinooneTeachableLearnset, .formSpeciesIdTable = sLinooneFormSpeciesIdTable, @@ -987,9 +1096,18 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_ZigzagoonGalarian, .iconPalIndex = 0, FOOTPRINT(Zigzagoon) + OVERWORLD( + sPicTable_ZigzagoonGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZigzagoonGalarian, + gShinyOverworldPalette_ZigzagoonGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sZigzagoonGalarianLevelUpLearnset, .teachableLearnset = sZigzagoonGalarianTeachableLearnset, + .eggMoveLearnset = sZigzagoonGalarianEggMoveLearnset, .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}), }, @@ -1042,6 +1160,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_LinooneGalarian, .iconPalIndex = 0, FOOTPRINT(Linoone) + OVERWORLD( + sPicTable_LinooneGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LinooneGalarian, + gShinyOverworldPalette_LinooneGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sLinooneGalarianLevelUpLearnset, .teachableLearnset = sLinooneGalarianTeachableLearnset, @@ -1097,6 +1223,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Obstagoon, .iconPalIndex = 0, FOOTPRINT(Obstagoon) + OVERWORLD( + sPicTable_Obstagoon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Obstagoon, + gShinyOverworldPalette_Obstagoon + ) .levelUpLearnset = sObstagoonLevelUpLearnset, .teachableLearnset = sObstagoonTeachableLearnset, }, @@ -1160,6 +1294,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Wurmple, .iconPalIndex = 0, FOOTPRINT(Wurmple) + OVERWORLD( + sPicTable_Wurmple, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Wurmple, + gShinyOverworldPalette_Wurmple + ) .tmIlliterate = TRUE, .levelUpLearnset = sWurmpleLevelUpLearnset, .teachableLearnset = sWurmpleTeachableLearnset, @@ -1215,6 +1357,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Silcoon, .iconPalIndex = 2, FOOTPRINT(Silcoon) + OVERWORLD( + sPicTable_Silcoon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Silcoon, + gShinyOverworldPalette_Silcoon + ) .tmIlliterate = TRUE, .levelUpLearnset = sSilcoonLevelUpLearnset, .teachableLearnset = sSilcoonTeachableLearnset, @@ -1283,6 +1433,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Beautifly, .iconPalIndex = 0, FOOTPRINT(Beautifly) + OVERWORLD( + sPicTable_Beautifly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Beautifly, + gShinyOverworldPalette_Beautifly + ) .levelUpLearnset = sBeautiflyLevelUpLearnset, .teachableLearnset = sBeautiflyTeachableLearnset, }, @@ -1341,6 +1499,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Cascoon, .iconPalIndex = 2, FOOTPRINT(Cascoon) + OVERWORLD( + sPicTable_Cascoon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Cascoon, + gShinyOverworldPalette_Cascoon + ) .tmIlliterate = TRUE, .levelUpLearnset = sCascoonLevelUpLearnset, .teachableLearnset = sCascoonTeachableLearnset, @@ -1411,6 +1577,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Dustox, .iconPalIndex = 5, FOOTPRINT(Dustox) + OVERWORLD( + sPicTable_Dustox, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Dustox, + gShinyOverworldPalette_Dustox + ) .levelUpLearnset = sDustoxLevelUpLearnset, .teachableLearnset = sDustoxTeachableLearnset, }, @@ -1466,8 +1640,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Lotad, .iconPalIndex = 4, FOOTPRINT(Lotad) + OVERWORLD( + sPicTable_Lotad, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lotad, + gShinyOverworldPalette_Lotad + ) .levelUpLearnset = sLotadLevelUpLearnset, .teachableLearnset = sLotadTeachableLearnset, + .eggMoveLearnset = sLotadEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_LOMBRE}), }, @@ -1520,6 +1703,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Lombre, .iconPalIndex = 1, FOOTPRINT(Lombre) + OVERWORLD( + sPicTable_Lombre, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lombre, + gShinyOverworldPalette_Lombre + ) .levelUpLearnset = sLombreLevelUpLearnset, .teachableLearnset = sLombreTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}), @@ -1584,6 +1775,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Ludicolo, .iconPalIndex = 1, FOOTPRINT(Ludicolo) + OVERWORLD( + sPicTable_Ludicolo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ludicolo, + gShinyOverworldPalette_Ludicolo + ) .levelUpLearnset = sLudicoloLevelUpLearnset, .teachableLearnset = sLudicoloTeachableLearnset, }, @@ -1639,8 +1838,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Seedot, .iconPalIndex = 2, FOOTPRINT(Seedot) + OVERWORLD( + sPicTable_Seedot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Seedot, + gShinyOverworldPalette_Seedot + ) .levelUpLearnset = sSeedotLevelUpLearnset, .teachableLearnset = sSeedotTeachableLearnset, + .eggMoveLearnset = sSeedotEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_NUZLEAF}), }, @@ -1697,6 +1905,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Nuzleaf, .iconPalIndex = 1, FOOTPRINT(Nuzleaf) + OVERWORLD( + sPicTable_Nuzleaf, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nuzleaf, + gShinyOverworldPalette_Nuzleaf + ) .levelUpLearnset = sNuzleafLevelUpLearnset, .teachableLearnset = sNuzleafTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), @@ -1765,6 +1981,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Shiftry, .iconPalIndex = 5, FOOTPRINT(Shiftry) + OVERWORLD( + sPicTable_Shiftry, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shiftry, + gShinyOverworldPalette_Shiftry + ) .levelUpLearnset = sShiftryLevelUpLearnset, .teachableLearnset = sShiftryTeachableLearnset, }, @@ -1819,8 +2043,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Taillow, .iconPalIndex = 2, FOOTPRINT(Taillow) + OVERWORLD( + sPicTable_Taillow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Taillow, + gShinyOverworldPalette_Taillow + ) .levelUpLearnset = sTaillowLevelUpLearnset, .teachableLearnset = sTaillowTeachableLearnset, + .eggMoveLearnset = sTaillowEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SWELLOW}), }, @@ -1878,6 +2111,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Swellow, .iconPalIndex = 2, FOOTPRINT(Swellow) + OVERWORLD( + sPicTable_Swellow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Swellow, + gShinyOverworldPalette_Swellow + ) .levelUpLearnset = sSwellowLevelUpLearnset, .teachableLearnset = sSwellowTeachableLearnset, }, @@ -1938,8 +2179,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Wingull, .iconPalIndex = 0, FOOTPRINT(Wingull) + OVERWORLD( + sPicTable_Wingull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Wingull, + gShinyOverworldPalette_Wingull + ) .levelUpLearnset = sWingullLevelUpLearnset, .teachableLearnset = sWingullTeachableLearnset, + .eggMoveLearnset = sWingullEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PELIPPER}), }, @@ -2003,6 +2253,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Pelipper, .iconPalIndex = 2, FOOTPRINT(Pelipper) + OVERWORLD( + sPicTable_Pelipper, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Pelipper, + gShinyOverworldPalette_Pelipper + ) .levelUpLearnset = sPelipperLevelUpLearnset, .teachableLearnset = sPelipperTeachableLearnset, }, @@ -2065,8 +2323,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Ralts, .iconPalIndex = 1, FOOTPRINT(Ralts) + OVERWORLD( + sPicTable_Ralts, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ralts, + gShinyOverworldPalette_Ralts + ) .levelUpLearnset = sRaltsLevelUpLearnset, .teachableLearnset = sRaltsTeachableLearnset, + .eggMoveLearnset = sRaltsEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_KIRLIA}), }, @@ -2118,6 +2385,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Kirlia, .iconPalIndex = 1, FOOTPRINT(Kirlia) + OVERWORLD( + sPicTable_Kirlia, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kirlia, + gShinyOverworldPalette_Kirlia + ) .levelUpLearnset = sKirliaLevelUpLearnset, .teachableLearnset = sKirliaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GARDEVOIR}, @@ -2178,6 +2453,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Gardevoir, .iconPalIndex = 1, FOOTPRINT(Gardevoir) + OVERWORLD( + sPicTable_Gardevoir, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gardevoir, + gShinyOverworldPalette_Gardevoir + ) .levelUpLearnset = sGardevoirLevelUpLearnset, .teachableLearnset = sGardevoirTeachableLearnset, .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, @@ -2300,6 +2583,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Gallade, .iconPalIndex = 1, FOOTPRINT(Gallade) + OVERWORLD( + sPicTable_Gallade, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gallade, + gShinyOverworldPalette_Gallade + ) .levelUpLearnset = sGalladeLevelUpLearnset, .teachableLearnset = sGalladeTeachableLearnset, .formSpeciesIdTable = sGalladeFormSpeciesIdTable, @@ -2415,8 +2706,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Surskit, .iconPalIndex = 0, FOOTPRINT(Surskit) + OVERWORLD( + sPicTable_Surskit, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Surskit, + gShinyOverworldPalette_Surskit + ) .levelUpLearnset = sSurskitLevelUpLearnset, .teachableLearnset = sSurskitTeachableLearnset, + .eggMoveLearnset = sSurskitEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_MASQUERAIN}), }, @@ -2477,6 +2777,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Masquerain, .iconPalIndex = 0, FOOTPRINT(Masquerain) + OVERWORLD( + sPicTable_Masquerain, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Masquerain, + gShinyOverworldPalette_Masquerain + ) .levelUpLearnset = sMasquerainLevelUpLearnset, .teachableLearnset = sMasquerainTeachableLearnset, }, @@ -2537,8 +2845,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Shroomish, .iconPalIndex = 1, FOOTPRINT(Shroomish) + OVERWORLD( + sPicTable_Shroomish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shroomish, + gShinyOverworldPalette_Shroomish + ) .levelUpLearnset = sShroomishLevelUpLearnset, .teachableLearnset = sShroomishTeachableLearnset, + .eggMoveLearnset = sShroomishEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_BRELOOM}), }, @@ -2596,6 +2913,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Breloom, .iconPalIndex = 1, FOOTPRINT(Breloom) + OVERWORLD( + sPicTable_Breloom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Breloom, + gShinyOverworldPalette_Breloom + ) .levelUpLearnset = sBreloomLevelUpLearnset, .teachableLearnset = sBreloomTeachableLearnset, }, @@ -2650,8 +2975,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Slakoth, .iconPalIndex = 2, FOOTPRINT(Slakoth) + OVERWORLD( + sPicTable_Slakoth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slakoth, + gShinyOverworldPalette_Slakoth + ) .levelUpLearnset = sSlakothLevelUpLearnset, .teachableLearnset = sSlakothTeachableLearnset, + .eggMoveLearnset = sSlakothEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_VIGOROTH}), }, @@ -2703,6 +3037,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Vigoroth, .iconPalIndex = 2, FOOTPRINT(Vigoroth) + OVERWORLD( + sPicTable_Vigoroth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vigoroth, + gShinyOverworldPalette_Vigoroth + ) .levelUpLearnset = sVigorothLevelUpLearnset, .teachableLearnset = sVigorothTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SLAKING}), @@ -2762,6 +3104,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Slaking, .iconPalIndex = 2, FOOTPRINT(Slaking) + OVERWORLD( + sPicTable_Slaking, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slaking, + gShinyOverworldPalette_Slaking + ) .levelUpLearnset = sSlakingLevelUpLearnset, .teachableLearnset = sSlakingTeachableLearnset, }, @@ -2817,8 +3167,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Nincada, .iconPalIndex = 1, FOOTPRINT(Nincada) + OVERWORLD( + sPicTable_Nincada, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Nincada, + gShinyOverworldPalette_Nincada + ) .levelUpLearnset = sNincadaLevelUpLearnset, .teachableLearnset = sNincadaTeachableLearnset, + .eggMoveLearnset = sNincadaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), }, @@ -2872,6 +3231,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Ninjask, .iconPalIndex = 1, FOOTPRINT(Ninjask) + OVERWORLD( + sPicTable_Ninjask, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Ninjask, + gShinyOverworldPalette_Ninjask + ) .levelUpLearnset = sNinjaskLevelUpLearnset, .teachableLearnset = sNinjaskTeachableLearnset, }, @@ -2925,6 +3292,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Shedinja, .iconPalIndex = 1, FOOTPRINT(Shedinja) + OVERWORLD( + sPicTable_Shedinja, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Shedinja, + gShinyOverworldPalette_Shedinja + ) .levelUpLearnset = sShedinjaLevelUpLearnset, .teachableLearnset = sShedinjaTeachableLearnset, }, @@ -2979,8 +3354,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Whismur, .iconPalIndex = 1, FOOTPRINT(Whismur) + OVERWORLD( + sPicTable_Whismur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Whismur, + gShinyOverworldPalette_Whismur + ) .levelUpLearnset = sWhismurLevelUpLearnset, .teachableLearnset = sWhismurTeachableLearnset, + .eggMoveLearnset = sWhismurEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LOUDRED}), }, @@ -3032,6 +3416,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Loudred, .iconPalIndex = 2, FOOTPRINT(Loudred) + OVERWORLD( + sPicTable_Loudred, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Loudred, + gShinyOverworldPalette_Loudred + ) .levelUpLearnset = sLoudredLevelUpLearnset, .teachableLearnset = sLoudredTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_EXPLOUD}), @@ -3093,6 +3485,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Exploud, .iconPalIndex = 2, FOOTPRINT(Exploud) + OVERWORLD( + sPicTable_Exploud, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Exploud, + gShinyOverworldPalette_Exploud + ) .levelUpLearnset = sExploudLevelUpLearnset, .teachableLearnset = sExploudTeachableLearnset, }, @@ -3148,8 +3548,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Makuhita, .iconPalIndex = 1, FOOTPRINT(Makuhita) + OVERWORLD( + sPicTable_Makuhita, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Makuhita, + gShinyOverworldPalette_Makuhita + ) .levelUpLearnset = sMakuhitaLevelUpLearnset, .teachableLearnset = sMakuhitaTeachableLearnset, + .eggMoveLearnset = sMakuhitaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HARIYAMA}), }, @@ -3202,6 +3611,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Hariyama, .iconPalIndex = 2, FOOTPRINT(Hariyama) + OVERWORLD( + sPicTable_Hariyama, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hariyama, + gShinyOverworldPalette_Hariyama + ) .levelUpLearnset = sHariyamaLevelUpLearnset, .teachableLearnset = sHariyamaTeachableLearnset, }, @@ -3257,8 +3674,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Nosepass, .iconPalIndex = 0, FOOTPRINT(Nosepass) + OVERWORLD( + sPicTable_Nosepass, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nosepass, + gShinyOverworldPalette_Nosepass + ) .levelUpLearnset = sNosepassLevelUpLearnset, .teachableLearnset = sNosepassTeachableLearnset, + .eggMoveLearnset = sNosepassEggMoveLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), }, @@ -3315,6 +3741,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Probopass, .iconPalIndex = 0, FOOTPRINT(Probopass) + OVERWORLD( + sPicTable_Probopass, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Probopass, + gShinyOverworldPalette_Probopass + ) .levelUpLearnset = sProbopassLevelUpLearnset, .teachableLearnset = sProbopassTeachableLearnset, }, @@ -3374,8 +3808,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Skitty, .iconPalIndex = 0, FOOTPRINT(Skitty) + OVERWORLD( + sPicTable_Skitty, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skitty, + gShinyOverworldPalette_Skitty + ) .levelUpLearnset = sSkittyLevelUpLearnset, .teachableLearnset = sSkittyTeachableLearnset, + .eggMoveLearnset = sSkittyEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}), }, @@ -3438,6 +3881,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Delcatty, .iconPalIndex = 2, FOOTPRINT(Delcatty) + OVERWORLD( + sPicTable_Delcatty, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Delcatty, + gShinyOverworldPalette_Delcatty + ) .levelUpLearnset = sDelcattyLevelUpLearnset, .teachableLearnset = sDelcattyTeachableLearnset, }, @@ -3498,8 +3949,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Sableye, .iconPalIndex = 2, FOOTPRINT(Sableye) + OVERWORLD( + sPicTable_Sableye, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sableye, + gShinyOverworldPalette_Sableye + ) .levelUpLearnset = sSableyeLevelUpLearnset, .teachableLearnset = sSableyeTeachableLearnset, + .eggMoveLearnset = sSableyeEggMoveLearnset, .formSpeciesIdTable = sSableyeFormSpeciesIdTable, .formChangeTable = sSableyeFormChangeTable, }, @@ -3556,6 +4016,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .isMegaEvolution = TRUE, .levelUpLearnset = sSableyeLevelUpLearnset, .teachableLearnset = sSableyeTeachableLearnset, + .eggMoveLearnset = sSableyeEggMoveLearnset, .formSpeciesIdTable = sSableyeFormSpeciesIdTable, .formChangeTable = sSableyeFormChangeTable, }, @@ -3619,8 +4080,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Mawile, .iconPalIndex = 2, FOOTPRINT(Mawile) + OVERWORLD( + sPicTable_Mawile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mawile, + gShinyOverworldPalette_Mawile + ) .levelUpLearnset = sMawileLevelUpLearnset, .teachableLearnset = sMawileTeachableLearnset, + .eggMoveLearnset = sMawileEggMoveLearnset, .formSpeciesIdTable = sMawileFormSpeciesIdTable, .formChangeTable = sMawileFormChangeTable, }, @@ -3678,6 +4148,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .isMegaEvolution = TRUE, .levelUpLearnset = sMawileLevelUpLearnset, .teachableLearnset = sMawileTeachableLearnset, + .eggMoveLearnset = sMawileEggMoveLearnset, .formSpeciesIdTable = sMawileFormSpeciesIdTable, .formChangeTable = sMawileFormChangeTable, }, @@ -3734,8 +4205,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Aron, .iconPalIndex = 2, FOOTPRINT(Aron) + OVERWORLD( + sPicTable_Aron, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Aron, + gShinyOverworldPalette_Aron + ) .levelUpLearnset = sAronLevelUpLearnset, .teachableLearnset = sAronTeachableLearnset, + .eggMoveLearnset = sAronEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_LAIRON}), }, @@ -3788,6 +4268,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Lairon, .iconPalIndex = 2, FOOTPRINT(Lairon) + OVERWORLD( + sPicTable_Lairon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lairon, + gShinyOverworldPalette_Lairon + ) .levelUpLearnset = sLaironLevelUpLearnset, .teachableLearnset = sLaironTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_AGGRON}), @@ -3848,6 +4336,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Aggron, .iconPalIndex = 2, FOOTPRINT(Aggron) + OVERWORLD( + sPicTable_Aggron, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Aggron, + gShinyOverworldPalette_Aggron + ) .levelUpLearnset = sAggronLevelUpLearnset, .teachableLearnset = sAggronTeachableLearnset, .formSpeciesIdTable = sAggronFormSpeciesIdTable, @@ -3966,8 +4462,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Meditite, .iconPalIndex = 0, FOOTPRINT(Meditite) + OVERWORLD( + sPicTable_Meditite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Meditite, + gShinyOverworldPalette_Meditite + ) .levelUpLearnset = sMedititeLevelUpLearnset, .teachableLearnset = sMedititeTeachableLearnset, + .eggMoveLearnset = sMedititeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_MEDICHAM}), }, @@ -4023,6 +4528,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Medicham, .iconPalIndex = 0, FOOTPRINT(Medicham) + OVERWORLD( + sPicTable_Medicham, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Medicham, + gShinyOverworldPalette_Medicham + ) .levelUpLearnset = sMedichamLevelUpLearnset, .teachableLearnset = sMedichamTeachableLearnset, .formSpeciesIdTable = sMedichamFormSpeciesIdTable, @@ -4136,8 +4649,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Electrike, .iconPalIndex = 1, FOOTPRINT(Electrike) + OVERWORLD( + sPicTable_Electrike, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Electrike, + gShinyOverworldPalette_Electrike + ) .levelUpLearnset = sElectrikeLevelUpLearnset, .teachableLearnset = sElectrikeTeachableLearnset, + .eggMoveLearnset = sElectrikeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_MANECTRIC}), }, @@ -4189,6 +4711,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Manectric, .iconPalIndex = 0, FOOTPRINT(Manectric) + OVERWORLD( + sPicTable_Manectric, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Manectric, + gShinyOverworldPalette_Manectric + ) .levelUpLearnset = sManectricLevelUpLearnset, .teachableLearnset = sManectricTeachableLearnset, .formSpeciesIdTable = sManectricFormSpeciesIdTable, @@ -4306,8 +4836,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Plusle, .iconPalIndex = 0, FOOTPRINT(Plusle) + OVERWORLD( + sPicTable_Plusle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Plusle, + gShinyOverworldPalette_Plusle + ) .levelUpLearnset = sPlusleLevelUpLearnset, .teachableLearnset = sPlusleTeachableLearnset, + .eggMoveLearnset = sPlusleEggMoveLearnset, }, #endif //P_FAMILY_PLUSLE @@ -4365,8 +4904,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Minun, .iconPalIndex = 0, FOOTPRINT(Minun) + OVERWORLD( + sPicTable_Minun, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Minun, + gShinyOverworldPalette_Minun + ) .levelUpLearnset = sMinunLevelUpLearnset, .teachableLearnset = sMinunTeachableLearnset, + .eggMoveLearnset = sMinunEggMoveLearnset, }, #endif //P_FAMILY_MINUN @@ -4426,8 +4974,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Volbeat, .iconPalIndex = 0, FOOTPRINT(Volbeat) + OVERWORLD( + sPicTable_Volbeat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Volbeat, + gShinyOverworldPalette_Volbeat + ) .levelUpLearnset = sVolbeatLevelUpLearnset, .teachableLearnset = sVolbeatTeachableLearnset, + .eggMoveLearnset = sVolbeatEggMoveLearnset, }, [SPECIES_ILLUMISE] = @@ -4489,8 +5046,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Illumise, .iconPalIndex = 2, FOOTPRINT(Illumise) + OVERWORLD( + sPicTable_Illumise, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Illumise, + gShinyOverworldPalette_Illumise + ) .levelUpLearnset = sIllumiseLevelUpLearnset, .teachableLearnset = sIllumiseTeachableLearnset, + .eggMoveLearnset = sIllumiseEggMoveLearnset, }, #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -4546,8 +5112,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Budew, .iconPalIndex = 1, FOOTPRINT(Budew) + OVERWORLD( + sPicTable_Budew, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Budew, + gShinyOverworldPalette_Budew + ) .levelUpLearnset = sBudewLevelUpLearnset, .teachableLearnset = sBudewTeachableLearnset, + .eggMoveLearnset = sBudewEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), }, #endif //P_GEN_4_CROSS_EVOS @@ -4606,8 +5181,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Roselia, .iconPalIndex = 4, FOOTPRINT(Roselia) + OVERWORLD( + sPicTable_Roselia, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Roselia, + gShinyOverworldPalette_Roselia + ) .levelUpLearnset = sRoseliaLevelUpLearnset, .teachableLearnset = sRoseliaTeachableLearnset, + .eggMoveLearnset = sRoseliaEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}), }, @@ -4674,6 +5258,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Roserade, .iconPalIndex = 0, FOOTPRINT(Roserade) + OVERWORLD( + sPicTable_Roserade, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Roserade, + gShinyOverworldPalette_Roserade + ) .levelUpLearnset = sRoseradeLevelUpLearnset, .teachableLearnset = sRoseradeTeachableLearnset, }, @@ -4735,8 +5327,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Gulpin, .iconPalIndex = 1, FOOTPRINT(Gulpin) + OVERWORLD( + sPicTable_Gulpin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Gulpin, + gShinyOverworldPalette_Gulpin + ) .levelUpLearnset = sGulpinLevelUpLearnset, .teachableLearnset = sGulpinTeachableLearnset, + .eggMoveLearnset = sGulpinEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_SWALOT}), }, @@ -4794,6 +5395,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Swalot, .iconPalIndex = 2, FOOTPRINT(Swalot) + OVERWORLD( + sPicTable_Swalot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Swalot, + gShinyOverworldPalette_Swalot + ) .levelUpLearnset = sSwalotLevelUpLearnset, .teachableLearnset = sSwalotTeachableLearnset, }, @@ -4849,8 +5458,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Carvanha, .iconPalIndex = 0, FOOTPRINT(Carvanha) + OVERWORLD( + sPicTable_Carvanha, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Carvanha, + gShinyOverworldPalette_Carvanha + ) .levelUpLearnset = sCarvanhaLevelUpLearnset, .teachableLearnset = sCarvanhaTeachableLearnset, + .eggMoveLearnset = sCarvanhaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHARPEDO}), }, @@ -4903,6 +5521,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Sharpedo, .iconPalIndex = 0, FOOTPRINT(Sharpedo) + OVERWORLD( + sPicTable_Sharpedo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Sharpedo, + gShinyOverworldPalette_Sharpedo + ) .levelUpLearnset = sSharpedoLevelUpLearnset, .teachableLearnset = sSharpedoTeachableLearnset, .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, @@ -5018,8 +5644,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Wailmer, .iconPalIndex = 2, FOOTPRINT(Wailmer) + OVERWORLD( + sPicTable_Wailmer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Wailmer, + gShinyOverworldPalette_Wailmer + ) .levelUpLearnset = sWailmerLevelUpLearnset, .teachableLearnset = sWailmerTeachableLearnset, + .eggMoveLearnset = sWailmerEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_WAILORD}), }, @@ -5072,6 +5707,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Wailord, .iconPalIndex = 0, FOOTPRINT(Wailord) + OVERWORLD( + sPicTable_Wailord, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Wailord, + gShinyOverworldPalette_Wailord + ) .levelUpLearnset = sWailordLevelUpLearnset, .teachableLearnset = sWailordTeachableLearnset, }, @@ -5134,8 +5777,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Numel, .iconPalIndex = 1, FOOTPRINT(Numel) + OVERWORLD( + sPicTable_Numel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Numel, + gShinyOverworldPalette_Numel + ) .levelUpLearnset = sNumelLevelUpLearnset, .teachableLearnset = sNumelTeachableLearnset, + .eggMoveLearnset = sNumelEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_CAMERUPT}), }, @@ -5196,6 +5848,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Camerupt, .iconPalIndex = 0, FOOTPRINT(Camerupt) + OVERWORLD( + sPicTable_Camerupt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Camerupt, + gShinyOverworldPalette_Camerupt + ) .levelUpLearnset = sCameruptLevelUpLearnset, .teachableLearnset = sCameruptTeachableLearnset, .formSpeciesIdTable = sCameruptFormSpeciesIdTable, @@ -5315,8 +5975,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Torkoal, .iconPalIndex = 2, FOOTPRINT(Torkoal) + OVERWORLD( + sPicTable_Torkoal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Torkoal, + gShinyOverworldPalette_Torkoal + ) .levelUpLearnset = sTorkoalLevelUpLearnset, .teachableLearnset = sTorkoalTeachableLearnset, + .eggMoveLearnset = sTorkoalEggMoveLearnset, }, #endif //P_FAMILY_TORKOAL @@ -5369,8 +6038,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Spoink, .iconPalIndex = 0, FOOTPRINT(Spoink) + OVERWORLD( + sPicTable_Spoink, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Spoink, + gShinyOverworldPalette_Spoink + ) .levelUpLearnset = sSpoinkLevelUpLearnset, .teachableLearnset = sSpoinkTeachableLearnset, + .eggMoveLearnset = sSpoinkEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GRUMPIG}), }, @@ -5423,6 +6101,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Grumpig, .iconPalIndex = 2, FOOTPRINT(Grumpig) + OVERWORLD( + sPicTable_Grumpig, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grumpig, + gShinyOverworldPalette_Grumpig + ) .levelUpLearnset = sGrumpigLevelUpLearnset, .teachableLearnset = sGrumpigTeachableLearnset, }, @@ -5482,8 +6168,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Spinda, .iconPalIndex = 1, FOOTPRINT(Spinda) + OVERWORLD( + sPicTable_Spinda, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spinda, + gShinyOverworldPalette_Spinda + ) .levelUpLearnset = sSpindaLevelUpLearnset, .teachableLearnset = sSpindaTeachableLearnset, + .eggMoveLearnset = sSpindaEggMoveLearnset, }, #endif //P_FAMILY_SPINDA @@ -5541,8 +6236,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Trapinch, .iconPalIndex = 0, FOOTPRINT(Trapinch) + OVERWORLD( + sPicTable_Trapinch, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Trapinch, + gShinyOverworldPalette_Trapinch + ) .levelUpLearnset = sTrapinchLevelUpLearnset, .teachableLearnset = sTrapinchTeachableLearnset, + .eggMoveLearnset = sTrapinchEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VIBRAVA}), }, @@ -5599,6 +6303,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Vibrava, .iconPalIndex = 1, FOOTPRINT(Vibrava) + OVERWORLD( + sPicTable_Vibrava, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vibrava, + gShinyOverworldPalette_Vibrava + ) .levelUpLearnset = sVibravaLevelUpLearnset, .teachableLearnset = sVibravaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_FLYGON}), @@ -5664,6 +6376,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Flygon, .iconPalIndex = 1, FOOTPRINT(Flygon) + OVERWORLD( + sPicTable_Flygon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Flygon, + gShinyOverworldPalette_Flygon + ) .levelUpLearnset = sFlygonLevelUpLearnset, .teachableLearnset = sFlygonTeachableLearnset, }, @@ -5719,8 +6439,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Cacnea, .iconPalIndex = 1, FOOTPRINT(Cacnea) + OVERWORLD( + sPicTable_Cacnea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cacnea, + gShinyOverworldPalette_Cacnea + ) .levelUpLearnset = sCacneaLevelUpLearnset, .teachableLearnset = sCacneaTeachableLearnset, + .eggMoveLearnset = sCacneaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_CACTURNE}), }, @@ -5776,6 +6505,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Cacturne, .iconPalIndex = 1, FOOTPRINT(Cacturne) + OVERWORLD( + sPicTable_Cacturne, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cacturne, + gShinyOverworldPalette_Cacturne + ) .levelUpLearnset = sCacturneLevelUpLearnset, .teachableLearnset = sCacturneTeachableLearnset, }, @@ -5830,8 +6567,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Swablu, .iconPalIndex = 0, FOOTPRINT(Swablu) + OVERWORLD( + sPicTable_Swablu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Swablu, + gShinyOverworldPalette_Swablu + ) .levelUpLearnset = sSwabluLevelUpLearnset, .teachableLearnset = sSwabluTeachableLearnset, + .eggMoveLearnset = sSwabluEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ALTARIA}), }, @@ -5883,6 +6629,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Altaria, .iconPalIndex = 0, FOOTPRINT(Altaria) + OVERWORLD( + sPicTable_Altaria, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Altaria, + gShinyOverworldPalette_Altaria + ) .levelUpLearnset = sAltariaLevelUpLearnset, .teachableLearnset = sAltariaTeachableLearnset, .formSpeciesIdTable = sAltariaFormSpeciesIdTable, @@ -5999,8 +6753,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Zangoose, .iconPalIndex = 0, FOOTPRINT(Zangoose) + OVERWORLD( + sPicTable_Zangoose, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zangoose, + gShinyOverworldPalette_Zangoose + ) .levelUpLearnset = sZangooseLevelUpLearnset, .teachableLearnset = sZangooseTeachableLearnset, + .eggMoveLearnset = sZangooseEggMoveLearnset, }, #endif //P_FAMILY_ZANGOOSE @@ -6056,8 +6819,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Seviper, .iconPalIndex = 2, FOOTPRINT(Seviper) + OVERWORLD( + sPicTable_Seviper, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BIKE_TIRE, + gOverworldPalette_Seviper, + gShinyOverworldPalette_Seviper + ) .levelUpLearnset = sSeviperLevelUpLearnset, .teachableLearnset = sSeviperTeachableLearnset, + .eggMoveLearnset = sSeviperEggMoveLearnset, }, #endif //P_FAMILY_SEVIPER @@ -6119,6 +6891,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Lunatone, .iconPalIndex = 1, FOOTPRINT(Lunatone) + OVERWORLD( + sPicTable_Lunatone, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Lunatone, + gShinyOverworldPalette_Lunatone + ) .levelUpLearnset = sLunatoneLevelUpLearnset, .teachableLearnset = sLunatoneTeachableLearnset, }, @@ -6182,6 +6962,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Solrock, .iconPalIndex = 0, FOOTPRINT(Solrock) + OVERWORLD( + sPicTable_Solrock, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Solrock, + gShinyOverworldPalette_Solrock + ) .levelUpLearnset = sSolrockLevelUpLearnset, .teachableLearnset = sSolrockTeachableLearnset, }, @@ -6241,8 +7029,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Barboach, .iconPalIndex = 0, FOOTPRINT(Barboach) + OVERWORLD( + sPicTable_Barboach, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Barboach, + gShinyOverworldPalette_Barboach + ) .levelUpLearnset = sBarboachLevelUpLearnset, .teachableLearnset = sBarboachTeachableLearnset, + .eggMoveLearnset = sBarboachEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_WHISCASH}), }, @@ -6298,6 +7095,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Whiscash, .iconPalIndex = 0, FOOTPRINT(Whiscash) + OVERWORLD( + sPicTable_Whiscash, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Whiscash, + gShinyOverworldPalette_Whiscash + ) .levelUpLearnset = sWhiscashLevelUpLearnset, .teachableLearnset = sWhiscashTeachableLearnset, }, @@ -6352,8 +7157,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Corphish, .iconPalIndex = 0, FOOTPRINT(Corphish) + OVERWORLD( + sPicTable_Corphish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Corphish, + gShinyOverworldPalette_Corphish + ) .levelUpLearnset = sCorphishLevelUpLearnset, .teachableLearnset = sCorphishTeachableLearnset, + .eggMoveLearnset = sCorphishEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_CRAWDAUNT}), }, @@ -6405,6 +7219,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Crawdaunt, .iconPalIndex = 0, FOOTPRINT(Crawdaunt) + OVERWORLD( + sPicTable_Crawdaunt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Crawdaunt, + gShinyOverworldPalette_Crawdaunt + ) .levelUpLearnset = sCrawdauntLevelUpLearnset, .teachableLearnset = sCrawdauntTeachableLearnset, }, @@ -6461,6 +7283,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Baltoy, .iconPalIndex = 2, FOOTPRINT(Baltoy) + OVERWORLD( + sPicTable_Baltoy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Baltoy, + gShinyOverworldPalette_Baltoy + ) .levelUpLearnset = sBaltoyLevelUpLearnset, .teachableLearnset = sBaltoyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CLAYDOL}), @@ -6516,6 +7346,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Claydol, .iconPalIndex = 0, FOOTPRINT(Claydol) + OVERWORLD( + sPicTable_Claydol, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Claydol, + gShinyOverworldPalette_Claydol + ) .levelUpLearnset = sClaydolLevelUpLearnset, .teachableLearnset = sClaydolTeachableLearnset, }, @@ -6577,8 +7415,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Lileep, .iconPalIndex = 2, FOOTPRINT(Lileep) + OVERWORLD( + sPicTable_Lileep, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Lileep, + gShinyOverworldPalette_Lileep + ) .levelUpLearnset = sLileepLevelUpLearnset, .teachableLearnset = sLileepTeachableLearnset, + .eggMoveLearnset = sLileepEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_CRADILY}), }, @@ -6637,6 +7484,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Cradily, .iconPalIndex = 1, FOOTPRINT(Cradily) + OVERWORLD( + sPicTable_Cradily, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Cradily, + gShinyOverworldPalette_Cradily + ) .levelUpLearnset = sCradilyLevelUpLearnset, .teachableLearnset = sCradilyTeachableLearnset, }, @@ -6697,8 +7552,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Anorith, .iconPalIndex = 0, FOOTPRINT(Anorith) + OVERWORLD( + sPicTable_Anorith, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_BUG, + gOverworldPalette_Anorith, + gShinyOverworldPalette_Anorith + ) .levelUpLearnset = sAnorithLevelUpLearnset, .teachableLearnset = sAnorithTeachableLearnset, + .eggMoveLearnset = sAnorithEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ARMALDO}), }, @@ -6756,6 +7620,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Armaldo, .iconPalIndex = 2, FOOTPRINT(Armaldo) + OVERWORLD( + sPicTable_Armaldo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Armaldo, + gShinyOverworldPalette_Armaldo + ) .levelUpLearnset = sArmaldoLevelUpLearnset, .teachableLearnset = sArmaldoTeachableLearnset, }, @@ -6814,8 +7686,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Feebas, .iconPalIndex = 2, FOOTPRINT(Feebas) + OVERWORLD( + sPicTable_Feebas, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Feebas, + gShinyOverworldPalette_Feebas + ) .levelUpLearnset = sFeebasLevelUpLearnset, .teachableLearnset = sFeebasTeachableLearnset, + .eggMoveLearnset = sFeebasEggMoveLearnset, .evolutions = EVOLUTION({EVO_BEAUTY, 170, SPECIES_MILOTIC}, {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}), @@ -6878,6 +7759,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Milotic, .iconPalIndex = 2, FOOTPRINT(Milotic) + OVERWORLD( + sPicTable_Milotic, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Milotic, + gShinyOverworldPalette_Milotic + ) .levelUpLearnset = sMiloticLevelUpLearnset, .teachableLearnset = sMiloticTeachableLearnset, }, @@ -6935,8 +7824,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_CastformNormal, .iconPalIndex = 0, FOOTPRINT(Castform) + OVERWORLD( + sPicTable_CastformNormal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_CastformNormal, + gShinyOverworldPalette_CastformNormal + ) .levelUpLearnset = sCastformLevelUpLearnset, .teachableLearnset = sCastformTeachableLearnset, + .eggMoveLearnset = sCastformEggMoveLearnset, .formSpeciesIdTable = sCastformFormSpeciesIdTable, .formChangeTable = sCastformFormChangeTable, }, @@ -6992,8 +7890,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_CastformSunny, .iconPalIndex = 0, FOOTPRINT(Castform) + OVERWORLD( + sPicTable_CastformSunny, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_CastformSunny, + gShinyOverworldPalette_CastformSunny + ) .levelUpLearnset = sCastformLevelUpLearnset, .teachableLearnset = sCastformTeachableLearnset, + .eggMoveLearnset = sCastformEggMoveLearnset, .formSpeciesIdTable = sCastformFormSpeciesIdTable, .formChangeTable = sCastformFormChangeTable, }, @@ -7049,8 +7956,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_CastformRainy, .iconPalIndex = 0, FOOTPRINT(Castform) + OVERWORLD( + sPicTable_CastformRainy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_CastformRainy, + gShinyOverworldPalette_CastformRainy + ) .levelUpLearnset = sCastformLevelUpLearnset, .teachableLearnset = sCastformTeachableLearnset, + .eggMoveLearnset = sCastformEggMoveLearnset, .formSpeciesIdTable = sCastformFormSpeciesIdTable, .formChangeTable = sCastformFormChangeTable, }, @@ -7106,8 +8022,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_CastformSnowy, .iconPalIndex = 0, FOOTPRINT(Castform) + OVERWORLD( + sPicTable_CastformSnowy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_CastformSnowy, + gShinyOverworldPalette_CastformSnowy + ) .levelUpLearnset = sCastformLevelUpLearnset, .teachableLearnset = sCastformTeachableLearnset, + .eggMoveLearnset = sCastformEggMoveLearnset, .formSpeciesIdTable = sCastformFormSpeciesIdTable, .formChangeTable = sCastformFormChangeTable, }, @@ -7167,8 +8092,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Kecleon, .iconPalIndex = 1, FOOTPRINT(Kecleon) + OVERWORLD( + sPicTable_Kecleon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kecleon, + gShinyOverworldPalette_Kecleon + ) .levelUpLearnset = sKecleonLevelUpLearnset, .teachableLearnset = sKecleonTeachableLearnset, + .eggMoveLearnset = sKecleonEggMoveLearnset, }, #endif //P_FAMILY_KECLEON @@ -7227,8 +8161,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Shuppet, .iconPalIndex = 0, FOOTPRINT(Shuppet) + OVERWORLD( + sPicTable_Shuppet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Shuppet, + gShinyOverworldPalette_Shuppet + ) .levelUpLearnset = sShuppetLevelUpLearnset, .teachableLearnset = sShuppetTeachableLearnset, + .eggMoveLearnset = sShuppetEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BANETTE}), }, @@ -7285,6 +8228,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Banette, .iconPalIndex = 0, FOOTPRINT(Banette) + OVERWORLD( + sPicTable_Banette, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Banette, + gShinyOverworldPalette_Banette + ) .levelUpLearnset = sBanetteLevelUpLearnset, .teachableLearnset = sBanetteTeachableLearnset, .formSpeciesIdTable = sBanetteFormSpeciesIdTable, @@ -7406,8 +8357,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Duskull, .iconPalIndex = 0, FOOTPRINT(Duskull) + OVERWORLD( + sPicTable_Duskull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Duskull, + gShinyOverworldPalette_Duskull + ) .levelUpLearnset = sDuskullLevelUpLearnset, .teachableLearnset = sDuskullTeachableLearnset, + .eggMoveLearnset = sDuskullEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_DUSCLOPS}), }, @@ -7466,6 +8426,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Dusclops, .iconPalIndex = 0, FOOTPRINT(Dusclops) + OVERWORLD( + sPicTable_Dusclops, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dusclops, + gShinyOverworldPalette_Dusclops + ) .levelUpLearnset = sDusclopsLevelUpLearnset, .teachableLearnset = sDusclopsTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, @@ -7534,6 +8502,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Dusknoir, .iconPalIndex = 2, FOOTPRINT(Dusknoir) + OVERWORLD( + sPicTable_Dusknoir, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dusknoir, + gShinyOverworldPalette_Dusknoir + ) .levelUpLearnset = sDusknoirLevelUpLearnset, .teachableLearnset = sDusknoirTeachableLearnset, }, @@ -7593,8 +8569,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Tropius, .iconPalIndex = 1, FOOTPRINT(Tropius) + OVERWORLD( + sPicTable_Tropius, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tropius, + gShinyOverworldPalette_Tropius + ) .levelUpLearnset = sTropiusLevelUpLearnset, .teachableLearnset = sTropiusTeachableLearnset, + .eggMoveLearnset = sTropiusEggMoveLearnset, }, #endif //P_FAMILY_TROPIUS @@ -7649,8 +8634,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Chingling, .iconPalIndex = 1, FOOTPRINT(Chingling) + OVERWORLD( + sPicTable_Chingling, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chingling, + gShinyOverworldPalette_Chingling + ) .levelUpLearnset = sChinglingLevelUpLearnset, .teachableLearnset = sChinglingTeachableLearnset, + .eggMoveLearnset = sChinglingEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}), }, #endif //P_GEN_4_CROSS_EVOS @@ -7712,8 +8706,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Chimecho, .iconPalIndex = 0, FOOTPRINT(Chimecho) + OVERWORLD( + sPicTable_Chimecho, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Chimecho, + gShinyOverworldPalette_Chimecho + ) .levelUpLearnset = sChimechoLevelUpLearnset, .teachableLearnset = sChimechoTeachableLearnset, + .eggMoveLearnset = sChimechoEggMoveLearnset, }, #endif //P_FAMILY_CHIMECHO @@ -7772,8 +8775,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Absol, .iconPalIndex = 0, FOOTPRINT(Absol) + OVERWORLD( + sPicTable_Absol, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Absol, + gShinyOverworldPalette_Absol + ) .levelUpLearnset = sAbsolLevelUpLearnset, .teachableLearnset = sAbsolTeachableLearnset, + .eggMoveLearnset = sAbsolEggMoveLearnset, .formSpeciesIdTable = sAbsolFormSpeciesIdTable, .formChangeTable = sAbsolFormChangeTable, }, @@ -7831,6 +8843,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .isMegaEvolution = TRUE, .levelUpLearnset = sAbsolLevelUpLearnset, .teachableLearnset = sAbsolTeachableLearnset, + .eggMoveLearnset = sAbsolEggMoveLearnset, .formSpeciesIdTable = sAbsolFormSpeciesIdTable, .formChangeTable = sAbsolFormChangeTable, }, @@ -7892,8 +8905,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Snorunt, .iconPalIndex = 2, FOOTPRINT(Snorunt) + OVERWORLD( + sPicTable_Snorunt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snorunt, + gShinyOverworldPalette_Snorunt + ) .levelUpLearnset = sSnoruntLevelUpLearnset, .teachableLearnset = sSnoruntTeachableLearnset, + .eggMoveLearnset = sSnoruntEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GLALIE}, {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS}), }, @@ -7951,6 +8973,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Glalie, .iconPalIndex = 0, FOOTPRINT(Glalie) + OVERWORLD( + sPicTable_Glalie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Glalie, + gShinyOverworldPalette_Glalie + ) .levelUpLearnset = sGlalieLevelUpLearnset, .teachableLearnset = sGlalieTeachableLearnset, .formSpeciesIdTable = sGlalieFormSpeciesIdTable, @@ -8064,6 +9094,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Froslass, .iconPalIndex = 0, FOOTPRINT(Froslass) + OVERWORLD( + sPicTable_Froslass, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Froslass, + gShinyOverworldPalette_Froslass + ) .levelUpLearnset = sFroslassLevelUpLearnset, .teachableLearnset = sFroslassTeachableLearnset, }, @@ -8124,8 +9162,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Spheal, .iconPalIndex = 2, FOOTPRINT(Spheal) + OVERWORLD( + sPicTable_Spheal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spheal, + gShinyOverworldPalette_Spheal + ) .levelUpLearnset = sSphealLevelUpLearnset, .teachableLearnset = sSphealTeachableLearnset, + .eggMoveLearnset = sSphealEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEALEO}), }, @@ -8181,6 +9228,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Sealeo, .iconPalIndex = 2, FOOTPRINT(Sealeo) + OVERWORLD( + sPicTable_Sealeo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sealeo, + gShinyOverworldPalette_Sealeo + ) .levelUpLearnset = sSealeoLevelUpLearnset, .teachableLearnset = sSealeoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 44, SPECIES_WALREIN}), @@ -8244,6 +9299,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Walrein, .iconPalIndex = 0, FOOTPRINT(Walrein) + OVERWORLD( + sPicTable_Walrein, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Walrein, + gShinyOverworldPalette_Walrein + ) .levelUpLearnset = sWalreinLevelUpLearnset, .teachableLearnset = sWalreinTeachableLearnset, }, @@ -8300,8 +9363,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Clamperl, .iconPalIndex = 0, FOOTPRINT(Clamperl) + OVERWORLD( + sPicTable_Clamperl, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Clamperl, + gShinyOverworldPalette_Clamperl + ) .levelUpLearnset = sClamperlLevelUpLearnset, .teachableLearnset = sClamperlTeachableLearnset, + .eggMoveLearnset = sClamperlEggMoveLearnset, .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}, @@ -8358,6 +9430,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Huntail, .iconPalIndex = 0, FOOTPRINT(Huntail) + OVERWORLD( + sPicTable_Huntail, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Huntail, + gShinyOverworldPalette_Huntail + ) .levelUpLearnset = sHuntailLevelUpLearnset, .teachableLearnset = sHuntailTeachableLearnset, }, @@ -8411,6 +9491,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Gorebyss, .iconPalIndex = 0, FOOTPRINT(Gorebyss) + OVERWORLD( + sPicTable_Gorebyss, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SLITHER, + gOverworldPalette_Gorebyss, + gShinyOverworldPalette_Gorebyss + ) .levelUpLearnset = sGorebyssLevelUpLearnset, .teachableLearnset = sGorebyssTeachableLearnset, }, @@ -8471,8 +9559,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Relicanth, .iconPalIndex = 2, FOOTPRINT(Relicanth) + OVERWORLD( + sPicTable_Relicanth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Relicanth, + gShinyOverworldPalette_Relicanth + ) .levelUpLearnset = sRelicanthLevelUpLearnset, .teachableLearnset = sRelicanthTeachableLearnset, + .eggMoveLearnset = sRelicanthEggMoveLearnset, }, #endif //P_FAMILY_RELICANTH @@ -8526,8 +9623,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Luvdisc, .iconPalIndex = 0, FOOTPRINT(Luvdisc) + OVERWORLD( + sPicTable_Luvdisc, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_SPOT, + gOverworldPalette_Luvdisc, + gShinyOverworldPalette_Luvdisc + ) .levelUpLearnset = sLuvdiscLevelUpLearnset, .teachableLearnset = sLuvdiscTeachableLearnset, + .eggMoveLearnset = sLuvdiscEggMoveLearnset, }, #endif //P_FAMILY_LUVDISC @@ -8581,8 +9687,17 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Bagon, .iconPalIndex = 0, FOOTPRINT(Bagon) + OVERWORLD( + sPicTable_Bagon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bagon, + gShinyOverworldPalette_Bagon + ) .levelUpLearnset = sBagonLevelUpLearnset, .teachableLearnset = sBagonTeachableLearnset, + .eggMoveLearnset = sBagonEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHELGON}), }, @@ -8635,6 +9750,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Shelgon, .iconPalIndex = 2, FOOTPRINT(Shelgon) + OVERWORLD( + sPicTable_Shelgon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shelgon, + gShinyOverworldPalette_Shelgon + ) .levelUpLearnset = sShelgonLevelUpLearnset, .teachableLearnset = sShelgonTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_SALAMENCE}), @@ -8696,6 +9819,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Salamence, .iconPalIndex = 0, FOOTPRINT(Salamence) + OVERWORLD( + sPicTable_Salamence, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Salamence, + gShinyOverworldPalette_Salamence + ) .levelUpLearnset = sSalamenceLevelUpLearnset, .teachableLearnset = sSalamenceTeachableLearnset, .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, @@ -8812,6 +9943,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Beldum, .iconPalIndex = 0, FOOTPRINT(Beldum) + OVERWORLD( + sPicTable_Beldum, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Beldum, + gShinyOverworldPalette_Beldum + ) .tmIlliterate = TRUE, .levelUpLearnset = sBeldumLevelUpLearnset, .teachableLearnset = sBeldumTeachableLearnset, @@ -8867,6 +10006,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Metang, .iconPalIndex = 0, FOOTPRINT(Metang) + OVERWORLD( + sPicTable_Metang, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Metang, + gShinyOverworldPalette_Metang + ) .levelUpLearnset = sMetangLevelUpLearnset, .teachableLearnset = sMetangTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_METAGROSS}), @@ -8927,6 +10074,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Metagross, .iconPalIndex = 0, FOOTPRINT(Metagross) + OVERWORLD( + sPicTable_Metagross, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Metagross, + gShinyOverworldPalette_Metagross + ) .levelUpLearnset = sMetagrossLevelUpLearnset, .teachableLearnset = sMetagrossTeachableLearnset, .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, @@ -9048,6 +10203,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Regirock, .iconPalIndex = 2, FOOTPRINT(Regirock) + OVERWORLD( + sPicTable_Regirock, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Regirock, + gShinyOverworldPalette_Regirock + ) .isLegendary = TRUE, .levelUpLearnset = sRegirockLevelUpLearnset, .teachableLearnset = sRegirockTeachableLearnset, @@ -9109,6 +10272,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Regice, .iconPalIndex = 0, FOOTPRINT(Regice) + OVERWORLD( + sPicTable_Regice, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Regice, + gShinyOverworldPalette_Regice + ) .isLegendary = TRUE, .levelUpLearnset = sRegiceLevelUpLearnset, .teachableLearnset = sRegiceTeachableLearnset, @@ -9171,6 +10342,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Registeel, .iconPalIndex = 2, FOOTPRINT(Registeel) + OVERWORLD( + sPicTable_Registeel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Registeel, + gShinyOverworldPalette_Registeel + ) .isLegendary = TRUE, .levelUpLearnset = sRegisteelLevelUpLearnset, .teachableLearnset = sRegisteelTeachableLearnset, @@ -9233,6 +10412,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Latias, .iconPalIndex = 0, FOOTPRINT(Latias) + OVERWORLD( + sPicTable_Latias, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Latias, + gShinyOverworldPalette_Latias + ) .isLegendary = TRUE, .levelUpLearnset = sLatiasLevelUpLearnset, .teachableLearnset = sLatiasTeachableLearnset, @@ -9356,6 +10543,14 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Latios, .iconPalIndex = 0, FOOTPRINT(Latios) + OVERWORLD( + sPicTable_Latios, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Latios, + gShinyOverworldPalette_Latios + ) .isLegendary = TRUE, .levelUpLearnset = sLatiosLevelUpLearnset, .teachableLearnset = sLatiosTeachableLearnset, @@ -9479,7 +10674,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Kyogre, .iconPalIndex = 2, FOOTPRINT(Kyogre) + OVERWORLD( + sPicTable_Kyogre, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Kyogre, + gShinyOverworldPalette_Kyogre + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyogreLevelUpLearnset, .teachableLearnset = sKyogreTeachableLearnset, .formSpeciesIdTable = sKyogreFormSpeciesIdTable, @@ -9536,6 +10740,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Kyogre) .isLegendary = TRUE, .isPrimalReversion = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyogreLevelUpLearnset, .teachableLearnset = sKyogreTeachableLearnset, .formSpeciesIdTable = sKyogreFormSpeciesIdTable, @@ -9599,7 +10804,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Groudon, .iconPalIndex = 0, FOOTPRINT(Groudon) + OVERWORLD( + sPicTable_Groudon, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Groudon, + gShinyOverworldPalette_Groudon + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGroudonLevelUpLearnset, .teachableLearnset = sGroudonTeachableLearnset, .formSpeciesIdTable = sGroudonFormSpeciesIdTable, @@ -9657,6 +10871,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Groudon) .isLegendary = TRUE, .isPrimalReversion = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGroudonLevelUpLearnset, .teachableLearnset = sGroudonTeachableLearnset, .formSpeciesIdTable = sGroudonFormSpeciesIdTable, @@ -9723,7 +10938,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Rayquaza, .iconPalIndex = 1, FOOTPRINT(Rayquaza) + OVERWORLD( + sPicTable_Rayquaza, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Rayquaza, + gShinyOverworldPalette_Rayquaza + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sRayquazaLevelUpLearnset, .teachableLearnset = sRayquazaTeachableLearnset, .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, @@ -9783,6 +11007,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = FOOTPRINT(Rayquaza) .isLegendary = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sRayquazaLevelUpLearnset, .teachableLearnset = sRayquazaTeachableLearnset, .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, @@ -9849,7 +11074,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_Jirachi, .iconPalIndex = 0, FOOTPRINT(Jirachi) + OVERWORLD( + sPicTable_Jirachi, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_Jirachi, + gShinyOverworldPalette_Jirachi + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sJirachiLevelUpLearnset, .teachableLearnset = sJirachiTeachableLearnset, }, @@ -9910,7 +11144,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_DeoxysNormal, .iconPalIndex = 0, FOOTPRINT(Deoxys) + OVERWORLD( + sPicTable_DeoxysNormal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeoxysNormal, + gShinyOverworldPalette_DeoxysNormal + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysNormalLevelUpLearnset, .teachableLearnset = sDeoxysNormalTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -9962,7 +11205,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_DeoxysAttack, .iconPalIndex = 0, FOOTPRINT(Deoxys) + OVERWORLD( + sPicTable_DeoxysAttack, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeoxysAttack, + gShinyOverworldPalette_DeoxysAttack + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysAttackLevelUpLearnset, .teachableLearnset = sDeoxysAttackTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -10014,7 +11266,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_DeoxysDefense, .iconPalIndex = 0, FOOTPRINT(Deoxys) + OVERWORLD( + sPicTable_DeoxysDefense, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeoxysDefense, + gShinyOverworldPalette_DeoxysDefense + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysDefenseLevelUpLearnset, .teachableLearnset = sDeoxysDefenseTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, @@ -10066,7 +11327,16 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .iconSprite = gMonIcon_DeoxysSpeed, .iconPalIndex = 0, FOOTPRINT(Deoxys) + OVERWORLD( + sPicTable_DeoxysSpeed, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeoxysSpeed, + gShinyOverworldPalette_DeoxysSpeed + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDeoxysSpeedLevelUpLearnset, .teachableLearnset = sDeoxysSpeedTeachableLearnset, .formSpeciesIdTable = sDeoxysFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_4_families.h b/src/data/pokemon/species_info/gen_4_families.h index a8795d698e5d..faa9ed73b45c 100644 --- a/src/data/pokemon/species_info/gen_4_families.h +++ b/src/data/pokemon/species_info/gen_4_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Turtwig, .iconPalIndex = 1, FOOTPRINT(Turtwig) + OVERWORLD( + sPicTable_Turtwig, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Turtwig, + gShinyOverworldPalette_Turtwig + ) .levelUpLearnset = sTurtwigLevelUpLearnset, .teachableLearnset = sTurtwigTeachableLearnset, + .eggMoveLearnset = sTurtwigEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_GROTLE}), }, @@ -106,6 +115,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Grotle, .iconPalIndex = 1, FOOTPRINT(Grotle) + OVERWORLD( + sPicTable_Grotle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grotle, + gShinyOverworldPalette_Grotle + ) .levelUpLearnset = sGrotleLevelUpLearnset, .teachableLearnset = sGrotleTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_TORTERRA}), @@ -167,6 +184,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Torterra, .iconPalIndex = 1, FOOTPRINT(Torterra) + OVERWORLD( + sPicTable_Torterra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Torterra, + gShinyOverworldPalette_Torterra + ) .levelUpLearnset = sTorterraLevelUpLearnset, .teachableLearnset = sTorterraTeachableLearnset, }, @@ -222,8 +247,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Chimchar, .iconPalIndex = 1, FOOTPRINT(Chimchar) + OVERWORLD( + sPicTable_Chimchar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chimchar, + gShinyOverworldPalette_Chimchar + ) .levelUpLearnset = sChimcharLevelUpLearnset, .teachableLearnset = sChimcharTeachableLearnset, + .eggMoveLearnset = sChimcharEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_MONFERNO}), }, @@ -277,6 +311,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Monferno, .iconPalIndex = 0, FOOTPRINT(Monferno) + OVERWORLD( + sPicTable_Monferno, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Monferno, + gShinyOverworldPalette_Monferno + ) .levelUpLearnset = sMonfernoLevelUpLearnset, .teachableLearnset = sMonfernoTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_INFERNAPE}), @@ -338,6 +380,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Infernape, .iconPalIndex = 0, FOOTPRINT(Infernape) + OVERWORLD( + sPicTable_Infernape, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Infernape, + gShinyOverworldPalette_Infernape + ) .levelUpLearnset = sInfernapeLevelUpLearnset, .teachableLearnset = sInfernapeTeachableLearnset, }, @@ -396,8 +446,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Piplup, .iconPalIndex = 0, FOOTPRINT(Piplup) + OVERWORLD( + sPicTable_Piplup, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Piplup, + gShinyOverworldPalette_Piplup + ) .levelUpLearnset = sPiplupLevelUpLearnset, .teachableLearnset = sPiplupTeachableLearnset, + .eggMoveLearnset = sPiplupEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_PRINPLUP}), }, @@ -453,6 +512,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Prinplup, .iconPalIndex = 0, FOOTPRINT(Prinplup) + OVERWORLD( + sPicTable_Prinplup, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Prinplup, + gShinyOverworldPalette_Prinplup + ) .levelUpLearnset = sPrinplupLevelUpLearnset, .teachableLearnset = sPrinplupTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMPOLEON}), @@ -516,6 +583,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Empoleon, .iconPalIndex = 0, FOOTPRINT(Empoleon) + OVERWORLD( + sPicTable_Empoleon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Empoleon, + gShinyOverworldPalette_Empoleon + ) .levelUpLearnset = sEmpoleonLevelUpLearnset, .teachableLearnset = sEmpoleonTeachableLearnset, }, @@ -578,8 +653,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Starly, .iconPalIndex = 0, FOOTPRINT(Starly) + OVERWORLD( + sPicTable_Starly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Starly, + gShinyOverworldPalette_Starly + ) .levelUpLearnset = sStarlyLevelUpLearnset, .teachableLearnset = sStarlyTeachableLearnset, + .eggMoveLearnset = sStarlyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_STARAVIA}), }, @@ -635,6 +719,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Staravia, .iconPalIndex = 0, FOOTPRINT(Staravia) + OVERWORLD( + sPicTable_Staravia, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Staravia, + gShinyOverworldPalette_Staravia + ) .levelUpLearnset = sStaraviaLevelUpLearnset, .teachableLearnset = sStaraviaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), @@ -698,6 +790,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Staraptor, .iconPalIndex = 0, FOOTPRINT(Staraptor) + OVERWORLD( + sPicTable_Staraptor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Staraptor, + gShinyOverworldPalette_Staraptor + ) .levelUpLearnset = sStaraptorLevelUpLearnset, .teachableLearnset = sStaraptorTeachableLearnset, }, @@ -756,8 +856,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Bidoof, .iconPalIndex = 2, FOOTPRINT(Bidoof) + OVERWORLD( + sPicTable_Bidoof, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bidoof, + gShinyOverworldPalette_Bidoof + ) .levelUpLearnset = sBidoofLevelUpLearnset, .teachableLearnset = sBidoofTeachableLearnset, + .eggMoveLearnset = sBidoofEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_BIBAREL}), }, @@ -811,6 +920,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Bibarel, .iconPalIndex = 2, FOOTPRINT(Bibarel) + OVERWORLD( + sPicTable_Bibarel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bibarel, + gShinyOverworldPalette_Bibarel + ) .levelUpLearnset = sBibarelLevelUpLearnset, .teachableLearnset = sBibarelTeachableLearnset, }, @@ -870,6 +987,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Kricketot, .iconPalIndex = 2, FOOTPRINT(Kricketot) + OVERWORLD( + sPicTable_Kricketot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kricketot, + gShinyOverworldPalette_Kricketot + ) .tmIlliterate = TRUE, .levelUpLearnset = sKricketotLevelUpLearnset, .teachableLearnset = sKricketotTeachableLearnset, @@ -929,6 +1054,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Kricketune, .iconPalIndex = 2, FOOTPRINT(Kricketune) + OVERWORLD( + sPicTable_Kricketune, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kricketune, + gShinyOverworldPalette_Kricketune + ) .levelUpLearnset = sKricketuneLevelUpLearnset, .teachableLearnset = sKricketuneTeachableLearnset, }, @@ -987,8 +1120,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Shinx, .iconPalIndex = 0, FOOTPRINT(Shinx) + OVERWORLD( + sPicTable_Shinx, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shinx, + gShinyOverworldPalette_Shinx + ) .levelUpLearnset = sShinxLevelUpLearnset, .teachableLearnset = sShinxTeachableLearnset, + .eggMoveLearnset = sShinxEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_LUXIO}), }, @@ -1044,6 +1186,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Luxio, .iconPalIndex = 0, FOOTPRINT(Luxio) + OVERWORLD( + sPicTable_Luxio, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Luxio, + gShinyOverworldPalette_Luxio + ) .levelUpLearnset = sLuxioLevelUpLearnset, .teachableLearnset = sLuxioTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), @@ -1107,6 +1257,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Luxray, .iconPalIndex = 0, FOOTPRINT(Luxray) + OVERWORLD( + sPicTable_Luxray, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Luxray, + gShinyOverworldPalette_Luxray + ) .levelUpLearnset = sLuxrayLevelUpLearnset, .teachableLearnset = sLuxrayTeachableLearnset, }, @@ -1161,8 +1319,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Cranidos, .iconPalIndex = 0, FOOTPRINT(Cranidos) + OVERWORLD( + sPicTable_Cranidos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cranidos, + gShinyOverworldPalette_Cranidos + ) .levelUpLearnset = sCranidosLevelUpLearnset, .teachableLearnset = sCranidosTeachableLearnset, + .eggMoveLearnset = sCranidosEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_RAMPARDOS}), }, @@ -1214,6 +1381,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Rampardos, .iconPalIndex = 0, FOOTPRINT(Rampardos) + OVERWORLD( + sPicTable_Rampardos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rampardos, + gShinyOverworldPalette_Rampardos + ) .levelUpLearnset = sRampardosLevelUpLearnset, .teachableLearnset = sRampardosTeachableLearnset, }, @@ -1268,8 +1443,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Shieldon, .iconPalIndex = 1, FOOTPRINT(Shieldon) + OVERWORLD( + sPicTable_Shieldon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shieldon, + gShinyOverworldPalette_Shieldon + ) .levelUpLearnset = sShieldonLevelUpLearnset, .teachableLearnset = sShieldonTeachableLearnset, + .eggMoveLearnset = sShieldonEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_BASTIODON}), }, @@ -1321,6 +1505,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Bastiodon, .iconPalIndex = 1, FOOTPRINT(Bastiodon) + OVERWORLD( + sPicTable_Bastiodon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bastiodon, + gShinyOverworldPalette_Bastiodon + ) .levelUpLearnset = sBastiodonLevelUpLearnset, .teachableLearnset = sBastiodonTeachableLearnset, }, @@ -1376,6 +1568,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_BurmyPlantCloak, .iconPalIndex = 1, FOOTPRINT(Burmy) + OVERWORLD( + sPicTable_BurmyPlantCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BurmyPlantCloak, + gShinyOverworldPalette_BurmyPlantCloak + ) .tmIlliterate = TRUE, .levelUpLearnset = sBurmyLevelUpLearnset, .teachableLearnset = sBurmyTeachableLearnset, @@ -1434,6 +1634,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_BurmySandyCloak, .iconPalIndex = 1, FOOTPRINT(Burmy) + OVERWORLD( + sPicTable_BurmySandyCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BurmySandyCloak, + gShinyOverworldPalette_BurmySandyCloak + ) .tmIlliterate = TRUE, .levelUpLearnset = sBurmyLevelUpLearnset, .teachableLearnset = sBurmyTeachableLearnset, @@ -1492,6 +1700,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_BurmyTrashCloak, .iconPalIndex = 0, FOOTPRINT(Burmy) + OVERWORLD( + sPicTable_BurmyTrashCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BurmyTrashCloak, + gShinyOverworldPalette_BurmyTrashCloak + ) .tmIlliterate = TRUE, .levelUpLearnset = sBurmyLevelUpLearnset, .teachableLearnset = sBurmyTeachableLearnset, @@ -1551,6 +1767,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_WormadamPlantCloak, .iconPalIndex = 1, FOOTPRINT(Wormadam) + OVERWORLD( + sPicTable_WormadamPlantCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_WormadamPlantCloak, + gShinyOverworldPalette_WormadamPlantCloak + ) .levelUpLearnset = sWormadamPlantCloakLevelUpLearnset, .teachableLearnset = sWormadamPlantCloakTeachableLearnset, .formSpeciesIdTable = sWormadamFormSpeciesIdTable, @@ -1606,6 +1830,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_WormadamSandyCloak, .iconPalIndex = 1, FOOTPRINT(Wormadam) + OVERWORLD( + sPicTable_WormadamSandyCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_WormadamSandyCloak, + gShinyOverworldPalette_WormadamSandyCloak + ) .levelUpLearnset = sWormadamSandyCloakLevelUpLearnset, .teachableLearnset = sWormadamSandyCloakTeachableLearnset, .formSpeciesIdTable = sWormadamFormSpeciesIdTable, @@ -1662,6 +1894,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_WormadamTrashCloak, .iconPalIndex = 0, FOOTPRINT(Wormadam) + OVERWORLD( + sPicTable_WormadamTrashCloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_WormadamTrashCloak, + gShinyOverworldPalette_WormadamTrashCloak + ) .levelUpLearnset = sWormadamTrashCloakLevelUpLearnset, .teachableLearnset = sWormadamTrashCloakTeachableLearnset, .formSpeciesIdTable = sWormadamFormSpeciesIdTable, @@ -1714,6 +1954,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Mothim, \ .iconPalIndex = 0, \ FOOTPRINT(Mothim) \ + OVERWORLD( \ + sPicTable_Mothim, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Mothim, \ + gShinyOverworldPalette_Mothim \ + ) \ .levelUpLearnset = sMothimLevelUpLearnset, \ .teachableLearnset = sMothimTeachableLearnset, \ .formSpeciesIdTable = sMothimFormSpeciesIdTable, \ @@ -1777,6 +2025,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Combee, .iconPalIndex = 0, FOOTPRINT(Combee) + OVERWORLD( + sPicTable_Combee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Combee, + gShinyOverworldPalette_Combee + ) .tmIlliterate = TRUE, .levelUpLearnset = sCombeeLevelUpLearnset, .teachableLearnset = sCombeeTeachableLearnset, @@ -1834,6 +2090,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Vespiquen, .iconPalIndex = 0, FOOTPRINT(Vespiquen) + OVERWORLD( + sPicTable_Vespiquen, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vespiquen, + gShinyOverworldPalette_Vespiquen + ) .levelUpLearnset = sVespiquenLevelUpLearnset, .teachableLearnset = sVespiquenTeachableLearnset, }, @@ -1890,8 +2154,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Pachirisu, .iconPalIndex = 0, FOOTPRINT(Pachirisu) + OVERWORLD( + sPicTable_Pachirisu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pachirisu, + gShinyOverworldPalette_Pachirisu + ) .levelUpLearnset = sPachirisuLevelUpLearnset, .teachableLearnset = sPachirisuTeachableLearnset, + .eggMoveLearnset = sPachirisuEggMoveLearnset, }, #endif //P_FAMILY_PACHIRISU @@ -1946,8 +2219,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Buizel, .iconPalIndex = 0, FOOTPRINT(Buizel) + OVERWORLD( + sPicTable_Buizel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Buizel, + gShinyOverworldPalette_Buizel + ) .levelUpLearnset = sBuizelLevelUpLearnset, .teachableLearnset = sBuizelTeachableLearnset, + .eggMoveLearnset = sBuizelEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_FLOATZEL}), }, @@ -2001,6 +2283,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Floatzel, .iconPalIndex = 0, FOOTPRINT(Floatzel) + OVERWORLD( + sPicTable_Floatzel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Floatzel, + gShinyOverworldPalette_Floatzel + ) .levelUpLearnset = sFloatzelLevelUpLearnset, .teachableLearnset = sFloatzelTeachableLearnset, }, @@ -2056,8 +2346,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Cherubi, .iconPalIndex = 1, FOOTPRINT(Cherubi) + OVERWORLD( + sPicTable_Cherubi, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cherubi, + gShinyOverworldPalette_Cherubi + ) .levelUpLearnset = sCherubiLevelUpLearnset, .teachableLearnset = sCherubiTeachableLearnset, + .eggMoveLearnset = sCherubiEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}), }, @@ -2110,6 +2409,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_CherrimOvercast, .iconPalIndex = 0, FOOTPRINT(Cherrim) + OVERWORLD( + sPicTable_CherrimOvercast, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_CherrimOvercast, + gShinyOverworldPalette_CherrimOvercast + ) .levelUpLearnset = sCherrimLevelUpLearnset, .teachableLearnset = sCherrimTeachableLearnset, .formSpeciesIdTable = sCherrimFormSpeciesIdTable, @@ -2221,8 +2528,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_ShellosWestSea, .iconPalIndex = 0, FOOTPRINT(Shellos) + OVERWORLD( + sPicTable_ShellosWestSea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ShellosWestSea, + gShinyOverworldPalette_ShellosWestSea + ) .levelUpLearnset = sShellosLevelUpLearnset, .teachableLearnset = sShellosTeachableLearnset, + .eggMoveLearnset = sShellosEggMoveLearnset, .formSpeciesIdTable = sShellosFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}), }, @@ -2275,8 +2591,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_ShellosEastSea, .iconPalIndex = 0, FOOTPRINT(Shellos) + OVERWORLD( + sPicTable_ShellosEastSea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ShellosEastSea, + gShinyOverworldPalette_ShellosEastSea + ) .levelUpLearnset = sShellosLevelUpLearnset, .teachableLearnset = sShellosTeachableLearnset, + .eggMoveLearnset = sShellosEggMoveLearnset, .formSpeciesIdTable = sShellosFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_EAST_SEA}), }, @@ -2329,6 +2654,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_GastrodonWestSea, .iconPalIndex = 0, FOOTPRINT(Gastrodon) + OVERWORLD( + sPicTable_GastrodonWestSea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GastrodonWestSea, + gShinyOverworldPalette_GastrodonWestSea + ) .levelUpLearnset = sGastrodonLevelUpLearnset, .teachableLearnset = sGastrodonTeachableLearnset, .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, @@ -2382,6 +2715,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_GastrodonEastSea, .iconPalIndex = 0, FOOTPRINT(Gastrodon) + OVERWORLD( + sPicTable_GastrodonEastSea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GastrodonEastSea, + gShinyOverworldPalette_GastrodonEastSea + ) .levelUpLearnset = sGastrodonLevelUpLearnset, .teachableLearnset = sGastrodonTeachableLearnset, .formSpeciesIdTable = sGastrodonFormSpeciesIdTable, @@ -2438,8 +2779,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Drifloon, .iconPalIndex = 2, FOOTPRINT(Drifloon) + OVERWORLD( + sPicTable_Drifloon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drifloon, + gShinyOverworldPalette_Drifloon + ) .levelUpLearnset = sDrifloonLevelUpLearnset, .teachableLearnset = sDrifloonTeachableLearnset, + .eggMoveLearnset = sDrifloonEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_DRIFBLIM}), }, @@ -2492,6 +2842,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Drifblim, .iconPalIndex = 2, FOOTPRINT(Drifblim) + OVERWORLD( + sPicTable_Drifblim, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drifblim, + gShinyOverworldPalette_Drifblim + ) .levelUpLearnset = sDrifblimLevelUpLearnset, .teachableLearnset = sDrifblimTeachableLearnset, }, @@ -2546,8 +2904,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Buneary, .iconPalIndex = 2, FOOTPRINT(Buneary) + OVERWORLD( + sPicTable_Buneary, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Buneary, + gShinyOverworldPalette_Buneary + ) .levelUpLearnset = sBunearyLevelUpLearnset, .teachableLearnset = sBunearyTeachableLearnset, + .eggMoveLearnset = sBunearyEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}), }, @@ -2599,6 +2966,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Lopunny, .iconPalIndex = 2, FOOTPRINT(Lopunny) + OVERWORLD( + sPicTable_Lopunny, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lopunny, + gShinyOverworldPalette_Lopunny + ) .levelUpLearnset = sLopunnyLevelUpLearnset, .teachableLearnset = sLopunnyTeachableLearnset, .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, @@ -2712,8 +3087,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Glameow, .iconPalIndex = 0, FOOTPRINT(Glameow) + OVERWORLD( + sPicTable_Glameow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Glameow, + gShinyOverworldPalette_Glameow + ) .levelUpLearnset = sGlameowLevelUpLearnset, .teachableLearnset = sGlameowTeachableLearnset, + .eggMoveLearnset = sGlameowEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PURUGLY}), }, @@ -2765,6 +3149,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Purugly, .iconPalIndex = 0, FOOTPRINT(Purugly) + OVERWORLD( + sPicTable_Purugly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Purugly, + gShinyOverworldPalette_Purugly + ) .levelUpLearnset = sPuruglyLevelUpLearnset, .teachableLearnset = sPuruglyTeachableLearnset, }, @@ -2819,8 +3211,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Stunky, .iconPalIndex = 2, FOOTPRINT(Stunky) + OVERWORLD( + sPicTable_Stunky, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stunky, + gShinyOverworldPalette_Stunky + ) .levelUpLearnset = sStunkyLevelUpLearnset, .teachableLearnset = sStunkyTeachableLearnset, + .eggMoveLearnset = sStunkyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SKUNTANK}), }, @@ -2872,6 +3273,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Skuntank, .iconPalIndex = 2, FOOTPRINT(Skuntank) + OVERWORLD( + sPicTable_Skuntank, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skuntank, + gShinyOverworldPalette_Skuntank + ) .levelUpLearnset = sSkuntankLevelUpLearnset, .teachableLearnset = sSkuntankTeachableLearnset, }, @@ -2928,6 +3337,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Bronzor, .iconPalIndex = 0, FOOTPRINT(Bronzor) + OVERWORLD( + sPicTable_Bronzor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bronzor, + gShinyOverworldPalette_Bronzor + ) .levelUpLearnset = sBronzorLevelUpLearnset, .teachableLearnset = sBronzorTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_BRONZONG}), @@ -2984,6 +3401,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Bronzong, .iconPalIndex = 0, FOOTPRINT(Bronzong) + OVERWORLD( + sPicTable_Bronzong, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bronzong, + gShinyOverworldPalette_Bronzong + ) .levelUpLearnset = sBronzongLevelUpLearnset, .teachableLearnset = sBronzongTeachableLearnset, }, @@ -3039,8 +3464,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Chatot, .iconPalIndex = 0, FOOTPRINT(Chatot) + OVERWORLD( + sPicTable_Chatot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chatot, + gShinyOverworldPalette_Chatot + ) .levelUpLearnset = sChatotLevelUpLearnset, .teachableLearnset = sChatotTeachableLearnset, + .eggMoveLearnset = sChatotEggMoveLearnset, }, #endif //P_FAMILY_CHATOT @@ -3094,8 +3528,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Spiritomb, .iconPalIndex = 5, FOOTPRINT(Spiritomb) + OVERWORLD( + sPicTable_Spiritomb, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spiritomb, + gShinyOverworldPalette_Spiritomb + ) .levelUpLearnset = sSpiritombLevelUpLearnset, .teachableLearnset = sSpiritombTeachableLearnset, + .eggMoveLearnset = sSpiritombEggMoveLearnset, }, #endif //P_FAMILY_SPIRITOMB @@ -3152,8 +3595,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Gible, .iconPalIndex = 0, FOOTPRINT(Gible) + OVERWORLD( + sPicTable_Gible, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gible, + gShinyOverworldPalette_Gible + ) .levelUpLearnset = sGibleLevelUpLearnset, .teachableLearnset = sGibleTeachableLearnset, + .eggMoveLearnset = sGibleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GABITE}), }, @@ -3209,6 +3661,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Gabite, .iconPalIndex = 0, FOOTPRINT(Gabite) + OVERWORLD( + sPicTable_Gabite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gabite, + gShinyOverworldPalette_Gabite + ) .levelUpLearnset = sGabiteLevelUpLearnset, .teachableLearnset = sGabiteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_GARCHOMP}), @@ -3270,6 +3730,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Garchomp, .iconPalIndex = 0, FOOTPRINT(Garchomp) + OVERWORLD( + sPicTable_Garchomp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Garchomp, + gShinyOverworldPalette_Garchomp + ) .levelUpLearnset = sGarchompLevelUpLearnset, .teachableLearnset = sGarchompTeachableLearnset, .formSpeciesIdTable = sGarchompFormSpeciesIdTable, @@ -3383,8 +3851,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Riolu, .iconPalIndex = 2, FOOTPRINT(Riolu) + OVERWORLD( + sPicTable_Riolu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Riolu, + gShinyOverworldPalette_Riolu + ) .levelUpLearnset = sRioluLevelUpLearnset, .teachableLearnset = sRioluTeachableLearnset, + .eggMoveLearnset = sRioluEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}), }, @@ -3437,6 +3914,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Lucario, .iconPalIndex = 2, FOOTPRINT(Lucario) + OVERWORLD( + sPicTable_Lucario, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lucario, + gShinyOverworldPalette_Lucario + ) .levelUpLearnset = sLucarioLevelUpLearnset, .teachableLearnset = sLucarioTeachableLearnset, .formSpeciesIdTable = sLucarioFormSpeciesIdTable, @@ -3557,8 +4042,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndexFemale = 1, #endif FOOTPRINT(Hippopotas) + OVERWORLD( + sPicTable_Hippopotas, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hippopotas, + gShinyOverworldPalette_Hippopotas + ) .levelUpLearnset = sHippopotasLevelUpLearnset, .teachableLearnset = sHippopotasTeachableLearnset, + .eggMoveLearnset = sHippopotasEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_HIPPOWDON}), }, @@ -3616,6 +4110,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndexFemale = 1, #endif FOOTPRINT(Hippowdon) + OVERWORLD( + sPicTable_Hippowdon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hippowdon, + gShinyOverworldPalette_Hippowdon + ) .levelUpLearnset = sHippowdonLevelUpLearnset, .teachableLearnset = sHippowdonTeachableLearnset, }, @@ -3671,8 +4173,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Skorupi, .iconPalIndex = 0, FOOTPRINT(Skorupi) + OVERWORLD( + sPicTable_Skorupi, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skorupi, + gShinyOverworldPalette_Skorupi + ) .levelUpLearnset = sSkorupiLevelUpLearnset, .teachableLearnset = sSkorupiTeachableLearnset, + .eggMoveLearnset = sSkorupiEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_DRAPION}), }, @@ -3725,6 +4236,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Drapion, .iconPalIndex = 2, FOOTPRINT(Drapion) + OVERWORLD( + sPicTable_Drapion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drapion, + gShinyOverworldPalette_Drapion + ) .levelUpLearnset = sDrapionLevelUpLearnset, .teachableLearnset = sDrapionTeachableLearnset, }, @@ -3784,8 +4303,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Croagunk, .iconPalIndex = 0, FOOTPRINT(Croagunk) + OVERWORLD( + sPicTable_Croagunk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Croagunk, + gShinyOverworldPalette_Croagunk + ) .levelUpLearnset = sCroagunkLevelUpLearnset, .teachableLearnset = sCroagunkTeachableLearnset, + .eggMoveLearnset = sCroagunkEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_TOXICROAK}), }, @@ -3842,6 +4370,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Toxicroak, .iconPalIndex = 0, FOOTPRINT(Toxicroak) + OVERWORLD( + sPicTable_Toxicroak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Toxicroak, + gShinyOverworldPalette_Toxicroak + ) .levelUpLearnset = sToxicroakLevelUpLearnset, .teachableLearnset = sToxicroakTeachableLearnset, }, @@ -3897,8 +4433,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Carnivine, .iconPalIndex = 1, FOOTPRINT(Carnivine) + OVERWORLD( + sPicTable_Carnivine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Carnivine, + gShinyOverworldPalette_Carnivine + ) .levelUpLearnset = sCarnivineLevelUpLearnset, .teachableLearnset = sCarnivineTeachableLearnset, + .eggMoveLearnset = sCarnivineEggMoveLearnset, }, #endif //P_FAMILY_CARNIVINE @@ -3955,8 +4500,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Finneon, .iconPalIndex = 0, FOOTPRINT(Finneon) + OVERWORLD( + sPicTable_Finneon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Finneon, + gShinyOverworldPalette_Finneon + ) .levelUpLearnset = sFinneonLevelUpLearnset, .teachableLearnset = sFinneonTeachableLearnset, + .eggMoveLearnset = sFinneonEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_LUMINEON}), }, @@ -4012,6 +4566,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Lumineon, .iconPalIndex = 0, FOOTPRINT(Lumineon) + OVERWORLD( + sPicTable_Lumineon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lumineon, + gShinyOverworldPalette_Lumineon + ) .levelUpLearnset = sLumineonLevelUpLearnset, .teachableLearnset = sLumineonTeachableLearnset, }, @@ -4071,8 +4633,17 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Snover, .iconPalIndex = 1, FOOTPRINT(Snover) + OVERWORLD( + sPicTable_Snover, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snover, + gShinyOverworldPalette_Snover + ) .levelUpLearnset = sSnoverLevelUpLearnset, .teachableLearnset = sSnoverTeachableLearnset, + .eggMoveLearnset = sSnoverEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ABOMASNOW}), }, @@ -4128,6 +4699,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Abomasnow, .iconPalIndex = 1, FOOTPRINT(Abomasnow) + OVERWORLD( + sPicTable_Abomasnow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Abomasnow, + gShinyOverworldPalette_Abomasnow + ) .levelUpLearnset = sAbomasnowLevelUpLearnset, .teachableLearnset = sAbomasnowTeachableLearnset, .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, @@ -4245,6 +4824,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Rotom, .iconPalIndex = 0, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_Rotom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rotom, + gShinyOverworldPalette_Rotom + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4309,6 +4896,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_RotomHeat, .iconPalIndex = 0, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_RotomHeat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RotomHeat, + gShinyOverworldPalette_RotomHeat + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4366,6 +4961,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_RotomWash, .iconPalIndex = 0, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_RotomWash, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RotomWash, + gShinyOverworldPalette_RotomWash + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4422,6 +5025,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_RotomFrost, .iconPalIndex = 5, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_RotomFrost, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RotomFrost, + gShinyOverworldPalette_RotomFrost + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4479,6 +5090,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_RotomFan, .iconPalIndex = 0, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_RotomFan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RotomFan, + gShinyOverworldPalette_RotomFan + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4535,6 +5154,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_RotomMow, .iconPalIndex = 0, FOOTPRINT(Rotom) + OVERWORLD( + sPicTable_RotomMow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_RotomMow, + gShinyOverworldPalette_RotomMow + ) .levelUpLearnset = sRotomLevelUpLearnset, .teachableLearnset = sRotomTeachableLearnset, .formSpeciesIdTable = sRotomFormSpeciesIdTable, @@ -4599,6 +5226,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Uxie, .iconPalIndex = 0, FOOTPRINT(Uxie) + OVERWORLD( + sPicTable_Uxie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Uxie, + gShinyOverworldPalette_Uxie + ) .isLegendary = TRUE, .levelUpLearnset = sUxieLevelUpLearnset, .teachableLearnset = sUxieTeachableLearnset, @@ -4663,6 +5298,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Mesprit, .iconPalIndex = 0, FOOTPRINT(Mesprit) + OVERWORLD( + sPicTable_Mesprit, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mesprit, + gShinyOverworldPalette_Mesprit + ) .isLegendary = TRUE, .levelUpLearnset = sMespritLevelUpLearnset, .teachableLearnset = sMespritTeachableLearnset, @@ -4726,6 +5369,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Azelf, .iconPalIndex = 0, FOOTPRINT(Azelf) + OVERWORLD( + sPicTable_Azelf, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Azelf, + gShinyOverworldPalette_Azelf + ) .isLegendary = TRUE, .levelUpLearnset = sAzelfLevelUpLearnset, .teachableLearnset = sAzelfTeachableLearnset, @@ -4789,7 +5440,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Dialga, .iconPalIndex = 2, FOOTPRINT(Dialga) + OVERWORLD( + sPicTable_Dialga, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dialga, + gShinyOverworldPalette_Dialga + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDialgaLevelUpLearnset, .teachableLearnset = sDialgaTeachableLearnset, .formSpeciesIdTable = sDialgaFormSpeciesIdTable, @@ -4844,7 +5504,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_DialgaOrigin, .iconPalIndex = 0, FOOTPRINT(Dialga) + OVERWORLD( + sPicTable_DialgaOrigin, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_DialgaOrigin + //, gShinyOverworldPalette_DialgaOrigin + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDialgaLevelUpLearnset, .teachableLearnset = sDialgaTeachableLearnset, .formSpeciesIdTable = sDialgaFormSpeciesIdTable, @@ -4909,7 +5578,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Palkia, .iconPalIndex = 2, FOOTPRINT(Palkia) + OVERWORLD( + sPicTable_Palkia, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Palkia, + gShinyOverworldPalette_Palkia + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPalkiaLevelUpLearnset, .teachableLearnset = sPalkiaTeachableLearnset, .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, @@ -4964,7 +5642,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_PalkiaOrigin, .iconPalIndex = 2, FOOTPRINT(Palkia) + OVERWORLD( + sPicTable_PalkiaOrigin, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE, + gOverworldPalette_PalkiaOrigin + //, gShinyOverworldPalette_PalkiaOrigin + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPalkiaLevelUpLearnset, .teachableLearnset = sPalkiaTeachableLearnset, .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, @@ -5027,6 +5714,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Heatran, .iconPalIndex = 0, FOOTPRINT(Heatran) + OVERWORLD( + sPicTable_Heatran, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Heatran, + gShinyOverworldPalette_Heatran + ) .isLegendary = TRUE, .levelUpLearnset = sHeatranLevelUpLearnset, .teachableLearnset = sHeatranTeachableLearnset, @@ -5088,6 +5783,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Regigigas, .iconPalIndex = 0, FOOTPRINT(Regigigas) + OVERWORLD( + sPicTable_Regigigas, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Regigigas, + gShinyOverworldPalette_Regigigas + ) .isLegendary = TRUE, .levelUpLearnset = sRegigigasLevelUpLearnset, .teachableLearnset = sRegigigasTeachableLearnset, @@ -5151,7 +5854,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_GiratinaAltered, .iconPalIndex = 0, FOOTPRINT(GiratinaAltered) + OVERWORLD( + sPicTable_GiratinaAltered, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GiratinaAltered, + gShinyOverworldPalette_GiratinaAltered + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, .teachableLearnset = sGiratinaTeachableLearnset, .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, @@ -5207,7 +5919,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_GiratinaOrigin, .iconPalIndex = 0, FOOTPRINT(GiratinaOrigin) + OVERWORLD( + sPicTable_GiratinaOrigin, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GiratinaOrigin + //, gShinyOverworldPalette_GiratinaOrigin + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sGiratinaLevelUpLearnset, .teachableLearnset = sGiratinaTeachableLearnset, .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, @@ -5271,6 +5992,14 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Cresselia, .iconPalIndex = 0, FOOTPRINT(Cresselia) + OVERWORLD( + sPicTable_Cresselia, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cresselia, + gShinyOverworldPalette_Cresselia + ) .isLegendary = TRUE, .levelUpLearnset = sCresseliaLevelUpLearnset, .teachableLearnset = sCresseliaTeachableLearnset, @@ -5333,7 +6062,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Phione, .iconPalIndex = 0, FOOTPRINT(Phione) + OVERWORLD( + sPicTable_Phione, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Phione, + gShinyOverworldPalette_Phione + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPhioneLevelUpLearnset, .teachableLearnset = sPhioneTeachableLearnset, }, @@ -5393,7 +6131,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Manaphy, .iconPalIndex = 0, FOOTPRINT(Manaphy) + OVERWORLD( + sPicTable_Manaphy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Manaphy, + gShinyOverworldPalette_Manaphy + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sManaphyLevelUpLearnset, .teachableLearnset = sManaphyTeachableLearnset, }, @@ -5456,7 +6203,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_Darkrai, .iconPalIndex = 0, FOOTPRINT(Darkrai) + OVERWORLD( + sPicTable_Darkrai, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Darkrai, + gShinyOverworldPalette_Darkrai + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDarkraiLevelUpLearnset, .teachableLearnset = sDarkraiTeachableLearnset, }, @@ -5521,7 +6277,16 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconSprite = gMonIcon_ShayminLand, .iconPalIndex = 1, FOOTPRINT(Shaymin) + OVERWORLD( + sPicTable_ShayminLand, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ShayminLand, + gShinyOverworldPalette_ShayminLand + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sShayminLandLevelUpLearnset, .teachableLearnset = sShayminLandTeachableLearnset, .formSpeciesIdTable = sShayminFormSpeciesIdTable, @@ -5584,6 +6349,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .iconPalIndex = 1, FOOTPRINT(Shaymin) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sShayminSkyLevelUpLearnset, .teachableLearnset = sShayminSkyTeachableLearnset, .formSpeciesIdTable = sShayminFormSpeciesIdTable, @@ -5599,76 +6365,93 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #else #define ARCEUS_EXP_YIELD 255 #endif +#if P_ARCEUS_UNIQUE_FORM_ICONS >= GEN_9 + #define ARCEUS_ICON(typeName, iconPal) \ + .iconSprite = gMonIcon_Arceus ##typeName, \ + .iconPalIndex = iconPal, +#else + #define ARCEUS_ICON(typeName, iconPal) \ + .iconSprite = gMonIcon_ArceusNormal, \ + .iconPalIndex = 1, +#endif -#define ARCEUS_SPECIES_INFO(type, typeName) \ - { \ - .baseHP = 120, \ - .baseAttack = 120, \ - .baseDefense = 120, \ - .baseSpeed = 120, \ - .baseSpAttack = 120, \ - .baseSpDefense = 120, \ - .types = MON_TYPES(type), \ - .catchRate = 3, \ - .expYield = ARCEUS_EXP_YIELD, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ - .abilities = { ABILITY_MULTITYPE, ABILITY_NONE, 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, \ - .frontPic = gMonFrontPic_Arceus, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Arceus, \ - .frontAnimId = ANIM_GROW_VIBRATE, \ - .backPic = gMonBackPic_Arceus, \ - .backPicSize = MON_COORDS_SIZE(64, 64), \ - .backPicYOffset = 3, \ - .backAnimId = BACK_ANIM_GROW_STUTTER, \ - .palette = gMonPalette_Arceus ##typeName, \ - .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ - .iconSprite = gMonIcon_Arceus, \ - .iconPalIndex = 1, \ - FOOTPRINT(Arceus) \ - .levelUpLearnset = sArceusLevelUpLearnset, \ - .teachableLearnset = sArceusTeachableLearnset, \ - .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ - .formChangeTable = sArceusFormChangeTable, \ - .isMythical = TRUE, \ +#define ARCEUS_SPECIES_INFO(type, typeName, iconPal) \ + { \ + .baseHP = 120, \ + .baseAttack = 120, \ + .baseDefense = 120, \ + .baseSpeed = 120, \ + .baseSpAttack = 120, \ + .baseSpDefense = 120, \ + .types = MON_TYPES(type), \ + .catchRate = 3, \ + .expYield = ARCEUS_EXP_YIELD, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), \ + .abilities = { ABILITY_MULTITYPE, ABILITY_NONE, 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, \ + .frontPic = gMonFrontPic_Arceus, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Arceus, \ + .frontAnimId = ANIM_GROW_VIBRATE, \ + .backPic = gMonBackPic_Arceus, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ + .backPicYOffset = 3, \ + .backAnimId = BACK_ANIM_GROW_STUTTER, \ + .palette = gMonPalette_Arceus ##typeName, \ + .shinyPalette = gMonShinyPalette_Arceus ##typeName, \ + ARCEUS_ICON(typeName, iconPal) \ + FOOTPRINT(Arceus) \ + OVERWORLD( \ + sPicTable_Arceus ##typeName, \ + SIZE_64x64, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Arceus ##typeName, \ + gShinyOverworldPalette_Arceus ##typeName \ + ) \ + .levelUpLearnset = sArceusLevelUpLearnset, \ + .teachableLearnset = sArceusTeachableLearnset, \ + .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ + .formChangeTable = sArceusFormChangeTable, \ + .isMythical = TRUE, \ + .isFrontierBanned = TRUE, \ } - [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal), - [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING, Fighting), - [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying), - [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison), - [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground), - [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock), - [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug), - [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost), - [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel), - [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire), - [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water), - [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass), - [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC, Electric), - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic), - [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice), - [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon), - [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark), - [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy), + [SPECIES_ARCEUS_NORMAL] = ARCEUS_SPECIES_INFO(TYPE_NORMAL, Normal, 1), + [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING, Fighting, 1), + [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING, Flying, 2), + [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON, Poison, 2), + [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND, Ground, 1), + [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK, Rock, 2), + [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG, Bug, 1), + [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST, Ghost, 2), + [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL, Steel, 0), + [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE, Fire, 0), + [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER, Water, 0), + [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS, Grass, 1), + [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC, Electric, 3), + [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC, Psychic, 1), + [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE, Ice, 0), + [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON, Dragon, 0), + [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK, Dark, 0), + [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY, Fairy, 0), #endif //P_FAMILY_ARCEUS #ifdef __INTELLISENSE__ diff --git a/src/data/pokemon/species_info/gen_5_families.h b/src/data/pokemon/species_info/gen_5_families.h index 2063ae91f3c1..ffa2dd4a1cef 100644 --- a/src/data/pokemon/species_info/gen_5_families.h +++ b/src/data/pokemon/species_info/gen_5_families.h @@ -52,7 +52,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Victini, .iconPalIndex = 0, FOOTPRINT(Victini) + OVERWORLD( + sPicTable_Victini, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Victini, + gShinyOverworldPalette_Victini + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sVictiniLevelUpLearnset, .teachableLearnset = sVictiniTeachableLearnset, }, @@ -107,8 +116,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Snivy, .iconPalIndex = 1, FOOTPRINT(Snivy) + OVERWORLD( + sPicTable_Snivy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snivy, + gShinyOverworldPalette_Snivy + ) .levelUpLearnset = sSnivyLevelUpLearnset, .teachableLearnset = sSnivyTeachableLearnset, + .eggMoveLearnset = sSnivyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_SERVINE}), }, @@ -160,6 +178,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Servine, .iconPalIndex = 1, FOOTPRINT(Servine) + OVERWORLD( + sPicTable_Servine, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Servine, + gShinyOverworldPalette_Servine + ) .levelUpLearnset = sServineLevelUpLearnset, .teachableLearnset = sServineTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SERPERIOR}), @@ -213,6 +239,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Serperior, .iconPalIndex = 1, FOOTPRINT(Serperior) + OVERWORLD( + sPicTable_Serperior, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Serperior, + gShinyOverworldPalette_Serperior + ) .levelUpLearnset = sSerperiorLevelUpLearnset, .teachableLearnset = sSerperiorTeachableLearnset, }, @@ -267,8 +301,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Tepig, .iconPalIndex = 0, FOOTPRINT(Tepig) + OVERWORLD( + sPicTable_Tepig, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tepig, + gShinyOverworldPalette_Tepig + ) .levelUpLearnset = sTepigLevelUpLearnset, .teachableLearnset = sTepigTeachableLearnset, + .eggMoveLearnset = sTepigEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_PIGNITE}), }, @@ -320,6 +363,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Pignite, .iconPalIndex = 0, FOOTPRINT(Pignite) + OVERWORLD( + sPicTable_Pignite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pignite, + gShinyOverworldPalette_Pignite + ) .levelUpLearnset = sPigniteLevelUpLearnset, .teachableLearnset = sPigniteTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMBOAR}), @@ -374,6 +425,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Emboar, .iconPalIndex = 0, FOOTPRINT(Emboar) + OVERWORLD( + sPicTable_Emboar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Emboar, + gShinyOverworldPalette_Emboar + ) .levelUpLearnset = sEmboarLevelUpLearnset, .teachableLearnset = sEmboarTeachableLearnset, }, @@ -428,8 +487,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Oshawott, .iconPalIndex = 0, FOOTPRINT(Oshawott) + OVERWORLD( + sPicTable_Oshawott, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Oshawott, + gShinyOverworldPalette_Oshawott + ) .levelUpLearnset = sOshawottLevelUpLearnset, .teachableLearnset = sOshawottTeachableLearnset, + .eggMoveLearnset = sOshawottEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DEWOTT}), }, @@ -481,6 +549,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Dewott, .iconPalIndex = 0, FOOTPRINT(Dewott) + OVERWORLD( + sPicTable_Dewott, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dewott, + gShinyOverworldPalette_Dewott + ) .levelUpLearnset = sDewottLevelUpLearnset, .teachableLearnset = sDewottTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SAMUROTT}, @@ -535,6 +611,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Samurott, .iconPalIndex = 2, FOOTPRINT(Samurott) + OVERWORLD( + sPicTable_Samurott, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Samurott, + gShinyOverworldPalette_Samurott + ) .levelUpLearnset = sSamurottLevelUpLearnset, .teachableLearnset = sSamurottTeachableLearnset, .formSpeciesIdTable = sSamurottFormSpeciesIdTable, @@ -589,6 +673,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_SamurottHisuian, .iconPalIndex = 0, FOOTPRINT(Samurott) + OVERWORLD( + sPicTable_SamurottHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SamurottHisuian, + gShinyOverworldPalette_SamurottHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sSamurottHisuianLevelUpLearnset, .teachableLearnset = sSamurottHisuianTeachableLearnset, @@ -646,8 +738,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Patrat, .iconPalIndex = 2, FOOTPRINT(Patrat) + OVERWORLD( + sPicTable_Patrat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Patrat, + gShinyOverworldPalette_Patrat + ) .levelUpLearnset = sPatratLevelUpLearnset, .teachableLearnset = sPatratTeachableLearnset, + .eggMoveLearnset = sPatratEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WATCHOG}), }, @@ -699,6 +800,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Watchog, .iconPalIndex = 2, FOOTPRINT(Watchog) + OVERWORLD( + sPicTable_Watchog, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Watchog, + gShinyOverworldPalette_Watchog + ) .levelUpLearnset = sWatchogLevelUpLearnset, .teachableLearnset = sWatchogTeachableLearnset, }, @@ -753,8 +862,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Lillipup, .iconPalIndex = 2, FOOTPRINT(Lillipup) + OVERWORLD( + sPicTable_Lillipup, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lillipup, + gShinyOverworldPalette_Lillipup + ) .levelUpLearnset = sLillipupLevelUpLearnset, .teachableLearnset = sLillipupTeachableLearnset, + .eggMoveLearnset = sLillipupEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_HERDIER}), }, @@ -806,6 +924,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Herdier, .iconPalIndex = 2, FOOTPRINT(Herdier) + OVERWORLD( + sPicTable_Herdier, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Herdier, + gShinyOverworldPalette_Herdier + ) .levelUpLearnset = sHerdierLevelUpLearnset, .teachableLearnset = sHerdierTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_STOUTLAND}), @@ -865,6 +991,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Stoutland, .iconPalIndex = 2, FOOTPRINT(Stoutland) + OVERWORLD( + sPicTable_Stoutland, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stoutland, + gShinyOverworldPalette_Stoutland + ) .levelUpLearnset = sStoutlandLevelUpLearnset, .teachableLearnset = sStoutlandTeachableLearnset, }, @@ -919,8 +1053,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Purrloin, .iconPalIndex = 0, FOOTPRINT(Purrloin) + OVERWORLD( + sPicTable_Purrloin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Purrloin, + gShinyOverworldPalette_Purrloin + ) .levelUpLearnset = sPurrloinLevelUpLearnset, .teachableLearnset = sPurrloinTeachableLearnset, + .eggMoveLearnset = sPurrloinEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LIEPARD}), }, @@ -972,6 +1115,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Liepard, .iconPalIndex = 0, FOOTPRINT(Liepard) + OVERWORLD( + sPicTable_Liepard, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Liepard, + gShinyOverworldPalette_Liepard + ) .levelUpLearnset = sLiepardLevelUpLearnset, .teachableLearnset = sLiepardTeachableLearnset, }, @@ -1026,8 +1177,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Pansage, .iconPalIndex = 1, FOOTPRINT(Pansage) + OVERWORLD( + sPicTable_Pansage, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pansage, + gShinyOverworldPalette_Pansage + ) .levelUpLearnset = sPansageLevelUpLearnset, .teachableLearnset = sPansageTeachableLearnset, + .eggMoveLearnset = sPansageEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}), }, @@ -1079,6 +1239,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Simisage, .iconPalIndex = 1, FOOTPRINT(Simisage) + OVERWORLD( + sPicTable_Simisage, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Simisage, + gShinyOverworldPalette_Simisage + ) .levelUpLearnset = sSimisageLevelUpLearnset, .teachableLearnset = sSimisageTeachableLearnset, }, @@ -1134,8 +1302,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Pansear, .iconPalIndex = 2, FOOTPRINT(Pansear) + OVERWORLD( + sPicTable_Pansear, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pansear, + gShinyOverworldPalette_Pansear + ) .levelUpLearnset = sPansearLevelUpLearnset, .teachableLearnset = sPansearTeachableLearnset, + .eggMoveLearnset = sPansearEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}), }, @@ -1188,6 +1365,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Simisear, .iconPalIndex = 2, FOOTPRINT(Simisear) + OVERWORLD( + sPicTable_Simisear, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Simisear, + gShinyOverworldPalette_Simisear + ) .levelUpLearnset = sSimisearLevelUpLearnset, .teachableLearnset = sSimisearTeachableLearnset, }, @@ -1242,8 +1427,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Panpour, .iconPalIndex = 2, FOOTPRINT(Panpour) + OVERWORLD( + sPicTable_Panpour, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Panpour, + gShinyOverworldPalette_Panpour + ) .levelUpLearnset = sPanpourLevelUpLearnset, .teachableLearnset = sPanpourTeachableLearnset, + .eggMoveLearnset = sPanpourEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}), }, @@ -1295,6 +1489,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Simipour, .iconPalIndex = 2, FOOTPRINT(Simipour) + OVERWORLD( + sPicTable_Simipour, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Simipour, + gShinyOverworldPalette_Simipour + ) .levelUpLearnset = sSimipourLevelUpLearnset, .teachableLearnset = sSimipourTeachableLearnset, }, @@ -1350,8 +1552,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Munna, .iconPalIndex = 0, FOOTPRINT(Munna) + OVERWORLD( + sPicTable_Munna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Munna, + gShinyOverworldPalette_Munna + ) .levelUpLearnset = sMunnaLevelUpLearnset, .teachableLearnset = sMunnaTeachableLearnset, + .eggMoveLearnset = sMunnaEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}), }, @@ -1404,6 +1615,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Musharna, .iconPalIndex = 0, FOOTPRINT(Musharna) + OVERWORLD( + sPicTable_Musharna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Musharna, + gShinyOverworldPalette_Musharna + ) .levelUpLearnset = sMusharnaLevelUpLearnset, .teachableLearnset = sMusharnaTeachableLearnset, }, @@ -1458,8 +1677,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Pidove, .iconPalIndex = 0, FOOTPRINT(Pidove) + OVERWORLD( + sPicTable_Pidove, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pidove, + gShinyOverworldPalette_Pidove + ) .levelUpLearnset = sPidoveLevelUpLearnset, .teachableLearnset = sPidoveTeachableLearnset, + .eggMoveLearnset = sPidoveEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_TRANQUILL}), }, @@ -1511,6 +1739,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Tranquill, .iconPalIndex = 0, FOOTPRINT(Tranquill) + OVERWORLD( + sPicTable_Tranquill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tranquill, + gShinyOverworldPalette_Tranquill + ) .levelUpLearnset = sTranquillLevelUpLearnset, .teachableLearnset = sTranquillTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_UNFEZANT}), @@ -1578,6 +1814,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 1, .iconPalIndexFemale = 1, FOOTPRINT(Unfezant) + OVERWORLD( + sPicTable_Unfezant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Unfezant, + gShinyOverworldPalette_Unfezant + ) .levelUpLearnset = sUnfezantLevelUpLearnset, .teachableLearnset = sUnfezantTeachableLearnset, }, @@ -1632,8 +1876,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Blitzle, .iconPalIndex = 2, FOOTPRINT(Blitzle) + OVERWORLD( + sPicTable_Blitzle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blitzle, + gShinyOverworldPalette_Blitzle + ) .levelUpLearnset = sBlitzleLevelUpLearnset, .teachableLearnset = sBlitzleTeachableLearnset, + .eggMoveLearnset = sBlitzleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}), }, @@ -1685,6 +1938,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Zebstrika, .iconPalIndex = 2, FOOTPRINT(Zebstrika) + OVERWORLD( + sPicTable_Zebstrika, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zebstrika, + gShinyOverworldPalette_Zebstrika + ) .levelUpLearnset = sZebstrikaLevelUpLearnset, .teachableLearnset = sZebstrikaTeachableLearnset, }, @@ -1745,8 +2006,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Roggenrola, .iconPalIndex = 2, FOOTPRINT(Roggenrola) + OVERWORLD( + sPicTable_Roggenrola, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Roggenrola, + gShinyOverworldPalette_Roggenrola + ) .levelUpLearnset = sRoggenrolaLevelUpLearnset, .teachableLearnset = sRoggenrolaTeachableLearnset, + .eggMoveLearnset = sRoggenrolaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLDORE}), }, @@ -1805,6 +2075,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Boldore, .iconPalIndex = 0, FOOTPRINT(Boldore) + OVERWORLD( + sPicTable_Boldore, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Boldore, + gShinyOverworldPalette_Boldore + ) .levelUpLearnset = sBoldoreLevelUpLearnset, .teachableLearnset = sBoldoreTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GIGALITH}, @@ -1871,6 +2149,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Gigalith, .iconPalIndex = 0, FOOTPRINT(Gigalith) + OVERWORLD( + sPicTable_Gigalith, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gigalith, + gShinyOverworldPalette_Gigalith + ) .levelUpLearnset = sGigalithLevelUpLearnset, .teachableLearnset = sGigalithTeachableLearnset, }, @@ -1926,8 +2212,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Woobat, .iconPalIndex = 0, FOOTPRINT(Woobat) + OVERWORLD( + sPicTable_Woobat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Woobat, + gShinyOverworldPalette_Woobat + ) .levelUpLearnset = sWoobatLevelUpLearnset, .teachableLearnset = sWoobatTeachableLearnset, + .eggMoveLearnset = sWoobatEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), }, @@ -1980,6 +2275,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Swoobat, .iconPalIndex = 0, FOOTPRINT(Swoobat) + OVERWORLD( + sPicTable_Swoobat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swoobat, + gShinyOverworldPalette_Swoobat + ) .levelUpLearnset = sSwoobatLevelUpLearnset, .teachableLearnset = sSwoobatTeachableLearnset, }, @@ -2035,8 +2338,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Drilbur, .iconPalIndex = 0, FOOTPRINT(Drilbur) + OVERWORLD( + sPicTable_Drilbur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drilbur, + gShinyOverworldPalette_Drilbur + ) .levelUpLearnset = sDrilburLevelUpLearnset, .teachableLearnset = sDrilburTeachableLearnset, + .eggMoveLearnset = sDrilburEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_EXCADRILL}), }, @@ -2089,6 +2401,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Excadrill, .iconPalIndex = 0, FOOTPRINT(Excadrill) + OVERWORLD( + sPicTable_Excadrill, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Excadrill, + gShinyOverworldPalette_Excadrill + ) .levelUpLearnset = sExcadrillLevelUpLearnset, .teachableLearnset = sExcadrillTeachableLearnset, }, @@ -2145,8 +2465,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Audino, .iconPalIndex = 1, FOOTPRINT(Audino) + OVERWORLD( + sPicTable_Audino, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Audino, + gShinyOverworldPalette_Audino + ) .levelUpLearnset = sAudinoLevelUpLearnset, .teachableLearnset = sAudinoTeachableLearnset, + .eggMoveLearnset = sAudinoEggMoveLearnset, .formSpeciesIdTable = sAudinoFormSpeciesIdTable, .formChangeTable = sAudinoFormChangeTable, }, @@ -2205,6 +2534,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .isMegaEvolution = TRUE, .levelUpLearnset = sAudinoLevelUpLearnset, .teachableLearnset = sAudinoTeachableLearnset, + .eggMoveLearnset = sAudinoEggMoveLearnset, .formSpeciesIdTable = sAudinoFormSpeciesIdTable, .formChangeTable = sAudinoFormChangeTable, }, @@ -2260,8 +2590,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Timburr, .iconPalIndex = 1, FOOTPRINT(Timburr) + OVERWORLD( + sPicTable_Timburr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Timburr, + gShinyOverworldPalette_Timburr + ) .levelUpLearnset = sTimburrLevelUpLearnset, .teachableLearnset = sTimburrTeachableLearnset, + .eggMoveLearnset = sTimburrEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GURDURR}), }, @@ -2313,6 +2652,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Gurdurr, .iconPalIndex = 1, FOOTPRINT(Gurdurr) + OVERWORLD( + sPicTable_Gurdurr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gurdurr, + gShinyOverworldPalette_Gurdurr + ) .levelUpLearnset = sGurdurrLevelUpLearnset, .teachableLearnset = sGurdurrTeachableLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_CONKELDURR}, @@ -2367,6 +2714,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Conkeldurr, .iconPalIndex = 1, FOOTPRINT(Conkeldurr) + OVERWORLD( + sPicTable_Conkeldurr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Conkeldurr, + gShinyOverworldPalette_Conkeldurr + ) .levelUpLearnset = sConkeldurrLevelUpLearnset, .teachableLearnset = sConkeldurrTeachableLearnset, }, @@ -2421,8 +2776,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Tympole, .iconPalIndex = 2, FOOTPRINT(Tympole) + OVERWORLD( + sPicTable_Tympole, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tympole, + gShinyOverworldPalette_Tympole + ) .levelUpLearnset = sTympoleLevelUpLearnset, .teachableLearnset = sTympoleTeachableLearnset, + .eggMoveLearnset = sTympoleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PALPITOAD}), }, @@ -2474,6 +2838,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Palpitoad, .iconPalIndex = 2, FOOTPRINT(Palpitoad) + OVERWORLD( + sPicTable_Palpitoad, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Palpitoad, + gShinyOverworldPalette_Palpitoad + ) .levelUpLearnset = sPalpitoadLevelUpLearnset, .teachableLearnset = sPalpitoadTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SEISMITOAD}), @@ -2533,6 +2905,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Seismitoad, .iconPalIndex = 0, FOOTPRINT(Seismitoad) + OVERWORLD( + sPicTable_Seismitoad, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Seismitoad, + gShinyOverworldPalette_Seismitoad + ) .levelUpLearnset = sSeismitoadLevelUpLearnset, .teachableLearnset = sSeismitoadTeachableLearnset, }, @@ -2588,6 +2968,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Throh, .iconPalIndex = 0, FOOTPRINT(Throh) + OVERWORLD( + sPicTable_Throh, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Throh, + gShinyOverworldPalette_Throh + ) .levelUpLearnset = sThrohLevelUpLearnset, .teachableLearnset = sThrohTeachableLearnset, }, @@ -2644,6 +3032,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Sawk, .iconPalIndex = 0, FOOTPRINT(Sawk) + OVERWORLD( + sPicTable_Sawk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sawk, + gShinyOverworldPalette_Sawk + ) .levelUpLearnset = sSawkLevelUpLearnset, .teachableLearnset = sSawkTeachableLearnset, }, @@ -2699,8 +3095,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Sewaddle, .iconPalIndex = 1, FOOTPRINT(Sewaddle) + OVERWORLD( + sPicTable_Sewaddle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sewaddle, + gShinyOverworldPalette_Sewaddle + ) .levelUpLearnset = sSewaddleLevelUpLearnset, .teachableLearnset = sSewaddleTeachableLearnset, + .eggMoveLearnset = sSewaddleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_SWADLOON}), }, @@ -2753,6 +3158,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Swadloon, .iconPalIndex = 1, FOOTPRINT(Swadloon) + OVERWORLD( + sPicTable_Swadloon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swadloon, + gShinyOverworldPalette_Swadloon + ) .levelUpLearnset = sSwadloonLevelUpLearnset, .teachableLearnset = sSwadloonTeachableLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), @@ -2813,6 +3226,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Leavanny, .iconPalIndex = 1, FOOTPRINT(Leavanny) + OVERWORLD( + sPicTable_Leavanny, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Leavanny, + gShinyOverworldPalette_Leavanny + ) .levelUpLearnset = sLeavannyLevelUpLearnset, .teachableLearnset = sLeavannyTeachableLearnset, }, @@ -2872,8 +3293,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Venipede, .iconPalIndex = 1, FOOTPRINT(Venipede) + OVERWORLD( + sPicTable_Venipede, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Venipede, + gShinyOverworldPalette_Venipede + ) .levelUpLearnset = sVenipedeLevelUpLearnset, .teachableLearnset = sVenipedeTeachableLearnset, + .eggMoveLearnset = sVenipedeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}), }, @@ -2930,6 +3360,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Whirlipede, .iconPalIndex = 2, FOOTPRINT(Whirlipede) + OVERWORLD( + sPicTable_Whirlipede, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Whirlipede, + gShinyOverworldPalette_Whirlipede + ) .levelUpLearnset = sWhirlipedeLevelUpLearnset, .teachableLearnset = sWhirlipedeTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SCOLIPEDE}), @@ -2994,6 +3432,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Scolipede, .iconPalIndex = 2, FOOTPRINT(Scolipede) + OVERWORLD( + sPicTable_Scolipede, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scolipede, + gShinyOverworldPalette_Scolipede + ) .levelUpLearnset = sScolipedeLevelUpLearnset, .teachableLearnset = sScolipedeTeachableLearnset, }, @@ -3055,8 +3501,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cottonee, .iconPalIndex = 1, FOOTPRINT(Cottonee) + OVERWORLD( + sPicTable_Cottonee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cottonee, + gShinyOverworldPalette_Cottonee + ) .levelUpLearnset = sCottoneeLevelUpLearnset, .teachableLearnset = sCottoneeTeachableLearnset, + .eggMoveLearnset = sCottoneeEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}), }, @@ -3109,6 +3564,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Whimsicott, .iconPalIndex = 1, FOOTPRINT(Whimsicott) + OVERWORLD( + sPicTable_Whimsicott, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Whimsicott, + gShinyOverworldPalette_Whimsicott + ) .levelUpLearnset = sWhimsicottLevelUpLearnset, .teachableLearnset = sWhimsicottTeachableLearnset, }, @@ -3165,8 +3628,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Petilil, .iconPalIndex = 1, FOOTPRINT(Petilil) + OVERWORLD( + sPicTable_Petilil, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Petilil, + gShinyOverworldPalette_Petilil + ) .levelUpLearnset = sPetililLevelUpLearnset, .teachableLearnset = sPetililTeachableLearnset, + .eggMoveLearnset = sPetililEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}), }, @@ -3221,6 +3693,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Lilligant, .iconPalIndex = 1, FOOTPRINT(Lilligant) + OVERWORLD( + sPicTable_Lilligant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lilligant, + gShinyOverworldPalette_Lilligant + ) .levelUpLearnset = sLilligantLevelUpLearnset, .teachableLearnset = sLilligantTeachableLearnset, .formSpeciesIdTable = sLilligantFormSpeciesIdTable, @@ -3278,6 +3758,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_LilligantHisuian, .iconPalIndex = 1, FOOTPRINT(Lilligant) + OVERWORLD( + sPicTable_LilligantHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LilligantHisuian, + gShinyOverworldPalette_LilligantHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sLilligantHisuianLevelUpLearnset, .teachableLearnset = sLilligantHisuianTeachableLearnset, @@ -3337,8 +3825,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BasculinRedStriped, .iconPalIndex = 1, FOOTPRINT(Basculin) + OVERWORLD( + sPicTable_BasculinRedStriped, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BasculinRedStriped, + gShinyOverworldPalette_BasculinRedStriped + ) .levelUpLearnset = sBasculinLevelUpLearnset, .teachableLearnset = sBasculinTeachableLearnset, + .eggMoveLearnset = sBasculinEggMoveLearnset, .formSpeciesIdTable = sBasculinFormSpeciesIdTable, }, @@ -3392,8 +3889,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BasculinBlueStriped, .iconPalIndex = 0, FOOTPRINT(Basculin) + OVERWORLD( + sPicTable_BasculinBlueStriped, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BasculinBlueStriped, + gShinyOverworldPalette_BasculinBlueStriped + ) .levelUpLearnset = sBasculinLevelUpLearnset, .teachableLearnset = sBasculinTeachableLearnset, + .eggMoveLearnset = sBasculinEggMoveLearnset, .formSpeciesIdTable = sBasculinFormSpeciesIdTable, }, @@ -3448,11 +3954,19 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BasculinWhiteStriped, .iconPalIndex = 0, FOOTPRINT(Basculin) + OVERWORLD( + sPicTable_BasculinWhiteStriped, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BasculinWhiteStriped, + gShinyOverworldPalette_BasculinWhiteStriped + ) .levelUpLearnset = sBasculinWhiteStripedLevelUpLearnset, .teachableLearnset = sBasculinWhiteStripedTeachableLearnset, .formSpeciesIdTable = sBasculinFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_LEVEL_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_MALE}, - {EVO_LEVEL_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_FEMALE}), + .evolutions = EVOLUTION({EVO_RECOIL_DAMAGE_MALE, 294, SPECIES_BASCULEGION_MALE}, + {EVO_RECOIL_DAMAGE_FEMALE, 294, SPECIES_BASCULEGION_FEMALE}), }, [SPECIES_BASCULEGION_MALE] = @@ -3474,7 +3988,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Bsculegion"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Bsculegion", "Basculegion"), .cryId = CRY_BASCULEGION, .natDexNum = NATIONAL_DEX_BASCULEGION, .categoryName = _("Big Fish"), @@ -3504,6 +4018,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BasculegionMale, .iconPalIndex = 1, FOOTPRINT(Basculegion) + OVERWORLD( + sPicTable_BasculegionMale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BasculegionMale, + gShinyOverworldPalette_BasculegionMale + ) .levelUpLearnset = sBasculegionLevelUpLearnset, .teachableLearnset = sBasculegionTeachableLearnset, .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, @@ -3528,7 +4050,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Bsculegion"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Bsculegion", "Basculegion"), .cryId = CRY_BASCULEGION, .natDexNum = NATIONAL_DEX_BASCULEGION, .categoryName = _("Big Fish"), @@ -3557,6 +4079,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BasculegionFemale, .iconPalIndex = 0, FOOTPRINT(Basculegion) + OVERWORLD( + sPicTable_BasculegionFemale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BasculegionFemale, + gShinyOverworldPalette_BasculegionFemale + ) .levelUpLearnset = sBasculegionLevelUpLearnset, .teachableLearnset = sBasculegionTeachableLearnset, .formSpeciesIdTable = sBasculegionFormSpeciesIdTable, @@ -3614,8 +4144,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Sandile, .iconPalIndex = 1, FOOTPRINT(Sandile) + OVERWORLD( + sPicTable_Sandile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sandile, + gShinyOverworldPalette_Sandile + ) .levelUpLearnset = sSandileLevelUpLearnset, .teachableLearnset = sSandileTeachableLearnset, + .eggMoveLearnset = sSandileEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 29, SPECIES_KROKOROK}), }, @@ -3668,6 +4207,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Krokorok, .iconPalIndex = 1, FOOTPRINT(Krokorok) + OVERWORLD( + sPicTable_Krokorok, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Krokorok, + gShinyOverworldPalette_Krokorok + ) .levelUpLearnset = sKrokorokLevelUpLearnset, .teachableLearnset = sKrokorokTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KROOKODILE}), @@ -3728,6 +4275,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Krookodile, .iconPalIndex = 0, FOOTPRINT(Krookodile) + OVERWORLD( + sPicTable_Krookodile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Krookodile, + gShinyOverworldPalette_Krookodile + ) .levelUpLearnset = sKrookodileLevelUpLearnset, .teachableLearnset = sKrookodileTeachableLearnset, }, @@ -3782,8 +4337,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Darumaka, .iconPalIndex = 0, FOOTPRINT(Darumaka) + OVERWORLD( + sPicTable_Darumaka, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Darumaka, + gShinyOverworldPalette_Darumaka + ) .levelUpLearnset = sDarumakaLevelUpLearnset, .teachableLearnset = sDarumakaTeachableLearnset, + .eggMoveLearnset = sDarumakaEggMoveLearnset, .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}), }, @@ -3836,6 +4400,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DarmanitanStandardMode, .iconPalIndex = 0, FOOTPRINT(Darmanitan) + OVERWORLD( + sPicTable_DarmanitanStandardMode, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DarmanitanStandardMode, + gShinyOverworldPalette_DarmanitanStandardMode + ) .levelUpLearnset = sDarmanitanLevelUpLearnset, .teachableLearnset = sDarmanitanTeachableLearnset, .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable, @@ -3944,9 +4516,18 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DarumakaGalarian, .iconPalIndex = 0, FOOTPRINT(Darumaka) + OVERWORLD( + sPicTable_DarumakaGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DarumakaGalarian, + gShinyOverworldPalette_DarumakaGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sDarumakaGalarianLevelUpLearnset, .teachableLearnset = sDarumakaGalarianTeachableLearnset, + .eggMoveLearnset = sDarumakaGalarianEggMoveLearnset, .formSpeciesIdTable = sDarumakaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}), }, @@ -3999,6 +4580,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DarmanitanGalarianStandardMode, .iconPalIndex = 0, FOOTPRINT(Darmanitan) + OVERWORLD( + sPicTable_DarmanitanGalarianStandardMode, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DarmanitanGalarianStandardMode, + gShinyOverworldPalette_DarmanitanGalarianStandardMode + ) .isGalarianForm = TRUE, .levelUpLearnset = sDarmanitanGalarianLevelUpLearnset, .teachableLearnset = sDarmanitanGalarianTeachableLearnset, @@ -4113,8 +4702,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Maractus, .iconPalIndex = 1, FOOTPRINT(Maractus) + OVERWORLD( + sPicTable_Maractus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Maractus, + gShinyOverworldPalette_Maractus + ) .levelUpLearnset = sMaractusLevelUpLearnset, .teachableLearnset = sMaractusTeachableLearnset, + .eggMoveLearnset = sMaractusEggMoveLearnset, }, #endif //P_FAMILY_MARACTUS @@ -4168,8 +4766,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Dwebble, .iconPalIndex = 0, FOOTPRINT(Dwebble) + OVERWORLD( + sPicTable_Dwebble, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dwebble, + gShinyOverworldPalette_Dwebble + ) .levelUpLearnset = sDwebbleLevelUpLearnset, .teachableLearnset = sDwebbleTeachableLearnset, + .eggMoveLearnset = sDwebbleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_CRUSTLE}), }, @@ -4222,6 +4829,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Crustle, .iconPalIndex = 2, FOOTPRINT(Crustle) + OVERWORLD( + sPicTable_Crustle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Crustle, + gShinyOverworldPalette_Crustle + ) .levelUpLearnset = sCrustleLevelUpLearnset, .teachableLearnset = sCrustleTeachableLearnset, }, @@ -4277,8 +4892,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Scraggy, .iconPalIndex = 2, FOOTPRINT(Scraggy) + OVERWORLD( + sPicTable_Scraggy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scraggy, + gShinyOverworldPalette_Scraggy + ) .levelUpLearnset = sScraggyLevelUpLearnset, .teachableLearnset = sScraggyTeachableLearnset, + .eggMoveLearnset = sScraggyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_SCRAFTY}), }, @@ -4332,6 +4956,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Scrafty, .iconPalIndex = 0, FOOTPRINT(Scrafty) + OVERWORLD( + sPicTable_Scrafty, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scrafty, + gShinyOverworldPalette_Scrafty + ) .levelUpLearnset = sScraftyLevelUpLearnset, .teachableLearnset = sScraftyTeachableLearnset, }, @@ -4387,8 +5019,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Sigilyph, .iconPalIndex = 0, FOOTPRINT(Sigilyph) + OVERWORLD( + sPicTable_Sigilyph, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sigilyph, + gShinyOverworldPalette_Sigilyph + ) .levelUpLearnset = sSigilyphLevelUpLearnset, .teachableLearnset = sSigilyphTeachableLearnset, + .eggMoveLearnset = sSigilyphEggMoveLearnset, }, #endif //P_FAMILY_SIGILYPH @@ -4443,8 +5084,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Yamask, .iconPalIndex = 0, FOOTPRINT(Yamask) + OVERWORLD( + sPicTable_Yamask, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Yamask, + gShinyOverworldPalette_Yamask + ) .levelUpLearnset = sYamaskLevelUpLearnset, .teachableLearnset = sYamaskTeachableLearnset, + .eggMoveLearnset = sYamaskEggMoveLearnset, .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COFAGRIGUS}), }, @@ -4498,6 +5148,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cofagrigus, .iconPalIndex = 0, FOOTPRINT(Cofagrigus) + OVERWORLD( + sPicTable_Cofagrigus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cofagrigus, + gShinyOverworldPalette_Cofagrigus + ) .levelUpLearnset = sCofagrigusLevelUpLearnset, .teachableLearnset = sCofagrigusTeachableLearnset, }, @@ -4552,9 +5210,18 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_YamaskGalarian, .iconPalIndex = 2, FOOTPRINT(Yamask) + OVERWORLD( + sPicTable_YamaskGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_YamaskGalarian, + gShinyOverworldPalette_YamaskGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sYamaskGalarianLevelUpLearnset, .teachableLearnset = sYamaskGalarianTeachableLearnset, + .eggMoveLearnset = sYamaskGalarianEggMoveLearnset, .formSpeciesIdTable = sYamaskFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}), }, @@ -4607,6 +5274,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Runerigus, .iconPalIndex = 2, FOOTPRINT(Runerigus) + OVERWORLD( + sPicTable_Runerigus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Runerigus, + gShinyOverworldPalette_Runerigus + ) .levelUpLearnset = sRunerigusLevelUpLearnset, .teachableLearnset = sRunerigusTeachableLearnset, }, @@ -4662,8 +5337,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Tirtouga, .iconPalIndex = 2, FOOTPRINT(Tirtouga) + OVERWORLD( + sPicTable_Tirtouga, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tirtouga, + gShinyOverworldPalette_Tirtouga + ) .levelUpLearnset = sTirtougaLevelUpLearnset, .teachableLearnset = sTirtougaTeachableLearnset, + .eggMoveLearnset = sTirtougaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CARRACOSTA}), }, @@ -4715,6 +5399,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Carracosta, .iconPalIndex = 2, FOOTPRINT(Carracosta) + OVERWORLD( + sPicTable_Carracosta, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Carracosta, + gShinyOverworldPalette_Carracosta + ) .levelUpLearnset = sCarracostaLevelUpLearnset, .teachableLearnset = sCarracostaTeachableLearnset, }, @@ -4769,8 +5461,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Archen, .iconPalIndex = 0, FOOTPRINT(Archen) + OVERWORLD( + sPicTable_Archen, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Archen, + gShinyOverworldPalette_Archen + ) .levelUpLearnset = sArchenLevelUpLearnset, .teachableLearnset = sArchenTeachableLearnset, + .eggMoveLearnset = sArchenEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_ARCHEOPS}), }, @@ -4823,6 +5524,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Archeops, .iconPalIndex = 0, FOOTPRINT(Archeops) + OVERWORLD( + sPicTable_Archeops, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Archeops, + gShinyOverworldPalette_Archeops + ) .levelUpLearnset = sArcheopsLevelUpLearnset, .teachableLearnset = sArcheopsTeachableLearnset, }, @@ -4878,8 +5587,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Trubbish, .iconPalIndex = 1, FOOTPRINT(Trubbish) + OVERWORLD( + sPicTable_Trubbish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Trubbish, + gShinyOverworldPalette_Trubbish + ) .levelUpLearnset = sTrubbishLevelUpLearnset, .teachableLearnset = sTrubbishTeachableLearnset, + .eggMoveLearnset = sTrubbishEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GARBODOR}), }, @@ -4934,6 +5652,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Garbodor, .iconPalIndex = 1, FOOTPRINT(Garbodor) + OVERWORLD( + sPicTable_Garbodor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Garbodor, + gShinyOverworldPalette_Garbodor + ) .levelUpLearnset = sGarbodorLevelUpLearnset, .teachableLearnset = sGarbodorTeachableLearnset, .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, @@ -5050,8 +5776,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Zorua, .iconPalIndex = 0, FOOTPRINT(Zorua) + OVERWORLD( + sPicTable_Zorua, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zorua, + gShinyOverworldPalette_Zorua + ) .levelUpLearnset = sZoruaLevelUpLearnset, .teachableLearnset = sZoruaTeachableLearnset, + .eggMoveLearnset = sZoruaEggMoveLearnset, .formSpeciesIdTable = sZoruaFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK}), }, @@ -5104,6 +5839,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Zoroark, .iconPalIndex = 0, FOOTPRINT(Zoroark) + OVERWORLD( + sPicTable_Zoroark, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zoroark, + gShinyOverworldPalette_Zoroark + ) .levelUpLearnset = sZoroarkLevelUpLearnset, .teachableLearnset = sZoroarkTeachableLearnset, .formSpeciesIdTable = sZoroarkFormSpeciesIdTable, @@ -5158,6 +5901,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_ZoruaHisuian, .iconPalIndex = 0, FOOTPRINT(Zorua) + OVERWORLD( + sPicTable_ZoruaHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZoruaHisuian, + gShinyOverworldPalette_ZoruaHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sZoruaHisuianLevelUpLearnset, .teachableLearnset = sZoruaHisuianTeachableLearnset, @@ -5213,6 +5964,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_ZoroarkHisuian, .iconPalIndex = 0, FOOTPRINT(Zoroark) + OVERWORLD( + sPicTable_ZoroarkHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZoroarkHisuian, + gShinyOverworldPalette_ZoroarkHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sZoroarkHisuianLevelUpLearnset, .teachableLearnset = sZoroarkHisuianTeachableLearnset, @@ -5270,8 +6029,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Minccino, .iconPalIndex = 0, FOOTPRINT(Minccino) + OVERWORLD( + sPicTable_Minccino, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Minccino, + gShinyOverworldPalette_Minccino + ) .levelUpLearnset = sMinccinoLevelUpLearnset, .teachableLearnset = sMinccinoTeachableLearnset, + .eggMoveLearnset = sMinccinoEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}), }, @@ -5324,6 +6092,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cinccino, .iconPalIndex = 0, FOOTPRINT(Cinccino) + OVERWORLD( + sPicTable_Cinccino, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cinccino, + gShinyOverworldPalette_Cinccino + ) .levelUpLearnset = sCinccinoLevelUpLearnset, .teachableLearnset = sCinccinoTeachableLearnset, }, @@ -5382,8 +6158,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Gothita, .iconPalIndex = 2, FOOTPRINT(Gothita) + OVERWORLD( + sPicTable_Gothita, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gothita, + gShinyOverworldPalette_Gothita + ) .levelUpLearnset = sGothitaLevelUpLearnset, .teachableLearnset = sGothitaTeachableLearnset, + .eggMoveLearnset = sGothitaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOTHORITA}), }, @@ -5439,6 +6224,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Gothorita, .iconPalIndex = 2, FOOTPRINT(Gothorita) + OVERWORLD( + sPicTable_Gothorita, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gothorita, + gShinyOverworldPalette_Gothorita + ) .levelUpLearnset = sGothoritaLevelUpLearnset, .teachableLearnset = sGothoritaTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_GOTHITELLE}), @@ -5496,6 +6289,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Gothitelle, .iconPalIndex = 2, FOOTPRINT(Gothitelle) + OVERWORLD( + sPicTable_Gothitelle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gothitelle, + gShinyOverworldPalette_Gothitelle + ) .levelUpLearnset = sGothitelleLevelUpLearnset, .teachableLearnset = sGothitelleTeachableLearnset, }, @@ -5552,8 +6353,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Solosis, .iconPalIndex = 1, FOOTPRINT(Solosis) + OVERWORLD( + sPicTable_Solosis, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Solosis, + gShinyOverworldPalette_Solosis + ) .levelUpLearnset = sSolosisLevelUpLearnset, .teachableLearnset = sSolosisTeachableLearnset, + .eggMoveLearnset = sSolosisEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_DUOSION}), }, @@ -5606,6 +6416,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Duosion, .iconPalIndex = 1, FOOTPRINT(Duosion) + OVERWORLD( + sPicTable_Duosion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Duosion, + gShinyOverworldPalette_Duosion + ) .levelUpLearnset = sDuosionLevelUpLearnset, .teachableLearnset = sDuosionTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_REUNICLUS}), @@ -5660,6 +6478,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Reuniclus, .iconPalIndex = 1, FOOTPRINT(Reuniclus) + OVERWORLD( + sPicTable_Reuniclus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Reuniclus, + gShinyOverworldPalette_Reuniclus + ) .levelUpLearnset = sReuniclusLevelUpLearnset, .teachableLearnset = sReuniclusTeachableLearnset, }, @@ -5714,8 +6540,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Ducklett, .iconPalIndex = 0, FOOTPRINT(Ducklett) + OVERWORLD( + sPicTable_Ducklett, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ducklett, + gShinyOverworldPalette_Ducklett + ) .levelUpLearnset = sDucklettLevelUpLearnset, .teachableLearnset = sDucklettTeachableLearnset, + .eggMoveLearnset = sDucklettEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_SWANNA}), }, @@ -5767,6 +6602,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Swanna, .iconPalIndex = 2, FOOTPRINT(Swanna) + OVERWORLD( + sPicTable_Swanna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swanna, + gShinyOverworldPalette_Swanna + ) .levelUpLearnset = sSwannaLevelUpLearnset, .teachableLearnset = sSwannaTeachableLearnset, }, @@ -5826,8 +6669,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Vanillite, .iconPalIndex = 0, FOOTPRINT(Vanillite) + OVERWORLD( + sPicTable_Vanillite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vanillite, + gShinyOverworldPalette_Vanillite + ) .levelUpLearnset = sVanilliteLevelUpLearnset, .teachableLearnset = sVanilliteTeachableLearnset, + .eggMoveLearnset = sVanilliteEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VANILLISH}), }, @@ -5884,6 +6736,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Vanillish, .iconPalIndex = 2, FOOTPRINT(Vanillish) + OVERWORLD( + sPicTable_Vanillish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vanillish, + gShinyOverworldPalette_Vanillish + ) .levelUpLearnset = sVanillishLevelUpLearnset, .teachableLearnset = sVanillishTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 47, SPECIES_VANILLUXE}), @@ -5942,6 +6802,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Vanilluxe, .iconPalIndex = 2, FOOTPRINT(Vanilluxe) + OVERWORLD( + sPicTable_Vanilluxe, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vanilluxe, + gShinyOverworldPalette_Vanilluxe + ) .levelUpLearnset = sVanilluxeLevelUpLearnset, .teachableLearnset = sVanilluxeTeachableLearnset, }, @@ -5996,8 +6864,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DeerlingSpring, .iconPalIndex = 1, FOOTPRINT(Deerling) + OVERWORLD( + sPicTable_DeerlingSpring, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeerlingSpring, + gShinyOverworldPalette_DeerlingSpring + ) .levelUpLearnset = sDeerlingLevelUpLearnset, .teachableLearnset = sDeerlingTeachableLearnset, + .eggMoveLearnset = sDeerlingEggMoveLearnset, .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SPRING}), }, @@ -6050,8 +6927,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DeerlingSummer, .iconPalIndex = 1, FOOTPRINT(Deerling) + OVERWORLD( + sPicTable_DeerlingSummer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeerlingSummer, + gShinyOverworldPalette_DeerlingSummer + ) .levelUpLearnset = sDeerlingLevelUpLearnset, .teachableLearnset = sDeerlingTeachableLearnset, + .eggMoveLearnset = sDeerlingEggMoveLearnset, .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SUMMER}), }, @@ -6104,8 +6990,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DeerlingAutumn, .iconPalIndex = 0, FOOTPRINT(Deerling) + OVERWORLD( + sPicTable_DeerlingAutumn, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeerlingAutumn, + gShinyOverworldPalette_DeerlingAutumn + ) .levelUpLearnset = sDeerlingLevelUpLearnset, .teachableLearnset = sDeerlingTeachableLearnset, + .eggMoveLearnset = sDeerlingEggMoveLearnset, .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_AUTUMN}), }, @@ -6158,8 +7053,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_DeerlingWinter, .iconPalIndex = 2, FOOTPRINT(Deerling) + OVERWORLD( + sPicTable_DeerlingWinter, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DeerlingWinter, + gShinyOverworldPalette_DeerlingWinter + ) .levelUpLearnset = sDeerlingLevelUpLearnset, .teachableLearnset = sDeerlingTeachableLearnset, + .eggMoveLearnset = sDeerlingEggMoveLearnset, .formSpeciesIdTable = sDeerlingFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_WINTER}), }, @@ -6212,6 +7116,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_SawsbuckSpring, .iconPalIndex = 1, FOOTPRINT(Sawsbuck) + OVERWORLD( + sPicTable_SawsbuckSpring, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SawsbuckSpring, + gShinyOverworldPalette_SawsbuckSpring + ) .levelUpLearnset = sSawsbuckLevelUpLearnset, .teachableLearnset = sSawsbuckTeachableLearnset, .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, @@ -6265,6 +7177,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_SawsbuckSummer, .iconPalIndex = 1, FOOTPRINT(Sawsbuck) + OVERWORLD( + sPicTable_SawsbuckSummer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SawsbuckSummer, + gShinyOverworldPalette_SawsbuckSummer + ) .levelUpLearnset = sSawsbuckLevelUpLearnset, .teachableLearnset = sSawsbuckTeachableLearnset, .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, @@ -6318,6 +7238,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_SawsbuckAutumn, .iconPalIndex = 1, FOOTPRINT(Sawsbuck) + OVERWORLD( + sPicTable_SawsbuckAutumn, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SawsbuckAutumn, + gShinyOverworldPalette_SawsbuckAutumn + ) .levelUpLearnset = sSawsbuckLevelUpLearnset, .teachableLearnset = sSawsbuckTeachableLearnset, .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, @@ -6371,6 +7299,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_SawsbuckWinter, .iconPalIndex = 1, FOOTPRINT(Sawsbuck) + OVERWORLD( + sPicTable_SawsbuckWinter, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SawsbuckWinter, + gShinyOverworldPalette_SawsbuckWinter + ) .levelUpLearnset = sSawsbuckLevelUpLearnset, .teachableLearnset = sSawsbuckTeachableLearnset, .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable, @@ -6428,8 +7364,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Emolga, .iconPalIndex = 2, FOOTPRINT(Emolga) + OVERWORLD( + sPicTable_Emolga, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Emolga, + gShinyOverworldPalette_Emolga + ) .levelUpLearnset = sEmolgaLevelUpLearnset, .teachableLearnset = sEmolgaTeachableLearnset, + .eggMoveLearnset = sEmolgaEggMoveLearnset, }, #endif //P_FAMILY_EMOLGA @@ -6482,8 +7427,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Karrablast, .iconPalIndex = 0, FOOTPRINT(Karrablast) + OVERWORLD( + sPicTable_Karrablast, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Karrablast, + gShinyOverworldPalette_Karrablast + ) .levelUpLearnset = sKarrablastLevelUpLearnset, .teachableLearnset = sKarrablastTeachableLearnset, + .eggMoveLearnset = sKarrablastEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), }, @@ -6535,6 +7489,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Escavalier, .iconPalIndex = 0, FOOTPRINT(Escavalier) + OVERWORLD( + sPicTable_Escavalier, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Escavalier, + gShinyOverworldPalette_Escavalier + ) .levelUpLearnset = sEscavalierLevelUpLearnset, .teachableLearnset = sEscavalierTeachableLearnset, }, @@ -6591,8 +7553,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Foongus, .iconPalIndex = 0, FOOTPRINT(Foongus) + OVERWORLD( + sPicTable_Foongus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Foongus, + gShinyOverworldPalette_Foongus + ) .levelUpLearnset = sFoongusLevelUpLearnset, .teachableLearnset = sFoongusTeachableLearnset, + .eggMoveLearnset = sFoongusEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AMOONGUSS}), }, @@ -6647,6 +7618,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Amoonguss, .iconPalIndex = 1, FOOTPRINT(Amoonguss) + OVERWORLD( + sPicTable_Amoonguss, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Amoonguss, + gShinyOverworldPalette_Amoonguss + ) .levelUpLearnset = sAmoongussLevelUpLearnset, .teachableLearnset = sAmoongussTeachableLearnset, }, @@ -6709,8 +7688,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, .iconPalIndexFemale = 1, FOOTPRINT(Frillish) + OVERWORLD( + sPicTable_Frillish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Frillish, + gShinyOverworldPalette_Frillish + ) .levelUpLearnset = sFrillishLevelUpLearnset, .teachableLearnset = sFrillishTeachableLearnset, + .eggMoveLearnset = sFrillishEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_JELLICENT}), }, @@ -6770,6 +7758,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, .iconPalIndexFemale = 1, FOOTPRINT(Jellicent) + OVERWORLD( + sPicTable_Jellicent, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Jellicent, + gShinyOverworldPalette_Jellicent + ) .levelUpLearnset = sJellicentLevelUpLearnset, .teachableLearnset = sJellicentTeachableLearnset, }, @@ -6824,8 +7820,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Alomomola, .iconPalIndex = 0, FOOTPRINT(Alomomola) + OVERWORLD( + sPicTable_Alomomola, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Alomomola, + gShinyOverworldPalette_Alomomola + ) .levelUpLearnset = sAlomomolaLevelUpLearnset, .teachableLearnset = sAlomomolaTeachableLearnset, + .eggMoveLearnset = sAlomomolaEggMoveLearnset, }, #endif //P_FAMILY_ALOMOMOLA @@ -6878,8 +7883,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Joltik, .iconPalIndex = 0, FOOTPRINT(Joltik) + OVERWORLD( + sPicTable_Joltik, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Joltik, + gShinyOverworldPalette_Joltik + ) .levelUpLearnset = sJoltikLevelUpLearnset, .teachableLearnset = sJoltikTeachableLearnset, + .eggMoveLearnset = sJoltikEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GALVANTULA}), }, @@ -6931,6 +7945,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Galvantula, .iconPalIndex = 2, FOOTPRINT(Galvantula) + OVERWORLD( + sPicTable_Galvantula, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Galvantula, + gShinyOverworldPalette_Galvantula + ) .levelUpLearnset = sGalvantulaLevelUpLearnset, .teachableLearnset = sGalvantulaTeachableLearnset, }, @@ -6986,8 +8008,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Ferroseed, .iconPalIndex = 1, FOOTPRINT(Ferroseed) + OVERWORLD( + sPicTable_Ferroseed, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ferroseed, + gShinyOverworldPalette_Ferroseed + ) .levelUpLearnset = sFerroseedLevelUpLearnset, .teachableLearnset = sFerroseedTeachableLearnset, + .eggMoveLearnset = sFerroseedEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_FERROTHORN}), }, @@ -7045,6 +8076,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Ferrothorn, .iconPalIndex = 1, FOOTPRINT(Ferrothorn) + OVERWORLD( + sPicTable_Ferrothorn, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ferrothorn, + gShinyOverworldPalette_Ferrothorn + ) .levelUpLearnset = sFerrothornLevelUpLearnset, .teachableLearnset = sFerrothornTeachableLearnset, }, @@ -7101,6 +8140,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Klink, .iconPalIndex = 0, FOOTPRINT(Klink) + OVERWORLD( + sPicTable_Klink, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Klink, + gShinyOverworldPalette_Klink + ) .levelUpLearnset = sKlinkLevelUpLearnset, .teachableLearnset = sKlinkTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_KLANG}), @@ -7156,6 +8203,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Klang, .iconPalIndex = 0, FOOTPRINT(Klang) + OVERWORLD( + sPicTable_Klang, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Klang, + gShinyOverworldPalette_Klang + ) .levelUpLearnset = sKlangLevelUpLearnset, .teachableLearnset = sKlangTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 49, SPECIES_KLINKLANG}), @@ -7211,6 +8266,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Klinklang, .iconPalIndex = 0, FOOTPRINT(Klinklang) + OVERWORLD( + sPicTable_Klinklang, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Klinklang, + gShinyOverworldPalette_Klinklang + ) .levelUpLearnset = sKlinklangLevelUpLearnset, .teachableLearnset = sKlinklangTeachableLearnset, }, @@ -7266,6 +8329,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Tynamo, .iconPalIndex = 0, FOOTPRINT(Tynamo) + OVERWORLD( + sPicTable_Tynamo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tynamo, + gShinyOverworldPalette_Tynamo + ) .tmIlliterate = TRUE, .levelUpLearnset = sTynamoLevelUpLearnset, .teachableLearnset = sTynamoTeachableLearnset, @@ -7321,6 +8392,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Eelektrik, .iconPalIndex = 0, FOOTPRINT(Eelektrik) + OVERWORLD( + sPicTable_Eelektrik, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Eelektrik, + gShinyOverworldPalette_Eelektrik + ) .levelUpLearnset = sEelektrikLevelUpLearnset, .teachableLearnset = sEelektrikTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}), @@ -7375,6 +8454,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Eelektross, .iconPalIndex = 0, FOOTPRINT(Eelektross) + OVERWORLD( + sPicTable_Eelektross, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Eelektross, + gShinyOverworldPalette_Eelektross + ) .levelUpLearnset = sEelektrossLevelUpLearnset, .teachableLearnset = sEelektrossTeachableLearnset, }, @@ -7429,8 +8516,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Elgyem, .iconPalIndex = 0, FOOTPRINT(Elgyem) + OVERWORLD( + sPicTable_Elgyem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Elgyem, + gShinyOverworldPalette_Elgyem + ) .levelUpLearnset = sElgyemLevelUpLearnset, .teachableLearnset = sElgyemTeachableLearnset, + .eggMoveLearnset = sElgyemEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_BEHEEYEM}), }, @@ -7482,6 +8578,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Beheeyem, .iconPalIndex = 2, FOOTPRINT(Beheeyem) + OVERWORLD( + sPicTable_Beheeyem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Beheeyem, + gShinyOverworldPalette_Beheeyem + ) .levelUpLearnset = sBeheeyemLevelUpLearnset, .teachableLearnset = sBeheeyemTeachableLearnset, }, @@ -7541,8 +8645,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Litwick, .iconPalIndex = 2, FOOTPRINT(Litwick) + OVERWORLD( + sPicTable_Litwick, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Litwick, + gShinyOverworldPalette_Litwick + ) .levelUpLearnset = sLitwickLevelUpLearnset, .teachableLearnset = sLitwickTeachableLearnset, + .eggMoveLearnset = sLitwickEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_LAMPENT}), }, @@ -7599,6 +8712,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Lampent, .iconPalIndex = 2, FOOTPRINT(Lampent) + OVERWORLD( + sPicTable_Lampent, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lampent, + gShinyOverworldPalette_Lampent + ) .levelUpLearnset = sLampentLevelUpLearnset, .teachableLearnset = sLampentTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}), @@ -7657,6 +8778,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Chandelure, .iconPalIndex = 2, FOOTPRINT(Chandelure) + OVERWORLD( + sPicTable_Chandelure, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chandelure, + gShinyOverworldPalette_Chandelure + ) .levelUpLearnset = sChandelureLevelUpLearnset, .teachableLearnset = sChandelureTeachableLearnset, }, @@ -7711,8 +8840,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Axew, .iconPalIndex = 1, FOOTPRINT(Axew) + OVERWORLD( + sPicTable_Axew, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Axew, + gShinyOverworldPalette_Axew + ) .levelUpLearnset = sAxewLevelUpLearnset, .teachableLearnset = sAxewTeachableLearnset, + .eggMoveLearnset = sAxewEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_FRAXURE}), }, @@ -7764,6 +8902,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Fraxure, .iconPalIndex = 1, FOOTPRINT(Fraxure) + OVERWORLD( + sPicTable_Fraxure, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fraxure, + gShinyOverworldPalette_Fraxure + ) .levelUpLearnset = sFraxureLevelUpLearnset, .teachableLearnset = sFraxureTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_HAXORUS}), @@ -7817,6 +8963,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Haxorus, .iconPalIndex = 2, FOOTPRINT(Haxorus) + OVERWORLD( + sPicTable_Haxorus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Haxorus, + gShinyOverworldPalette_Haxorus + ) .levelUpLearnset = sHaxorusLevelUpLearnset, .teachableLearnset = sHaxorusTeachableLearnset, }, @@ -7875,8 +9029,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cubchoo, .iconPalIndex = 0, FOOTPRINT(Cubchoo) + OVERWORLD( + sPicTable_Cubchoo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cubchoo, + gShinyOverworldPalette_Cubchoo + ) .levelUpLearnset = sCubchooLevelUpLearnset, .teachableLearnset = sCubchooTeachableLearnset, + .eggMoveLearnset = sCubchooEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BEARTIC}), }, @@ -7932,6 +9095,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Beartic, .iconPalIndex = 0, FOOTPRINT(Beartic) + OVERWORLD( + sPicTable_Beartic, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Beartic, + gShinyOverworldPalette_Beartic + ) .levelUpLearnset = sBearticLevelUpLearnset, .teachableLearnset = sBearticTeachableLearnset, }, @@ -7988,6 +9159,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cryogonal, .iconPalIndex = 0, FOOTPRINT(Cryogonal) + OVERWORLD( + sPicTable_Cryogonal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cryogonal, + gShinyOverworldPalette_Cryogonal + ) .levelUpLearnset = sCryogonalLevelUpLearnset, .teachableLearnset = sCryogonalTeachableLearnset, }, @@ -8042,8 +9221,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Shelmet, .iconPalIndex = 1, FOOTPRINT(Shelmet) + OVERWORLD( + sPicTable_Shelmet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shelmet, + gShinyOverworldPalette_Shelmet + ) .levelUpLearnset = sShelmetLevelUpLearnset, .teachableLearnset = sShelmetTeachableLearnset, + .eggMoveLearnset = sShelmetEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), }, @@ -8095,6 +9283,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Accelgor, .iconPalIndex = 1, FOOTPRINT(Accelgor) + OVERWORLD( + sPicTable_Accelgor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Accelgor, + gShinyOverworldPalette_Accelgor + ) .levelUpLearnset = sAccelgorLevelUpLearnset, .teachableLearnset = sAccelgorTeachableLearnset, }, @@ -8150,8 +9346,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Stunfisk, .iconPalIndex = 2, FOOTPRINT(Stunfisk) + OVERWORLD( + sPicTable_Stunfisk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stunfisk, + gShinyOverworldPalette_Stunfisk + ) .levelUpLearnset = sStunfiskLevelUpLearnset, .teachableLearnset = sStunfiskTeachableLearnset, + .eggMoveLearnset = sStunfiskEggMoveLearnset, .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, @@ -8204,9 +9409,18 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_StunfiskGalarian, .iconPalIndex = 1, FOOTPRINT(Stunfisk) + OVERWORLD( + sPicTable_StunfiskGalarian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_StunfiskGalarian, + gShinyOverworldPalette_StunfiskGalarian + ) .isGalarianForm = TRUE, .levelUpLearnset = sStunfiskGalarianLevelUpLearnset, .teachableLearnset = sStunfiskGalarianTeachableLearnset, + .eggMoveLearnset = sStunfiskGalarianEggMoveLearnset, .formSpeciesIdTable = sStunfiskFormSpeciesIdTable, }, #endif //P_GALARIAN_FORMS @@ -8261,8 +9475,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Mienfoo, .iconPalIndex = 1, FOOTPRINT(Mienfoo) + OVERWORLD( + sPicTable_Mienfoo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mienfoo, + gShinyOverworldPalette_Mienfoo + ) .levelUpLearnset = sMienfooLevelUpLearnset, .teachableLearnset = sMienfooTeachableLearnset, + .eggMoveLearnset = sMienfooEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_MIENSHAO}), }, @@ -8314,6 +9537,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Mienshao, .iconPalIndex = 2, FOOTPRINT(Mienshao) + OVERWORLD( + sPicTable_Mienshao, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mienshao, + gShinyOverworldPalette_Mienshao + ) .levelUpLearnset = sMienshaoLevelUpLearnset, .teachableLearnset = sMienshaoTeachableLearnset, }, @@ -8369,8 +9600,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Druddigon, .iconPalIndex = 0, FOOTPRINT(Druddigon) + OVERWORLD( + sPicTable_Druddigon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Druddigon, + gShinyOverworldPalette_Druddigon + ) .levelUpLearnset = sDruddigonLevelUpLearnset, .teachableLearnset = sDruddigonTeachableLearnset, + .eggMoveLearnset = sDruddigonEggMoveLearnset, }, #endif //P_FAMILY_DRUDDIGON @@ -8425,6 +9665,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Golett, .iconPalIndex = 0, FOOTPRINT(Golett) + OVERWORLD( + sPicTable_Golett, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golett, + gShinyOverworldPalette_Golett + ) .levelUpLearnset = sGolettLevelUpLearnset, .teachableLearnset = sGolettTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_GOLURK}), @@ -8480,6 +9728,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Golurk, .iconPalIndex = 0, FOOTPRINT(Golurk) + OVERWORLD( + sPicTable_Golurk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golurk, + gShinyOverworldPalette_Golurk + ) .levelUpLearnset = sGolurkLevelUpLearnset, .teachableLearnset = sGolurkTeachableLearnset, }, @@ -8534,8 +9790,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Pawniard, .iconPalIndex = 0, FOOTPRINT(Pawniard) + OVERWORLD( + sPicTable_Pawniard, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pawniard, + gShinyOverworldPalette_Pawniard + ) .levelUpLearnset = sPawniardLevelUpLearnset, .teachableLearnset = sPawniardTeachableLearnset, + .eggMoveLearnset = sPawniardEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 52, SPECIES_BISHARP}), }, @@ -8588,9 +9853,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Bisharp, .iconPalIndex = 0, FOOTPRINT(Bisharp) + OVERWORLD( + sPicTable_Bisharp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bisharp, + gShinyOverworldPalette_Bisharp + ) .levelUpLearnset = sBisharpLevelUpLearnset, .teachableLearnset = sBisharpTeachableLearnset, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_KINGAMBIT}), + .evolutions = EVOLUTION({EVO_DEFEAT_THREE_WITH_ITEM, ITEM_LEADERS_CREST, SPECIES_KINGAMBIT}), }, #if P_GEN_9_CROSS_EVOS @@ -8697,8 +9970,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Bouffalant, .iconPalIndex = 2, FOOTPRINT(Bouffalant) + OVERWORLD( + sPicTable_Bouffalant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bouffalant, + gShinyOverworldPalette_Bouffalant + ) .levelUpLearnset = sBouffalantLevelUpLearnset, .teachableLearnset = sBouffalantTeachableLearnset, + .eggMoveLearnset = sBouffalantEggMoveLearnset, }, #endif //P_FAMILY_BOUFFALANT @@ -8751,6 +10033,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Rufflet, .iconPalIndex = 2, FOOTPRINT(Rufflet) + OVERWORLD( + sPicTable_Rufflet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rufflet, + gShinyOverworldPalette_Rufflet + ) .levelUpLearnset = sRuffletLevelUpLearnset, .teachableLearnset = sRuffletTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BRAVIARY}, @@ -8806,6 +10096,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Braviary, .iconPalIndex = 0, FOOTPRINT(Braviary) + OVERWORLD( + sPicTable_Braviary, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Braviary, + gShinyOverworldPalette_Braviary + ) .levelUpLearnset = sBraviaryLevelUpLearnset, .teachableLearnset = sBraviaryTeachableLearnset, .formSpeciesIdTable = sBraviaryFormSpeciesIdTable, @@ -8860,6 +10158,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_BraviaryHisuian, .iconPalIndex = 2, FOOTPRINT(Braviary) + OVERWORLD( + sPicTable_BraviaryHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_BraviaryHisuian, + gShinyOverworldPalette_BraviaryHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sBraviaryHisuianLevelUpLearnset, .teachableLearnset = sBraviaryHisuianTeachableLearnset, @@ -8917,8 +10223,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Vullaby, .iconPalIndex = 0, FOOTPRINT(Vullaby) + OVERWORLD( + sPicTable_Vullaby, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vullaby, + gShinyOverworldPalette_Vullaby + ) .levelUpLearnset = sVullabyLevelUpLearnset, .teachableLearnset = sVullabyTeachableLearnset, + .eggMoveLearnset = sVullabyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_MANDIBUZZ}), }, @@ -8970,6 +10285,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Mandibuzz, .iconPalIndex = 1, FOOTPRINT(Mandibuzz) + OVERWORLD( + sPicTable_Mandibuzz, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mandibuzz, + gShinyOverworldPalette_Mandibuzz + ) .levelUpLearnset = sMandibuzzLevelUpLearnset, .teachableLearnset = sMandibuzzTeachableLearnset, }, @@ -9024,8 +10347,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Heatmor, .iconPalIndex = 2, FOOTPRINT(Heatmor) + OVERWORLD( + sPicTable_Heatmor, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Heatmor, + gShinyOverworldPalette_Heatmor + ) .levelUpLearnset = sHeatmorLevelUpLearnset, .teachableLearnset = sHeatmorTeachableLearnset, + .eggMoveLearnset = sHeatmorEggMoveLearnset, }, #endif //P_FAMILY_HEATMOR @@ -9078,8 +10410,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Durant, .iconPalIndex = 0, FOOTPRINT(Durant) + OVERWORLD( + sPicTable_Durant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Durant, + gShinyOverworldPalette_Durant + ) .levelUpLearnset = sDurantLevelUpLearnset, .teachableLearnset = sDurantTeachableLearnset, + .eggMoveLearnset = sDurantEggMoveLearnset, }, #endif //P_FAMILY_DURANT @@ -9132,8 +10473,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Deino, .iconPalIndex = 2, FOOTPRINT(Deino) + OVERWORLD( + sPicTable_Deino, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Deino, + gShinyOverworldPalette_Deino + ) .levelUpLearnset = sDeinoLevelUpLearnset, .teachableLearnset = sDeinoTeachableLearnset, + .eggMoveLearnset = sDeinoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_ZWEILOUS}), }, @@ -9185,6 +10535,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Zweilous, .iconPalIndex = 2, FOOTPRINT(Zweilous) + OVERWORLD( + sPicTable_Zweilous, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zweilous, + gShinyOverworldPalette_Zweilous + ) .levelUpLearnset = sZweilousLevelUpLearnset, .teachableLearnset = sZweilousTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 64, SPECIES_HYDREIGON}), @@ -9239,6 +10597,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Hydreigon, .iconPalIndex = 2, FOOTPRINT(Hydreigon) + OVERWORLD( + sPicTable_Hydreigon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hydreigon, + gShinyOverworldPalette_Hydreigon + ) .levelUpLearnset = sHydreigonLevelUpLearnset, .teachableLearnset = sHydreigonTeachableLearnset, }, @@ -9293,8 +10659,17 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Larvesta, .iconPalIndex = 0, FOOTPRINT(Larvesta) + OVERWORLD( + sPicTable_Larvesta, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Larvesta, + gShinyOverworldPalette_Larvesta + ) .levelUpLearnset = sLarvestaLevelUpLearnset, .teachableLearnset = sLarvestaTeachableLearnset, + .eggMoveLearnset = sLarvestaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 59, SPECIES_VOLCARONA}), }, @@ -9349,6 +10724,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Volcarona, .iconPalIndex = 0, FOOTPRINT(Volcarona) + OVERWORLD( + sPicTable_Volcarona, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Volcarona, + gShinyOverworldPalette_Volcarona + ) .levelUpLearnset = sVolcaronaLevelUpLearnset, .teachableLearnset = sVolcaronaTeachableLearnset, }, @@ -9403,6 +10786,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Cobalion, .iconPalIndex = 0, FOOTPRINT(Cobalion) + OVERWORLD( + sPicTable_Cobalion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cobalion, + gShinyOverworldPalette_Cobalion + ) .isLegendary = TRUE, .levelUpLearnset = sCobalionLevelUpLearnset, .teachableLearnset = sCobalionTeachableLearnset, @@ -9458,6 +10849,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Terrakion, .iconPalIndex = 2, FOOTPRINT(Terrakion) + OVERWORLD( + sPicTable_Terrakion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Terrakion, + gShinyOverworldPalette_Terrakion + ) .isLegendary = TRUE, .levelUpLearnset = sTerrakionLevelUpLearnset, .teachableLearnset = sTerrakionTeachableLearnset, @@ -9513,6 +10912,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Virizion, .iconPalIndex = 1, FOOTPRINT(Virizion) + OVERWORLD( + sPicTable_Virizion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Virizion, + gShinyOverworldPalette_Virizion + ) .isLegendary = TRUE, .levelUpLearnset = sVirizionLevelUpLearnset, .teachableLearnset = sVirizionTeachableLearnset, @@ -9569,6 +10976,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_TornadusIncarnate, .iconPalIndex = 1, FOOTPRINT(Tornadus) + OVERWORLD( + sPicTable_TornadusIncarnate, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TornadusIncarnate, + gShinyOverworldPalette_TornadusIncarnate + ) .isLegendary = TRUE, .levelUpLearnset = sTornadusLevelUpLearnset, .teachableLearnset = sTornadusTeachableLearnset, @@ -9682,6 +11097,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_ThundurusIncarnate, .iconPalIndex = 0, FOOTPRINT(Thundurus) + OVERWORLD( + sPicTable_ThundurusIncarnate, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ThundurusIncarnate, + gShinyOverworldPalette_ThundurusIncarnate + ) .isLegendary = TRUE, .levelUpLearnset = sThundurusLevelUpLearnset, .teachableLearnset = sThundurusTeachableLearnset, @@ -9795,7 +11218,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Reshiram, .iconPalIndex = 0, FOOTPRINT(Reshiram) + OVERWORLD( + sPicTable_Reshiram, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Reshiram, + gShinyOverworldPalette_Reshiram + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sReshiramLevelUpLearnset, .teachableLearnset = sReshiramTeachableLearnset, }, @@ -9850,7 +11282,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Zekrom, .iconPalIndex = 2, FOOTPRINT(Zekrom) + OVERWORLD( + sPicTable_Zekrom, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zekrom, + gShinyOverworldPalette_Zekrom + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZekromLevelUpLearnset, .teachableLearnset = sZekromTeachableLearnset, }, @@ -9906,6 +11347,14 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_LandorusIncarnate, .iconPalIndex = 0, FOOTPRINT(Landorus) + OVERWORLD( + sPicTable_LandorusIncarnate, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LandorusIncarnate, + gShinyOverworldPalette_LandorusIncarnate + ) .isLegendary = TRUE, .levelUpLearnset = sLandorusLevelUpLearnset, .teachableLearnset = sLandorusTeachableLearnset, @@ -10021,7 +11470,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Kyurem, .iconPalIndex = 0, FOOTPRINT(Kyurem) + OVERWORLD( + sPicTable_Kyurem, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kyurem, + gShinyOverworldPalette_Kyurem + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10085,6 +11543,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = FOOTPRINT(Kyurem) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremWhiteLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10147,6 +11606,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = FOOTPRINT(Kyurem) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKyuremBlackLevelUpLearnset, .teachableLearnset = sKyuremTeachableLearnset, .formSpeciesIdTable = sKyuremFormSpeciesIdTable, @@ -10203,7 +11663,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_KeldeoOrdinary, .iconPalIndex = 0, FOOTPRINT(Keldeo) + OVERWORLD( + sPicTable_KeldeoOrdinary, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_KeldeoOrdinary, + gShinyOverworldPalette_KeldeoOrdinary + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKeldeoLevelUpLearnset, .teachableLearnset = sKeldeoTeachableLearnset, .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, @@ -10260,6 +11729,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconPalIndex = 0, FOOTPRINT(Keldeo) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKeldeoLevelUpLearnset, .teachableLearnset = sKeldeoTeachableLearnset, .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, @@ -10322,7 +11792,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_MeloettaAria, .iconPalIndex = 4, FOOTPRINT(Meloetta) + OVERWORLD( + sPicTable_MeloettaAria, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeloettaAria, + gShinyOverworldPalette_MeloettaAria + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeloettaLevelUpLearnset, .teachableLearnset = sMeloettaTeachableLearnset, .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, @@ -10382,7 +11861,16 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_MeloettaPirouette, .iconPalIndex = 0, FOOTPRINT(Meloetta) + OVERWORLD( + sPicTable_MeloettaPirouette, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeloettaPirouette, + gShinyOverworldPalette_MeloettaPirouette + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeloettaLevelUpLearnset, .teachableLearnset = sMeloettaTeachableLearnset, .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, @@ -10437,11 +11925,20 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .iconSprite = gMonIcon_Genesect, \ .iconPalIndex = 2, \ FOOTPRINT(Genesect) \ + OVERWORLD( \ + sPicTable_Genesect, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Genesect, \ + gShinyOverworldPalette_Genesect \ + ) \ .levelUpLearnset = sGenesectLevelUpLearnset, \ .teachableLearnset = sGenesectTeachableLearnset, \ .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ .formChangeTable = sGenesectFormChangeTable, \ .isMythical = TRUE, \ + .isFrontierBanned = TRUE, \ } [SPECIES_GENESECT] = GENESECT_SPECIES_INFO(Genesect), diff --git a/src/data/pokemon/species_info/gen_6_families.h b/src/data/pokemon/species_info/gen_6_families.h index d02992df666f..46c776639c20 100644 --- a/src/data/pokemon/species_info/gen_6_families.h +++ b/src/data/pokemon/species_info/gen_6_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Chespin, .iconPalIndex = 1, FOOTPRINT(Chespin) + OVERWORLD( + sPicTable_Chespin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chespin, + gShinyOverworldPalette_Chespin + ) .levelUpLearnset = sChespinLevelUpLearnset, .teachableLearnset = sChespinTeachableLearnset, + .eggMoveLearnset = sChespinEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUILLADIN}), }, @@ -105,6 +114,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Quilladin, .iconPalIndex = 1, FOOTPRINT(Quilladin) + OVERWORLD( + sPicTable_Quilladin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Quilladin, + gShinyOverworldPalette_Quilladin + ) .levelUpLearnset = sQuilladinLevelUpLearnset, .teachableLearnset = sQuilladinTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHESNAUGHT}), @@ -158,6 +175,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Chesnaught, .iconPalIndex = 1, FOOTPRINT(Chesnaught) + OVERWORLD( + sPicTable_Chesnaught, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chesnaught, + gShinyOverworldPalette_Chesnaught + ) .levelUpLearnset = sChesnaughtLevelUpLearnset, .teachableLearnset = sChesnaughtTeachableLearnset, }, @@ -212,8 +237,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Fennekin, .iconPalIndex = 0, FOOTPRINT(Fennekin) + OVERWORLD( + sPicTable_Fennekin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fennekin, + gShinyOverworldPalette_Fennekin + ) .levelUpLearnset = sFennekinLevelUpLearnset, .teachableLearnset = sFennekinTeachableLearnset, + .eggMoveLearnset = sFennekinEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BRAIXEN}), }, @@ -265,6 +299,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Braixen, .iconPalIndex = 0, FOOTPRINT(Braixen) + OVERWORLD( + sPicTable_Braixen, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Braixen, + gShinyOverworldPalette_Braixen + ) .levelUpLearnset = sBraixenLevelUpLearnset, .teachableLearnset = sBraixenTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_DELPHOX}), @@ -318,6 +360,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Delphox, .iconPalIndex = 0, FOOTPRINT(Delphox) + OVERWORLD( + sPicTable_Delphox, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Delphox, + gShinyOverworldPalette_Delphox + ) .levelUpLearnset = sDelphoxLevelUpLearnset, .teachableLearnset = sDelphoxTeachableLearnset, }, @@ -372,8 +422,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Froakie, .iconPalIndex = 0, FOOTPRINT(Froakie) + OVERWORLD( + sPicTable_Froakie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Froakie, + gShinyOverworldPalette_Froakie + ) .levelUpLearnset = sFroakieLevelUpLearnset, .teachableLearnset = sFroakieTeachableLearnset, + .eggMoveLearnset = sFroakieEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FROGADIER}), }, @@ -425,6 +484,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Frogadier, .iconPalIndex = 0, FOOTPRINT(Frogadier) + OVERWORLD( + sPicTable_Frogadier, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Frogadier, + gShinyOverworldPalette_Frogadier + ) .levelUpLearnset = sFrogadierLevelUpLearnset, .teachableLearnset = sFrogadierTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GRENINJA}), @@ -475,6 +542,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Greninja, .iconPalIndex = 0, FOOTPRINT(Greninja) + OVERWORLD( + sPicTable_Greninja, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Greninja, + gShinyOverworldPalette_Greninja + ) .levelUpLearnset = sGreninjaLevelUpLearnset, .teachableLearnset = sGreninjaTeachableLearnset, .formSpeciesIdTable = sGreninjaFormSpeciesIdTable, @@ -525,6 +600,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Greninja, .iconPalIndex = 0, FOOTPRINT(Greninja) + OVERWORLD( + sPicTable_Greninja, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Greninja, + gShinyOverworldPalette_Greninja + ) .levelUpLearnset = sGreninjaLevelUpLearnset, .teachableLearnset = sGreninjaTeachableLearnset, .formSpeciesIdTable = sGreninjaFormSpeciesIdTable, @@ -636,8 +719,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Bunnelby, .iconPalIndex = 2, FOOTPRINT(Bunnelby) + OVERWORLD( + sPicTable_Bunnelby, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bunnelby, + gShinyOverworldPalette_Bunnelby + ) .levelUpLearnset = sBunnelbyLevelUpLearnset, .teachableLearnset = sBunnelbyTeachableLearnset, + .eggMoveLearnset = sBunnelbyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_DIGGERSBY}), }, @@ -689,6 +781,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Diggersby, .iconPalIndex = 2, FOOTPRINT(Diggersby) + OVERWORLD( + sPicTable_Diggersby, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Diggersby, + gShinyOverworldPalette_Diggersby + ) .levelUpLearnset = sDiggersbyLevelUpLearnset, .teachableLearnset = sDiggersbyTeachableLearnset, }, @@ -743,8 +843,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Fletchling, .iconPalIndex = 2, FOOTPRINT(Fletchling) + OVERWORLD( + sPicTable_Fletchling, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fletchling, + gShinyOverworldPalette_Fletchling + ) .levelUpLearnset = sFletchlingLevelUpLearnset, .teachableLearnset = sFletchlingTeachableLearnset, + .eggMoveLearnset = sFletchlingEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_FLETCHINDER}), }, @@ -767,7 +876,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS }, .bodyColor = BODY_COLOR_RED, - .speciesName = _("Flechinder"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Flechinder", "Fletchinder"), .cryId = CRY_FLETCHINDER, .natDexNum = NATIONAL_DEX_FLETCHINDER, .categoryName = _("Ember"), @@ -797,6 +906,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Fletchinder, .iconPalIndex = 2, FOOTPRINT(Fletchinder) + OVERWORLD( + sPicTable_Fletchinder, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fletchinder, + gShinyOverworldPalette_Fletchinder + ) .levelUpLearnset = sFletchinderLevelUpLearnset, .teachableLearnset = sFletchinderTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_TALONFLAME}), @@ -851,6 +968,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Talonflame, .iconPalIndex = 2, FOOTPRINT(Talonflame) + OVERWORLD( + sPicTable_Talonflame, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Talonflame, + gShinyOverworldPalette_Talonflame + ) .levelUpLearnset = sTalonflameLevelUpLearnset, .teachableLearnset = sTalonflameTeachableLearnset, }, @@ -901,9 +1026,18 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Scatterbug, \ .iconPalIndex = 1, \ FOOTPRINT(Scatterbug) \ + OVERWORLD( \ + sPicTable_Scatterbug, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Scatterbug, \ + gShinyOverworldPalette_Scatterbug \ + ) \ .tmIlliterate = TRUE, \ .levelUpLearnset = sScatterbugLevelUpLearnset, \ .teachableLearnset = sScatterbugTeachableLearnset, \ + .eggMoveLearnset = sScatterbugEggMoveLearnset, \ .formSpeciesIdTable = sScatterbugFormSpeciesIdTable, \ .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA_##evolution}), \ } \ @@ -973,6 +1107,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Spewpa, \ .iconPalIndex = 1, \ FOOTPRINT(Spewpa) \ + OVERWORLD( \ + sPicTable_Spewpa, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Spewpa, \ + gShinyOverworldPalette_Spewpa \ + ) \ .tmIlliterate = TRUE, \ .levelUpLearnset = sSpewpaLevelUpLearnset, \ .teachableLearnset = sSpewpaTeachableLearnset, \ @@ -1046,6 +1188,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Vivillon ##form, \ .iconPalIndex = iconPal, \ FOOTPRINT(Vivillon) \ + OVERWORLD( \ + sPicTable_Vivillon ##form, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Vivillon ##form, \ + gShinyOverworldPalette_Vivillon ##form \ + ) \ .levelUpLearnset = sVivillonLevelUpLearnset, \ .teachableLearnset = sVivillonTeachableLearnset, \ .formSpeciesIdTable = sVivillonFormSpeciesIdTable @@ -1281,8 +1431,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Litleo, .iconPalIndex = 2, FOOTPRINT(Litleo) + OVERWORLD( + sPicTable_Litleo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Litleo, + gShinyOverworldPalette_Litleo + ) .levelUpLearnset = sLitleoLevelUpLearnset, .teachableLearnset = sLitleoTeachableLearnset, + .eggMoveLearnset = sLitleoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_PYROAR}), }, @@ -1340,6 +1499,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 2, .iconPalIndexFemale = 2, FOOTPRINT(Pyroar) + OVERWORLD( + sPicTable_Pyroar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pyroar, + gShinyOverworldPalette_Pyroar + ) .levelUpLearnset = sPyroarLevelUpLearnset, .teachableLearnset = sPyroarTeachableLearnset, }, @@ -1389,8 +1556,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Flabebe##Form##Flower, \ .iconPalIndex = iconPal, \ FOOTPRINT(Flabebe) \ + OVERWORLD( \ + sPicTable_Flabebe##Form##Flower, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Flabebe##Form##Flower, \ + gShinyOverworldPalette_Flabebe##Form##Flower \ + ) \ .levelUpLearnset = sFlabebeLevelUpLearnset, \ .teachableLearnset = sFlabebeTeachableLearnset, \ + .eggMoveLearnset = sFlabebeEggMoveLearnset, \ .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) @@ -1467,6 +1643,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Floette##form##Flower, \ .iconPalIndex = iconPal, \ FOOTPRINT(Floette) \ + OVERWORLD( \ + sPicTable_Floette ##form##Flower, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Floette ##form##Flower, \ + gShinyOverworldPalette_Floette ##form##Flower \ + ) \ .formSpeciesIdTable = sFloetteFormSpeciesIdTable #define FLOETTE_NORMAL_INFO(form, FORM, iconPal) \ @@ -1606,6 +1790,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Florges##Form##Flower, \ .iconPalIndex = iconPal, \ FOOTPRINT(Florges) \ + OVERWORLD( \ + sPicTable_Florges ##Form##Flower, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Florges ##Form##Flower, \ + gShinyOverworldPalette_Florges ##Form##Flower \ + ) \ .levelUpLearnset = sFlorgesLevelUpLearnset, \ .teachableLearnset = sFlorgesTeachableLearnset, \ .formSpeciesIdTable = sFlorgesFormSpeciesIdTable @@ -1705,8 +1897,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Skiddo, .iconPalIndex = 1, FOOTPRINT(Skiddo) + OVERWORLD( + sPicTable_Skiddo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skiddo, + gShinyOverworldPalette_Skiddo + ) .levelUpLearnset = sSkiddoLevelUpLearnset, .teachableLearnset = sSkiddoTeachableLearnset, + .eggMoveLearnset = sSkiddoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOGOAT}), }, @@ -1758,6 +1959,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Gogoat, .iconPalIndex = 1, FOOTPRINT(Gogoat) + OVERWORLD( + sPicTable_Gogoat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gogoat, + gShinyOverworldPalette_Gogoat + ) .levelUpLearnset = sGogoatLevelUpLearnset, .teachableLearnset = sGogoatTeachableLearnset, }, @@ -1813,8 +2022,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Pancham, .iconPalIndex = 1, FOOTPRINT(Pancham) + OVERWORLD( + sPicTable_Pancham, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pancham, + gShinyOverworldPalette_Pancham + ) .levelUpLearnset = sPanchamLevelUpLearnset, .teachableLearnset = sPanchamTeachableLearnset, + .eggMoveLearnset = sPanchamEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), }, @@ -1867,6 +2085,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Pangoro, .iconPalIndex = 1, FOOTPRINT(Pangoro) + OVERWORLD( + sPicTable_Pangoro, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pangoro, + gShinyOverworldPalette_Pangoro + ) .levelUpLearnset = sPangoroLevelUpLearnset, .teachableLearnset = sPangoroTeachableLearnset, }, @@ -1918,9 +2144,19 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Furfrou##_form, \ .iconPalIndex = _iconIdx, \ FOOTPRINT(Furfrou) \ + OVERWORLD( \ + sPicTable_Furfrou##_form, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Furfrou##_form, \ + gShinyOverworldPalette_Furfrou##_form \ + ) \ .levelUpLearnset = sFurfrouLevelUpLearnset, \ .teachableLearnset = sFurfrouTeachableLearnset, \ + .eggMoveLearnset = sFurfrouEggMoveLearnset, \ .formSpeciesIdTable = sFurfrouFormSpeciesIdTable, \ + .formChangeTable = sFurfrouFormChangeTable, \ } [SPECIES_FURFROU_NATURAL] = FURFROU_MISC_INFO(Natural, FALSE, 48, 3, 56, 0, 0), @@ -1984,8 +2220,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Espurr, .iconPalIndex = 2, FOOTPRINT(Espurr) + OVERWORLD( + sPicTable_Espurr, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Espurr, + gShinyOverworldPalette_Espurr + ) .levelUpLearnset = sEspurrLevelUpLearnset, .teachableLearnset = sEspurrTeachableLearnset, + .eggMoveLearnset = sEspurrEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}), }, @@ -2038,6 +2283,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_MeowsticMale, .iconPalIndex = 0, FOOTPRINT(Meowstic) + OVERWORLD( + sPicTable_MeowsticMale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeowsticMale, + gShinyOverworldPalette_MeowsticMale + ) .levelUpLearnset = sMeowsticMaleLevelUpLearnset, .teachableLearnset = sMeowsticMaleTeachableLearnset, .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, @@ -2091,6 +2344,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_MeowsticFemale, .iconPalIndex = 0, FOOTPRINT(Meowstic) + OVERWORLD( + sPicTable_MeowsticFemale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MeowsticFemale, + gShinyOverworldPalette_MeowsticFemale + ) .levelUpLearnset = sMeowsticFemaleLevelUpLearnset, .teachableLearnset = sMeowsticFemaleTeachableLearnset, .formSpeciesIdTable = sMeowsticFormSpeciesIdTable, @@ -2147,8 +2408,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Honedge, .iconPalIndex = 2, FOOTPRINT(Honedge) + OVERWORLD( + sPicTable_Honedge, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Honedge, + gShinyOverworldPalette_Honedge + ) .levelUpLearnset = sHonedgeLevelUpLearnset, .teachableLearnset = sHonedgeTeachableLearnset, + .eggMoveLearnset = sHonedgeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DOUBLADE}), }, @@ -2201,6 +2471,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Doublade, .iconPalIndex = 2, FOOTPRINT(Doublade) + OVERWORLD( + sPicTable_Doublade, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Doublade, + gShinyOverworldPalette_Doublade + ) .levelUpLearnset = sDoubladeLevelUpLearnset, .teachableLearnset = sDoubladeTeachableLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}), @@ -2258,6 +2536,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_AegislashShield, .iconPalIndex = 2, FOOTPRINT(Aegislash) + OVERWORLD( + sPicTable_AegislashShield, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_AegislashShield, + gShinyOverworldPalette_AegislashShield + ) .levelUpLearnset = sAegislashLevelUpLearnset, .teachableLearnset = sAegislashTeachableLearnset, .formSpeciesIdTable = sAegislashFormSpeciesIdTable, @@ -2376,8 +2662,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Spritzee, .iconPalIndex = 0, FOOTPRINT(Spritzee) + OVERWORLD( + sPicTable_Spritzee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spritzee, + gShinyOverworldPalette_Spritzee + ) .levelUpLearnset = sSpritzeeLevelUpLearnset, .teachableLearnset = sSpritzeeTeachableLearnset, + .eggMoveLearnset = sSpritzeeEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), }, @@ -2430,6 +2725,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Aromatisse, .iconPalIndex = 0, FOOTPRINT(Aromatisse) + OVERWORLD( + sPicTable_Aromatisse, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Aromatisse, + gShinyOverworldPalette_Aromatisse + ) .levelUpLearnset = sAromatisseLevelUpLearnset, .teachableLearnset = sAromatisseTeachableLearnset, }, @@ -2484,8 +2787,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Swirlix, .iconPalIndex = 1, FOOTPRINT(Swirlix) + OVERWORLD( + sPicTable_Swirlix, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Swirlix, + gShinyOverworldPalette_Swirlix + ) .levelUpLearnset = sSwirlixLevelUpLearnset, .teachableLearnset = sSwirlixTeachableLearnset, + .eggMoveLearnset = sSwirlixEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), }, @@ -2538,6 +2850,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Slurpuff, .iconPalIndex = 1, FOOTPRINT(Slurpuff) + OVERWORLD( + sPicTable_Slurpuff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Slurpuff, + gShinyOverworldPalette_Slurpuff + ) .levelUpLearnset = sSlurpuffLevelUpLearnset, .teachableLearnset = sSlurpuffTeachableLearnset, }, @@ -2593,8 +2913,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Inkay, .iconPalIndex = 0, FOOTPRINT(Inkay) + OVERWORLD( + sPicTable_Inkay, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Inkay, + gShinyOverworldPalette_Inkay + ) .levelUpLearnset = sInkayLevelUpLearnset, .teachableLearnset = sInkayTeachableLearnset, + .eggMoveLearnset = sInkayEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MALAMAR}), }, @@ -2646,6 +2975,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Malamar, .iconPalIndex = 2, FOOTPRINT(Malamar) + OVERWORLD( + sPicTable_Malamar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Malamar, + gShinyOverworldPalette_Malamar + ) .levelUpLearnset = sMalamarLevelUpLearnset, .teachableLearnset = sMalamarTeachableLearnset, }, @@ -2700,8 +3037,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Binacle, .iconPalIndex = 2, FOOTPRINT(Binacle) + OVERWORLD( + sPicTable_Binacle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Binacle, + gShinyOverworldPalette_Binacle + ) .levelUpLearnset = sBinacleLevelUpLearnset, .teachableLearnset = sBinacleTeachableLearnset, + .eggMoveLearnset = sBinacleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_BARBARACLE}), }, @@ -2754,6 +3100,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Barbaracle, .iconPalIndex = 2, FOOTPRINT(Barbaracle) + OVERWORLD( + sPicTable_Barbaracle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Barbaracle, + gShinyOverworldPalette_Barbaracle + ) .levelUpLearnset = sBarbaracleLevelUpLearnset, .teachableLearnset = sBarbaracleTeachableLearnset, }, @@ -2808,8 +3162,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Skrelp, .iconPalIndex = 2, FOOTPRINT(Skrelp) + OVERWORLD( + sPicTable_Skrelp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skrelp, + gShinyOverworldPalette_Skrelp + ) .levelUpLearnset = sSkrelpLevelUpLearnset, .teachableLearnset = sSkrelpTeachableLearnset, + .eggMoveLearnset = sSkrelpEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_DRAGALGE}), }, @@ -2861,6 +3224,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Dragalge, .iconPalIndex = 5, FOOTPRINT(Dragalge) + OVERWORLD( + sPicTable_Dragalge, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dragalge, + gShinyOverworldPalette_Dragalge + ) .levelUpLearnset = sDragalgeLevelUpLearnset, .teachableLearnset = sDragalgeTeachableLearnset, }, @@ -2916,8 +3287,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Clauncher, .iconPalIndex = 0, FOOTPRINT(Clauncher) + OVERWORLD( + sPicTable_Clauncher, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Clauncher, + gShinyOverworldPalette_Clauncher + ) .levelUpLearnset = sClauncherLevelUpLearnset, .teachableLearnset = sClauncherTeachableLearnset, + .eggMoveLearnset = sClauncherEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CLAWITZER}), }, @@ -2970,6 +3350,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Clawitzer, .iconPalIndex = 0, FOOTPRINT(Clawitzer) + OVERWORLD( + sPicTable_Clawitzer, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Clawitzer, + gShinyOverworldPalette_Clawitzer + ) .levelUpLearnset = sClawitzerLevelUpLearnset, .teachableLearnset = sClawitzerTeachableLearnset, }, @@ -3024,8 +3412,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Helioptile, .iconPalIndex = 2, FOOTPRINT(Helioptile) + OVERWORLD( + sPicTable_Helioptile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Helioptile, + gShinyOverworldPalette_Helioptile + ) .levelUpLearnset = sHelioptileLevelUpLearnset, .teachableLearnset = sHelioptileTeachableLearnset, + .eggMoveLearnset = sHelioptileEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}), }, @@ -3078,6 +3475,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Heliolisk, .iconPalIndex = 2, FOOTPRINT(Heliolisk) + OVERWORLD( + sPicTable_Heliolisk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Heliolisk, + gShinyOverworldPalette_Heliolisk + ) .levelUpLearnset = sHelioliskLevelUpLearnset, .teachableLearnset = sHelioliskTeachableLearnset, }, @@ -3132,8 +3537,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Tyrunt, .iconPalIndex = 2, FOOTPRINT(Tyrunt) + OVERWORLD( + sPicTable_Tyrunt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tyrunt, + gShinyOverworldPalette_Tyrunt + ) .levelUpLearnset = sTyruntLevelUpLearnset, .teachableLearnset = sTyruntTeachableLearnset, + .eggMoveLearnset = sTyruntEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), }, @@ -3185,6 +3599,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Tyrantrum, .iconPalIndex = 0, FOOTPRINT(Tyrantrum) + OVERWORLD( + sPicTable_Tyrantrum, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tyrantrum, + gShinyOverworldPalette_Tyrantrum + ) .levelUpLearnset = sTyrantrumLevelUpLearnset, .teachableLearnset = sTyrantrumTeachableLearnset, }, @@ -3239,8 +3661,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Amaura, .iconPalIndex = 0, FOOTPRINT(Amaura) + OVERWORLD( + sPicTable_Amaura, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Amaura, + gShinyOverworldPalette_Amaura + ) .levelUpLearnset = sAmauraLevelUpLearnset, .teachableLearnset = sAmauraTeachableLearnset, + .eggMoveLearnset = sAmauraEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), }, @@ -3292,6 +3723,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Aurorus, .iconPalIndex = 0, FOOTPRINT(Aurorus) + OVERWORLD( + sPicTable_Aurorus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Aurorus, + gShinyOverworldPalette_Aurorus + ) .levelUpLearnset = sAurorusLevelUpLearnset, .teachableLearnset = sAurorusTeachableLearnset, }, @@ -3351,8 +3790,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Hawlucha, .iconPalIndex = 0, FOOTPRINT(Hawlucha) + OVERWORLD( + sPicTable_Hawlucha, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hawlucha, + gShinyOverworldPalette_Hawlucha + ) .levelUpLearnset = sHawluchaLevelUpLearnset, .teachableLearnset = sHawluchaTeachableLearnset, + .eggMoveLearnset = sHawluchaEggMoveLearnset, }, #endif //P_FAMILY_HAWLUCHA @@ -3405,8 +3853,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Dedenne, .iconPalIndex = 0, FOOTPRINT(Dedenne) + OVERWORLD( + sPicTable_Dedenne, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dedenne, + gShinyOverworldPalette_Dedenne + ) .levelUpLearnset = sDedenneLevelUpLearnset, .teachableLearnset = sDedenneTeachableLearnset, + .eggMoveLearnset = sDedenneEggMoveLearnset, }, #endif //P_FAMILY_DEDENNE @@ -3461,6 +3918,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Carbink, .iconPalIndex = 2, FOOTPRINT(Carbink) + OVERWORLD( + sPicTable_Carbink, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Carbink, + gShinyOverworldPalette_Carbink + ) .levelUpLearnset = sCarbinkLevelUpLearnset, .teachableLearnset = sCarbinkTeachableLearnset, }, @@ -3516,8 +3981,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Goomy, .iconPalIndex = 5, FOOTPRINT(Goomy) + OVERWORLD( + sPicTable_Goomy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Goomy, + gShinyOverworldPalette_Goomy + ) .levelUpLearnset = sGoomyLevelUpLearnset, .teachableLearnset = sGoomyTeachableLearnset, + .eggMoveLearnset = sGoomyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_SLIGGOO}, {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}), }, @@ -3571,6 +4045,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Sliggoo, .iconPalIndex = 5, FOOTPRINT(Sliggoo) + OVERWORLD( + sPicTable_Sliggoo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sliggoo, + gShinyOverworldPalette_Sliggoo + ) .levelUpLearnset = sSliggooLevelUpLearnset, .teachableLearnset = sSliggooTeachableLearnset, .formSpeciesIdTable = sSliggooFormSpeciesIdTable, @@ -3626,6 +4108,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Goodra, .iconPalIndex = 5, FOOTPRINT(Goodra) + OVERWORLD( + sPicTable_Goodra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Goodra, + gShinyOverworldPalette_Goodra + ) .levelUpLearnset = sGoodraLevelUpLearnset, .teachableLearnset = sGoodraTeachableLearnset, .formSpeciesIdTable = sGoodraFormSpeciesIdTable, @@ -3681,6 +4171,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_SliggooHisuian, .iconPalIndex = 2, FOOTPRINT(Sliggoo) + OVERWORLD( + sPicTable_SliggooHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_SliggooHisuian, + gShinyOverworldPalette_SliggooHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sSliggooHisuianLevelUpLearnset, .teachableLearnset = sSliggooHisuianTeachableLearnset, @@ -3737,6 +4235,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_GoodraHisuian, .iconPalIndex = 2, FOOTPRINT(Goodra) + OVERWORLD( + sPicTable_GoodraHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_GoodraHisuian, + gShinyOverworldPalette_GoodraHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sGoodraHisuianLevelUpLearnset, .teachableLearnset = sGoodraHisuianTeachableLearnset, @@ -3796,8 +4302,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Klefki, .iconPalIndex = 0, FOOTPRINT(Klefki) + OVERWORLD( + sPicTable_Klefki, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Klefki, + gShinyOverworldPalette_Klefki + ) .levelUpLearnset = sKlefkiLevelUpLearnset, .teachableLearnset = sKlefkiTeachableLearnset, + .eggMoveLearnset = sKlefkiEggMoveLearnset, }, #endif //P_FAMILY_KLEFKI @@ -3851,8 +4366,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Phantump, .iconPalIndex = 1, FOOTPRINT(Phantump) + OVERWORLD( + sPicTable_Phantump, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Phantump, + gShinyOverworldPalette_Phantump + ) .levelUpLearnset = sPhantumpLevelUpLearnset, .teachableLearnset = sPhantumpTeachableLearnset, + .eggMoveLearnset = sPhantumpEggMoveLearnset, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}), }, @@ -3905,6 +4429,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Trevenant, .iconPalIndex = 1, FOOTPRINT(Trevenant) + OVERWORLD( + sPicTable_Trevenant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Trevenant, + gShinyOverworldPalette_Trevenant + ) .levelUpLearnset = sTrevenantLevelUpLearnset, .teachableLearnset = sTrevenantTeachableLearnset, }, @@ -3959,8 +4491,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Pumpkaboo, .iconPalIndex = 2, FOOTPRINT(Pumpkaboo) + OVERWORLD( + sPicTable_PumpkabooAverage, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pumpkaboo, + gShinyOverworldPalette_Pumpkaboo + ) .levelUpLearnset = sPumpkabooLevelUpLearnset, .teachableLearnset = sPumpkabooTeachableLearnset, + .eggMoveLearnset = sPumpkabooEggMoveLearnset, .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_AVERAGE}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_AVERAGE}), @@ -4015,6 +4556,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Pumpkaboo) .levelUpLearnset = sPumpkabooLevelUpLearnset, .teachableLearnset = sPumpkabooTeachableLearnset, + .eggMoveLearnset = sPumpkabooEggMoveLearnset, .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SMALL}), @@ -4069,6 +4611,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Pumpkaboo) .levelUpLearnset = sPumpkabooLevelUpLearnset, .teachableLearnset = sPumpkabooTeachableLearnset, + .eggMoveLearnset = sPumpkabooEggMoveLearnset, .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_LARGE}), @@ -4125,6 +4668,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Pumpkaboo) .levelUpLearnset = sPumpkabooLevelUpLearnset, .teachableLearnset = sPumpkabooTeachableLearnset, + .eggMoveLearnset = sPumpkabooEggMoveLearnset, .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SUPER}), @@ -4178,6 +4722,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Gourgeist, .iconPalIndex = 2, FOOTPRINT(Gourgeist) + OVERWORLD( + sPicTable_GourgeistAverage, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gourgeist, + gShinyOverworldPalette_Gourgeist + ) .levelUpLearnset = sGourgeistLevelUpLearnset, .teachableLearnset = sGourgeistTeachableLearnset, .formSpeciesIdTable = sGourgeistFormSpeciesIdTable, @@ -4400,8 +4952,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Bergmite, .iconPalIndex = 0, FOOTPRINT(Bergmite) + OVERWORLD( + sPicTable_Bergmite, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bergmite, + gShinyOverworldPalette_Bergmite + ) .levelUpLearnset = sBergmiteLevelUpLearnset, .teachableLearnset = sBergmiteTeachableLearnset, + .eggMoveLearnset = sBergmiteEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_AVALUGG}, {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}), }, @@ -4454,6 +5015,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Avalugg, .iconPalIndex = 0, FOOTPRINT(Avalugg) + OVERWORLD( + sPicTable_Avalugg, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Avalugg, + gShinyOverworldPalette_Avalugg + ) .levelUpLearnset = sAvaluggLevelUpLearnset, .teachableLearnset = sAvaluggTeachableLearnset, .formSpeciesIdTable = sAvaluggFormSpeciesIdTable, @@ -4507,6 +5076,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_AvaluggHisuian, .iconPalIndex = 5, FOOTPRINT(Avalugg) + OVERWORLD( + sPicTable_AvaluggHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_AvaluggHisuian, + gShinyOverworldPalette_AvaluggHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sAvaluggHisuianLevelUpLearnset, .teachableLearnset = sAvaluggHisuianTeachableLearnset, @@ -4569,8 +5146,17 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Noibat, .iconPalIndex = 2, FOOTPRINT(Noibat) + OVERWORLD( + sPicTable_Noibat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Noibat, + gShinyOverworldPalette_Noibat + ) .levelUpLearnset = sNoibatLevelUpLearnset, .teachableLearnset = sNoibatTeachableLearnset, + .eggMoveLearnset = sNoibatEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_NOIVERN}), }, @@ -4626,6 +5212,14 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Noivern, .iconPalIndex = 2, FOOTPRINT(Noivern) + OVERWORLD( + sPicTable_Noivern, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Noivern, + gShinyOverworldPalette_Noivern + ) .levelUpLearnset = sNoivernLevelUpLearnset, .teachableLearnset = sNoivernTeachableLearnset, }, @@ -4676,7 +5270,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_XerneasNeutral, .iconPalIndex = 0, FOOTPRINT(Xerneas) + OVERWORLD( + sPicTable_XerneasNeutral, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT + //, gOverworldPalette_XerneasNeutral + //, gShinyOverworldPalette_XerneasNeutral + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sXerneasLevelUpLearnset, .teachableLearnset = sXerneasTeachableLearnset, .formSpeciesIdTable = sXerneasFormSpeciesIdTable, @@ -4727,7 +5330,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_XerneasActive, .iconPalIndex = 0, FOOTPRINT(Xerneas) + OVERWORLD( + sPicTable_XerneasNeutral, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_XerneasNeutral, + gShinyOverworldPalette_XerneasNeutral + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sXerneasLevelUpLearnset, .teachableLearnset = sXerneasTeachableLearnset, .formSpeciesIdTable = sXerneasFormSpeciesIdTable, @@ -4785,7 +5397,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Yveltal, .iconPalIndex = 0, FOOTPRINT(Yveltal) + OVERWORLD( + sPicTable_Yveltal, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Yveltal, + gShinyOverworldPalette_Yveltal + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sYveltalLevelUpLearnset, .teachableLearnset = sYveltalTeachableLearnset, }, @@ -4837,7 +5458,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Zygarde50, .iconPalIndex = 1, FOOTPRINT(Zygarde) + OVERWORLD( + sPicTable_Zygarde50, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zygarde50, + gShinyOverworldPalette_Zygarde50 + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -4888,13 +5518,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Zygarde50, .iconPalIndex = 1, FOOTPRINT(Zygarde) + OVERWORLD( + sPicTable_Zygarde50, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zygarde50, + gShinyOverworldPalette_Zygarde50 + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, .formChangeTable = sZygarde50PowerConstructFormChangeTable, }, - [SPECIES_ZYGARDE_10_AURA_BREAK] = + [SPECIES_ZYGARDE_10_AURA_BREAK] = { .baseHP = 54, .baseAttack = 100, @@ -4940,6 +5579,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -4992,6 +5632,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -5048,6 +5689,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconPalIndex = 1, FOOTPRINT(Zygarde) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZygardeLevelUpLearnset, .teachableLearnset = sZygardeTeachableLearnset, .formSpeciesIdTable = sZygardeFormSpeciesIdTable, @@ -5105,7 +5747,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Diancie, .iconPalIndex = 1, FOOTPRINT(Diancie) + OVERWORLD( + sPicTable_Diancie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Diancie, + gShinyOverworldPalette_Diancie + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDiancieLevelUpLearnset, .teachableLearnset = sDiancieTeachableLearnset, .formSpeciesIdTable = sDiancieFormSpeciesIdTable, @@ -5164,6 +5815,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = FOOTPRINT(Diancie) .isMythical = TRUE, .isMegaEvolution = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sDiancieLevelUpLearnset, .teachableLearnset = sDiancieTeachableLearnset, .formSpeciesIdTable = sDiancieFormSpeciesIdTable, @@ -5222,7 +5874,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_HoopaConfined, .iconPalIndex = 0, FOOTPRINT(Hoopa) + OVERWORLD( + sPicTable_HoopaConfined, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_HoopaConfined, + gShinyOverworldPalette_HoopaConfined + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoopaConfinedLevelUpLearnset, .teachableLearnset = sHoopaConfinedTeachableLearnset, .formSpeciesIdTable = sHoopaFormSpeciesIdTable, @@ -5278,7 +5939,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_HoopaUnbound, .iconPalIndex = 0, FOOTPRINT(Hoopa) + OVERWORLD( + sPicTable_HoopaUnbound, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_HoopaUnbound, + gShinyOverworldPalette_HoopaUnbound + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sHoopaUnboundLevelUpLearnset, .teachableLearnset = sHoopaUnboundTeachableLearnset, .formSpeciesIdTable = sHoopaFormSpeciesIdTable, @@ -5335,7 +6005,16 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .iconSprite = gMonIcon_Volcanion, .iconPalIndex = 0, FOOTPRINT(Volcanion) + OVERWORLD( + sPicTable_Volcanion, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Volcanion, + gShinyOverworldPalette_Volcanion + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sVolcanionLevelUpLearnset, .teachableLearnset = sVolcanionTeachableLearnset, }, diff --git a/src/data/pokemon/species_info/gen_7_families.h b/src/data/pokemon/species_info/gen_7_families.h index 629ad59aa9db..4669051d046c 100644 --- a/src/data/pokemon/species_info/gen_7_families.h +++ b/src/data/pokemon/species_info/gen_7_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Rowlet, .iconPalIndex = 0, FOOTPRINT(Rowlet) + OVERWORLD( + sPicTable_Rowlet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rowlet, + gShinyOverworldPalette_Rowlet + ) .levelUpLearnset = sRowletLevelUpLearnset, .teachableLearnset = sRowletTeachableLearnset, + .eggMoveLearnset = sRowletEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DARTRIX}), }, @@ -106,6 +115,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Dartrix, .iconPalIndex = 1, FOOTPRINT(Dartrix) + OVERWORLD( + sPicTable_Dartrix, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dartrix, + gShinyOverworldPalette_Dartrix + ) .levelUpLearnset = sDartrixLevelUpLearnset, .teachableLearnset = sDartrixTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DECIDUEYE}, @@ -160,6 +177,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Decidueye, .iconPalIndex = 1, FOOTPRINT(Decidueye) + OVERWORLD( + sPicTable_Decidueye, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Decidueye, + gShinyOverworldPalette_Decidueye + ) .levelUpLearnset = sDecidueyeLevelUpLearnset, .teachableLearnset = sDecidueyeTeachableLearnset, .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable, @@ -214,6 +239,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_DecidueyeHisuian, .iconPalIndex = 0, FOOTPRINT(Decidueye) + OVERWORLD( + sPicTable_DecidueyeHisuian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_DecidueyeHisuian, + gShinyOverworldPalette_DecidueyeHisuian + ) .isHisuianForm = TRUE, .levelUpLearnset = sDecidueyeHisuianLevelUpLearnset, .teachableLearnset = sDecidueyeHisuianTeachableLearnset, @@ -271,8 +304,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Litten, .iconPalIndex = 0, FOOTPRINT(Litten) + OVERWORLD( + sPicTable_Litten, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Litten, + gShinyOverworldPalette_Litten + ) .levelUpLearnset = sLittenLevelUpLearnset, .teachableLearnset = sLittenTeachableLearnset, + .eggMoveLearnset = sLittenEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_TORRACAT}), }, @@ -324,6 +366,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Torracat, .iconPalIndex = 0, FOOTPRINT(Torracat) + OVERWORLD( + sPicTable_Torracat, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Torracat, + gShinyOverworldPalette_Torracat + ) .levelUpLearnset = sTorracatLevelUpLearnset, .teachableLearnset = sTorracatTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_INCINEROAR}), @@ -377,6 +427,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Incineroar, .iconPalIndex = 0, FOOTPRINT(Incineroar) + OVERWORLD( + sPicTable_Incineroar, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Incineroar, + gShinyOverworldPalette_Incineroar + ) .levelUpLearnset = sIncineroarLevelUpLearnset, .teachableLearnset = sIncineroarTeachableLearnset, }, @@ -431,8 +489,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Popplio, .iconPalIndex = 0, FOOTPRINT(Popplio) + OVERWORLD( + sPicTable_Popplio, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Popplio, + gShinyOverworldPalette_Popplio + ) .levelUpLearnset = sPopplioLevelUpLearnset, .teachableLearnset = sPopplioTeachableLearnset, + .eggMoveLearnset = sPopplioEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_BRIONNE}), }, @@ -484,6 +551,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Brionne, .iconPalIndex = 0, FOOTPRINT(Brionne) + OVERWORLD( + sPicTable_Brionne, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Brionne, + gShinyOverworldPalette_Brionne + ) .levelUpLearnset = sBrionneLevelUpLearnset, .teachableLearnset = sBrionneTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_PRIMARINA}), @@ -537,6 +612,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Primarina, .iconPalIndex = 0, FOOTPRINT(Primarina) + OVERWORLD( + sPicTable_Primarina, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Primarina, + gShinyOverworldPalette_Primarina + ) .levelUpLearnset = sPrimarinaLevelUpLearnset, .teachableLearnset = sPrimarinaTeachableLearnset, }, @@ -592,8 +675,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Pikipek, .iconPalIndex = 2, FOOTPRINT(Pikipek) + OVERWORLD( + sPicTable_Pikipek, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pikipek, + gShinyOverworldPalette_Pikipek + ) .levelUpLearnset = sPikipekLevelUpLearnset, .teachableLearnset = sPikipekTeachableLearnset, + .eggMoveLearnset = sPikipekEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_TRUMBEAK}), }, @@ -646,6 +738,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Trumbeak, .iconPalIndex = 0, FOOTPRINT(Trumbeak) + OVERWORLD( + sPicTable_Trumbeak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Trumbeak, + gShinyOverworldPalette_Trumbeak + ) .levelUpLearnset = sTrumbeakLevelUpLearnset, .teachableLearnset = sTrumbeakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_TOUCANNON}), @@ -700,6 +800,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Toucannon, .iconPalIndex = 0, FOOTPRINT(Toucannon) + OVERWORLD( + sPicTable_Toucannon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Toucannon, + gShinyOverworldPalette_Toucannon + ) .levelUpLearnset = sToucannonLevelUpLearnset, .teachableLearnset = sToucannonTeachableLearnset, }, @@ -755,8 +863,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Yungoos, .iconPalIndex = 2, FOOTPRINT(Yungoos) + OVERWORLD( + sPicTable_Yungoos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Yungoos, + gShinyOverworldPalette_Yungoos + ) .levelUpLearnset = sYungoosLevelUpLearnset, .teachableLearnset = sYungoosTeachableLearnset, + .eggMoveLearnset = sYungoosEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), }, @@ -805,6 +922,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Gumshoos, .iconPalIndex = 2, FOOTPRINT(Gumshoos) + OVERWORLD( + sPicTable_Gumshoos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gumshoos, + gShinyOverworldPalette_Gumshoos + ) .levelUpLearnset = sGumshoosLevelUpLearnset, .teachableLearnset = sGumshoosTeachableLearnset, .formSpeciesIdTable = sGumshoosFormSpeciesIdTable, @@ -855,6 +980,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Gumshoos, .iconPalIndex = 2, FOOTPRINT(Gumshoos) + OVERWORLD( + sPicTable_Gumshoos, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gumshoos, + gShinyOverworldPalette_Gumshoos + ) .isTotem = TRUE, .levelUpLearnset = sGumshoosLevelUpLearnset, .teachableLearnset = sGumshoosTeachableLearnset, @@ -911,8 +1044,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Grubbin, .iconPalIndex = 0, FOOTPRINT(Grubbin) + OVERWORLD( + sPicTable_Grubbin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grubbin, + gShinyOverworldPalette_Grubbin + ) .levelUpLearnset = sGrubbinLevelUpLearnset, .teachableLearnset = sGrubbinTeachableLearnset, + .eggMoveLearnset = sGrubbinEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CHARJABUG}), }, @@ -965,6 +1107,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Charjabug, .iconPalIndex = 1, FOOTPRINT(Charjabug) + OVERWORLD( + sPicTable_Charjabug, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Charjabug, + gShinyOverworldPalette_Charjabug + ) .levelUpLearnset = sCharjabugLevelUpLearnset, .teachableLearnset = sCharjabugTeachableLearnset, .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, @@ -1017,6 +1167,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Vikavolt, .iconPalIndex = 0, FOOTPRINT(Vikavolt) + OVERWORLD( + sPicTable_Vikavolt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vikavolt, + gShinyOverworldPalette_Vikavolt + ) .levelUpLearnset = sVikavoltLevelUpLearnset, .teachableLearnset = sVikavoltTeachableLearnset, .formSpeciesIdTable = sVikavoltFormSpeciesIdTable, @@ -1067,6 +1225,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Vikavolt, .iconPalIndex = 0, FOOTPRINT(Vikavolt) + OVERWORLD( + sPicTable_Vikavolt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Vikavolt, + gShinyOverworldPalette_Vikavolt + ) .isTotem = TRUE, .levelUpLearnset = sVikavoltLevelUpLearnset, .teachableLearnset = sVikavoltTeachableLearnset, @@ -1124,8 +1290,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Crabrawler, .iconPalIndex = 2, FOOTPRINT(Crabrawler) + OVERWORLD( + sPicTable_Crabrawler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Crabrawler, + gShinyOverworldPalette_Crabrawler + ) .levelUpLearnset = sCrabrawlerLevelUpLearnset, .teachableLearnset = sCrabrawlerTeachableLearnset, + .eggMoveLearnset = sCrabrawlerEggMoveLearnset, .evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}), }, @@ -1150,7 +1325,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_3), .abilities = { ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT }, .bodyColor = BODY_COLOR_WHITE, - .speciesName = _("Crabminabl"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Crabminabl", "Crabominable"), .cryId = CRY_CRABOMINABLE, .natDexNum = NATIONAL_DEX_CRABOMINABLE, .categoryName = _("Woolly Crab"), @@ -1179,6 +1354,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Crabominable, .iconPalIndex = 2, FOOTPRINT(Crabominable) + OVERWORLD( + sPicTable_Crabominable, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Crabominable, + gShinyOverworldPalette_Crabominable + ) .levelUpLearnset = sCrabominableLevelUpLearnset, .teachableLearnset = sCrabominableTeachableLearnset, }, @@ -1234,8 +1417,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_OricorioBaile, .iconPalIndex = 0, FOOTPRINT(Oricorio) + OVERWORLD( + sPicTable_OricorioBaile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_OricorioBaile, + gShinyOverworldPalette_OricorioBaile + ) .levelUpLearnset = sOricorioLevelUpLearnset, .teachableLearnset = sOricorioTeachableLearnset, + .eggMoveLearnset = sOricorioEggMoveLearnset, .formSpeciesIdTable = sOricorioFormSpeciesIdTable, .formChangeTable = sOricorioFormChangeTable, }, @@ -1291,6 +1483,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Oricorio) .levelUpLearnset = sOricorioLevelUpLearnset, .teachableLearnset = sOricorioTeachableLearnset, + .eggMoveLearnset = sOricorioEggMoveLearnset, .formSpeciesIdTable = sOricorioFormSpeciesIdTable, .formChangeTable = sOricorioFormChangeTable, }, @@ -1346,6 +1539,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Oricorio) .levelUpLearnset = sOricorioLevelUpLearnset, .teachableLearnset = sOricorioTeachableLearnset, + .eggMoveLearnset = sOricorioEggMoveLearnset, .formSpeciesIdTable = sOricorioFormSpeciesIdTable, .formChangeTable = sOricorioFormChangeTable, }, @@ -1401,6 +1595,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Oricorio) .levelUpLearnset = sOricorioLevelUpLearnset, .teachableLearnset = sOricorioTeachableLearnset, + .eggMoveLearnset = sOricorioEggMoveLearnset, .formSpeciesIdTable = sOricorioFormSpeciesIdTable, .formChangeTable = sOricorioFormChangeTable, }, @@ -1457,8 +1652,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Cutiefly, .iconPalIndex = 2, FOOTPRINT(Cutiefly) + OVERWORLD( + sPicTable_Cutiefly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cutiefly, + gShinyOverworldPalette_Cutiefly + ) .levelUpLearnset = sCutieflyLevelUpLearnset, .teachableLearnset = sCutieflyTeachableLearnset, + .eggMoveLearnset = sCutieflyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}, {EVO_NONE, 0, SPECIES_RIBOMBEE_TOTEM}), }, @@ -1509,6 +1713,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Ribombee, .iconPalIndex = 2, FOOTPRINT(Ribombee) + OVERWORLD( + sPicTable_Ribombee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ribombee, + gShinyOverworldPalette_Ribombee + ) .levelUpLearnset = sRibombeeLevelUpLearnset, .teachableLearnset = sRibombeeTeachableLearnset, .formSpeciesIdTable = sRibombeeFormSpeciesIdTable, @@ -1560,6 +1772,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Ribombee, .iconPalIndex = 2, FOOTPRINT(Ribombee) + OVERWORLD( + sPicTable_Ribombee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Ribombee, + gShinyOverworldPalette_Ribombee + ) .isTotem = TRUE, .levelUpLearnset = sRibombeeLevelUpLearnset, .teachableLearnset = sRibombeeTeachableLearnset, @@ -1612,8 +1832,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Rockruff, .iconPalIndex = 2, FOOTPRINT(Rockruff) + OVERWORLD( + sPicTable_Rockruff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rockruff, + gShinyOverworldPalette_Rockruff + ) .levelUpLearnset = sRockruffLevelUpLearnset, .teachableLearnset = sRockruffTeachableLearnset, + .eggMoveLearnset = sRockruffEggMoveLearnset, .formSpeciesIdTable = sRockruffFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}), @@ -1663,8 +1892,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Rockruff, .iconPalIndex = 2, FOOTPRINT(Rockruff) + OVERWORLD( + sPicTable_Rockruff, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rockruff, + gShinyOverworldPalette_Rockruff + ) .levelUpLearnset = sRockruffLevelUpLearnset, .teachableLearnset = sRockruffTeachableLearnset, + .eggMoveLearnset = sRockruffEggMoveLearnset, .formSpeciesIdTable = sRockruffFormSpeciesIdTable, .evolutions = EVOLUTION({EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}), }, @@ -1717,6 +1955,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_LycanrocMidday, .iconPalIndex = 2, FOOTPRINT(Lycanroc) + OVERWORLD( + sPicTable_LycanrocMidday, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LycanrocMidday, + gShinyOverworldPalette_LycanrocMidday + ) .levelUpLearnset = sLycanrocMiddayLevelUpLearnset, .teachableLearnset = sLycanrocMiddayTeachableLearnset, .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, @@ -1770,6 +2016,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_LycanrocMidnight, .iconPalIndex = 0, FOOTPRINT(Lycanroc) + OVERWORLD( + sPicTable_LycanrocMidnight, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LycanrocMidnight, + gShinyOverworldPalette_LycanrocMidnight + ) .levelUpLearnset = sLycanrocMidnightLevelUpLearnset, .teachableLearnset = sLycanrocMidnightTeachableLearnset, .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, @@ -1823,6 +2077,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_LycanrocDusk, .iconPalIndex = 0, FOOTPRINT(Lycanroc) + OVERWORLD( + sPicTable_LycanrocDusk, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_LycanrocDusk, + gShinyOverworldPalette_LycanrocDusk + ) .levelUpLearnset = sLycanrocDuskLevelUpLearnset, .teachableLearnset = sLycanrocDuskTeachableLearnset, .formSpeciesIdTable = sLycanrocFormSpeciesIdTable, @@ -1879,8 +2141,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_WishiwashiSolo, .iconPalIndex = 2, FOOTPRINT(Wishiwashi) + OVERWORLD( + sPicTable_WishiwashiSolo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_WishiwashiSolo, + gShinyOverworldPalette_WishiwashiSolo + ) .levelUpLearnset = sWishiwashiLevelUpLearnset, .teachableLearnset = sWishiwashiTeachableLearnset, + .eggMoveLearnset = sWishiwashiEggMoveLearnset, .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, .formChangeTable = sWishiwashiFormChangeTable, }, @@ -1935,6 +2206,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Wishiwashi) .levelUpLearnset = sWishiwashiLevelUpLearnset, .teachableLearnset = sWishiwashiTeachableLearnset, + .eggMoveLearnset = sWishiwashiEggMoveLearnset, .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, .formChangeTable = sWishiwashiFormChangeTable, }, @@ -1990,8 +2262,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Mareanie, .iconPalIndex = 2, FOOTPRINT(Mareanie) + OVERWORLD( + sPicTable_Mareanie, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mareanie, + gShinyOverworldPalette_Mareanie + ) .levelUpLearnset = sMareanieLevelUpLearnset, .teachableLearnset = sMareanieTeachableLearnset, + .eggMoveLearnset = sMareanieEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TOXAPEX}), }, @@ -2044,6 +2325,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Toxapex, .iconPalIndex = 0, FOOTPRINT(Toxapex) + OVERWORLD( + sPicTable_Toxapex, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Toxapex, + gShinyOverworldPalette_Toxapex + ) .levelUpLearnset = sToxapexLevelUpLearnset, .teachableLearnset = sToxapexTeachableLearnset, }, @@ -2099,8 +2388,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Mudbray, .iconPalIndex = 2, FOOTPRINT(Mudbray) + OVERWORLD( + sPicTable_Mudbray, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mudbray, + gShinyOverworldPalette_Mudbray + ) .levelUpLearnset = sMudbrayLevelUpLearnset, .teachableLearnset = sMudbrayTeachableLearnset, + .eggMoveLearnset = sMudbrayEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MUDSDALE}), }, @@ -2153,6 +2451,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Mudsdale, .iconPalIndex = 0, FOOTPRINT(Mudsdale) + OVERWORLD( + sPicTable_Mudsdale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Mudsdale, + gShinyOverworldPalette_Mudsdale + ) .levelUpLearnset = sMudsdaleLevelUpLearnset, .teachableLearnset = sMudsdaleTeachableLearnset, }, @@ -2208,8 +2514,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Dewpider, .iconPalIndex = 0, FOOTPRINT(Dewpider) + OVERWORLD( + sPicTable_Dewpider, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dewpider, + gShinyOverworldPalette_Dewpider + ) .levelUpLearnset = sDewpiderLevelUpLearnset, .teachableLearnset = sDewpiderTeachableLearnset, + .eggMoveLearnset = sDewpiderEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}, {EVO_NONE, 0, SPECIES_ARAQUANID_TOTEM}), }, @@ -2259,6 +2574,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Araquanid, .iconPalIndex = 2, FOOTPRINT(Araquanid) + OVERWORLD( + sPicTable_Araquanid, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Araquanid, + gShinyOverworldPalette_Araquanid + ) .levelUpLearnset = sAraquanidLevelUpLearnset, .teachableLearnset = sAraquanidTeachableLearnset, .formSpeciesIdTable = sAraquanidFormSpeciesIdTable, @@ -2309,6 +2632,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Araquanid, .iconPalIndex = 2, FOOTPRINT(Araquanid) + OVERWORLD( + sPicTable_Araquanid, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Araquanid, + gShinyOverworldPalette_Araquanid + ) .isTotem = TRUE, .levelUpLearnset = sAraquanidLevelUpLearnset, .teachableLearnset = sAraquanidTeachableLearnset, @@ -2366,8 +2697,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Fomantis, .iconPalIndex = 1, FOOTPRINT(Fomantis) + OVERWORLD( + sPicTable_Fomantis, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Fomantis, + gShinyOverworldPalette_Fomantis + ) .levelUpLearnset = sFomantisLevelUpLearnset, .teachableLearnset = sFomantisTeachableLearnset, + .eggMoveLearnset = sFomantisEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}, {EVO_NONE, 0, SPECIES_LURANTIS_TOTEM}), }, @@ -2417,6 +2757,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Lurantis, .iconPalIndex = 1, FOOTPRINT(Lurantis) + OVERWORLD( + sPicTable_Lurantis, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lurantis, + gShinyOverworldPalette_Lurantis + ) .levelUpLearnset = sLurantisLevelUpLearnset, .teachableLearnset = sLurantisTeachableLearnset, .formSpeciesIdTable = sLurantisFormSpeciesIdTable, @@ -2467,6 +2815,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Lurantis, .iconPalIndex = 1, FOOTPRINT(Lurantis) + OVERWORLD( + sPicTable_Lurantis, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lurantis, + gShinyOverworldPalette_Lurantis + ) .isTotem = TRUE, .levelUpLearnset = sLurantisLevelUpLearnset, .teachableLearnset = sLurantisTeachableLearnset, @@ -2525,8 +2881,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Morelull, .iconPalIndex = 0, FOOTPRINT(Morelull) + OVERWORLD( + sPicTable_Morelull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Morelull, + gShinyOverworldPalette_Morelull + ) .levelUpLearnset = sMorelullLevelUpLearnset, .teachableLearnset = sMorelullTeachableLearnset, + .eggMoveLearnset = sMorelullEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_SHIINOTIC}), }, @@ -2580,6 +2945,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Shiinotic, .iconPalIndex = 1, FOOTPRINT(Shiinotic) + OVERWORLD( + sPicTable_Shiinotic, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Shiinotic, + gShinyOverworldPalette_Shiinotic + ) .levelUpLearnset = sShiinoticLevelUpLearnset, .teachableLearnset = sShiinoticTeachableLearnset, }, @@ -2635,8 +3008,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Salandit, .iconPalIndex = 2, FOOTPRINT(Salandit) + OVERWORLD( + sPicTable_Salandit, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Salandit, + gShinyOverworldPalette_Salandit + ) .levelUpLearnset = sSalanditLevelUpLearnset, .teachableLearnset = sSalanditTeachableLearnset, + .eggMoveLearnset = sSalanditEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}, {EVO_NONE, 0, SPECIES_SALAZZLE_TOTEM}), }, @@ -2686,6 +3068,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Salazzle, .iconPalIndex = 0, FOOTPRINT(Salazzle) + OVERWORLD( + sPicTable_Salazzle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Salazzle, + gShinyOverworldPalette_Salazzle + ) .levelUpLearnset = sSalazzleLevelUpLearnset, .teachableLearnset = sSalazzleTeachableLearnset, .formSpeciesIdTable = sSalanditFormSpeciesIdTable, @@ -2736,6 +3126,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Salazzle, .iconPalIndex = 0, FOOTPRINT(Salazzle) + OVERWORLD( + sPicTable_Salazzle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Salazzle, + gShinyOverworldPalette_Salazzle + ) .isTotem = TRUE, .levelUpLearnset = sSalazzleLevelUpLearnset, .teachableLearnset = sSalazzleTeachableLearnset, @@ -2792,8 +3190,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Stufful, .iconPalIndex = 0, FOOTPRINT(Stufful) + OVERWORLD( + sPicTable_Stufful, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stufful, + gShinyOverworldPalette_Stufful + ) .levelUpLearnset = sStuffulLevelUpLearnset, .teachableLearnset = sStuffulTeachableLearnset, + .eggMoveLearnset = sStuffulEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_BEWEAR}), }, @@ -2845,6 +3252,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Bewear, .iconPalIndex = 0, FOOTPRINT(Bewear) + OVERWORLD( + sPicTable_Bewear, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bewear, + gShinyOverworldPalette_Bewear + ) .levelUpLearnset = sBewearLevelUpLearnset, .teachableLearnset = sBewearTeachableLearnset, }, @@ -2900,8 +3315,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Bounsweet, .iconPalIndex = 1, FOOTPRINT(Bounsweet) + OVERWORLD( + sPicTable_Bounsweet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bounsweet, + gShinyOverworldPalette_Bounsweet + ) .levelUpLearnset = sBounsweetLevelUpLearnset, .teachableLearnset = sBounsweetTeachableLearnset, + .eggMoveLearnset = sBounsweetEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_STEENEE}), }, @@ -2955,6 +3379,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Steenee, .iconPalIndex = 1, FOOTPRINT(Steenee) + OVERWORLD( + sPicTable_Steenee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Steenee, + gShinyOverworldPalette_Steenee + ) .levelUpLearnset = sSteeneeLevelUpLearnset, .teachableLearnset = sSteeneeTeachableLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), @@ -3010,6 +3442,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Tsareena, .iconPalIndex = 1, FOOTPRINT(Tsareena) + OVERWORLD( + sPicTable_Tsareena, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Tsareena, + gShinyOverworldPalette_Tsareena + ) .levelUpLearnset = sTsareenaLevelUpLearnset, .teachableLearnset = sTsareenaTeachableLearnset, }, @@ -3067,8 +3507,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Comfey, .iconPalIndex = 1, FOOTPRINT(Comfey) + OVERWORLD( + sPicTable_Comfey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Comfey, + gShinyOverworldPalette_Comfey + ) .levelUpLearnset = sComfeyLevelUpLearnset, .teachableLearnset = sComfeyTeachableLearnset, + .eggMoveLearnset = sComfeyEggMoveLearnset, }, #endif //P_FAMILY_COMFEY @@ -3121,8 +3570,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Oranguru, .iconPalIndex = 0, FOOTPRINT(Oranguru) + OVERWORLD( + sPicTable_Oranguru, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Oranguru, + gShinyOverworldPalette_Oranguru + ) .levelUpLearnset = sOranguruLevelUpLearnset, .teachableLearnset = sOranguruTeachableLearnset, + .eggMoveLearnset = sOranguruEggMoveLearnset, }, #endif //P_FAMILY_ORANGURU @@ -3175,8 +3633,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Passimian, .iconPalIndex = 1, FOOTPRINT(Passimian) + OVERWORLD( + sPicTable_Passimian, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Passimian, + gShinyOverworldPalette_Passimian + ) .levelUpLearnset = sPassimianLevelUpLearnset, .teachableLearnset = sPassimianTeachableLearnset, + .eggMoveLearnset = sPassimianEggMoveLearnset, }, #endif //P_FAMILY_PASSIMIAN @@ -3229,8 +3696,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Wimpod, .iconPalIndex = 2, FOOTPRINT(Wimpod) + OVERWORLD( + sPicTable_Wimpod, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wimpod, + gShinyOverworldPalette_Wimpod + ) .levelUpLearnset = sWimpodLevelUpLearnset, .teachableLearnset = sWimpodTeachableLearnset, + .eggMoveLearnset = sWimpodEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GOLISOPOD}), }, @@ -3282,6 +3758,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Golisopod, .iconPalIndex = 2, FOOTPRINT(Golisopod) + OVERWORLD( + sPicTable_Golisopod, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Golisopod, + gShinyOverworldPalette_Golisopod + ) .levelUpLearnset = sGolisopodLevelUpLearnset, .teachableLearnset = sGolisopodTeachableLearnset, }, @@ -3337,8 +3821,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Sandygast, .iconPalIndex = 1, FOOTPRINT(Sandygast) + OVERWORLD( + sPicTable_Sandygast, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sandygast, + gShinyOverworldPalette_Sandygast + ) .levelUpLearnset = sSandygastLevelUpLearnset, .teachableLearnset = sSandygastTeachableLearnset, + .eggMoveLearnset = sSandygastEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_PALOSSAND}), }, @@ -3391,6 +3884,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Palossand, .iconPalIndex = 2, FOOTPRINT(Palossand) + OVERWORLD( + sPicTable_Palossand, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Palossand, + gShinyOverworldPalette_Palossand + ) .levelUpLearnset = sPalossandLevelUpLearnset, .teachableLearnset = sPalossandTeachableLearnset, }, @@ -3445,8 +3946,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Pyukumuku, .iconPalIndex = 0, FOOTPRINT(Pyukumuku) + OVERWORLD( + sPicTable_Pyukumuku, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pyukumuku, + gShinyOverworldPalette_Pyukumuku + ) .levelUpLearnset = sPyukumukuLevelUpLearnset, .teachableLearnset = sPyukumukuTeachableLearnset, + .eggMoveLearnset = sPyukumukuEggMoveLearnset, }, #endif //P_FAMILY_PYUKUMUKU @@ -3499,6 +4009,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_TypeNull, .iconPalIndex = 0, FOOTPRINT(Type_Null) + OVERWORLD( + sPicTable_TypeNull, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TypeNull, + gShinyOverworldPalette_TypeNull + ) .isLegendary = TRUE, .levelUpLearnset = sTypeNullLevelUpLearnset, .teachableLearnset = sTypeNullTeachableLearnset, @@ -3552,6 +4070,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Silvally, \ .iconPalIndex = 0, \ FOOTPRINT(Silvally) \ + OVERWORLD( \ + sPicTable_Silvally, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_Silvally, \ + gShinyOverworldPalette_Silvally \ + ) \ .levelUpLearnset = sSilvallyLevelUpLearnset, \ .teachableLearnset = sSilvallyTeachableLearnset, \ .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ @@ -3608,32 +4134,40 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .teachableLearnset = sMiniorTeachableLearnset, \ .formSpeciesIdTable = sMiniorFormSpeciesIdTable -#define MINIOR_METEOR_SPECIES_INFO(Form) \ - { \ - .baseHP = 60, \ - .baseAttack = 60, \ - .baseDefense = 100, \ - .baseSpeed = 60, \ - .baseSpAttack = 60, \ - .baseSpDefense = 100, \ - .weight = 400, \ - .description = gMiniorMeteorPokedexText, \ - .frontPic = gMonFrontPic_MiniorMeteor, \ - .frontPicSize = MON_COORDS_SIZE(48, 40), \ - .frontPicYOffset = 14, \ - .frontAnimFrames = sAnims_MiniorMeteor, \ - .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ - .enemyMonElevation = 17, \ - .backPic = gMonBackPic_MiniorMeteor, \ - .backPicSize = MON_COORDS_SIZE(56, 40), \ - .backPicYOffset = 14, \ - /*.backAnimId = BACK_ANIM_NONE,*/ \ - .palette = gMonPalette_MiniorMeteor, \ - .shinyPalette = gMonShinyPalette_MiniorMeteor, \ - .iconSprite = gMonIcon_MiniorMeteor, \ - .iconPalIndex = 0, \ - .formChangeTable = sMinior ##Form##FormChangeTable, \ - MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ +#define MINIOR_METEOR_SPECIES_INFO(Form) \ + { \ + .baseHP = 60, \ + .baseAttack = 60, \ + .baseDefense = 100, \ + .baseSpeed = 60, \ + .baseSpAttack = 60, \ + .baseSpDefense = 100, \ + .weight = 400, \ + .description = gMiniorMeteorPokedexText, \ + .frontPic = gMonFrontPic_MiniorMeteor, \ + .frontPicSize = MON_COORDS_SIZE(48, 40), \ + .frontPicYOffset = 14, \ + .frontAnimFrames = sAnims_MiniorMeteor, \ + .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ + .enemyMonElevation = 17, \ + .backPic = gMonBackPic_MiniorMeteor, \ + .backPicSize = MON_COORDS_SIZE(56, 40), \ + .backPicYOffset = 14, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_MiniorMeteor, \ + .shinyPalette = gMonShinyPalette_MiniorMeteor, \ + .iconSprite = gMonIcon_MiniorMeteor, \ + .iconPalIndex = 0, \ + OVERWORLD( \ + sPicTable_MiniorMeteor, \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_MiniorMeteor, \ + gShinyOverworldPalette_MiniorMeteor \ + ) \ + .formChangeTable = sMinior ##Form##FormChangeTable, \ + MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ } #define MINIOR_CORE_SPECIES_INFO(Form, color, iconPal) \ @@ -3729,8 +4263,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Komala, .iconPalIndex = 2, FOOTPRINT(Komala) + OVERWORLD( + sPicTable_Komala, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Komala, + gShinyOverworldPalette_Komala + ) .levelUpLearnset = sKomalaLevelUpLearnset, .teachableLearnset = sKomalaTeachableLearnset, + .eggMoveLearnset = sKomalaEggMoveLearnset, }, #endif //P_FAMILY_KOMALA @@ -3784,8 +4327,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Turtonator, .iconPalIndex = 0, FOOTPRINT(Turtonator) + OVERWORLD( + sPicTable_Turtonator, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Turtonator, + gShinyOverworldPalette_Turtonator + ) .levelUpLearnset = sTurtonatorLevelUpLearnset, .teachableLearnset = sTurtonatorTeachableLearnset, + .eggMoveLearnset = sTurtonatorEggMoveLearnset, }, #endif //P_FAMILY_TURTONATOR @@ -3835,8 +4387,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Togedemaru, .iconPalIndex = 2, FOOTPRINT(Togedemaru) + OVERWORLD( + sPicTable_Togedemaru, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Togedemaru, + gShinyOverworldPalette_Togedemaru + ) .levelUpLearnset = sTogedemaruLevelUpLearnset, .teachableLearnset = sTogedemaruTeachableLearnset, + .eggMoveLearnset = sTogedemaruEggMoveLearnset, .formSpeciesIdTable = sTogedemaruFormSpeciesIdTable, }, @@ -3885,9 +4446,18 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Togedemaru, .iconPalIndex = 2, FOOTPRINT(Togedemaru) + OVERWORLD( + sPicTable_Togedemaru, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Togedemaru, + gShinyOverworldPalette_Togedemaru + ) .isTotem = TRUE, .levelUpLearnset = sTogedemaruLevelUpLearnset, .teachableLearnset = sTogedemaruTeachableLearnset, + .eggMoveLearnset = sTogedemaruEggMoveLearnset, .formSpeciesIdTable = sTogedemaruFormSpeciesIdTable, }, #endif //P_FAMILY_TOGEDEMARU @@ -3938,8 +4508,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_MimikyuDisguised, .iconPalIndex = 1, FOOTPRINT(Mimikyu) + OVERWORLD( + sPicTable_MimikyuDisguised, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MimikyuDisguised, + gShinyOverworldPalette_MimikyuDisguised + ) .levelUpLearnset = sMimikyuLevelUpLearnset, .teachableLearnset = sMimikyuTeachableLearnset, + .eggMoveLearnset = sMimikyuEggMoveLearnset, .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, .formChangeTable = sMimikyuFormChangeTable, }, @@ -3991,6 +4570,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Mimikyu) .levelUpLearnset = sMimikyuLevelUpLearnset, .teachableLearnset = sMimikyuTeachableLearnset, + .eggMoveLearnset = sMimikyuEggMoveLearnset, .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, .formChangeTable = sMimikyuFormChangeTable, }, @@ -4043,6 +4623,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .isTotem = TRUE, .levelUpLearnset = sMimikyuLevelUpLearnset, .teachableLearnset = sMimikyuTeachableLearnset, + .eggMoveLearnset = sMimikyuEggMoveLearnset, .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, .formChangeTable = sMimikyuTotemFormChangeTable, }, @@ -4095,6 +4676,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .isTotem = TRUE, .levelUpLearnset = sMimikyuLevelUpLearnset, .teachableLearnset = sMimikyuTeachableLearnset, + .eggMoveLearnset = sMimikyuEggMoveLearnset, .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, .formChangeTable = sMimikyuTotemFormChangeTable, }, @@ -4150,8 +4732,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Bruxish, .iconPalIndex = 0, FOOTPRINT(Bruxish) + OVERWORLD( + sPicTable_Bruxish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Bruxish, + gShinyOverworldPalette_Bruxish + ) .levelUpLearnset = sBruxishLevelUpLearnset, .teachableLearnset = sBruxishTeachableLearnset, + .eggMoveLearnset = sBruxishEggMoveLearnset, }, #endif //P_FAMILY_BRUXISH @@ -4205,8 +4796,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Drampa, .iconPalIndex = 0, FOOTPRINT(Drampa) + OVERWORLD( + sPicTable_Drampa, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drampa, + gShinyOverworldPalette_Drampa + ) .levelUpLearnset = sDrampaLevelUpLearnset, .teachableLearnset = sDrampaTeachableLearnset, + .eggMoveLearnset = sDrampaEggMoveLearnset, }, #endif //P_FAMILY_DRAMPA @@ -4261,6 +4861,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Dhelmise, .iconPalIndex = 1, FOOTPRINT(Dhelmise) + OVERWORLD( + sPicTable_Dhelmise, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dhelmise, + gShinyOverworldPalette_Dhelmise + ) .levelUpLearnset = sDhelmiseLevelUpLearnset, .teachableLearnset = sDhelmiseTeachableLearnset, }, @@ -4316,8 +4924,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_JangmoO, .iconPalIndex = 2, FOOTPRINT(JangmoO) + OVERWORLD( + sPicTable_JangmoO, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_JangmoO, + gShinyOverworldPalette_JangmoO + ) .levelUpLearnset = sJangmoOLevelUpLearnset, .teachableLearnset = sJangmoOTeachableLearnset, + .eggMoveLearnset = sJangmoOEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_HAKAMO_O}), }, @@ -4370,6 +4987,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_HakamoO, .iconPalIndex = 2, FOOTPRINT(HakamoO) + OVERWORLD( + sPicTable_HakamoO, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_HakamoO, + gShinyOverworldPalette_HakamoO + ) .levelUpLearnset = sHakamoOLevelUpLearnset, .teachableLearnset = sHakamoOTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}, @@ -4421,6 +5046,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_KommoO, .iconPalIndex = 2, FOOTPRINT(KommoO) + OVERWORLD( + sPicTable_KommoO, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_KommoO, + gShinyOverworldPalette_KommoO + ) .levelUpLearnset = sKommoOLevelUpLearnset, .teachableLearnset = sKommoOTeachableLearnset, .formSpeciesIdTable = sKommoOFormSpeciesIdTable, @@ -4471,6 +5104,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_KommoO, .iconPalIndex = 2, FOOTPRINT(KommoO) + OVERWORLD( + sPicTable_KommoO, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_KommoO, + gShinyOverworldPalette_KommoO + ) .isTotem = TRUE, .levelUpLearnset = sKommoOLevelUpLearnset, .teachableLearnset = sKommoOTeachableLearnset, @@ -4527,7 +5168,15 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuKoko, .iconSprite = gMonIcon_TapuKoko, .iconPalIndex = 0, - FOOTPRINT(Tapu_Koko) + FOOTPRINT(TapuKoko) + OVERWORLD( + sPicTable_TapuKoko, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TapuKoko, + gShinyOverworldPalette_TapuKoko + ) .isLegendary = TRUE, .levelUpLearnset = sTapuKokoLevelUpLearnset, .teachableLearnset = sTapuKokoTeachableLearnset, @@ -4583,7 +5232,15 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuLele, .iconSprite = gMonIcon_TapuLele, .iconPalIndex = 0, - FOOTPRINT(Tapu_Lele) + FOOTPRINT(TapuLele) + OVERWORLD( + sPicTable_TapuLele, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TapuLele, + gShinyOverworldPalette_TapuLele + ) .isLegendary = TRUE, .levelUpLearnset = sTapuLeleLevelUpLearnset, .teachableLearnset = sTapuLeleTeachableLearnset, @@ -4639,7 +5296,15 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuBulu, .iconSprite = gMonIcon_TapuBulu, .iconPalIndex = 2, - FOOTPRINT(Tapu_Bulu) + FOOTPRINT(TapuBulu) + OVERWORLD( + sPicTable_TapuBulu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TapuBulu, + gShinyOverworldPalette_TapuBulu + ) .isLegendary = TRUE, .levelUpLearnset = sTapuBuluLevelUpLearnset, .teachableLearnset = sTapuBuluTeachableLearnset, @@ -4696,7 +5361,15 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .shinyPalette = gMonShinyPalette_TapuFini, .iconSprite = gMonIcon_TapuFini, .iconPalIndex = 0, - FOOTPRINT(Tapu_Fini) + FOOTPRINT(TapuFini) + OVERWORLD( + sPicTable_TapuFini, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_TapuFini, + gShinyOverworldPalette_TapuFini + ) .isLegendary = TRUE, .levelUpLearnset = sTapuFiniLevelUpLearnset, .teachableLearnset = sTapuFiniTeachableLearnset, @@ -4753,8 +5426,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Cosmog, .iconPalIndex = 2, FOOTPRINT(Cosmog) + OVERWORLD( + sPicTable_Cosmog, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cosmog, + gShinyOverworldPalette_Cosmog + ) .isLegendary = TRUE, .tmIlliterate = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCosmogLevelUpLearnset, .teachableLearnset = sCosmogTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), @@ -4810,8 +5492,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Cosmoem, .iconPalIndex = 0, FOOTPRINT(Cosmoem) + OVERWORLD( + sPicTable_Cosmoem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cosmoem, + gShinyOverworldPalette_Cosmoem + ) .isLegendary = TRUE, .tmIlliterate = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCosmoemLevelUpLearnset, .teachableLearnset = sCosmoemTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, @@ -4866,7 +5557,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Solgaleo, .iconPalIndex = 0, FOOTPRINT(Solgaleo) + OVERWORLD( + sPicTable_Solgaleo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Solgaleo, + gShinyOverworldPalette_Solgaleo + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sSolgaleoLevelUpLearnset, .teachableLearnset = sSolgaleoTeachableLearnset, }, @@ -4920,7 +5620,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Lunala, .iconPalIndex = 2, FOOTPRINT(Lunala) + OVERWORLD( + sPicTable_Lunala, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Lunala, + gShinyOverworldPalette_Lunala + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sLunalaLevelUpLearnset, .teachableLearnset = sLunalaTeachableLearnset, }, @@ -4976,6 +5685,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Nihilego, .iconPalIndex = 0, FOOTPRINT(Nihilego) + OVERWORLD( + sPicTable_Nihilego, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nihilego, + gShinyOverworldPalette_Nihilego + ) .isUltraBeast = TRUE, .levelUpLearnset = sNihilegoLevelUpLearnset, .teachableLearnset = sNihilegoTeachableLearnset, @@ -5032,6 +5749,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Buzzwole, .iconPalIndex = 0, FOOTPRINT(Buzzwole) + OVERWORLD( + sPicTable_Buzzwole, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Buzzwole, + gShinyOverworldPalette_Buzzwole + ) .isUltraBeast = TRUE, .levelUpLearnset = sBuzzwoleLevelUpLearnset, .teachableLearnset = sBuzzwoleTeachableLearnset, @@ -5087,6 +5812,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Pheromosa, .iconPalIndex = 2, FOOTPRINT(Pheromosa) + OVERWORLD( + sPicTable_Pheromosa, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pheromosa, + gShinyOverworldPalette_Pheromosa + ) .isUltraBeast = TRUE, .levelUpLearnset = sPheromosaLevelUpLearnset, .teachableLearnset = sPheromosaTeachableLearnset, @@ -5142,6 +5875,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Xurkitree, .iconPalIndex = 0, FOOTPRINT(Xurkitree) + OVERWORLD( + sPicTable_Xurkitree, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Xurkitree, + gShinyOverworldPalette_Xurkitree + ) .isUltraBeast = TRUE, .levelUpLearnset = sXurkitreeLevelUpLearnset, .teachableLearnset = sXurkitreeTeachableLearnset, @@ -5199,6 +5940,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Celesteela, .iconPalIndex = 0, FOOTPRINT(Celesteela) + OVERWORLD( + sPicTable_Celesteela, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Celesteela, + gShinyOverworldPalette_Celesteela + ) .isUltraBeast = TRUE, .levelUpLearnset = sCelesteelaLevelUpLearnset, .teachableLearnset = sCelesteelaTeachableLearnset, @@ -5255,6 +6004,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Kartana, .iconPalIndex = 0, FOOTPRINT(Kartana) + OVERWORLD( + sPicTable_Kartana, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kartana, + gShinyOverworldPalette_Kartana + ) .isUltraBeast = TRUE, .levelUpLearnset = sKartanaLevelUpLearnset, .teachableLearnset = sKartanaTeachableLearnset, @@ -5310,6 +6067,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Guzzlord, .iconPalIndex = 0, FOOTPRINT(Guzzlord) + OVERWORLD( + sPicTable_Guzzlord, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Guzzlord, + gShinyOverworldPalette_Guzzlord + ) .isUltraBeast = TRUE, .levelUpLearnset = sGuzzlordLevelUpLearnset, .teachableLearnset = sGuzzlordTeachableLearnset, @@ -5368,7 +6133,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Necrozma, .iconPalIndex = 0, FOOTPRINT(Necrozma) + OVERWORLD( + sPicTable_Necrozma, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Necrozma, + gShinyOverworldPalette_Necrozma + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5424,8 +6198,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_NecrozmaDuskMane, .iconPalIndex = 0, FOOTPRINT(Necrozma) + OVERWORLD( + sPicTable_NecrozmaDuskMane, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_NecrozmaDuskMane, + gShinyOverworldPalette_NecrozmaDuskMane + ) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5482,8 +6265,17 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_NecrozmaDawnWings, .iconPalIndex = 0, FOOTPRINT(Necrozma) + OVERWORLD( + sPicTable_NecrozmaDawnWings, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_NecrozmaDawnWings, + gShinyOverworldPalette_NecrozmaDawnWings + ) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5546,6 +6338,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .isLegendary = TRUE, .isUltraBurst = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sNecrozmaLevelUpLearnset, .teachableLearnset = sNecrozmaTeachableLearnset, .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, @@ -5603,7 +6396,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Magearna, .iconPalIndex = 0, FOOTPRINT(Magearna) + OVERWORLD( + sPicTable_Magearna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Magearna, + gShinyOverworldPalette_Magearna + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMagearnaLevelUpLearnset, .teachableLearnset = sMagearnaTeachableLearnset, .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, @@ -5657,6 +6459,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconPalIndex = 0, FOOTPRINT(Magearna) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMagearnaLevelUpLearnset, .teachableLearnset = sMagearnaTeachableLearnset, .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, @@ -5714,7 +6517,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Marshadow, .iconPalIndex = 0, FOOTPRINT(Marshadow) + OVERWORLD( + sPicTable_Marshadow, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Marshadow, + gShinyOverworldPalette_Marshadow + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMarshadowLevelUpLearnset, .teachableLearnset = sMarshadowTeachableLearnset, }, @@ -5769,6 +6581,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Poipole, .iconPalIndex = 0, FOOTPRINT(Poipole) + OVERWORLD( + sPicTable_Poipole, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Poipole, + gShinyOverworldPalette_Poipole + ) .isUltraBeast = TRUE, .levelUpLearnset = sPoipoleLevelUpLearnset, .teachableLearnset = sPoipoleTeachableLearnset, @@ -5823,6 +6643,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Naganadel, .iconPalIndex = 0, FOOTPRINT(Naganadel) + OVERWORLD( + sPicTable_Naganadel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Naganadel, + gShinyOverworldPalette_Naganadel + ) .isUltraBeast = TRUE, .levelUpLearnset = sNaganadelLevelUpLearnset, .teachableLearnset = sNaganadelTeachableLearnset, @@ -5878,6 +6706,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Stakataka, .iconPalIndex = 0, FOOTPRINT(Stakataka) + OVERWORLD( + sPicTable_Stakataka, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stakataka, + gShinyOverworldPalette_Stakataka + ) .isUltraBeast = TRUE, .levelUpLearnset = sStakatakaLevelUpLearnset, .teachableLearnset = sStakatakaTeachableLearnset, @@ -5905,7 +6741,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, - .speciesName = _("Blacephaln"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Blacephaln", "Blacephalon"), .cryId = CRY_BLACEPHALON, .natDexNum = NATIONAL_DEX_BLACEPHALON, .categoryName = _("Fireworks"), @@ -5933,6 +6769,14 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Blacephalon, .iconPalIndex = 0, FOOTPRINT(Blacephalon) + OVERWORLD( + sPicTable_Blacephalon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blacephalon, + gShinyOverworldPalette_Blacephalon + ) .isUltraBeast = TRUE, .levelUpLearnset = sBlacephalonLevelUpLearnset, .teachableLearnset = sBlacephalonTeachableLearnset, @@ -5987,7 +6831,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Zeraora, .iconPalIndex = 0, FOOTPRINT(Zeraora) + OVERWORLD( + sPicTable_Zeraora, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zeraora, + gShinyOverworldPalette_Zeraora + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZeraoraLevelUpLearnset, .teachableLearnset = sZeraoraTeachableLearnset, }, @@ -6041,7 +6894,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Meltan, .iconPalIndex = 2, FOOTPRINT(Meltan) + OVERWORLD( + sPicTable_Meltan, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Meltan, + gShinyOverworldPalette_Meltan + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMeltanLevelUpLearnset, .teachableLearnset = sMeltanTeachableLearnset, }, @@ -6093,7 +6955,16 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .iconSprite = gMonIcon_Melmetal, .iconPalIndex = 2, FOOTPRINT(Melmetal) + OVERWORLD( + sPicTable_Melmetal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Melmetal, + gShinyOverworldPalette_Melmetal + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMelmetalLevelUpLearnset, .teachableLearnset = sMelmetalTeachableLearnset, .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, @@ -6151,6 +7022,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = FOOTPRINT(Melmetal) .isMythical = TRUE, .isGigantamax = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMelmetalLevelUpLearnset, .teachableLearnset = sMelmetalTeachableLearnset, .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, diff --git a/src/data/pokemon/species_info/gen_8_families.h b/src/data/pokemon/species_info/gen_8_families.h index 10a1774d0d70..353597e96a58 100644 --- a/src/data/pokemon/species_info/gen_8_families.h +++ b/src/data/pokemon/species_info/gen_8_families.h @@ -52,8 +52,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Grookey, .iconPalIndex = 1, FOOTPRINT(Grookey) + OVERWORLD( + sPicTable_Grookey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grookey, + gShinyOverworldPalette_Grookey + ) .levelUpLearnset = sGrookeyLevelUpLearnset, .teachableLearnset = sGrookeyTeachableLearnset, + .eggMoveLearnset = sGrookeyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_THWACKEY}), }, @@ -104,6 +113,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Thwackey, .iconPalIndex = 1, FOOTPRINT(Thwackey) + OVERWORLD( + sPicTable_Thwackey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Thwackey, + gShinyOverworldPalette_Thwackey + ) .levelUpLearnset = sThwackeyLevelUpLearnset, .teachableLearnset = sThwackeyTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_RILLABOOM}), @@ -156,6 +173,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Rillaboom, .iconPalIndex = 1, FOOTPRINT(Rillaboom) + OVERWORLD( + sPicTable_Rillaboom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rillaboom, + gShinyOverworldPalette_Rillaboom + ) .levelUpLearnset = sRillaboomLevelUpLearnset, .teachableLearnset = sRillaboomTeachableLearnset, .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, @@ -268,8 +293,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Scorbunny, .iconPalIndex = 0, FOOTPRINT(Scorbunny) + OVERWORLD( + sPicTable_Scorbunny, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Scorbunny, + gShinyOverworldPalette_Scorbunny + ) .levelUpLearnset = sScorbunnyLevelUpLearnset, .teachableLearnset = sScorbunnyTeachableLearnset, + .eggMoveLearnset = sScorbunnyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_RABOOT}), }, @@ -320,6 +354,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Raboot, .iconPalIndex = 0, FOOTPRINT(Raboot) + OVERWORLD( + sPicTable_Raboot, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Raboot, + gShinyOverworldPalette_Raboot + ) .levelUpLearnset = sRabootLevelUpLearnset, .teachableLearnset = sRabootTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_CINDERACE}), @@ -373,6 +415,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Cinderace, .iconPalIndex = 0, FOOTPRINT(Cinderace) + OVERWORLD( + sPicTable_Cinderace, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cinderace, + gShinyOverworldPalette_Cinderace + ) .levelUpLearnset = sCinderaceLevelUpLearnset, .teachableLearnset = sCinderaceTeachableLearnset, .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, @@ -487,8 +537,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Sobble, .iconPalIndex = 2, FOOTPRINT(Sobble) + OVERWORLD( + sPicTable_Sobble, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sobble, + gShinyOverworldPalette_Sobble + ) .levelUpLearnset = sSobbleLevelUpLearnset, .teachableLearnset = sSobbleTeachableLearnset, + .eggMoveLearnset = sSobbleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_DRIZZILE}), }, @@ -539,6 +598,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Drizzile, .iconPalIndex = 2, FOOTPRINT(Drizzile) + OVERWORLD( + sPicTable_Drizzile, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drizzile, + gShinyOverworldPalette_Drizzile + ) .levelUpLearnset = sDrizzileLevelUpLearnset, .teachableLearnset = sDrizzileTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_INTELEON}), @@ -592,6 +659,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Inteleon, .iconPalIndex = 0, FOOTPRINT(Inteleon) + OVERWORLD( + sPicTable_Inteleon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Inteleon, + gShinyOverworldPalette_Inteleon + ) .levelUpLearnset = sInteleonLevelUpLearnset, .teachableLearnset = sInteleonTeachableLearnset, .formSpeciesIdTable = sInteleonFormSpeciesIdTable, @@ -705,8 +780,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Skwovet, .iconPalIndex = 2, FOOTPRINT(Skwovet) + OVERWORLD( + sPicTable_Skwovet, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Skwovet, + gShinyOverworldPalette_Skwovet + ) .levelUpLearnset = sSkwovetLevelUpLearnset, .teachableLearnset = sSkwovetTeachableLearnset, + .eggMoveLearnset = sSkwovetEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GREEDENT}), }, @@ -759,6 +843,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Greedent, .iconPalIndex = 0, FOOTPRINT(Greedent) + OVERWORLD( + sPicTable_Greedent, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Greedent, + gShinyOverworldPalette_Greedent + ) .levelUpLearnset = sGreedentLevelUpLearnset, .teachableLearnset = sGreedentTeachableLearnset, }, @@ -813,8 +905,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Rookidee, .iconPalIndex = 0, FOOTPRINT(Rookidee) + OVERWORLD( + sPicTable_Rookidee, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rookidee, + gShinyOverworldPalette_Rookidee + ) .levelUpLearnset = sRookideeLevelUpLearnset, .teachableLearnset = sRookideeTeachableLearnset, + .eggMoveLearnset = sRookideeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CORVISQUIRE}), }, @@ -837,7 +938,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS }, .bodyColor = BODY_COLOR_BLUE, - .speciesName = _("Corvisquir"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Corvisquir", "Corvisquire"), .cryId = CRY_CORVISQUIRE, .natDexNum = NATIONAL_DEX_CORVISQUIRE, .categoryName = _("Raven"), @@ -867,6 +968,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Corvisquire, .iconPalIndex = 0, FOOTPRINT(Corvisquire) + OVERWORLD( + sPicTable_Corvisquire, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Corvisquire, + gShinyOverworldPalette_Corvisquire + ) .levelUpLearnset = sCorvisquireLevelUpLearnset, .teachableLearnset = sCorvisquireTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CORVIKNIGHT}), @@ -891,7 +1000,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, .bodyColor = BODY_COLOR_PURPLE, - .speciesName = _("Corviknigh"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Corviknigh", "Corviknight"), .cryId = CRY_CORVIKNIGHT, .natDexNum = NATIONAL_DEX_CORVIKNIGHT, .categoryName = _("Raven"), @@ -920,6 +1029,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Corviknight, .iconPalIndex = 0, FOOTPRINT(Corviknight) + OVERWORLD( + sPicTable_Corviknight, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Corviknight, + gShinyOverworldPalette_Corviknight + ) .levelUpLearnset = sCorviknightLevelUpLearnset, .teachableLearnset = sCorviknightTeachableLearnset, .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, @@ -1032,9 +1149,18 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Blipbug, .iconPalIndex = 0, FOOTPRINT(Blipbug) + OVERWORLD( + sPicTable_Blipbug, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Blipbug, + gShinyOverworldPalette_Blipbug + ) .tmIlliterate = TRUE, .levelUpLearnset = sBlipbugLevelUpLearnset, .teachableLearnset = sBlipbugTeachableLearnset, + .eggMoveLearnset = sBlipbugEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DOTTLER}), }, @@ -1087,6 +1213,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dottler, .iconPalIndex = 2, FOOTPRINT(Dottler) + OVERWORLD( + sPicTable_Dottler, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dottler, + gShinyOverworldPalette_Dottler + ) .levelUpLearnset = sDottlerLevelUpLearnset, .teachableLearnset = sDottlerTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ORBEETLE}), @@ -1142,6 +1276,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Orbeetle, .iconPalIndex = 0, FOOTPRINT(Orbeetle) + OVERWORLD( + sPicTable_Orbeetle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Orbeetle, + gShinyOverworldPalette_Orbeetle + ) .levelUpLearnset = sOrbeetleLevelUpLearnset, .teachableLearnset = sOrbeetleTeachableLearnset, .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, @@ -1256,8 +1398,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Nickit, .iconPalIndex = 2, FOOTPRINT(Nickit) + OVERWORLD( + sPicTable_Nickit, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Nickit, + gShinyOverworldPalette_Nickit + ) .levelUpLearnset = sNickitLevelUpLearnset, .teachableLearnset = sNickitTeachableLearnset, + .eggMoveLearnset = sNickitEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_THIEVUL}), }, @@ -1309,6 +1460,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Thievul, .iconPalIndex = 2, FOOTPRINT(Thievul) + OVERWORLD( + sPicTable_Thievul, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Thievul, + gShinyOverworldPalette_Thievul + ) .levelUpLearnset = sThievulLevelUpLearnset, .teachableLearnset = sThievulTeachableLearnset, }, @@ -1363,8 +1522,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Gossifleur, .iconPalIndex = 1, FOOTPRINT(Gossifleur) + OVERWORLD( + sPicTable_Gossifleur, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Gossifleur, + gShinyOverworldPalette_Gossifleur + ) .levelUpLearnset = sGossifleurLevelUpLearnset, .teachableLearnset = sGossifleurTeachableLearnset, + .eggMoveLearnset = sGossifleurEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_ELDEGOSS}), }, @@ -1416,6 +1584,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Eldegoss, .iconPalIndex = 1, FOOTPRINT(Eldegoss) + OVERWORLD( + sPicTable_Eldegoss, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Eldegoss, + gShinyOverworldPalette_Eldegoss + ) .levelUpLearnset = sEldegossLevelUpLearnset, .teachableLearnset = sEldegossTeachableLearnset, }, @@ -1470,8 +1646,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Wooloo, .iconPalIndex = 0, FOOTPRINT(Wooloo) + OVERWORLD( + sPicTable_Wooloo, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Wooloo, + gShinyOverworldPalette_Wooloo + ) .levelUpLearnset = sWoolooLevelUpLearnset, .teachableLearnset = sWoolooTeachableLearnset, + .eggMoveLearnset = sWoolooEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_DUBWOOL}), }, @@ -1523,6 +1708,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dubwool, .iconPalIndex = 2, FOOTPRINT(Dubwool) + OVERWORLD( + sPicTable_Dubwool, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dubwool, + gShinyOverworldPalette_Dubwool + ) .levelUpLearnset = sDubwoolLevelUpLearnset, .teachableLearnset = sDubwoolTeachableLearnset, }, @@ -1576,8 +1769,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Chewtle, .iconPalIndex = 0, FOOTPRINT(Chewtle) + OVERWORLD( + sPicTable_Chewtle, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Chewtle, + gShinyOverworldPalette_Chewtle + ) .levelUpLearnset = sChewtleLevelUpLearnset, .teachableLearnset = sChewtleTeachableLearnset, + .eggMoveLearnset = sChewtleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_DREDNAW}), }, @@ -1628,6 +1830,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Drednaw, .iconPalIndex = 0, FOOTPRINT(Drednaw) + OVERWORLD( + sPicTable_Drednaw, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drednaw, + gShinyOverworldPalette_Drednaw + ) .levelUpLearnset = sDrednawLevelUpLearnset, .teachableLearnset = sDrednawTeachableLearnset, .formSpeciesIdTable = sDrednawFormSpeciesIdTable, @@ -1741,8 +1951,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Yamper, .iconPalIndex = 1, FOOTPRINT(Yamper) + OVERWORLD( + sPicTable_Yamper, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Yamper, + gShinyOverworldPalette_Yamper + ) .levelUpLearnset = sYamperLevelUpLearnset, .teachableLearnset = sYamperTeachableLearnset, + .eggMoveLearnset = sYamperEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLTUND}), }, @@ -1794,6 +2013,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Boltund, .iconPalIndex = 1, FOOTPRINT(Boltund) + OVERWORLD( + sPicTable_Boltund, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Boltund, + gShinyOverworldPalette_Boltund + ) .levelUpLearnset = sBoltundLevelUpLearnset, .teachableLearnset = sBoltundTeachableLearnset, }, @@ -1848,8 +2075,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Rolycoly, .iconPalIndex = 0, FOOTPRINT(Rolycoly) + OVERWORLD( + sPicTable_Rolycoly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Rolycoly, + gShinyOverworldPalette_Rolycoly + ) .levelUpLearnset = sRolycolyLevelUpLearnset, .teachableLearnset = sRolycolyTeachableLearnset, + .eggMoveLearnset = sRolycolyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CARKOL}), }, @@ -1900,6 +2136,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Carkol, .iconPalIndex = 0, FOOTPRINT(Carkol) + OVERWORLD( + sPicTable_Carkol, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Carkol, + gShinyOverworldPalette_Carkol + ) .levelUpLearnset = sCarkolLevelUpLearnset, .teachableLearnset = sCarkolTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COALOSSAL}), @@ -1953,6 +2197,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Coalossal, .iconPalIndex = 0, FOOTPRINT(Coalossal) + OVERWORLD( + sPicTable_Coalossal, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Coalossal, + gShinyOverworldPalette_Coalossal + ) .levelUpLearnset = sCoalossalLevelUpLearnset, .teachableLearnset = sCoalossalTeachableLearnset, .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, @@ -2066,9 +2318,18 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Applin, .iconPalIndex = 1, FOOTPRINT(Applin) + OVERWORLD( + sPicTable_Applin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Applin, + gShinyOverworldPalette_Applin + ) .tmIlliterate = TRUE, .levelUpLearnset = sApplinLevelUpLearnset, .teachableLearnset = sApplinTeachableLearnset, + .eggMoveLearnset = sApplinEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}, {EVO_ITEM, ITEM_SYRUPY_APPLE, SPECIES_DIPPLIN}), @@ -2122,6 +2383,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Flapple, .iconPalIndex = 1, FOOTPRINT(Flapple) + OVERWORLD( + sPicTable_Flapple, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Flapple, + gShinyOverworldPalette_Flapple + ) .levelUpLearnset = sFlappleLevelUpLearnset, .teachableLearnset = sFlappleTeachableLearnset, .formSpeciesIdTable = sFlappleFormSpeciesIdTable, @@ -2232,6 +2501,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Appletun, .iconPalIndex = 1, FOOTPRINT(Appletun) + OVERWORLD( + sPicTable_Appletun, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Appletun, + gShinyOverworldPalette_Appletun + ) .levelUpLearnset = sAppletunLevelUpLearnset, .teachableLearnset = sAppletunTeachableLearnset, .formSpeciesIdTable = sAppletunFormSpeciesIdTable, @@ -2450,8 +2727,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Silicobra, .iconPalIndex = 1, FOOTPRINT(Silicobra) + OVERWORLD( + sPicTable_Silicobra, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Silicobra, + gShinyOverworldPalette_Silicobra + ) .levelUpLearnset = sSilicobraLevelUpLearnset, .teachableLearnset = sSilicobraTeachableLearnset, + .eggMoveLearnset = sSilicobraEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SANDACONDA}), }, @@ -2503,6 +2789,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Sandaconda, .iconPalIndex = 1, FOOTPRINT(Sandaconda) + OVERWORLD( + sPicTable_Sandaconda, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sandaconda, + gShinyOverworldPalette_Sandaconda + ) .levelUpLearnset = sSandacondaLevelUpLearnset, .teachableLearnset = sSandacondaTeachableLearnset, .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, @@ -2615,8 +2909,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Cramorant, .iconPalIndex = 0, FOOTPRINT(Cramorant) + OVERWORLD( + sPicTable_Cramorant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cramorant, + gShinyOverworldPalette_Cramorant + ) .levelUpLearnset = sCramorantLevelUpLearnset, .teachableLearnset = sCramorantTeachableLearnset, + .eggMoveLearnset = sCramorantEggMoveLearnset, .formSpeciesIdTable = sCramorantFormSpeciesIdTable, .formChangeTable = sCramorantFormChangeTable, }, @@ -2671,6 +2974,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Cramorant) .levelUpLearnset = sCramorantLevelUpLearnset, .teachableLearnset = sCramorantTeachableLearnset, + .eggMoveLearnset = sCramorantEggMoveLearnset, .formSpeciesIdTable = sCramorantFormSpeciesIdTable, .formChangeTable = sCramorantFormChangeTable, }, @@ -2725,6 +3029,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Cramorant) .levelUpLearnset = sCramorantLevelUpLearnset, .teachableLearnset = sCramorantTeachableLearnset, + .eggMoveLearnset = sCramorantEggMoveLearnset, .formSpeciesIdTable = sCramorantFormSpeciesIdTable, .formChangeTable = sCramorantFormChangeTable, }, @@ -2779,8 +3084,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Arrokuda, .iconPalIndex = 2, FOOTPRINT(Arrokuda) + OVERWORLD( + sPicTable_Arrokuda, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Arrokuda, + gShinyOverworldPalette_Arrokuda + ) .levelUpLearnset = sArrokudaLevelUpLearnset, .teachableLearnset = sArrokudaTeachableLearnset, + .eggMoveLearnset = sArrokudaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_BARRASKEWDA}), }, @@ -2803,7 +3117,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_2), .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL }, .bodyColor = BODY_COLOR_BROWN, - .speciesName = _("Barraskewd"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Barraskewd", "Barraskewda"), .cryId = CRY_BARRASKEWDA, .natDexNum = NATIONAL_DEX_BARRASKEWDA, .categoryName = _("Skewer"), @@ -2832,6 +3146,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Barraskewda, .iconPalIndex = 2, FOOTPRINT(Barraskewda) + OVERWORLD( + sPicTable_Barraskewda, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Barraskewda, + gShinyOverworldPalette_Barraskewda + ) .levelUpLearnset = sBarraskewdaLevelUpLearnset, .teachableLearnset = sBarraskewdaTeachableLearnset, }, @@ -2886,8 +3208,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Toxel, .iconPalIndex = 2, FOOTPRINT(Toxel) + OVERWORLD( + sPicTable_Toxel, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Toxel, + gShinyOverworldPalette_Toxel + ) .levelUpLearnset = sToxelLevelUpLearnset, .teachableLearnset = sToxelTeachableLearnset, + .eggMoveLearnset = sToxelEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}), }, @@ -2940,6 +3271,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ToxtricityAmped, .iconPalIndex = 2, FOOTPRINT(Toxtricity) + OVERWORLD( + sPicTable_ToxtricityAmped, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ToxtricityAmped, + gShinyOverworldPalette_ToxtricityAmped + ) .levelUpLearnset = sToxtricityAmpedLevelUpLearnset, .teachableLearnset = sToxtricityAmpedTeachableLearnset, .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, @@ -3046,6 +3385,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ToxtricityLowKey, .iconPalIndex = 2, FOOTPRINT(Toxtricity) + OVERWORLD( + sPicTable_ToxtricityLowKey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ToxtricityLowKey, + gShinyOverworldPalette_ToxtricityLowKey + ) .levelUpLearnset = sToxtricityLowKeyLevelUpLearnset, .teachableLearnset = sToxtricityLowKeyTeachableLearnset, .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, @@ -3097,6 +3444,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ToxtricityGigantamax, .iconPalIndex = 0, FOOTPRINT(Toxtricity) + OVERWORLD( + sPicTable_ToxtricityLowKey, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ToxtricityLowKey, + gShinyOverworldPalette_ToxtricityLowKey + ) .isGigantamax = TRUE, .levelUpLearnset = sToxtricityLowKeyLevelUpLearnset, .teachableLearnset = sToxtricityLowKeyTeachableLearnset, @@ -3154,8 +3509,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Sizzlipede, .iconPalIndex = 0, FOOTPRINT(Sizzlipede) + OVERWORLD( + sPicTable_Sizzlipede, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sizzlipede, + gShinyOverworldPalette_Sizzlipede + ) .levelUpLearnset = sSizzlipedeLevelUpLearnset, .teachableLearnset = sSizzlipedeTeachableLearnset, + .eggMoveLearnset = sSizzlipedeEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_CENTISKORCH}), }, @@ -3178,7 +3542,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_BUG), .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, .bodyColor = BODY_COLOR_RED, - .speciesName = _("Centiskorc"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Centiskorc", "Centiskorch"), .cryId = CRY_CENTISKORCH, .natDexNum = NATIONAL_DEX_CENTISKORCH, .categoryName = _("Radiator"), @@ -3207,6 +3571,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Centiskorch, .iconPalIndex = 0, FOOTPRINT(Centiskorch) + OVERWORLD( + sPicTable_Centiskorch, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Centiskorch, + gShinyOverworldPalette_Centiskorch + ) .levelUpLearnset = sCentiskorchLevelUpLearnset, .teachableLearnset = sCentiskorchTeachableLearnset, .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, @@ -3320,8 +3692,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Clobbopus, .iconPalIndex = 0, FOOTPRINT(Clobbopus) + OVERWORLD( + sPicTable_Clobbopus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Clobbopus, + gShinyOverworldPalette_Clobbopus + ) .levelUpLearnset = sClobbopusLevelUpLearnset, .teachableLearnset = sClobbopusTeachableLearnset, + .eggMoveLearnset = sClobbopusEggMoveLearnset, .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), }, @@ -3372,6 +3753,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Grapploct, .iconPalIndex = 2, FOOTPRINT(Grapploct) + OVERWORLD( + sPicTable_Grapploct, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grapploct, + gShinyOverworldPalette_Grapploct + ) .levelUpLearnset = sGrapploctLevelUpLearnset, .teachableLearnset = sGrapploctTeachableLearnset, }, @@ -3426,6 +3815,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Sinistea, .iconPalIndex = 2, FOOTPRINT(Sinistea) + OVERWORLD( + sPicTable_Sinistea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sinistea, + gShinyOverworldPalette_Sinistea + ) .levelUpLearnset = sSinisteaLevelUpLearnset, .teachableLearnset = sSinisteaTeachableLearnset, .formSpeciesIdTable = sSinisteaFormSpeciesIdTable, @@ -3481,6 +3878,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Sinistea, .iconPalIndex = 2, FOOTPRINT(Sinistea) + OVERWORLD( + sPicTable_Sinistea, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Sinistea, + gShinyOverworldPalette_Sinistea + ) .levelUpLearnset = sSinisteaLevelUpLearnset, .teachableLearnset = sSinisteaTeachableLearnset, .formSpeciesIdTable = sSinisteaFormSpeciesIdTable, @@ -3506,7 +3911,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, .bodyColor = BODY_COLOR_PURPLE, - .speciesName = _("Polteageis"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Polteageis", "Polteageist"), .cryId = CRY_POLTEAGEIST, .natDexNum = NATIONAL_DEX_POLTEAGEIST, .categoryName = _("Black Tea"), @@ -3535,6 +3940,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Polteageist, .iconPalIndex = 2, FOOTPRINT(Polteageist) + OVERWORLD( + sPicTable_Polteageist, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Polteageist, + gShinyOverworldPalette_Polteageist + ) .levelUpLearnset = sPolteageistLevelUpLearnset, .teachableLearnset = sPolteageistTeachableLearnset, .formSpeciesIdTable = sPolteageistFormSpeciesIdTable, @@ -3559,7 +3972,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, .bodyColor = BODY_COLOR_PURPLE, - .speciesName = _("Polteageis"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Polteageis", "Polteageist"), .cryId = CRY_POLTEAGEIST, .natDexNum = NATIONAL_DEX_POLTEAGEIST, .categoryName = _("Black Tea"), @@ -3589,6 +4002,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Polteageist, .iconPalIndex = 2, FOOTPRINT(Polteageist) + OVERWORLD( + sPicTable_Polteageist, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Polteageist, + gShinyOverworldPalette_Polteageist + ) .levelUpLearnset = sPolteageistLevelUpLearnset, .teachableLearnset = sPolteageistTeachableLearnset, .formSpeciesIdTable = sPolteageistFormSpeciesIdTable, @@ -3644,8 +4065,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Hatenna, .iconPalIndex = 0, FOOTPRINT(Hatenna) + OVERWORLD( + sPicTable_Hatenna, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hatenna, + gShinyOverworldPalette_Hatenna + ) .levelUpLearnset = sHatennaLevelUpLearnset, .teachableLearnset = sHatennaTeachableLearnset, + .eggMoveLearnset = sHatennaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_HATTREM}), }, @@ -3696,6 +4126,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Hattrem, .iconPalIndex = 0, FOOTPRINT(Hattrem) + OVERWORLD( + sPicTable_Hattrem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hattrem, + gShinyOverworldPalette_Hattrem + ) .levelUpLearnset = sHattremLevelUpLearnset, .teachableLearnset = sHattremTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_HATTERENE}), @@ -3748,6 +4186,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Hatterene, .iconPalIndex = 0, FOOTPRINT(Hatterene) + OVERWORLD( + sPicTable_Hatterene, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Hatterene, + gShinyOverworldPalette_Hatterene + ) .levelUpLearnset = sHattereneLevelUpLearnset, .teachableLearnset = sHattereneTeachableLearnset, .formSpeciesIdTable = sHattereneFormSpeciesIdTable, @@ -3861,6 +4307,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Impidimp, .iconPalIndex = 0, FOOTPRINT(Impidimp) + OVERWORLD( + sPicTable_Impidimp, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Impidimp, + gShinyOverworldPalette_Impidimp + ) .levelUpLearnset = sImpidimpLevelUpLearnset, .teachableLearnset = sImpidimpTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MORGREM}), @@ -3914,6 +4368,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Morgrem, .iconPalIndex = 0, FOOTPRINT(Morgrem) + OVERWORLD( + sPicTable_Morgrem, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Morgrem, + gShinyOverworldPalette_Morgrem + ) .levelUpLearnset = sMorgremLevelUpLearnset, .teachableLearnset = sMorgremTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GRIMMSNARL}), @@ -3967,6 +4429,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Grimmsnarl, .iconPalIndex = 0, FOOTPRINT(Grimmsnarl) + OVERWORLD( + sPicTable_Grimmsnarl, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Grimmsnarl, + gShinyOverworldPalette_Grimmsnarl + ) .levelUpLearnset = sGrimmsnarlLevelUpLearnset, .teachableLearnset = sGrimmsnarlTeachableLearnset, .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, @@ -4080,8 +4550,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Milcery, .iconPalIndex = 1, FOOTPRINT(Milcery) + OVERWORLD( + sPicTable_Milcery, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Milcery, + gShinyOverworldPalette_Milcery + ) .levelUpLearnset = sMilceryLevelUpLearnset, .teachableLearnset = sMilceryTeachableLearnset, + .eggMoveLearnset = sMilceryEggMoveLearnset, .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}, @@ -4140,6 +4619,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_AlcremieStrawberryVanillaCream, /*AlcremieStrawberry##cream##*/ \ .iconPalIndex = 1, \ FOOTPRINT(Alcremie) \ + OVERWORLD( \ + sPicTable_AlcremieStrawberry, /*Alcremie ##sweet*/ \ + SIZE_32x32, \ + SHADOW_SIZE_M, \ + TRACKS_FOOT, \ + gOverworldPalette_AlcremieStrawberryVanillaCream, /*Alcremie ##sweet##cream*/ \ + gShinyOverworldPalette_AlcremieStrawberryVanillaCream /*Alcremie ##sweet##cream*/ \ + ) \ .levelUpLearnset = sAlcremieLevelUpLearnset, \ .teachableLearnset = sAlcremieTeachableLearnset, \ .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, \ @@ -4299,6 +4786,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Falinks, .iconPalIndex = 0, FOOTPRINT(Falinks) + OVERWORLD( + sPicTable_Falinks, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Falinks, + gShinyOverworldPalette_Falinks + ) .levelUpLearnset = sFalinksLevelUpLearnset, .teachableLearnset = sFalinksTeachableLearnset, }, @@ -4352,8 +4847,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Pincurchin, .iconPalIndex = 2, FOOTPRINT(Pincurchin) + OVERWORLD( + sPicTable_Pincurchin, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Pincurchin, + gShinyOverworldPalette_Pincurchin + ) .levelUpLearnset = sPincurchinLevelUpLearnset, .teachableLearnset = sPincurchinTeachableLearnset, + .eggMoveLearnset = sPincurchinEggMoveLearnset, }, #endif //P_FAMILY_PINCURCHIN @@ -4407,8 +4911,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Snom, .iconPalIndex = 0, FOOTPRINT(Snom) + OVERWORLD( + sPicTable_Snom, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Snom, + gShinyOverworldPalette_Snom + ) .levelUpLearnset = sSnomLevelUpLearnset, .teachableLearnset = sSnomTeachableLearnset, + .eggMoveLearnset = sSnomEggMoveLearnset, .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), }, @@ -4461,6 +4974,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Frosmoth, .iconPalIndex = 0, FOOTPRINT(Frosmoth) + OVERWORLD( + sPicTable_Frosmoth, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Frosmoth, + gShinyOverworldPalette_Frosmoth + ) .levelUpLearnset = sFrosmothLevelUpLearnset, .teachableLearnset = sFrosmothTeachableLearnset, }, @@ -4486,7 +5007,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL), .abilities = { ABILITY_POWER_SPOT, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .speciesName = _("Stonjourne"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Stonjourne", "Stonjourner"), .cryId = CRY_STONJOURNER, .natDexNum = NATIONAL_DEX_STONJOURNER, .categoryName = _("Big Rock"), @@ -4515,8 +5036,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Stonjourner, .iconPalIndex = 2, FOOTPRINT(Stonjourner) + OVERWORLD( + sPicTable_Stonjourner, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Stonjourner, + gShinyOverworldPalette_Stonjourner + ) .levelUpLearnset = sStonjournerLevelUpLearnset, .teachableLearnset = sStonjournerTeachableLearnset, + .eggMoveLearnset = sStonjournerEggMoveLearnset, }, #endif //P_FAMILY_STONJOURNER @@ -4569,8 +5099,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_EiscueIceFace, .iconPalIndex = 0, FOOTPRINT(Eiscue) + OVERWORLD( + sPicTable_EiscueIceFace, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_EiscueIceFace, + gShinyOverworldPalette_EiscueIceFace + ) .levelUpLearnset = sEiscueLevelUpLearnset, .teachableLearnset = sEiscueTeachableLearnset, + .eggMoveLearnset = sEiscueEggMoveLearnset, .formSpeciesIdTable = sEiscueFormSpeciesIdTable, .formChangeTable = sEiscueFormChangeTable, }, @@ -4625,6 +5164,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Eiscue) .levelUpLearnset = sEiscueLevelUpLearnset, .teachableLearnset = sEiscueTeachableLearnset, + .eggMoveLearnset = sEiscueEggMoveLearnset, .formSpeciesIdTable = sEiscueFormSpeciesIdTable, .formChangeTable = sEiscueFormChangeTable, }, @@ -4679,6 +5219,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_IndeedeeMale, .iconPalIndex = 2, FOOTPRINT(Indeedee) + OVERWORLD( + sPicTable_IndeedeeMale, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_IndeedeeMale, + gShinyOverworldPalette_IndeedeeMale + ) .levelUpLearnset = sIndeedeeMaleLevelUpLearnset, .teachableLearnset = sIndeedeeMaleTeachableLearnset, .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable, @@ -4734,6 +5282,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Indeedee) .levelUpLearnset = sIndeedeeFemaleLevelUpLearnset, .teachableLearnset = sIndeedeeFemaleTeachableLearnset, + .eggMoveLearnset = sIndeedeeFemaleEggMoveLearnset, .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable, }, #endif //P_FAMILY_INDEEDEE @@ -4787,8 +5336,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_MorpekoFullBelly, .iconPalIndex = 2, FOOTPRINT(Morpeko) + OVERWORLD( + sPicTable_MorpekoFullBelly, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_MorpekoFullBelly, + gShinyOverworldPalette_MorpekoFullBelly + ) .levelUpLearnset = sMorpekoLevelUpLearnset, .teachableLearnset = sMorpekoTeachableLearnset, + .eggMoveLearnset = sMorpekoEggMoveLearnset, .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, .formChangeTable = sMorpekoFormChangeTable, }, @@ -4843,6 +5401,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = FOOTPRINT(Morpeko) .levelUpLearnset = sMorpekoLevelUpLearnset, .teachableLearnset = sMorpekoTeachableLearnset, + .eggMoveLearnset = sMorpekoEggMoveLearnset, .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, .formChangeTable = sMorpekoFormChangeTable, }, @@ -4898,8 +5457,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Cufant, .iconPalIndex = 0, FOOTPRINT(Cufant) + OVERWORLD( + sPicTable_Cufant, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Cufant, + gShinyOverworldPalette_Cufant + ) .levelUpLearnset = sCufantLevelUpLearnset, .teachableLearnset = sCufantTeachableLearnset, + .eggMoveLearnset = sCufantEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COPPERAJAH}), }, @@ -4951,6 +5519,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Copperajah, .iconPalIndex = 0, FOOTPRINT(Copperajah) + OVERWORLD( + sPicTable_Copperajah, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Copperajah, + gShinyOverworldPalette_Copperajah + ) .levelUpLearnset = sCopperajahLevelUpLearnset, .teachableLearnset = sCopperajahTeachableLearnset, .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, @@ -5065,6 +5641,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dracozolt, .iconPalIndex = 1, FOOTPRINT(Dracozolt) + OVERWORLD( + sPicTable_Dracozolt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dracozolt, + gShinyOverworldPalette_Dracozolt + ) .levelUpLearnset = sDracozoltLevelUpLearnset, .teachableLearnset = sDracozoltTeachableLearnset, }, @@ -5118,6 +5702,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Arctozolt, .iconPalIndex = 0, FOOTPRINT(Arctozolt) + OVERWORLD( + sPicTable_Arctozolt, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Arctozolt, + gShinyOverworldPalette_Arctozolt + ) .levelUpLearnset = sArctozoltLevelUpLearnset, .teachableLearnset = sArctozoltTeachableLearnset, }, @@ -5172,6 +5764,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dracovish, .iconPalIndex = 0, FOOTPRINT(Dracovish) + OVERWORLD( + sPicTable_Dracovish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dracovish, + gShinyOverworldPalette_Dracovish + ) .levelUpLearnset = sDracovishLevelUpLearnset, .teachableLearnset = sDracovishTeachableLearnset, }, @@ -5226,6 +5826,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Arctovish, .iconPalIndex = 0, FOOTPRINT(Arctovish) + OVERWORLD( + sPicTable_Arctovish, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Arctovish, + gShinyOverworldPalette_Arctovish + ) .levelUpLearnset = sArctovishLevelUpLearnset, .teachableLearnset = sArctovishTeachableLearnset, }, @@ -5279,8 +5887,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Duraludon, .iconPalIndex = 0, FOOTPRINT(Duraludon) + OVERWORLD( + sPicTable_Duraludon, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Duraludon, + gShinyOverworldPalette_Duraludon + ) .levelUpLearnset = sDuraludonLevelUpLearnset, .teachableLearnset = sDuraludonTeachableLearnset, + .eggMoveLearnset = sDuraludonEggMoveLearnset, .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, .formChangeTable = sDuraludonFormChangeTable, .evolutions = EVOLUTION({EVO_ITEM, ITEM_METAL_ALLOY, SPECIES_ARCHALUDON}), @@ -5338,6 +5955,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .isGigantamax = TRUE, .levelUpLearnset = sDuraludonLevelUpLearnset, .teachableLearnset = sDuraludonTeachableLearnset, + .eggMoveLearnset = sDuraludonEggMoveLearnset, .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, .formChangeTable = sDuraludonFormChangeTable, }, @@ -5448,8 +6066,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dreepy, .iconPalIndex = 0, FOOTPRINT(Dreepy) + OVERWORLD( + sPicTable_Dreepy, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dreepy, + gShinyOverworldPalette_Dreepy + ) .levelUpLearnset = sDreepyLevelUpLearnset, .teachableLearnset = sDreepyTeachableLearnset, + .eggMoveLearnset = sDreepyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_DRAKLOAK}), }, @@ -5501,6 +6128,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Drakloak, .iconPalIndex = 0, FOOTPRINT(Drakloak) + OVERWORLD( + sPicTable_Drakloak, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Drakloak, + gShinyOverworldPalette_Drakloak + ) .levelUpLearnset = sDrakloakLevelUpLearnset, .teachableLearnset = sDrakloakTeachableLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 60, SPECIES_DRAGAPULT}), @@ -5555,6 +6190,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Dragapult, .iconPalIndex = 0, FOOTPRINT(Dragapult) + OVERWORLD( + sPicTable_Dragapult, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Dragapult, + gShinyOverworldPalette_Dragapult + ) .levelUpLearnset = sDragapultLevelUpLearnset, .teachableLearnset = sDragapultTeachableLearnset, }, @@ -5608,7 +6251,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ZacianHeroOfManyBattles, .iconPalIndex = 2, FOOTPRINT(Zacian) + OVERWORLD( + sPicTable_ZacianHeroOfManyBattles, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZacianHeroOfManyBattles, + gShinyOverworldPalette_ZacianHeroOfManyBattles + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZacianLevelUpLearnset, .teachableLearnset = sZacianTeachableLearnset, .formSpeciesIdTable = sZacianFormSpeciesIdTable, @@ -5663,7 +6315,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ZacianCrownedSword, .iconPalIndex = 2, FOOTPRINT(Zacian) + OVERWORLD( + sPicTable_ZacianCrownedSword, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZacianCrownedSword, + gShinyOverworldPalette_ZacianCrownedSword + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZacianLevelUpLearnset, .teachableLearnset = sZacianTeachableLearnset, .formSpeciesIdTable = sZacianFormSpeciesIdTable, @@ -5720,7 +6381,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ZamazentaHeroOfManyBattles, .iconPalIndex = 2, FOOTPRINT(Zamazenta) + OVERWORLD( + sPicTable_ZamazentaHeroOfManyBattles, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZamazentaHeroOfManyBattles, + gShinyOverworldPalette_ZamazentaHeroOfManyBattles + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZamazentaLevelUpLearnset, .teachableLearnset = sZamazentaTeachableLearnset, .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, @@ -5775,7 +6445,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_ZamazentaCrownedShield, .iconPalIndex = 2, FOOTPRINT(Zamazenta) + OVERWORLD( + sPicTable_ZamazentaCrownedShield, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_ZamazentaCrownedShield, + gShinyOverworldPalette_ZamazentaCrownedShield + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZamazentaLevelUpLearnset, .teachableLearnset = sZamazentaTeachableLearnset, .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, @@ -5833,7 +6512,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Eternatus, .iconPalIndex = 0, FOOTPRINT(Eternatus) + OVERWORLD( + sPicTable_Eternatus, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Eternatus, + gShinyOverworldPalette_Eternatus + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sEternatusLevelUpLearnset, .teachableLearnset = sEternatusTeachableLearnset, .formSpeciesIdTable = sEternatusFormSpeciesIdTable, @@ -5889,6 +6577,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 0, FOOTPRINT(Eternatus) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sEternatusLevelUpLearnset, .teachableLearnset = sEternatusTeachableLearnset, .formSpeciesIdTable = sEternatusFormSpeciesIdTable, @@ -5943,6 +6632,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Kubfu, .iconPalIndex = 1, FOOTPRINT(Kubfu) + OVERWORLD( + sPicTable_Kubfu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Kubfu, + gShinyOverworldPalette_Kubfu + ) .isLegendary = TRUE, .levelUpLearnset = sKubfuLevelUpLearnset, .teachableLearnset = sKubfuTeachableLearnset, @@ -6000,6 +6697,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Urshifu, .iconPalIndex = 2, FOOTPRINT(Urshifu) + OVERWORLD( + sPicTable_Urshifu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Urshifu, + gShinyOverworldPalette_Urshifu + ) .isLegendary = TRUE, .levelUpLearnset = sUrshifuSingleStrikeStyleLevelUpLearnset, .teachableLearnset = sUrshifuSingleStrikeStyleTeachableLearnset, @@ -6112,6 +6817,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Urshifu, .iconPalIndex = 2, FOOTPRINT(Urshifu) + OVERWORLD( + sPicTable_Urshifu, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Urshifu, + gShinyOverworldPalette_Urshifu + ) .isLegendary = TRUE, .levelUpLearnset = sUrshifuRapidStrikeStyleLevelUpLearnset, .teachableLearnset = sUrshifuRapidStrikeStyleTeachableLearnset, @@ -6227,7 +6940,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Zarude, .iconPalIndex = 1, FOOTPRINT(Zarude) + OVERWORLD( + sPicTable_Zarude, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Zarude, + gShinyOverworldPalette_Zarude + ) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZarudeLevelUpLearnset, .teachableLearnset = sZarudeTeachableLearnset, .formSpeciesIdTable = sZarudeFormSpeciesIdTable, @@ -6281,6 +7003,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconPalIndex = 1, FOOTPRINT(Zarude) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sZarudeLevelUpLearnset, .teachableLearnset = sZarudeTeachableLearnset, .formSpeciesIdTable = sZarudeFormSpeciesIdTable, @@ -6337,6 +7060,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Regieleki, .iconPalIndex = 0, FOOTPRINT(Regieleki) + OVERWORLD( + sPicTable_Regieleki, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Regieleki, + gShinyOverworldPalette_Regieleki + ) .isLegendary = TRUE, .levelUpLearnset = sRegielekiLevelUpLearnset, .teachableLearnset = sRegielekiTeachableLearnset, @@ -6393,6 +7124,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Regidrago, .iconPalIndex = 0, FOOTPRINT(Regidrago) + OVERWORLD( + sPicTable_Regidrago, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Regidrago, + gShinyOverworldPalette_Regidrago + ) .isLegendary = TRUE, .levelUpLearnset = sRegidragoLevelUpLearnset, .teachableLearnset = sRegidragoTeachableLearnset, @@ -6447,6 +7186,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Glastrier, .iconPalIndex = 0, FOOTPRINT(Glastrier) + OVERWORLD( + sPicTable_Glastrier, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Glastrier, + gShinyOverworldPalette_Glastrier + ) .isLegendary = TRUE, .levelUpLearnset = sGlastrierLevelUpLearnset, .teachableLearnset = sGlastrierTeachableLearnset, @@ -6502,6 +7249,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Spectrier, .iconPalIndex = 0, FOOTPRINT(Spectrier) + OVERWORLD( + sPicTable_Spectrier, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Spectrier, + gShinyOverworldPalette_Spectrier + ) .isLegendary = TRUE, .levelUpLearnset = sSpectrierLevelUpLearnset, .teachableLearnset = sSpectrierTeachableLearnset, @@ -6557,7 +7312,16 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_Calyrex, .iconPalIndex = 0, FOOTPRINT(Calyrex) + OVERWORLD( + sPicTable_Calyrex, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_Calyrex, + gShinyOverworldPalette_Calyrex + ) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexLevelUpLearnset, .teachableLearnset = sCalyrexTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, @@ -6612,8 +7376,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_CalyrexIceRider, .iconPalIndex = 0, FOOTPRINT(Calyrex) + OVERWORLD( + sPicTable_CalyrexIceRider, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_CalyrexIceRider, + gShinyOverworldPalette_CalyrexIceRider + ) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexIceRiderLevelUpLearnset, .teachableLearnset = sCalyrexIceRiderTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, @@ -6667,8 +7440,17 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_CalyrexShadowRider, .iconPalIndex = 0, FOOTPRINT(Calyrex) + OVERWORLD( + sPicTable_CalyrexShadowRider, + SIZE_32x32, + SHADOW_SIZE_M, + TRACKS_FOOT, + gOverworldPalette_CalyrexShadowRider, + gShinyOverworldPalette_CalyrexShadowRider + ) .isLegendary = TRUE, .cannotBeTraded = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sCalyrexShadowRiderLevelUpLearnset, .teachableLearnset = sCalyrexShadowRiderTeachableLearnset, .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, @@ -6726,6 +7508,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_EnamorusIncarnate, .iconPalIndex = 1, FOOTPRINT(Enamorus) + OVERWORLD( + sPicTable_EnamorusIncarnate, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE + //, gOverworldPalette_EnamorusIncarnate + //, gShinyOverworldPalette_EnamorusIncarnate + ) .isLegendary = TRUE, .levelUpLearnset = sEnamorusLevelUpLearnset, .teachableLearnset = sEnamorusTeachableLearnset, @@ -6780,6 +7570,14 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .iconSprite = gMonIcon_EnamorusTherian, .iconPalIndex = 1, FOOTPRINT(Enamorus) + OVERWORLD( + sPicTable_EnamorusTherian, + SIZE_64x64, + SHADOW_SIZE_M, + TRACKS_NONE + //, gOverworldPalette_EnamorusTherian + //, gShinyOverworldPalette_EnamorusTherian + ) .isLegendary = TRUE, .levelUpLearnset = sEnamorusLevelUpLearnset, .teachableLearnset = sEnamorusTeachableLearnset, diff --git a/src/data/pokemon/species_info/gen_9_families.h b/src/data/pokemon/species_info/gen_9_families.h index b94de7eb02ec..8880d3584db9 100644 --- a/src/data/pokemon/species_info/gen_9_families.h +++ b/src/data/pokemon/species_info/gen_9_families.h @@ -54,6 +54,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Sprigatito) .levelUpLearnset = sSprigatitoLevelUpLearnset, .teachableLearnset = sSprigatitoTeachableLearnset, + .eggMoveLearnset = sSprigatitoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FLORAGATO}), }, @@ -129,7 +130,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FIELD, EGG_GROUP_GRASS), .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_PROTEAN }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Meowscarad"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Meowscarad", "Meowscarada"), .cryId = CRY_MEOWSCARADA, .natDexNum = NATIONAL_DEX_MEOWSCARADA, .categoryName = _("Magician"), @@ -214,6 +215,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Fuecoco) .levelUpLearnset = sFuecocoLevelUpLearnset, .teachableLearnset = sFuecocoTeachableLearnset, + .eggMoveLearnset = sFuecocoEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CROCALOR}), }, @@ -374,6 +376,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Quaxly) .levelUpLearnset = sQuaxlyLevelUpLearnset, .teachableLearnset = sQuaxlyTeachableLearnset, + .eggMoveLearnset = sQuaxlyEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUAXWELL}), }, @@ -534,6 +537,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Lechonk) .levelUpLearnset = sLechonkLevelUpLearnset, .teachableLearnset = sLechonkTeachableLearnset, + .eggMoveLearnset = sLechonkEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_MALE}, {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_FEMALE}), }, @@ -695,6 +699,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tarountula) .levelUpLearnset = sTarountulaLevelUpLearnset, .teachableLearnset = sTarountulaTeachableLearnset, + .eggMoveLearnset = sTarountulaEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_SPIDOPS}), }, @@ -802,6 +807,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Nymble) .levelUpLearnset = sNymbleLevelUpLearnset, .teachableLearnset = sNymbleTeachableLearnset, + .eggMoveLearnset = sNymbleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_LOKIX}), }, @@ -909,6 +915,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Pawmi) .levelUpLearnset = sPawmiLevelUpLearnset, .teachableLearnset = sPawmiTeachableLearnset, + .eggMoveLearnset = sPawmiEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PAWMO}), }, @@ -962,7 +969,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Pawmo) .levelUpLearnset = sPawmoLevelUpLearnset, .teachableLearnset = sPawmoTeachableLearnset, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_PAWMOT}), + .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_PAWMOT}), }, [SPECIES_PAWMOT] = @@ -1069,6 +1076,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tandemaus) .levelUpLearnset = sTandemausLevelUpLearnset, .teachableLearnset = sTandemausTeachableLearnset, + .eggMoveLearnset = sTandemausEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}), }, @@ -1230,6 +1238,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Fidough) .levelUpLearnset = sFidoughLevelUpLearnset, .teachableLearnset = sFidoughTeachableLearnset, + .eggMoveLearnset = sFidoughEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DACHSBUN}), }, @@ -1337,6 +1346,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Smoliv) .levelUpLearnset = sSmolivLevelUpLearnset, .teachableLearnset = sSmolivTeachableLearnset, + .eggMoveLearnset = sSmolivEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DOLLIV}), }, @@ -1466,7 +1476,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Sqawkabily"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Sqawkabily", "Squawkabilly"), .cryId = CRY_SQUAWKABILLY, .natDexNum = NATIONAL_DEX_SQUAWKABILLY, .categoryName = _("Parrot"), @@ -1497,6 +1507,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, + .eggMoveLearnset = sSquawkabillyEggMoveLearnset, .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, @@ -1519,7 +1530,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, .bodyColor = BODY_COLOR_BLUE, - .speciesName = _("Sqawkabily"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Sqawkabily", "Squawkabilly"), .cryId = CRY_SQUAWKABILLY, .natDexNum = NATIONAL_DEX_SQUAWKABILLY, .categoryName = _("Parrot"), @@ -1550,6 +1561,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, + .eggMoveLearnset = sSquawkabillyEggMoveLearnset, .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, @@ -1572,7 +1584,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("Sqawkabily"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Sqawkabily", "Squawkabilly"), .cryId = CRY_SQUAWKABILLY, .natDexNum = NATIONAL_DEX_SQUAWKABILLY, .categoryName = _("Parrot"), @@ -1603,6 +1615,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, + .eggMoveLearnset = sSquawkabillyEggMoveLearnset, .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, @@ -1625,7 +1638,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_FLYING), .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, .bodyColor = BODY_COLOR_WHITE, - .speciesName = _("Sqawkabily"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Sqawkabily", "Squawkabilly"), .cryId = CRY_SQUAWKABILLY, .natDexNum = NATIONAL_DEX_SQUAWKABILLY, .categoryName = _("Parrot"), @@ -1656,6 +1669,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Squawkabilly) .levelUpLearnset = sSquawkabillyLevelUpLearnset, .teachableLearnset = sSquawkabillyTeachableLearnset, + .eggMoveLearnset = sSquawkabillyEggMoveLearnset, .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable, }, #endif //P_FAMILY_SQUAWKABILLY @@ -1711,6 +1725,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Nacli) .levelUpLearnset = sNacliLevelUpLearnset, .teachableLearnset = sNacliTeachableLearnset, + .eggMoveLearnset = sNacliEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_NACLSTACK}), }, @@ -1871,6 +1886,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Charcadet) .levelUpLearnset = sCharcadetLevelUpLearnset, .teachableLearnset = sCharcadetTeachableLearnset, + .eggMoveLearnset = sCharcadetEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_AUSPICIOUS_ARMOR, SPECIES_ARMAROUGE}, {EVO_ITEM, ITEM_MALICIOUS_ARMOR, SPECIES_CERULEDGE}), }, @@ -2032,6 +2048,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tadbulb) .levelUpLearnset = sTadbulbLevelUpLearnset, .teachableLearnset = sTadbulbTeachableLearnset, + .eggMoveLearnset = sTadbulbEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_BELLIBOLT}), }, @@ -2139,6 +2156,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Wattrel) .levelUpLearnset = sWattrelLevelUpLearnset, .teachableLearnset = sWattrelTeachableLearnset, + .eggMoveLearnset = sWattrelEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_KILOWATTREL}), }, @@ -2161,7 +2179,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_WATER_1, EGG_GROUP_FLYING), .abilities = { ABILITY_WIND_POWER, ABILITY_VOLT_ABSORB, ABILITY_COMPETITIVE }, .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("Kilowatrel"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Kilowatrel", "Kilowattrel"), .cryId = CRY_KILOWATTREL, .natDexNum = NATIONAL_DEX_KILOWATTREL, .categoryName = _("Frigatebird"), @@ -2246,6 +2264,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Maschiff) .levelUpLearnset = sMaschiffLevelUpLearnset, .teachableLearnset = sMaschiffTeachableLearnset, + .eggMoveLearnset = sMaschiffEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MABOSSTIFF}), }, @@ -2353,6 +2372,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Shroodle) .levelUpLearnset = sShroodleLevelUpLearnset, .teachableLearnset = sShroodleTeachableLearnset, + .eggMoveLearnset = sShroodleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_GRAFAIAI}), }, @@ -2460,7 +2480,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Bramblin) .levelUpLearnset = sBramblinLevelUpLearnset, .teachableLearnset = sBramblinTeachableLearnset, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_BRAMBLEGHAST}), + .eggMoveLearnset = sBramblinEggMoveLearnset, + .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_BRAMBLEGHAST}), }, [SPECIES_BRAMBLEGHAST] = @@ -2482,7 +2503,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_GRASS), .abilities = { ABILITY_WIND_RIDER, ABILITY_NONE, ABILITY_INFILTRATOR }, .bodyColor = BODY_COLOR_BROWN, - .speciesName = _("Brmblghast"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Brmblghast", "Brambleghast"), .cryId = CRY_BRAMBLEGHAST, .natDexNum = NATIONAL_DEX_BRAMBLEGHAST, .categoryName = _("Tumbleweed"), @@ -2569,6 +2590,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Toedscool) .levelUpLearnset = sToedscoolLevelUpLearnset, .teachableLearnset = sToedscoolTeachableLearnset, + .eggMoveLearnset = sToedscoolEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TOEDSCRUEL}), }, @@ -2678,6 +2700,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Klawf) .levelUpLearnset = sKlawfLevelUpLearnset, .teachableLearnset = sKlawfTeachableLearnset, + .eggMoveLearnset = sKlawfEggMoveLearnset, }, #endif //P_FAMILY_KLAWF @@ -2732,6 +2755,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Capsakid) .levelUpLearnset = sCapsakidLevelUpLearnset, .teachableLearnset = sCapsakidTeachableLearnset, + .eggMoveLearnset = sCapsakidEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SCOVILLAIN}), }, @@ -2839,7 +2863,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Rellor) .levelUpLearnset = sRellorLevelUpLearnset, .teachableLearnset = sRellorTeachableLearnset, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_RABSCA}), + .eggMoveLearnset = sRellorEggMoveLearnset, + .evolutions = EVOLUTION({EVO_OVERWORLD_STEPS, 1000, SPECIES_RABSCA}), }, [SPECIES_RABSCA] = @@ -2946,6 +2971,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Flittle) .levelUpLearnset = sFlittleLevelUpLearnset, .teachableLearnset = sFlittleTeachableLearnset, + .eggMoveLearnset = sFlittleEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ESPATHRA}), }, @@ -3053,6 +3079,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tinkatink) .levelUpLearnset = sTinkatinkLevelUpLearnset, .teachableLearnset = sTinkatinkTeachableLearnset, + .eggMoveLearnset = sTinkatinkEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_TINKATUFF}), }, @@ -3212,6 +3239,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Wiglett) .levelUpLearnset = sWiglettLevelUpLearnset, .teachableLearnset = sWiglettTeachableLearnset, + .eggMoveLearnset = sWiglettEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_WUGTRIO}), }, @@ -3319,6 +3347,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Bombirdier) .levelUpLearnset = sBombirdierLevelUpLearnset, .teachableLearnset = sBombirdierTeachableLearnset, + .eggMoveLearnset = sBombirdierEggMoveLearnset, }, #endif //P_FAMILY_BOMBIRDIER @@ -3372,6 +3401,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Finizen) .levelUpLearnset = sFinizenLevelUpLearnset, .teachableLearnset = sFinizenTeachableLearnset, + .eggMoveLearnset = sFinizenEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PALAFIN_ZERO}), }, @@ -3535,6 +3565,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Varoom) .levelUpLearnset = sVaroomLevelUpLearnset, .teachableLearnset = sVaroomTeachableLearnset, + .eggMoveLearnset = sVaroomEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_REVAVROOM}), }, @@ -3642,6 +3673,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Cyclizar) .levelUpLearnset = sCyclizarLevelUpLearnset, .teachableLearnset = sCyclizarTeachableLearnset, + .eggMoveLearnset = sCyclizarEggMoveLearnset, }, #endif //P_FAMILY_CYCLIZAR @@ -3696,6 +3728,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Orthworm) .levelUpLearnset = sOrthwormLevelUpLearnset, .teachableLearnset = sOrthwormTeachableLearnset, + .eggMoveLearnset = sOrthwormEggMoveLearnset, }, #endif //P_FAMILY_ORTHWORM @@ -3751,6 +3784,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Glimmet) .levelUpLearnset = sGlimmetLevelUpLearnset, .teachableLearnset = sGlimmetTeachableLearnset, + .eggMoveLearnset = sGlimmetEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_GLIMMORA}), }, @@ -3859,6 +3893,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Greavard) .levelUpLearnset = sGreavardLevelUpLearnset, .teachableLearnset = sGreavardTeachableLearnset, + .eggMoveLearnset = sGreavardEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 30, SPECIES_HOUNDSTONE}), }, @@ -3966,6 +4001,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Flamigo) .levelUpLearnset = sFlamigoLevelUpLearnset, .teachableLearnset = sFlamigoTeachableLearnset, + .eggMoveLearnset = sFlamigoEggMoveLearnset, }, #endif //P_FAMILY_FLAMIGO @@ -4020,6 +4056,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Cetoddle) .levelUpLearnset = sCetoddleLevelUpLearnset, .teachableLearnset = sCetoddleTeachableLearnset, + .eggMoveLearnset = sCetoddleEggMoveLearnset, .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_CETITAN}), }, @@ -4128,6 +4165,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Veluza) .levelUpLearnset = sVeluzaLevelUpLearnset, .teachableLearnset = sVeluzaTeachableLearnset, + .eggMoveLearnset = sVeluzaEggMoveLearnset, }, #endif //P_FAMILY_VELUZA @@ -4183,6 +4221,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Dondozo) .levelUpLearnset = sDondozoLevelUpLearnset, .teachableLearnset = sDondozoTeachableLearnset, + .eggMoveLearnset = sDondozoEggMoveLearnset, }, #endif //P_FAMILY_DONDOZO @@ -4237,6 +4276,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, + .eggMoveLearnset = sTatsugiriEggMoveLearnset, .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, @@ -4289,6 +4329,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, + .eggMoveLearnset = sTatsugiriEggMoveLearnset, .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, @@ -4341,6 +4382,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Tatsugiri) .levelUpLearnset = sTatsugiriLevelUpLearnset, .teachableLearnset = sTatsugiriTeachableLearnset, + .eggMoveLearnset = sTatsugiriEggMoveLearnset, .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable, }, #endif //P_FAMILY_TATSUGIRI @@ -4395,7 +4437,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_GreatTusk, .iconPalIndex = 0, FOOTPRINT(GreatTusk) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sGreatTuskLevelUpLearnset, .teachableLearnset = sGreatTuskTeachableLearnset, }, @@ -4422,7 +4464,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_PINK, - .speciesName = _("ScreamTail"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("ScreamTail", "Scream Tail"), .cryId = CRY_SCREAM_TAIL, .natDexNum = NATIONAL_DEX_SCREAM_TAIL, .categoryName = _("Paradox"), @@ -4451,7 +4493,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_ScreamTail, .iconPalIndex = 0, FOOTPRINT(ScreamTail) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sScreamTailLevelUpLearnset, .teachableLearnset = sScreamTailTeachableLearnset, }, @@ -4478,7 +4520,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .speciesName = _("BruteBonet"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("BruteBonet", "Brute Bonnet"), .cryId = CRY_BRUTE_BONNET, .natDexNum = NATIONAL_DEX_BRUTE_BONNET, .categoryName = _("Paradox"), @@ -4507,7 +4549,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_BruteBonnet, .iconPalIndex = 1, FOOTPRINT(BruteBonnet) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sBruteBonnetLevelUpLearnset, .teachableLearnset = sBruteBonnetTeachableLearnset, }, @@ -4536,7 +4578,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .speciesName = _("FluttrMane"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("FluttrMane", "Flutter Mane"), .cryId = CRY_FLUTTER_MANE, .natDexNum = NATIONAL_DEX_FLUTTER_MANE, .categoryName = _("Paradox"), @@ -4566,7 +4608,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_FlutterMane, .iconPalIndex = 2, FOOTPRINT(FlutterMane) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sFlutterManeLevelUpLearnset, .teachableLearnset = sFlutterManeTeachableLearnset, }, @@ -4593,7 +4635,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .speciesName = _("SlithrWing"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("SlithrWing", "Slither Wing"), .cryId = CRY_SLITHER_WING, .natDexNum = NATIONAL_DEX_SLITHER_WING, .categoryName = _("Paradox"), @@ -4621,7 +4663,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_SlitherWing, .iconPalIndex = 1, FOOTPRINT(SlitherWing) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sSlitherWingLevelUpLearnset, .teachableLearnset = sSlitherWingTeachableLearnset, }, @@ -4648,7 +4690,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .speciesName = _("SndyShocks"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("SndyShocks", "Sandy Shocks"), .cryId = CRY_SANDY_SHOCKS, .natDexNum = NATIONAL_DEX_SANDY_SHOCKS, .categoryName = _("Paradox"), @@ -4677,7 +4719,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_SandyShocks, .iconPalIndex = 0, FOOTPRINT(SandyShocks) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sSandyShocksLevelUpLearnset, .teachableLearnset = sSandyShocksTeachableLearnset, }, @@ -4704,7 +4746,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .speciesName = _("IronTreads"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronTreads", "Iron Treads"), .cryId = CRY_IRON_TREADS, .natDexNum = NATIONAL_DEX_IRON_TREADS, .categoryName = _("Paradox"), @@ -4733,7 +4775,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronTreads, .iconPalIndex = 1, FOOTPRINT(IronTreads) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronTreadsLevelUpLearnset, .teachableLearnset = sIronTreadsTeachableLearnset, }, @@ -4760,7 +4802,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_RED, - .speciesName = _("IronBundle"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronBundle", "Iron Bundle"), .cryId = CRY_IRON_BUNDLE, .natDexNum = NATIONAL_DEX_IRON_BUNDLE, .categoryName = _("Paradox"), @@ -4789,7 +4831,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronBundle, .iconPalIndex = 0, FOOTPRINT(IronBundle) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronBundleLevelUpLearnset, .teachableLearnset = sIronBundleTeachableLearnset, }, @@ -4845,7 +4887,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronHands, .iconPalIndex = 0, FOOTPRINT(IronHands) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronHandsLevelUpLearnset, .teachableLearnset = sIronHandsTeachableLearnset, }, @@ -4872,7 +4914,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .speciesName = _("IronJuguls"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronJuguls", "Iron Jugulis"), .cryId = CRY_IRON_JUGULIS, .natDexNum = NATIONAL_DEX_IRON_JUGULIS, .categoryName = _("Paradox"), @@ -4902,7 +4944,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronJugulis, .iconPalIndex = 0, FOOTPRINT(IronJugulis) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronJugulisLevelUpLearnset, .teachableLearnset = sIronJugulisTeachableLearnset, }, @@ -4959,7 +5001,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronMoth, .iconPalIndex = 3, FOOTPRINT(IronMoth) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronMothLevelUpLearnset, .teachableLearnset = sIronMothTeachableLearnset, }, @@ -4986,7 +5028,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("IronThorns"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronThorns", "Iron Thorns"), .cryId = CRY_IRON_THORNS, .natDexNum = NATIONAL_DEX_IRON_THORNS, .categoryName = _("Paradox"), @@ -5015,7 +5057,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronThorns, .iconPalIndex = 1, FOOTPRINT(IronThorns) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronThornsLevelUpLearnset, .teachableLearnset = sIronThornsTeachableLearnset, }, @@ -5072,6 +5114,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = FOOTPRINT(Frigibax) .levelUpLearnset = sFrigibaxLevelUpLearnset, .teachableLearnset = sFrigibaxTeachableLearnset, + .eggMoveLearnset = sFrigibaxEggMoveLearnset, .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARCTIBAX}), }, @@ -5233,7 +5276,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GIMMIGHOUL_ROAMING] = @@ -5287,7 +5330,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .levelUpLearnset = sGimmighoulLevelUpLearnset, .teachableLearnset = sGimmighoulTeachableLearnset, .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, - .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}), + .evolutions = EVOLUTION({EVO_ITEM_COUNT_999, ITEM_GIMMIGHOUL_COIN, SPECIES_GHOLDENGO}), }, [SPECIES_GHOLDENGO] = @@ -5585,7 +5628,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .speciesName = _("RoarngMoon"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("RoarngMoon", "Roaring Moon"), .cryId = CRY_ROARING_MOON, .natDexNum = NATIONAL_DEX_ROARING_MOON, .categoryName = _("Paradox"), @@ -5615,7 +5658,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_RoaringMoon, .iconPalIndex = 0, FOOTPRINT(RoaringMoon) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sRoaringMoonLevelUpLearnset, .teachableLearnset = sRoaringMoonTeachableLearnset, }, @@ -5642,7 +5685,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_WHITE, - .speciesName = _("IronVliant"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronVliant", "Iron Valiant"), .cryId = CRY_IRON_VALIANT, .natDexNum = NATIONAL_DEX_IRON_VALIANT, .categoryName = _("Paradox"), @@ -5670,7 +5713,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronValiant, .iconPalIndex = 1, FOOTPRINT(IronValiant) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronValiantLevelUpLearnset, .teachableLearnset = sIronValiantTeachableLearnset, }, @@ -5726,7 +5769,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, FOOTPRINT(Koraidon) .isLegendary = TRUE, - .isParadoxForm = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sKoraidonLevelUpLearnset, .teachableLearnset = sKoraidonTeachableLearnset, }, @@ -5782,7 +5825,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 2, FOOTPRINT(Miraidon) .isLegendary = TRUE, - .isParadoxForm = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sMiraidonLevelUpLearnset, .teachableLearnset = sMiraidonTeachableLearnset, }, @@ -5809,7 +5852,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BLUE, - .speciesName = _("WalkngWake"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("WalkngWake", "Walking Wake"), .cryId = CRY_WALKING_WAKE, .natDexNum = NATIONAL_DEX_WALKING_WAKE, .categoryName = _("Paradox"), @@ -5837,7 +5880,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_WalkingWake, .iconPalIndex = 2, FOOTPRINT(WalkingWake) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sWalkingWakeLevelUpLearnset, .teachableLearnset = sWalkingWakeTeachableLearnset, }, @@ -5864,7 +5907,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("IronLeaves"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronLeaves", "Iron Leaves"), .cryId = CRY_IRON_LEAVES, .natDexNum = NATIONAL_DEX_IRON_LEAVES, .categoryName = _("Paradox"), @@ -5892,7 +5935,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronLeaves, .iconPalIndex = 1, FOOTPRINT(IronLeaves) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronLeavesLevelUpLearnset, .teachableLearnset = sIronLeavesTeachableLearnset, }, @@ -5918,7 +5961,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Ptchageist"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Ptchageist", "Poltchageist"), .cryId = CRY_POLTCHAGEIST, .natDexNum = NATIONAL_DEX_POLTCHAGEIST, .categoryName = _("Matcha"), @@ -5971,7 +6014,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS), .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, .bodyColor = BODY_COLOR_GREEN, - .speciesName = _("Ptchageist"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Ptchageist", "Poltchageist"), .cryId = CRY_POLTCHAGEIST, .natDexNum = NATIONAL_DEX_POLTCHAGEIST, .categoryName = _("Matcha"), @@ -6242,7 +6285,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_TECHNICIAN }, .bodyColor = BODY_COLOR_BLACK, - .speciesName = _("Fezndipiti"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("Fezndipiti", "Fezandipiti"), .cryId = CRY_FEZANDIPITI, .natDexNum = NATIONAL_DEX_FEZANDIPITI, .categoryName = _("Retainer"), @@ -6278,66 +6321,68 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON -#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, iconpalette) \ - { \ - .baseHP = 80, \ - .baseAttack = 120, \ - .baseDefense = 84, \ - .baseSpeed = 110, \ - .baseSpAttack = 60, \ - .baseSpDefense = 96, \ - .types = MON_TYPES(TYPE_GRASS, type), \ - .catchRate = 5, \ - .expYield = 275, \ - .evYield_Attack = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = MON_EGG_GROUPS(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##Form1##MaskPokedexText, \ - .pokemonScale = 356, \ - .pokemonOffset = 17, \ - .trainerScale = 256, \ - .trainerOffset = 0, \ - .frontPic = gMonFrontPic_Ogerpon##Form1##Form2, \ - .frontPicSize = MON_COORDS_SIZE(64, 64), \ - .frontPicYOffset = 0, \ - .frontAnimFrames = sAnims_Ogerpon, \ - /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ - .backPic = gMonBackPic_Ogerpon##Form1##Form2, \ - .backPicSize = MON_COORDS_SIZE(64, 64), \ - .backPicYOffset = 0, \ - /*.backAnimId = BACK_ANIM_NONE,*/ \ - .palette = gMonPalette_Ogerpon##Form1##Form2, \ - .shinyPalette = gMonShinyPalette_Ogerpon##Form1##Form2, \ - .iconSprite = gMonIcon_Ogerpon##Form1##Mask, \ - .iconPalIndex = iconpalette, \ - FOOTPRINT(Ogerpon) \ - .levelUpLearnset = sOgerponLevelUpLearnset, \ - .teachableLearnset = sOgerponTeachableLearnset, \ - .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ - .formChangeTable = sOgerponFormChangeTable, \ - .isLegendary = TRUE, \ +#define OGERPON_SPECIES_INFO(Form1, Form2, type, ability, color, iconpalette, isTeraform) \ + { \ + .baseHP = 80, \ + .baseAttack = 120, \ + .baseDefense = 84, \ + .baseSpeed = 110, \ + .baseSpAttack = 60, \ + .baseSpDefense = 96, \ + .types = MON_TYPES(TYPE_GRASS, type), \ + .forceTeraType = type, \ + .catchRate = 5, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = MON_EGG_GROUPS(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##Form1##MaskPokedexText, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPic = gMonFrontPic_Ogerpon##Form1##Form2, \ + .frontPicSize = MON_COORDS_SIZE(64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Ogerpon, \ + /*.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,*/ \ + .backPic = gMonBackPic_Ogerpon##Form1##Form2, \ + .backPicSize = MON_COORDS_SIZE(64, 64), \ + .backPicYOffset = 0, \ + /*.backAnimId = BACK_ANIM_NONE,*/ \ + .palette = gMonPalette_Ogerpon##Form1##Form2, \ + .shinyPalette = gMonShinyPalette_Ogerpon##Form1##Form2, \ + .iconSprite = gMonIcon_Ogerpon##Form1##Mask, \ + .iconPalIndex = iconpalette, \ + FOOTPRINT(Ogerpon) \ + .levelUpLearnset = sOgerponLevelUpLearnset, \ + .teachableLearnset = sOgerponTeachableLearnset, \ + .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ + .formChangeTable = sOgerponFormChangeTable, \ + .isLegendary = TRUE, \ + .isTeraForm = isTeraform, \ } - [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(Teal, Mask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1), - [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(Wellspring, Mask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0), - [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(Hearthflame, Mask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0), - [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(Cornerstone, Mask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0), + [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(Teal, Mask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, 1, FALSE), + [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(Wellspring, Mask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, 0, FALSE), + [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(Hearthflame, Mask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, 0, FALSE), + [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(Cornerstone, Mask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, 0, FALSE), #if P_TERA_FORMS - [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(Teal, MaskTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 1), - [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(Wellspring, MaskTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0), - [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(Hearthflame, MaskTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0), - [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(Cornerstone, MaskTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0), + [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(Teal, MaskTera, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL_MASK, BODY_COLOR_GREEN, 1, TRUE), + [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(Wellspring, MaskTera, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING_MASK, BODY_COLOR_BLUE, 0, TRUE), + [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(Hearthflame, MaskTera, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK, BODY_COLOR_RED, 0, TRUE), + [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(Cornerstone, MaskTera, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK, BODY_COLOR_GRAY, 0, TRUE), #endif //P_TERA_FORMS #endif //P_FAMILY_OGERPON @@ -6363,7 +6408,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_BROWN, - .speciesName = _("GouginFire"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("GouginFire", "Gouging Fire"), .cryId = CRY_GOUGING_FIRE, .natDexNum = NATIONAL_DEX_GOUGING_FIRE, .categoryName = _("Paradox"), @@ -6392,7 +6437,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_GougingFire, .iconPalIndex = 5, FOOTPRINT(GougingFire) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sGougingFireLevelUpLearnset, .teachableLearnset = sGougingFireTeachableLearnset, }, @@ -6419,7 +6464,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_YELLOW, - .speciesName = _("RagingBolt"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("RagingBolt", "Raging Bolt"), .cryId = CRY_RAGING_BOLT, .natDexNum = NATIONAL_DEX_RAGING_BOLT, .categoryName = _("Paradox"), @@ -6448,7 +6493,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_RagingBolt, .iconPalIndex = 2, FOOTPRINT(RagingBolt) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sRagingBoltLevelUpLearnset, .teachableLearnset = sRagingBoltTeachableLearnset, }, @@ -6475,7 +6520,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .eggGroups = MON_EGG_GROUPS(EGG_GROUP_NO_EGGS_DISCOVERED), .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE, ABILITY_NONE }, .bodyColor = BODY_COLOR_GRAY, - .speciesName = _("IronBouldr"), + .speciesName = HANDLE_EXPANDED_SPECIES_NAME("IronBouldr", "Iron Boulder"), .cryId = CRY_IRON_BOULDER, .natDexNum = NATIONAL_DEX_IRON_BOULDER, .categoryName = _("Paradox"), @@ -6503,7 +6548,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronBoulder, .iconPalIndex = 5, FOOTPRINT(IronBoulder) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronBoulderLevelUpLearnset, .teachableLearnset = sIronBoulderTeachableLearnset, }, @@ -6559,7 +6604,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconSprite = gMonIcon_IronCrown, .iconPalIndex = 3, FOOTPRINT(IronCrown) - .isParadoxForm = TRUE, + .isParadox = TRUE, .levelUpLearnset = sIronCrownLevelUpLearnset, .teachableLearnset = sIronCrownTeachableLearnset, }, @@ -6575,6 +6620,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .baseSpAttack = 65, .baseSpDefense = 85, .types = MON_TYPES(TYPE_NORMAL), + .forceTeraType = TYPE_STELLAR, .catchRate = 255, .expYield = 90, .evYield_Defense = 1, @@ -6616,6 +6662,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, FOOTPRINT(TerapagosNormal) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6631,6 +6678,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .baseSpAttack = 105, .baseSpDefense = 110, .types = MON_TYPES(TYPE_NORMAL), + .forceTeraType = TYPE_STELLAR, .catchRate = 255, .expYield = 120, .evYield_Defense = 2, @@ -6673,6 +6721,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, FOOTPRINT(TerapagosTerastal) .isLegendary = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6688,6 +6737,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .baseSpAttack = 130, .baseSpDefense = 110, .types = MON_TYPES(TYPE_NORMAL), + .forceTeraType = TYPE_STELLAR, .catchRate = 255, .expYield = 140, .evYield_HP = 3, @@ -6728,6 +6778,8 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, FOOTPRINT(TerapagosStellar) .isLegendary = TRUE, + .isTeraForm = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sTerapagosLevelUpLearnset, .teachableLearnset = sTerapagosTeachableLearnset, .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, @@ -6785,6 +6837,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .iconPalIndex = 0, FOOTPRINT(Pecharunt) .isMythical = TRUE, + .isFrontierBanned = TRUE, .levelUpLearnset = sPecharuntLevelUpLearnset, .teachableLearnset = sPecharuntTeachableLearnset, }, diff --git a/src/data/text/follower_messages.h b/src/data/text/follower_messages.h new file mode 100644 index 000000000000..7678992f2241 --- /dev/null +++ b/src/data/text/follower_messages.h @@ -0,0 +1,301 @@ +extern const u8 EventScript_FollowerIsShivering[]; +extern const u8 EventScript_FollowerNostalgia[]; +extern const u8 EventScript_FollowerHopping[]; +extern const u8 EventScript_FollowerJumpOnPlayer[]; +extern const u8 EventScript_FollowerCuddling[]; +extern const u8 EventScript_FollowerShiverCuddling[]; +extern const u8 EventScript_FollowerGetCloser[]; +extern const u8 EventScript_FollowerPokingPlayer[]; +extern const u8 EventScript_FollowerLookAround[]; +extern const u8 EventScript_FollowerLookAway[]; +extern const u8 EventScript_FollowerLookAwayBark[]; +extern const u8 EventScript_FollowerLookAwayPoke[]; +extern const u8 EventScript_FollowerPokeGround[]; +extern const u8 EventScript_FollowerStartled[]; +extern const u8 EventScript_FollowerFastHopping[]; +extern const u8 EventScript_FollowerDizzy[]; +extern const u8 EventScript_FollowerLookAroundScared[]; +extern const u8 EventScript_FollowerDance[]; +extern const u8 EventScript_FollowerLookUp[]; + +// 'Generic', unconditional happy messages +static const u8 sHappyMsg00[] = _("{STR_VAR_1} began poking you in the\nstomach."); +static const u8 sHappyMsg01[] = _("{STR_VAR_1} is happy but shy."); +static const u8 sHappyMsg02[] = _("{STR_VAR_1} is coming along happily."); +static const u8 sHappyMsg03[] = _("{STR_VAR_1} is composed."); +static const u8 sHappyMsg04[] = _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!"); +static const u8 sHappyMsg05[] = _("{STR_VAR_1} is glowing with health."); +static const u8 sHappyMsg06[] = _("{STR_VAR_1} looks very happy."); +static const u8 sHappyMsg07[] = _("{STR_VAR_1} put in extra effort."); +static const u8 sHappyMsg08[] = _("{STR_VAR_1} is smelling the scents\nof the surrounding air."); +static const u8 sHappyMsg09[] = _("{STR_VAR_1} is jumping for joy!"); +static const u8 sHappyMsg10[] = _("{STR_VAR_1} is still feeling great!"); +static const u8 sHappyMsg11[] = _("Your POKéMON has caught the scent of\nsmoke."); +static const u8 sHappyMsg12[] = _("{STR_VAR_1} is poking at your belly."); +static const u8 sHappyMsg13[] = _("Your POKéMON stretched out its body\nand is relaxing."); +static const u8 sHappyMsg14[] = _("{STR_VAR_1} looks like it wants to\nlead!"); +static const u8 sHappyMsg15[] = _("{STR_VAR_1} is doing it's best to\nkeep up with you."); +static const u8 sHappyMsg16[] = _("{STR_VAR_1} is happily cuddling up\nto you!"); +static const u8 sHappyMsg17[] = _("{STR_VAR_1} is full of life!"); +static const u8 sHappyMsg18[] = _("{STR_VAR_1} seems to be very happy!"); +static const u8 sHappyMsg19[] = _("{STR_VAR_1} is so happy that it\ncan't stand still!"); +static const u8 sHappyMsg20[] = _("{STR_VAR_1} nodded slowly."); +static const u8 sHappyMsg21[] = _("{STR_VAR_1} is very eager!"); +static const u8 sHappyMsg22[] = _("{STR_VAR_1} is wandering around and\nlistening to the different sounds."); +static const u8 sHappyMsg23[] = _("{STR_VAR_1} looks very interested."); +static const u8 sHappyMsg24[] = _("{STR_VAR_1} is somehow forcing\nitself to keep going."); +static const u8 sHappyMsg25[] = _("{STR_VAR_1} gave you a sunny look!"); +static const u8 sHappyMsg26[] = _("{STR_VAR_1} gives you a happy look\nand a smile."); +static const u8 sHappyMsg27[] = _("Your POKéMON is smelling the scent\nof flowers."); +static const u8 sHappyMsg28[] = _("{STR_VAR_1} seems very happy to see\nyou!"); +static const u8 sHappyMsg29[] = _("{STR_VAR_1} faced this way and\ngrinned."); +static const u8 sHappyMsg30[] = _("{STR_VAR_1} happily cuddled up to\nyou!"); +// Conditional messages begin here, index 31 +static const u8 sHappyMsg31[] = _("Your POKéMON seems happy about the\ngreat weather."); +static const u8 sHappyMsg32[] = _("{STR_VAR_1} is very composed and\nsure of itself!"); + +const struct FollowerMsgInfo gFollowerHappyMessages[] = { + {sHappyMsg00, EventScript_FollowerPokingPlayer}, + {sHappyMsg01}, {sHappyMsg02}, {sHappyMsg03}, {sHappyMsg04}, {sHappyMsg05}, {sHappyMsg06}, {sHappyMsg07}, + {sHappyMsg08, EventScript_FollowerLookAround}, + {sHappyMsg09, EventScript_FollowerHopping}, + {sHappyMsg10}, {sHappyMsg11}, + {sHappyMsg12, EventScript_FollowerPokingPlayer}, + {sHappyMsg13, EventScript_FollowerLookAround}, + {sHappyMsg14}, {sHappyMsg15}, + {sHappyMsg16, EventScript_FollowerCuddling}, + {sHappyMsg17}, {sHappyMsg18}, + {sHappyMsg19, EventScript_FollowerFastHopping}, + {sHappyMsg20}, {sHappyMsg21}, {sHappyMsg22}, {sHappyMsg23}, {sHappyMsg24}, {sHappyMsg25}, {sHappyMsg26}, {sHappyMsg27}, {sHappyMsg28}, {sHappyMsg29}, + {sHappyMsg30, EventScript_FollowerCuddling}, + {sHappyMsg31}, {sHappyMsg32}, +}; + +// Unconditional neutral messages +static const u8 sNeutralMsg00[] = _("{STR_VAR_1} is steadily poking at\nthe ground."); +static const u8 sNeutralMsg01[] = _("{STR_VAR_1} is standing guard."); +static const u8 sNeutralMsg02[] = _("{STR_VAR_1} is staring patiently at\nnothing at all."); +static const u8 sNeutralMsg03[] = _("{STR_VAR_1} is wandering around."); +static const u8 sNeutralMsg04[] = _("Your POKéMON yawned loudly!"); +static const u8 sNeutralMsg05[] = _("Your POKéMON is looking around\nrestlessly."); +static const u8 sNeutralMsg06[] = _("{STR_VAR_1} is looking this way and\nsmiling."); +static const u8 sNeutralMsg07[] = _("{STR_VAR_1} is gazing around\nrestlessly."); +static const u8 sNeutralMsg08[] = _("{STR_VAR_1} let out a battle cry."); +static const u8 sNeutralMsg09[] = _("{STR_VAR_1} danced a wonderful\ndance!"); +static const u8 sNeutralMsg10[] = _("{STR_VAR_1} is very eager."); +static const u8 sNeutralMsg11[] = _("{STR_VAR_1} is staring intently into\nthe distance."); +static const u8 sNeutralMsg12[] = _("{STR_VAR_1} is on the lookout!"); +static const u8 sNeutralMsg13[] = _("{STR_VAR_1} looked off into the\ndistance and barked!"); + +const struct FollowerMsgInfo gFollowerNeutralMessages[] = { + {sNeutralMsg00, EventScript_FollowerPokeGround}, + {sNeutralMsg01}, + {sNeutralMsg02, EventScript_FollowerLookAway}, + {sNeutralMsg03, EventScript_FollowerLookAround}, + {sNeutralMsg04}, + {sNeutralMsg05, EventScript_FollowerLookAround}, + {sNeutralMsg06}, {sNeutralMsg07}, {sNeutralMsg08}, + {sNeutralMsg09, EventScript_FollowerDance}, + {sNeutralMsg10}, + {sNeutralMsg11, EventScript_FollowerLookAway}, + {sNeutralMsg12}, + {sNeutralMsg13, EventScript_FollowerLookAwayBark}, +}; + +// Unconditional sad messages +static const u8 sSadMsg00[] = _("{STR_VAR_1} is dizzy."); +static const u8 sSadMsg01[] = _("{STR_VAR_1} is stepping on your\nfeet!"); +static const u8 sSadMsg02[] = _("{STR_VAR_1} seems a little tired."); +// Conditional messages begin, index 3 +static const u8 sSadMsg03[] = _("{STR_VAR_1} is not happy."); +static const u8 sSadMsg04[] = _("{STR_VAR_1} is going to fall down!\n"); +static const u8 sSadMsg05[] = _("{STR_VAR_1} seems to be about to\nfall over!"); +static const u8 sSadMsg06[] = _("{STR_VAR_1} is trying very hard to\nkeep up with you…"); +static const u8 sSadMsg07[] = _("{STR_VAR_1} is nervous."); + +const struct FollowerMsgInfo gFollowerSadMessages[] = { + {sSadMsg00, EventScript_FollowerDizzy}, + {sSadMsg01}, {sSadMsg02}, + {sSadMsg03}, {sSadMsg04}, {sSadMsg05}, {sSadMsg06}, {sSadMsg07}, +}; + +// Unconditional upset messages +static const u8 sUpsetMsg00[] = _("{STR_VAR_1} seems unhappy somehow…"); +static const u8 sUpsetMsg01[] = _("{STR_VAR_1} is making an unhappy\nface."); +static const u8 sUpsetMsg02[] = _("…Your POKéMON seems a little\ncold."); +// Conditional messages, index 3 +static const u8 sUpsetMsg03[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."); + +const struct FollowerMsgInfo gFollowerUpsetMessages[] = { + {sUpsetMsg00}, {sUpsetMsg01}, + {sUpsetMsg02, EventScript_FollowerIsShivering}, + {sUpsetMsg03}, +}; + +// Unconditional angry messages +static const u8 sAngryMsg00[] = _("{STR_VAR_1} let out a roar!"); +static const u8 sAngryMsg01[] = _("{STR_VAR_1} is making a face like\nits angry!"); +static const u8 sAngryMsg02[] = _("{STR_VAR_1} seems to be angry for\nsome reason."); +static const u8 sAngryMsg03[] = _("Your POKéMON turned to face the\nother way, showing a defiant face."); +static const u8 sAngryMsg04[] = _("{STR_VAR_1} cried out."); + +const struct FollowerMsgInfo gFollowerAngryMessages[] = { + {sAngryMsg00}, {sAngryMsg01}, {sAngryMsg02}, + {sAngryMsg03, EventScript_FollowerLookAway}, + {sAngryMsg04}, +}; + +// Unconditional pensive messages +static const u8 sPensiveMsg00[] = _("{STR_VAR_1} is looking down\nsteadily."); +static const u8 sPensiveMsg01[] = _("{STR_VAR_1} is surveying the area."); +static const u8 sPensiveMsg02[] = _("{STR_VAR_1} is peering down."); +static const u8 sPensiveMsg03[] = _("{STR_VAR_1} is somehow fighting off\nsleep…"); +static const u8 sPensiveMsg04[] = _("{STR_VAR_1} seems to be wandering\naround."); +static const u8 sPensiveMsg05[] = _("{STR_VAR_1} is looking around\nabsentmindedly."); +static const u8 sPensiveMsg06[] = _("{STR_VAR_1} yawned very loudly!"); +static const u8 sPensiveMsg07[] = _("{STR_VAR_1} is relaxing comfortably."); +static const u8 sPensiveMsg08[] = _("{STR_VAR_1} is staring steadfastly\nat your face."); +static const u8 sPensiveMsg09[] = _("{STR_VAR_1} is staring intently at\nyour face."); +static const u8 sPensiveMsg10[] = _("{STR_VAR_1} is focusing its\nattention on you."); +static const u8 sPensiveMsg11[] = _("{STR_VAR_1} is staring into the\ndepths."); +static const u8 sPensiveMsg12[] = _("{STR_VAR_1} is sniffing at the\nground."); +static const u8 sPensiveMsg13[] = _("Your POKéMON is staring intently at\nnothing."); +static const u8 sPensiveMsg14[] = _("{STR_VAR_1} focused with a sharp\ngaze!"); +static const u8 sPensiveMsg15[] = _("{STR_VAR_1} is concentrating."); +static const u8 sPensiveMsg16[] = _("{STR_VAR_1} faced this way and\nnodded."); +static const u8 sPensiveMsg17[] = _("{STR_VAR_1} seems a bit nervous…"); +static const u8 sPensiveMsg18[] = _("{STR_VAR_1} is looking at your\nfootprints."); +static const u8 sPensiveMsg19[] = _("{STR_VAR_1} is staring straight into\nyour eyes."); + +const struct FollowerMsgInfo gFollowerPensiveMessages[] = { + {sPensiveMsg00}, + {sPensiveMsg01, EventScript_FollowerLookAround}, + {sPensiveMsg02}, {sPensiveMsg03}, {sPensiveMsg04}, + {sPensiveMsg05, EventScript_FollowerLookAround}, + {sPensiveMsg06}, {sPensiveMsg07}, {sPensiveMsg08}, {sPensiveMsg09}, {sPensiveMsg10}, + {sPensiveMsg11, EventScript_FollowerLookAway}, + {sPensiveMsg12, EventScript_FollowerPokeGround}, + {sPensiveMsg13, EventScript_FollowerLookAway}, + {sPensiveMsg14}, {sPensiveMsg15}, {sPensiveMsg16}, {sPensiveMsg17}, {sPensiveMsg18}, {sPensiveMsg19}, +}; + +// All 'love' messages are unconditional +static const u8 sLoveMsg00[] = _("{STR_VAR_1} suddenly started walking\ncloser!"); +static const u8 sLoveMsg01[] = _("{STR_VAR_1} cheeks are becoming\nrosy!"); +static const u8 sLoveMsg02[] = _("Woah! {STR_VAR_1} suddenly hugged\nyou!"); +static const u8 sLoveMsg03[] = _("Woah! {STR_VAR_1} is suddenly\nplayful!"); +static const u8 sLoveMsg04[] = _("{STR_VAR_1} is rubbing against your\nlegs!"); +static const u8 sLoveMsg05[] = _("{STR_VAR_1} blushes."); +static const u8 sLoveMsg06[] = _("Ah! {STR_VAR_1} cuddles you!"); +static const u8 sLoveMsg07[] = _("{STR_VAR_1} is regarding you with\nadoration!"); +static const u8 sLoveMsg08[] = _("{STR_VAR_1} got closer to you."); +static const u8 sLoveMsg09[] = _("{STR_VAR_1} is keeping close to your\nfeet."); + +const struct FollowerMsgInfo gFollowerLoveMessages[] = { + {sLoveMsg00, EventScript_FollowerGetCloser}, + {sLoveMsg01}, + {sLoveMsg02, EventScript_FollowerCuddling}, + {sLoveMsg03}, + {sLoveMsg04, EventScript_FollowerCuddling}, + {sLoveMsg05}, + {sLoveMsg06, EventScript_FollowerCuddling}, + {sLoveMsg07}, + {sLoveMsg08, EventScript_FollowerGetCloser}, + {sLoveMsg09}, +}; + +// Unconditional surprised messages +static const u8 sSurpriseMsg00[] = _("{STR_VAR_1} is in danger of falling\nover!"); +static const u8 sSurpriseMsg01[] = _("{STR_VAR_1} bumped into you!"); +static const u8 sSurpriseMsg02[] = _("{STR_VAR_1} doesn't seem to be used\nto its own name yet."); +static const u8 sSurpriseMsg03[] = _("{STR_VAR_1} is peering down."); +static const u8 sSurpriseMsg04[] = _("Your POKéMON stumbled and nearly\nfell!"); +static const u8 sSurpriseMsg05[] = _("{STR_VAR_1} feels something and is\nhowling!"); +static const u8 sSurpriseMsg06[] = _("{STR_VAR_1} seems refreshed!"); +static const u8 sSurpriseMsg07[] = _("{STR_VAR_1} suddenly turned around\nand started barking!"); +static const u8 sSurpriseMsg08[] = _("{STR_VAR_1} suddenly turned around!"); +static const u8 sSurpriseMsg09[] = _("Your POKéMON was surprised that you\nsuddenly spoke to it!"); +static const u8 sSurpriseMsg10[] = _("Sniff sniff, something smells really\ngood!"); +static const u8 sSurpriseMsg11[] = _("{STR_VAR_1} feels refreshed."); +static const u8 sSurpriseMsg12[] = _("{STR_VAR_1} is wobbling and seems\nabout to fall over."); +static const u8 sSurpriseMsg13[] = _("{STR_VAR_1} is in danger of falling\nover."); +static const u8 sSurpriseMsg14[] = _("{STR_VAR_1} is walking along\ncautiously."); +static const u8 sSurpriseMsg15[] = _("{STR_VAR_1} is getting tense with\nnervous energy."); +static const u8 sSurpriseMsg16[] = _("{STR_VAR_1} sensed something strange\nand was surprised!"); +static const u8 sSurpriseMsg17[] = _("{STR_VAR_1} is scared and snuggled\nup to you!"); +static const u8 sSurpriseMsg18[] = _("{STR_VAR_1} is feeling an unusual\npresence…"); +static const u8 sSurpriseMsg19[] = _("{STR_VAR_1} is getting tense with\nnervous energy."); +// Conditional messages, index 20 +static const u8 sSurpriseMsg20[] = _("{STR_VAR_1} seems to be very\nsurprised that it is raining!"); + +const struct FollowerMsgInfo gFollowerSurpriseMessages[] = { + {sSurpriseMsg00}, + {sSurpriseMsg01, EventScript_FollowerPokingPlayer}, + {sSurpriseMsg02}, {sSurpriseMsg03}, {sSurpriseMsg04}, {sSurpriseMsg05}, {sSurpriseMsg06}, + {sSurpriseMsg07, EventScript_FollowerLookAwayBark}, + {sSurpriseMsg08, EventScript_FollowerLookAway}, + {sSurpriseMsg09}, + {sSurpriseMsg10, EventScript_FollowerLookAround}, + {sSurpriseMsg11}, {sSurpriseMsg12}, {sSurpriseMsg13}, {sSurpriseMsg14}, {sSurpriseMsg15}, {sSurpriseMsg16}, + {sSurpriseMsg17, EventScript_FollowerCuddling}, + {sSurpriseMsg18}, + {sSurpriseMsg19, EventScript_FollowerLookAround}, + {sSurpriseMsg20}, +}; + +// Unconditional curious messages +static const u8 sCuriousMsg00[] = _("Your POKéMON is looking around\nrestlessly for something."); +static const u8 sCuriousMsg01[] = _("Your POKéMON wasn't watching where\nit was going and ran into you!"); +static const u8 sCuriousMsg02[] = _("Sniff, sniff! Is there something\nnearby?"); +static const u8 sCuriousMsg03[] = _("{STR_VAR_1} is rolling a pebble\naround playfully."); +static const u8 sCuriousMsg04[] = _("{STR_VAR_1} is wandering around and\nsearching for something."); +static const u8 sCuriousMsg05[] = _("{STR_VAR_1} is sniffing at you."); +static const u8 sCuriousMsg06[] = _("{STR_VAR_1} seems to be a little\nhesitant…"); + +const struct FollowerMsgInfo gFollowerCuriousMessages[] = { + {sCuriousMsg00, EventScript_FollowerLookAround}, + {sCuriousMsg01, EventScript_FollowerPokingPlayer}, + {sCuriousMsg02}, {sCuriousMsg03}, + {sCuriousMsg04, EventScript_FollowerLookAround}, + {sCuriousMsg05}, {sCuriousMsg06}, +}; + +// Unconditional music messages +static const u8 sMusicMsg00[] = _("{STR_VAR_1} is showing off its\nagility!"); +static const u8 sMusicMsg01[] = _("{STR_VAR_1} is moving around\nhappily!"); +static const u8 sMusicMsg02[] = _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!"); +static const u8 sMusicMsg03[] = _("{STR_VAR_1} is steadily keeping up\nwith you!"); +static const u8 sMusicMsg04[] = _("{STR_VAR_1} seems to want to play\nwith you."); +static const u8 sMusicMsg05[] = _("{STR_VAR_1} is happy skipping about."); +static const u8 sMusicMsg06[] = _("{STR_VAR_1} is singing and humming."); +static const u8 sMusicMsg07[] = _("{STR_VAR_1} is nipping at your feet!"); +static const u8 sMusicMsg08[] = _("{STR_VAR_1} turns around and looks\nat you."); +static const u8 sMusicMsg09[] = _("{STR_VAR_1} is working hard to show\noff its mighty power!"); +static const u8 sMusicMsg10[] = _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!"); +static const u8 sMusicMsg11[] = _("{STR_VAR_1} is cheerful!"); +static const u8 sMusicMsg12[] = _("{STR_VAR_1} is jumping around in a\ncarefree way!"); +static const u8 sMusicMsg13[] = _("Your POKéMON seems to be smelling a\nnostalgically familiar scent…"); +// Conditional music messages, index 14 +static const u8 sMusicMsg14[] = _("{STR_VAR_1} is very happy about the\nrain."); + +const struct FollowerMsgInfo gFollowerMusicMessages[] = { + {sMusicMsg00, EventScript_FollowerLookAround}, + {sMusicMsg01}, + {sMusicMsg02, EventScript_FollowerDance}, + {sMusicMsg03}, + {sMusicMsg04, EventScript_FollowerHopping}, + {sMusicMsg05, EventScript_FollowerHopping}, + {sMusicMsg06}, {sMusicMsg07}, {sMusicMsg08}, {sMusicMsg09}, + {sMusicMsg10, EventScript_FollowerDance}, + {sMusicMsg11}, + {sMusicMsg12, EventScript_FollowerHopping}, + {sMusicMsg13, EventScript_FollowerNostalgia}, + {sMusicMsg14} +}; + + +static const u8 sPoisonedMsg00[] = _("{STR_VAR_1} is shivering with the\neffects of being poisoned."); + +const struct FollowerMsgInfo gFollowerPoisonedMessages[] = { + {sPoisonedMsg00, EventScript_FollowerIsShivering}, +}; diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index b3128781c410..8b137891791f 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -1,11806 +1 @@ -static const struct TrainerMon sParty_Sawyer1[] = { - { - .lvl = 21, - .species = SPECIES_GEODUDE, - } -}; -static const struct TrainerMon sParty_GruntAquaHideout1[] = { - { - .lvl = 32, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout2[] = { - { - .lvl = 31, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 31, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout3[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout4[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern1[] = { - { - .lvl = 36, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern2[] = { - { - .lvl = 36, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern3[] = { - { - .lvl = 36, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Gabrielle1[] = { - { - .lvl = 26, - .species = SPECIES_SKITTY, - }, - { - .lvl = 26, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 26, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 26, - .species = SPECIES_LOTAD, - }, - { - .lvl = 26, - .species = SPECIES_SEEDOT, - }, - { - .lvl = 26, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_GruntPetalburgWoods[] = { - { - .lvl = 9, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_Marcel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_Alberto[] = { - { - .lvl = 30, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 30, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Ed[] = { - { - .lvl = 30, - .species = SPECIES_ZANGOOSE, - }, - { - .lvl = 30, - .species = SPECIES_SEVIPER, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern4[] = { - { - .lvl = 36, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Declan[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_GruntRusturfTunnel[] = { - { - .lvl = 11, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst1[] = { - { - .lvl = 27, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst2[] = { - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 27, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst3[] = { - { - .lvl = 26, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 26, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMuseum1[] = { - { - .lvl = 15, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMuseum2[] = { - { - .lvl = 14, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 14, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter1[] = { - { - .lvl = 32, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre1[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre2[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre3[] = { - { - .lvl = 30, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 30, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst4[] = { - { - .lvl = 28, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout5[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout6[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Fredrick[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Matt[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_Zander[] = { - { - .lvl = 31, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_ShellyWeatherInstitute[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_ShellySeafloorCavern[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_SHARPEDO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Archie[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Leah[] = { - { - .lvl = 31, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Daisy[] = { - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose1[] = { - { - .lvl = 14, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Felix[] = { - { - .lvl = 43, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_NONE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 43, - .species = SPECIES_CLAYDOL, - .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Violet[] = { - { - .lvl = 26, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 26, - .species = SPECIES_GLOOM, - } -}; - -static const struct TrainerMon sParty_Rose2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Rose5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Dusty1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 23, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Chip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_BALTOY, - .moves = {MOVE_PSYBEAM, MOVE_SELF_DESTRUCT, MOVE_SANDSTORM, MOVE_ANCIENT_POWER} - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Foster[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 25, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 25, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 27, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 30, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 33, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_Dusty5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 36, - .species = SPECIES_SANDSLASH, - .moves = {MOVE_DIG, MOVE_SLASH, MOVE_SAND_ATTACK, MOVE_POISON_STING} - } -}; - -static const struct TrainerMon sParty_GabbyAndTy1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy2[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy3[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 30, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 30, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy4[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy5[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 36, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 36, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_GabbyAndTy6[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 39, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SONIC_BOOM, MOVE_THUNDER_WAVE, MOVE_METAL_SOUND, MOVE_THUNDERBOLT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 39, - .species = SPECIES_EXPLOUD, - .moves = {MOVE_ASTONISH, MOVE_STOMP, MOVE_SUPERSONIC, MOVE_HYPER_VOICE} - } -}; - -static const struct TrainerMon sParty_Lola1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_AZURILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_AZURILL, - } -}; - -static const struct TrainerMon sParty_Austina[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Gwen[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lola5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AZUMARILL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Ricky1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 13, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_SAND_ATTACK, MOVE_HEADBUTT, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Simon[] = { - { - .lvl = 12, - .species = SPECIES_AZURILL, - }, - { - .lvl = 12, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Charlie[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Ricky2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Ricky5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_SAND_ATTACK, MOVE_PIN_MISSILE, MOVE_TAIL_WHIP, MOVE_SURF} - } -}; - -static const struct TrainerMon sParty_Randall[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SWELLOW, - .heldItem = ITEM_NONE, - .moves = {MOVE_QUICK_ATTACK, MOVE_AGILITY, MOVE_WING_ATTACK, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Parker[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_DIZZY_PUNCH, MOVE_FOCUS_PUNCH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_George[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_SLAKOTH, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SLACK_OFF, MOVE_COUNTER, MOVE_SHADOW_BALL, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Berke[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_VIGOROTH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_ENERGY, MOVE_SLASH, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Braxton[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_SWELLOW, - .moves = {MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, MOVE_WING_ATTACK, MOVE_ENDEAVOR} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_TRAPINCH, - .moves = {MOVE_BITE, MOVE_DIG, MOVE_FEINT_ATTACK, MOVE_SAND_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_WAILMER, - .moves = {MOVE_ROLLOUT, MOVE_WHIRLPOOL, MOVE_ASTONISH, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_MAGNETON, - .moves = {MOVE_THUNDERBOLT, MOVE_SUPERSONIC, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 28, - .species = SPECIES_SHIFTRY, - .moves = {MOVE_GIGA_DRAIN, MOVE_FEINT_ATTACK, MOVE_DOUBLE_TEAM, MOVE_SWAGGER} - } -}; - -static const struct TrainerMon sParty_Vincent[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 44, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Leroy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 46, - .species = SPECIES_MAWILE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 46, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Wilton1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Edgar[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_CACTURNE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Albert[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_MUK, - } -}; - -static const struct TrainerMon sParty_Samuel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_MAWILE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Vito[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_DODRIO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_ELECTRODE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_Owen[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_KECLEON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_WAILORD, - } -}; - -static const struct TrainerMon sParty_Wilton2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Wilton5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Warren[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 33, - .species = SPECIES_LUDICOLO, - } -}; - -static const struct TrainerMon sParty_Mary[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_NONE, - .moves = {MOVE_FEINT_ATTACK, MOVE_SHOCK_WAVE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Alexia[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_WIGGLYTUFF, - .heldItem = ITEM_NONE, - .moves = {MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_SHADOW_BALL, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jody[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 26, - .species = SPECIES_ZANGOOSE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SWORDS_DANCE, MOVE_SLASH, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Wendy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_MAWILE, - .moves = {MOVE_BATON_PASS, MOVE_FEINT_ATTACK, MOVE_FAKE_TEARS, MOVE_BITE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MEGA_DRAIN, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_LEECH_SEED} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - .moves = {MOVE_FLY, MOVE_WATER_GUN, MOVE_MIST, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Keira[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Brooke1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Jennifer[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 30, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Hope[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Shannon[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_CLAYDOL, - } -}; - -static const struct TrainerMon sParty_Michelle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_TORKOAL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_LUDICOLO, - } -}; - -static const struct TrainerMon sParty_Caroline[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SKARMORY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Julie[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_NINETALES, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 42, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Brooke2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Brooke5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 34, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Patricia[] = { - { - .lvl = 41, - .species = SPECIES_BANETTE, - }, - { - .lvl = 41, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Kindra[] = { - { - .lvl = 30, - .species = SPECIES_DUSKULL, - }, - { - .lvl = 30, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Tammy[] = { - { - .lvl = 29, - .species = SPECIES_DUSKULL, - }, - { - .lvl = 29, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Valerie1[] = { - { - .lvl = 32, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Tasha[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 32, - .species = SPECIES_SHUPPET, - } -}; - -static const struct TrainerMon sParty_Valerie2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Valerie3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_SPOINK, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Valerie4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_SPOINK, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_SABLEYE, - } -}; - -static const struct TrainerMon sParty_Valerie5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_DUSKULL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_SABLEYE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 42, - .species = SPECIES_GRUMPIG, - } -}; - -static const struct TrainerMon sParty_Cindy1[] = { - { - .lvl = 7, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Daphne[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_ATTRACT, MOVE_SAFEGUARD, MOVE_TAKE_DOWN, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter2[] = { - { - .lvl = 26, - .species = SPECIES_MIGHTYENA, - }, - { - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .lvl = 30, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Cindy2[] = { - { - .lvl = 11, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Brianna[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 40, - .species = SPECIES_SEAKING, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Naomi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 45, - .species = SPECIES_ROSELIA, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy3[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy4[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy5[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Cindy6[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} - } -}; - -static const struct TrainerMon sParty_Melissa[] = { - { - .lvl = 21, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Sheila[] = { - { - .lvl = 21, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Shirley[] = { - { - .lvl = 21, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jessica1[] = { - { - .lvl = 29, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .lvl = 29, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Connie[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Bridget[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 40, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Olivia[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 35, - .species = SPECIES_CLAMPERL, - .moves = {MOVE_IRON_DEFENSE, MOVE_WHIRLPOOL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_CORPHISH, - .moves = {MOVE_TAUNT, MOVE_CRABHAMMER, MOVE_WATER_PULSE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_LOMBRE, - .moves = {MOVE_UPROAR, MOVE_FURY_SWIPES, MOVE_FAKE_OUT, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_Tiffany[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Jessica2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Jessica5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 44, - .species = SPECIES_KECLEON, - .moves = {MOVE_BIND, MOVE_LICK, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 44, - .species = SPECIES_SEVIPER, - .moves = {MOVE_POISON_TAIL, MOVE_SCREECH, MOVE_GLARE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Winston1[] = { - { - .lvl = 7, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Mollie[] = { - { - .lvl = 33, - .species = SPECIES_WHISCASH, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Garret[] = { - { - .lvl = 45, - .species = SPECIES_AZUMARILL, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston2[] = { - { - .lvl = 27, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston3[] = { - { - .lvl = 30, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston4[] = { - { - .lvl = 33, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Winston5[] = { - { - .lvl = 36, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NUGGET, - .moves = {MOVE_FURY_SWIPES, MOVE_MUD_SPORT, MOVE_ODOR_SLEUTH, MOVE_SAND_ATTACK} - } -}; - -static const struct TrainerMon sParty_Steve1[] = { - { - .lvl = 19, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Thalia1[] = { - { - .lvl = 25, - .species = SPECIES_WAILMER, - }, - { - .lvl = 25, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Mark[] = { - { - .lvl = 31, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_GruntMtChimney1[] = { - { - .lvl = 20, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Steve2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_LAIRON, - } -}; - -static const struct TrainerMon sParty_Steve3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_Steve4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_RHYHORN, - } -}; - -static const struct TrainerMon sParty_Steve5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_AGGRON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_RHYDON, - } -}; - -static const struct TrainerMon sParty_Luis[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Dominik[] = { - { - .lvl = 26, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Douglas[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Darrin[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Tony1[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Jerome[] = { - { - .lvl = 26, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Matthew[] = { - { - .lvl = 26, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_David[] = { - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 25, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Spencer[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Roland[] = { - { - .lvl = 34, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Nolen[] = { - { - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Stan[] = { - { - .lvl = 34, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Barry[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Dean[] = { - { - .lvl = 31, - .species = SPECIES_CARVANHA, - }, - { - .lvl = 31, - .species = SPECIES_WINGULL, - }, - { - .lvl = 31, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Rodney[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Richard[] = { - { - .lvl = 34, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Herman[] = { - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Santiago[] = { - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - }, - { - .lvl = 33, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Gilbert[] = { - { - .lvl = 34, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Franklin[] = { - { - .lvl = 34, - .species = SPECIES_SEALEO, - } -}; - -static const struct TrainerMon sParty_Kevin[] = { - { - .lvl = 34, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Jack[] = { - { - .lvl = 34, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Dudley[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Chad[] = { - { - .lvl = 33, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 33, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Tony2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tony5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_STARMIE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Takao[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 13, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Hitoshi[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 32, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 32, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Kiyo[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Koichi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 28, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 19, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Nob2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 27, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 31, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Nob5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOP, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOKE, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHOKE, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 33, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_BLACK_BELT - } -}; - -static const struct TrainerMon sParty_Yuji[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Daisuke[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 19, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Atsushi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Kirk[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ELECTRIKE, - .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SPARK, MOVE_LEER} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLTORB, - .moves = {MOVE_CHARGE, MOVE_SHOCK_WAVE, MOVE_SCREECH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout7[] = { - { - .lvl = 31, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 31, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntAquaHideout8[] = { - { - .lvl = 32, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Shawn[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Fernando1[] = { - { - .lvl = 30, - .species = SPECIES_ELECTRIKE, - }, - { - .lvl = 30, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Dalton1[] = { - { - .lvl = 15, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 15, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_Dalton2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WHISMUR, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Dalton3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Dalton4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Dalton5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_MAGNETON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_EXPLOUD, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Cole[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jeff[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 22, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 22, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Axle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Jace[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Keegan[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 23, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Bernie1[] = { - { - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .lvl = 18, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Bernie2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Bernie3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Bernie4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Bernie5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_MAGCARGO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Drew[] = { - { - .lvl = 23, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} - } -}; - -static const struct TrainerMon sParty_Beau[] = { - { - .lvl = 21, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - }, - { - .lvl = 21, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_POISON_STING, MOVE_SAND_ATTACK, MOVE_SCRATCH, MOVE_DIG} - }, - { - .lvl = 21, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Larry[] = { - { - .lvl = 18, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Shane[] = { - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - }, - { - .lvl = 18, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Justin[] = { - { - .lvl = 24, - .species = SPECIES_KECLEON, - } -}; - -static const struct TrainerMon sParty_Ethan1[] = { - { - .lvl = 20, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 20, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Autumn[] = { - { - .lvl = 21, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Travis[] = { - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Ethan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Ethan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Ethan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_LINOONE, - } -}; - -static const struct TrainerMon sParty_Ethan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_LINOONE, - } -}; - -static const struct TrainerMon sParty_Brent[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 26, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Donald[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_SILCOON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 24, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Taylor[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_CASCOON, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_DUSTOX, - } -}; - -static const struct TrainerMon sParty_Jeffrey1[] = { - { - .lvl = 27, - .species = SPECIES_SURSKIT, - }, - { - .lvl = 27, - .species = SPECIES_SURSKIT, - }, - { - .lvl = 27, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Derek[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 16, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 16, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Jeffrey2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SURSKIT, - } -}; - -static const struct TrainerMon sParty_Jeffrey3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 34, - .species = SPECIES_MASQUERAIN, - } -}; - -static const struct TrainerMon sParty_Jeffrey4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MASQUERAIN, - } -}; - -static const struct TrainerMon sParty_Jeffrey5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_SURSKIT, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_DUSTOX, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_SURSKIT, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_MASQUERAIN, - .heldItem = ITEM_SILVER_POWDER - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_BEAUTIFLY, - .heldItem = ITEM_NONE - } -}; - -static const struct TrainerMon sParty_Edward[] = { - { - .lvl = 15, - .species = SPECIES_ABRA, - .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Preston[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Virgil[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Blake[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_William[] = { - { - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .lvl = 26, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Joshua[] = { - { - .lvl = 41, - .species = SPECIES_KADABRA, - }, - { - .lvl = 41, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron1[] = { - { - .lvl = 31, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 33, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 33, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 38, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_SOLROCK, - } -}; - -static const struct TrainerMon sParty_Cameron5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_SOLROCK, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_ALAKAZAM, - } -}; - -static const struct TrainerMon sParty_Jaclyn[] = { - { - .lvl = 16, - .species = SPECIES_ABRA, - .moves = {MOVE_HIDDEN_POWER, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Hannah[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Samantha[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Maura[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Kayla[] = { - { - .lvl = 26, - .species = SPECIES_WOBBUFFET, - }, - { - .lvl = 26, - .species = SPECIES_NATU, - }, - { - .lvl = 26, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Alexis[] = { - { - .lvl = 41, - .species = SPECIES_KIRLIA, - }, - { - .lvl = 41, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Jacki1[] = { - { - .lvl = 30, - .species = SPECIES_KADABRA, - }, - { - .lvl = 30, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_KADABRA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 40, - .species = SPECIES_LUNATONE, - } -}; - -static const struct TrainerMon sParty_Jacki5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_LUNATONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_ALAKAZAM, - } -}; - -static const struct TrainerMon sParty_Walter1[] = { - { - .lvl = 29, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Micah[] = { - { - .lvl = 44, - .species = SPECIES_MANECTRIC, - }, - { - .lvl = 44, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Thomas[] = { - { - .lvl = 45, - .species = SPECIES_ZANGOOSE, - } -}; - -static const struct TrainerMon sParty_Walter2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Walter3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} - } -}; - -static const struct TrainerMon sParty_Walter4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Walter5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_LINOONE, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_ODOR_SLEUTH, MOVE_FURY_SWIPES} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_GOLDUCK, - .moves = {MOVE_FURY_SWIPES, MOVE_DISABLE, MOVE_CONFUSION, MOVE_PSYCH_UP} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_QUICK_ATTACK, MOVE_SPARK, MOVE_ODOR_SLEUTH, MOVE_ROAR} - } -}; - -static const struct TrainerMon sParty_Sidney[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_MIGHTYENA, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_DOUBLE_EDGE, MOVE_SAND_ATTACK, MOVE_CRUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_SHIFTRY, - .heldItem = ITEM_NONE, - .moves = {MOVE_TORMENT, MOVE_DOUBLE_TEAM, MOVE_SWAGGER, MOVE_EXTRASENSORY} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_CACTURNE, - .heldItem = ITEM_NONE, - .moves = {MOVE_LEECH_SEED, MOVE_FEINT_ATTACK, MOVE_NEEDLE_ARM, MOVE_COTTON_SPORE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_FACADE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_ABSOL, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE, MOVE_SWORDS_DANCE, MOVE_SLASH} - } -}; - -static const struct TrainerMon sParty_Phoebe[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_DUSCLOPS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_PUNCH, MOVE_CONFUSE_RAY, MOVE_CURSE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 49, - .species = SPECIES_BANETTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_GRUDGE, MOVE_WILL_O_WISP, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_SABLEYE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_DOUBLE_TEAM, MOVE_NIGHT_SHADE, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 49, - .species = SPECIES_BANETTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_FACADE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_DUSCLOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SHADOW_BALL, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Glacia[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_HAIL, MOVE_ICE_BALL} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 50, - .species = SPECIES_GLALIE, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_ICY_WIND, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ATTRACT, MOVE_DOUBLE_EDGE, MOVE_HAIL, MOVE_BLIZZARD} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_GLALIE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHADOW_BALL, MOVE_EXPLOSION, MOVE_HAIL, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_WALREIN, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SURF, MOVE_BODY_SLAM, MOVE_ICE_BEAM, MOVE_SHEER_COLD} - } -}; - -static const struct TrainerMon sParty_Drake[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 52, - .species = SPECIES_SHELGON, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROCK_TOMB, MOVE_DRAGON_CLAW, MOVE_PROTECT, MOVE_DOUBLE_EDGE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 54, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE, - .moves = {MOVE_DOUBLE_EDGE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 53, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_NONE, - .moves = {MOVE_SMOKESCREEN, MOVE_DRAGON_DANCE, MOVE_SURF, MOVE_BODY_SLAM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 53, - .species = SPECIES_FLYGON, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_DRAGON_BREATH, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SALAMENCE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FLAMETHROWER, MOVE_DRAGON_CLAW, MOVE_ROCK_SLIDE, MOVE_CRUNCH} - } -}; - -static const struct TrainerMon sParty_Roxanne1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 12, - .species = SPECIES_GEODUDE, - .heldItem = ITEM_NONE, - .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 12, - .species = SPECIES_GEODUDE, - .heldItem = ITEM_NONE, - .moves = {MOVE_TACKLE, MOVE_DEFENSE_CURL, MOVE_ROCK_THROW, MOVE_ROCK_TOMB} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 15, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_BLOCK, MOVE_HARDEN, MOVE_TACKLE, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Brawly1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 16, - .species = SPECIES_MACHOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_KARATE_CHOP, MOVE_LOW_KICK, MOVE_SEISMIC_TOSS, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 16, - .species = SPECIES_MEDITITE, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 19, - .species = SPECIES_MAKUHITA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_ARM_THRUST, MOVE_VITAL_THROW, MOVE_REVERSAL, MOVE_BULK_UP} - } -}; - -static const struct TrainerMon sParty_Wattson1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 20, - .species = SPECIES_VOLTORB, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_SPARK, MOVE_SELF_DESTRUCT, MOVE_SHOCK_WAVE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 20, - .species = SPECIES_ELECTRIKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_LEER, MOVE_QUICK_ATTACK, MOVE_HOWL} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 22, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUPERSONIC, MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_SONIC_BOOM} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 24, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_HOWL} - } -}; - -static const struct TrainerMon sParty_Flannery1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 24, - .species = SPECIES_NUMEL, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 24, - .species = SPECIES_SLUGMA, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_SMOG, MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 26, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_NONE, - .moves = {MOVE_OVERHEAT, MOVE_TACKLE, MOVE_SUNNY_DAY, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 29, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_BODY_SLAM, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Norman1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_PSYBEAM, MOVE_FACADE, MOVE_ENCORE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_VIGOROTH, - .heldItem = ITEM_NONE, - .moves = {MOVE_SLASH, MOVE_FACADE, MOVE_ENCORE, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 29, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SLASH, MOVE_BELLY_DRUM, MOVE_FACADE, MOVE_HEADBUTT} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 31, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_COUNTER, MOVE_YAWN, MOVE_FACADE, MOVE_FEINT_ATTACK} - } -}; - -static const struct TrainerMon sParty_Winona1[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 29, - .species = SPECIES_SWABLU, - .heldItem = ITEM_NONE, - .moves = {MOVE_PERISH_SONG, MOVE_MIRROR_MOVE, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 29, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_SYNTHESIS} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_GUN, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 31, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_SAND_ATTACK, MOVE_FURY_ATTACK, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE, MOVE_AERIAL_ACE} - } -}; - -static const struct TrainerMon sParty_TateAndLiza1[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 41, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 41, - .species = SPECIES_XATU, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_SUNNY_DAY, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 42, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 42, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_Juan1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 41, - .species = SPECIES_LUVDISC, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_ATTRACT, MOVE_SWEET_KISS, MOVE_FLAIL} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 41, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_AMNESIA, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 43, - .species = SPECIES_SEALEO, - .heldItem = ITEM_NONE, - .moves = {MOVE_ENCORE, MOVE_BODY_SLAM, MOVE_AURORA_BEAM, MOVE_WATER_PULSE} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 43, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_LEER} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 46, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Jerry1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 9, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Ted[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 17, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Paul[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_ODDISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 15, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Jerry2[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_RALTS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Jerry3[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Jerry4[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Jerry5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_KIRLIA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_BANETTE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 34, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Karen1[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 9, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Georgia[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 16, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 16, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Karen2[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_WHISMUR, - } -}; - -static const struct TrainerMon sParty_Karen3[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Karen4[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Karen5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_EXPLOUD, - } -}; - -static const struct TrainerMon sParty_KateAndJoy[] = { - { - .lvl = 30, - .species = SPECIES_SPINDA, - .moves = {MOVE_HYPNOSIS, MOVE_PSYBEAM, MOVE_DIZZY_PUNCH, MOVE_TEETER_DANCE} - }, - { - .lvl = 32, - .species = SPECIES_SLAKING, - .moves = {MOVE_FOCUS_PUNCH, MOVE_YAWN, MOVE_SLACK_OFF, MOVE_FEINT_ATTACK} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg1[] = { - { - .lvl = 15, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .lvl = 17, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_LINOONE, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MAKUHITA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AnnaAndMeg5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_LINOONE, - .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HEADBUTT, MOVE_ODOR_SLEUTH} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 38, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_TACKLE, MOVE_FOCUS_ENERGY, MOVE_ARM_THRUST, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Victor[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_TAILLOW, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel1[] = { - { - .lvl = 15, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Colton[] = { - { - .lvl = 22, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 36, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 40, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 12, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 30, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - }, - { - .lvl = 42, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK, MOVE_HEAL_BELL} - } -}; - -static const struct TrainerMon sParty_Miguel2[] = { - { - .lvl = 29, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel3[] = { - { - .lvl = 32, - .species = SPECIES_SKITTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel4[] = { - { - .lvl = 35, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Miguel5[] = { - { - .lvl = 38, - .species = SPECIES_DELCATTY, - .heldItem = ITEM_SITRUS_BERRY - } -}; - -static const struct TrainerMon sParty_Victoria[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 17, - .species = SPECIES_ROSELIA, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Vanessa[] = { - { - .lvl = 30, - .species = SPECIES_PIKACHU, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Bethany[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 35, - .species = SPECIES_AZURILL, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_MARILL, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_AZUMARILL, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel1[] = { - { - .lvl = 14, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .lvl = 14, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Isabel5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_SITRUS_BERRY - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_MINUN, - .heldItem = ITEM_SITRUS_BERRY - } -}; - -static const struct TrainerMon sParty_Timothy1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 27, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Timothy2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 33, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 36, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 39, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Timothy5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 42, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_ARM_THRUST, MOVE_BELLY_DRUM, MOVE_SAND_ATTACK, MOVE_DIG} - } -}; - -static const struct TrainerMon sParty_Vicky[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 18, - .species = SPECIES_MEDITITE, - .moves = {MOVE_HIGH_JUMP_KICK, MOVE_MEDITATE, MOVE_CONFUSION, MOVE_DETECT} - } -}; - -static const struct TrainerMon sParty_Shelby1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 21, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 21, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Shelby2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 30, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Shelby3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 33, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Shelby4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 36, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 36, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Shelby5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 39, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 39, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Calvin1[] = { - { - .lvl = 5, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_Billy[] = { - { - .lvl = 5, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 7, - .species = SPECIES_SEEDOT, - } -}; - -static const struct TrainerMon sParty_Josh[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 10, - .species = SPECIES_GEODUDE, - .moves = {MOVE_TACKLE, MOVE_NONE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Tommy[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Joey[] = { - { - .lvl = 9, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Ben[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 17, - .species = SPECIES_ZIGZAGOON, - .moves = {MOVE_HEADBUTT, MOVE_SAND_ATTACK, MOVE_GROWL, MOVE_THUNDERBOLT} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 17, - .species = SPECIES_GULPIN, - .moves = {MOVE_AMNESIA, MOVE_SLUDGE, MOVE_YAWN, MOVE_POUND} - } -}; - -static const struct TrainerMon sParty_Quincy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SLAKING, - .moves = {MOVE_ATTRACT, MOVE_ICE_BEAM, MOVE_THUNDERBOLT, MOVE_FLAMETHROWER} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_DUSCLOPS, - .moves = {MOVE_SKILL_SWAP, MOVE_PROTECT, MOVE_WILL_O_WISP, MOVE_TOXIC} - } -}; - -static const struct TrainerMon sParty_Katelynn[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_SKILL_SWAP, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 43, - .species = SPECIES_SLAKING, - .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK} - } -}; - -static const struct TrainerMon sParty_Jaylen[] = { - { - .lvl = 19, - .species = SPECIES_TRAPINCH, - } -}; - -static const struct TrainerMon sParty_Dillon[] = { - { - .lvl = 19, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Calvin2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 29, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Calvin5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 32, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_Eddie[] = { - { - .lvl = 14, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 16, - .species = SPECIES_ZIGZAGOON, - } -}; - -static const struct TrainerMon sParty_Allen[] = { - { - .lvl = 4, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 3, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Timmy[] = { - { - .lvl = 15, - .species = SPECIES_ARON, - }, - { - .lvl = 13, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_Wallace[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_WAILORD, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_SPOUT, MOVE_DOUBLE_EDGE, MOVE_BLIZZARD} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_TENTACRUEL, - .heldItem = ITEM_NONE, - .moves = {MOVE_TOXIC, MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_LUDICOLO, - .heldItem = ITEM_NONE, - .moves = {MOVE_GIGA_DRAIN, MOVE_SURF, MOVE_LEECH_SEED, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_SURF, MOVE_AMNESIA, MOVE_HYPER_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_GYARADOS, - .heldItem = ITEM_NONE, - .moves = {MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE, MOVE_HYPER_BEAM, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_MILOTIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_RECOVER, MOVE_SURF, MOVE_ICE_BEAM, MOVE_TOXIC} - } -}; - -static const struct TrainerMon sParty_Andrew[] = { - { - .lvl = 5, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 10, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 15, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Ivan[] = { - { - .lvl = 5, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 6, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 7, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Claude[] = { - { - .lvl = 16, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 17, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 18, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Elliot1[] = { - { - .lvl = 10, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 7, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 10, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Ned[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 11, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Dale[] = { - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 14, - .species = SPECIES_WAILMER, - }, - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 14, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Nolan[] = { - { - .lvl = 19, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Barny[] = { - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 25, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Wade[] = { - { - .lvl = 16, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Carter[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Elliot2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 26, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_CARVANHA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_TENTACRUEL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Elliot5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_SHARPEDO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GYARADOS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Ronald[] = { - { - .lvl = 19, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 21, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 23, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 26, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 30, - .species = SPECIES_GYARADOS, - }, - { - .lvl = 35, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Jacob[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 6, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 6, - .species = SPECIES_VOLTORB, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Anthony[] = { - { - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 14, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin1[] = { - { - .lvl = 16, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Benjamin4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Benjamin5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Abigail1[] = { - { - .lvl = 16, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Jasmine[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 14, - .species = SPECIES_MAGNEMITE, - }, - { - .lvl = 6, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Abigail2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Abigail3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Abigail4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Abigail5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_MAGNETON, - } -}; - -static const struct TrainerMon sParty_Dylan1[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Dylan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Dylan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Maria1[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 28, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 31, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Maria4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Maria5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Camden[] = { - { - .lvl = 33, - .species = SPECIES_STARYU, - }, - { - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Demetrius[] = { - { - .lvl = 25, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 25, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_Isaiah1[] = { - { - .lvl = 35, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo1[] = { - { - .lvl = 33, - .species = SPECIES_STARYU, - }, - { - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Chase[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 42, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Isaiah4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Isaiah5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 48, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Isobel[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Donny[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(19, 19, 19, 19, 19, 19), - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Talia[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn1[] = { - { - .lvl = 35, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Allison[] = { - { - .lvl = 27, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 33, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 42, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Katelyn4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Katelyn5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 48, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Nicolas1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 37, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 41, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 41, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 44, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 44, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_BAGON, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 46, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Nicolas5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_NONE - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 49, - .species = SPECIES_SHELGON, - .heldItem = ITEM_DRAGON_FANG - } -}; - -static const struct TrainerMon sParty_Aaron[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 34, - .species = SPECIES_BAGON, - .moves = {MOVE_DRAGON_BREATH, MOVE_HEADBUTT, MOVE_FOCUS_ENERGY, MOVE_EMBER} - } -}; - -static const struct TrainerMon sParty_Perry[] = { - { - .lvl = 26, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Hugh[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Phil[] = { - { - .lvl = 26, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Jared[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_DODUO, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SKARMORY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Humberto[] = { - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 30, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Presley[] = { - { - .lvl = 33, - .species = SPECIES_TROPIUS, - }, - { - .lvl = 33, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Edwardo[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_DODUO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Colin[] = { - { - .lvl = 28, - .species = SPECIES_WINGULL, - }, - { - .lvl = 28, - .species = SPECIES_NATU, - } -}; - -static const struct TrainerMon sParty_Robert1[] = { - { - .lvl = 29, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Benny[] = { - { - .lvl = 36, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 36, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 36, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Chester[] = { - { - .lvl = 25, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 25, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Robert2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 32, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 32, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Robert3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 35, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Robert4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_Robert5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_ALTARIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Alex[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_NATU, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Beck[] = { - { - .lvl = 34, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Yasu[] = { - { - .lvl = 26, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Takashi[] = { - { - .lvl = 25, - .species = SPECIES_NINJASK, - }, - { - .lvl = 25, - .species = SPECIES_KOFFING, - } -}; - -static const struct TrainerMon sParty_Dianne[] = { - { - .lvl = 43, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKILL_SWAP, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 43, - .species = SPECIES_LANTURN, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jani[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Lao1[] = { - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SMOG, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 17, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - } -}; - -static const struct TrainerMon sParty_Lung[] = { - { - .lvl = 18, - .species = SPECIES_KOFFING, - }, - { - .lvl = 18, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Lao2[] = { - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .lvl = 24, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .lvl = 26, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Lao5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_KOFFING, - .heldItem = ITEM_NONE, - .moves = {MOVE_POISON_GAS, MOVE_TACKLE, MOVE_SLUDGE, MOVE_SELF_DESTRUCT} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 35, - .species = SPECIES_WEEZING, - .heldItem = ITEM_SMOKE_BALL, - .moves = {MOVE_TACKLE, MOVE_SLUDGE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Jocelyn[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Laura[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Cyndy1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 18, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 18, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cora[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Paula[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Cyndy2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cyndy3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 29, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cyndy4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 32, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Cyndy5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_MEDICHAM, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 35, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Madeline1[] = { - { - .lvl = 19, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Clarissa[] = { - { - .lvl = 28, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 28, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Angelica[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 30, - .species = SPECIES_CASTFORM_NORMAL, - .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} - } -}; - -static const struct TrainerMon sParty_Madeline2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 29, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TACKLE, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_NUMEL, - .moves = {MOVE_EMBER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_ROSELIA, - .moves = {MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_GRASS_WHISTLE, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_NUMEL, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_MAGNITUDE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Madeline5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_ROSELIA, - .moves = {MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_CAMERUPT, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY} - } -}; - -static const struct TrainerMon sParty_Beverly[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Imani[] = { - { - .lvl = 26, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Kyla[] = { - { - .lvl = 26, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Denise[] = { - { - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .lvl = 25, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Beth[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Tara[] = { - { - .lvl = 25, - .species = SPECIES_HORSEA, - }, - { - .lvl = 25, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Missy[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Alice[] = { - { - .lvl = 24, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .lvl = 24, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Jenny1[] = { - { - .lvl = 34, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Grace[] = { - { - .lvl = 34, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Tanya[] = { - { - .lvl = 34, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Sharon[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Nikki[] = { - { - .lvl = 33, - .species = SPECIES_MARILL, - }, - { - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Brenda[] = { - { - .lvl = 34, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Katie[] = { - { - .lvl = 33, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Susie[] = { - { - .lvl = 34, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Kara[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Dana[] = { - { - .lvl = 34, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Sienna[] = { - { - .lvl = 33, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 33, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Debra[] = { - { - .lvl = 34, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Linda[] = { - { - .lvl = 33, - .species = SPECIES_HORSEA, - }, - { - .lvl = 33, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Kaylee[] = { - { - .lvl = 34, - .species = SPECIES_LANTURN, - }, - { - .lvl = 34, - .species = SPECIES_PELIPPER, - } -}; - -static const struct TrainerMon sParty_Laurel[] = { - { - .lvl = 33, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 33, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Carlee[] = { - { - .lvl = 35, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Jenny2[] = { - { - .lvl = 38, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny3[] = { - { - .lvl = 41, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny4[] = { - { - .lvl = 43, - .species = SPECIES_STARYU, - }, - { - .lvl = 43, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Jenny5[] = { - { - .lvl = 45, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 45, - .species = SPECIES_WAILMER, - }, - { - .lvl = 45, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Heidi[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH} - }, - { - .lvl = 22, - .species = SPECIES_BALTOY, - .moves = {MOVE_RAPID_SPIN, MOVE_MUD_SLAP, MOVE_PSYBEAM, MOVE_ROCK_TOMB} - } -}; - -static const struct TrainerMon sParty_Becky[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - .moves = {MOVE_SAND_ATTACK, MOVE_POISON_STING, MOVE_SLASH, MOVE_DIG} - }, - { - .lvl = 22, - .species = SPECIES_MARILL, - .moves = {MOVE_ROLLOUT, MOVE_BUBBLE_BEAM, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL} - } -}; - -static const struct TrainerMon sParty_Carol[] = { - { - .lvl = 17, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 17, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Nancy[] = { - { - .lvl = 18, - .species = SPECIES_MARILL, - }, - { - .lvl = 18, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Martha[] = { - { - .lvl = 23, - .species = SPECIES_SKITTY, - }, - { - .lvl = 23, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana1[] = { - { - .lvl = 19, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 19, - .species = SPECIES_ODDISH, - }, - { - .lvl = 19, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Cedric[] = { - { - .lvl = 32, - .species = SPECIES_WOBBUFFET, - .moves = {MOVE_DESTINY_BOND, MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_MIRROR_COAT} - } -}; - -static const struct TrainerMon sParty_Irene[] = { - { - .lvl = 17, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 17, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Diana2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_Diana5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_VILEPLUME, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_ALTARIA, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv1[] = { - { - .lvl = 15, - .species = SPECIES_PLUSLE, - }, - { - .lvl = 15, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_PLUSLE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_GinaAndMia1[] = { - { - .lvl = 6, - .species = SPECIES_SEEDOT, - }, - { - .lvl = 6, - .species = SPECIES_LOTAD, - } -}; - -static const struct TrainerMon sParty_MiuAndYuki[] = { - { - .lvl = 26, - .species = SPECIES_BEAUTIFLY, - }, - { - .lvl = 26, - .species = SPECIES_DUSTOX, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv3[] = { - { - .lvl = 9, - .species = SPECIES_PLUSLE, - }, - { - .lvl = 9, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_GinaAndMia2[] = { - { - .lvl = 10, - .species = SPECIES_DUSKULL, - .moves = {MOVE_NIGHT_SHADE, MOVE_DISABLE, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 10, - .species = SPECIES_SHROOMISH, - .moves = {MOVE_ABSORB, MOVE_LEECH_SEED, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_AmyAndLiv4[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_PLUSLE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 30, - .species = SPECIES_MINUN, - } -}; - -static const struct TrainerMon sParty_AmyAndLiv5[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_PLUSLE, - .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 33, - .species = SPECIES_MINUN, - .moves = {MOVE_SPARK, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} - } -}; - -static const struct TrainerMon sParty_AmyAndLiv6[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_PLUSLE, - .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_FAKE_TEARS, MOVE_HELPING_HAND} - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MINUN, - .moves = {MOVE_THUNDER, MOVE_CHARGE, MOVE_CHARM, MOVE_HELPING_HAND} - } -}; - -static const struct TrainerMon sParty_Huey[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 12, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Edmond[] = { - { - .lvl = 13, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Ernest1[] = { - { - .lvl = 33, - .species = SPECIES_WINGULL, - }, - { - .lvl = 33, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Dwayne[] = { - { - .lvl = 11, - .species = SPECIES_WINGULL, - }, - { - .lvl = 11, - .species = SPECIES_MACHOP, - }, - { - .lvl = 11, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Phillip[] = { - { - .lvl = 44, - .species = SPECIES_TENTACRUEL, - }, - { - .lvl = 44, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Leonard[] = { - { - .lvl = 43, - .species = SPECIES_MACHOP, - }, - { - .lvl = 43, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 43, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Duncan[] = { - { - .lvl = 25, - .species = SPECIES_SPHEAL, - }, - { - .lvl = 25, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 36, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_TENTACOOL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 42, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Ernest5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 45, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Eli[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Annika[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_FEEBAS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_FEEBAS, - .heldItem = ITEM_ORAN_BERRY, - .moves = {MOVE_FLAIL, MOVE_WATER_PULSE, MOVE_RETURN, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Jazmyn[] = { - { - .lvl = 27, - .species = SPECIES_ABSOL, - } -}; - -static const struct TrainerMon sParty_Jonas[] = { - { - .lvl = 31, - .species = SPECIES_KOFFING, - .moves = {MOVE_TOXIC, MOVE_THUNDER, MOVE_SELF_DESTRUCT, MOVE_SLUDGE_BOMB} - } -}; - -static const struct TrainerMon sParty_Kayley[] = { - { - .lvl = 31, - .species = SPECIES_CASTFORM_NORMAL, - .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} - } -}; - -static const struct TrainerMon sParty_Auron[] = { - { - .lvl = 33, - .species = SPECIES_MANECTRIC, - }, - { - .lvl = 33, - .species = SPECIES_MACHAMP, - } -}; - -static const struct TrainerMon sParty_Kelvin[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 33, - .species = SPECIES_SPHEAL, - } -}; - -static const struct TrainerMon sParty_Marley[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 34, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_NONE, - .moves = {MOVE_BITE, MOVE_ROAR, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT} - } -}; - -static const struct TrainerMon sParty_Reyna[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 33, - .species = SPECIES_MEDITITE, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Hudson[] = { - { - .lvl = 34, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Conor[] = { - { - .lvl = 33, - .species = SPECIES_CHINCHOU, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 33, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Edwin1[] = { - { - .lvl = 14, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 14, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Hector[] = { - { - .lvl = 18, - .species = SPECIES_ZANGOOSE, - }, - { - .lvl = 18, - .species = SPECIES_SEVIPER, - } -}; - -static const struct TrainerMon sParty_TabithaMossdeep[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 38, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_Edwin2[] = { - { - .lvl = 26, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 26, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin3[] = { - { - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 29, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin4[] = { - { - .lvl = 32, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 32, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Edwin5[] = { - { - .lvl = 35, - .species = SPECIES_LUDICOLO, - }, - { - .lvl = 35, - .species = SPECIES_SHIFTRY, - } -}; - -static const struct TrainerMon sParty_WallyVR1[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 41, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 45, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Mudkip[] = { - { - .lvl = 5, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Treecko[] = { - { - .lvl = 5, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanRoute103Torchic[] = { - { - .lvl = 5, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_BrendanRoute110Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_BrendanRoute119Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayRoute103Mudkip[] = { - { - .lvl = 5, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_MayRoute110Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayRoute119Mudkip[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayRoute103Treecko[] = { - { - .lvl = 5, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_MayRoute110Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayRoute119Treecko[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayRoute103Torchic[] = { - { - .lvl = 5, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_MayRoute110Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 20, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayRoute119Torchic[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_Isaac1[] = { - { - .lvl = 11, - .species = SPECIES_WHISMUR, - }, - { - .lvl = 11, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 11, - .species = SPECIES_ARON, - }, - { - .lvl = 11, - .species = SPECIES_POOCHYENA, - }, - { - .lvl = 11, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 11, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Davis[] = { - { - .lvl = 27, - .species = SPECIES_PINSIR, - } -}; - -static const struct TrainerMon sParty_Mitchell[] = { - { - .lvl = 43, - .species = SPECIES_LUNATONE, - .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC} - }, - { - .lvl = 43, - .species = SPECIES_SOLROCK, - .moves = {MOVE_EXPLOSION, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Isaac2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Isaac3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Isaac4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_ARON, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Isaac5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_LAIRON, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_HARIYAMA, - } -}; - -static const struct TrainerMon sParty_Lydia1[] = { - { - .lvl = 11, - .species = SPECIES_WINGULL, - }, - { - .lvl = 11, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 11, - .species = SPECIES_MARILL, - }, - { - .lvl = 11, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 11, - .species = SPECIES_SKITTY, - }, - { - .lvl = 11, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Halle[] = { - { - .lvl = 43, - .species = SPECIES_SABLEYE, - }, - { - .lvl = 43, - .species = SPECIES_ABSOL, - } -}; - -static const struct TrainerMon sParty_Garrison[] = { - { - .lvl = 26, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Lydia2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 22, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 25, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 28, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Lydia5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_BRELOOM, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_AZUMARILL, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_ROSELIA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 31, - .species = SPECIES_SEAKING, - } -}; - -static const struct TrainerMon sParty_Jackson1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 27, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Lorenzo[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_SEEDOT, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Sebastian[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 39, - .species = SPECIES_CACTURNE, - } -}; - -static const struct TrainerMon sParty_Jackson2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 31, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 34, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 37, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Jackson5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_KECLEON, - }, - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Catherine1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 26, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 26, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Jenna[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 28, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Sophia[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 38, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 38, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine2[] = { - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 30, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), - .lvl = 30, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine3[] = { - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 33, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), - .lvl = 33, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine4[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 36, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 36, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Catherine5[] = { - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_BELLOSSOM, - }, - { - .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), - .lvl = 39, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Julio[] = { - { - .lvl = 21, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_GruntSeafloorCavern5[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 35, - .species = SPECIES_GOLBAT, - } -}; - -static const struct TrainerMon sParty_GruntUnused[] = { - { - .lvl = 31, - .species = SPECIES_WAILMER, - }, - { - .lvl = 31, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMtPyre4[] = { - { - .lvl = 30, - .species = SPECIES_WAILMER, - }, - { - .lvl = 30, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntJaggedPass[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Marc[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Brenden[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 13, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Lilith[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 13, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Cristian[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 13, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Sylvia[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Leonardo[] = { - { - .lvl = 34, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Athena[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 32, - .species = SPECIES_LINOONE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_THIEF, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Harrison[] = { - { - .lvl = 35, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_GruntMtChimney2[] = { - { - .lvl = 20, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Clarence[] = { - { - .lvl = 34, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Terry[] = { - { - .lvl = 37, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_Nate[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Kathleen[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 36, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Clifford[] = { - { - .lvl = 36, - .species = SPECIES_GIRAFARIG, - } -}; - -static const struct TrainerMon sParty_Nicholas[] = { - { - .lvl = 36, - .species = SPECIES_WOBBUFFET, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter3[] = { - { - .lvl = 31, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 31, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter4[] = { - { - .lvl = 32, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter5[] = { - { - .lvl = 32, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter6[] = { - { - .lvl = 32, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntSpaceCenter7[] = { - { - .lvl = 32, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_Macey[] = { - { - .lvl = 36, - .species = SPECIES_NATU, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_Paxton[] = { - { - .lvl = 33, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 33, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Isabella[] = { - { - .lvl = 34, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_GruntWeatherInst5[] = { - { - .lvl = 27, - .species = SPECIES_ZUBAT, - }, - { - .lvl = 27, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_TabithaMtChimney[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 18, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 20, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 22, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_Jonathan[] = { - { - .lvl = 33, - .species = SPECIES_KECLEON, - }, - { - .lvl = 33, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_BrendanRustboroTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_MayRustboroMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TREECKO, - } -}; - -static const struct TrainerMon sParty_MaxieMagmaHideout[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 38, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 39, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_MaxieMtChimney[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 24, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 24, - .species = SPECIES_ZUBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 25, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Tiana[] = { - { - .lvl = 4, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 4, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Haley1[] = { - { - .lvl = 6, - .species = SPECIES_LOTAD, - }, - { - .lvl = 6, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Janice[] = { - { - .lvl = 9, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Vivi[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Haley2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Haley3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Haley4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 32, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Haley5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 34, - .species = SPECIES_BRELOOM, - } -}; - -static const struct TrainerMon sParty_Sally[] = { - { - .lvl = 16, - .species = SPECIES_ODDISH, - } -}; - -static const struct TrainerMon sParty_Robin[] = { - { - .lvl = 14, - .species = SPECIES_SKITTY, - }, - { - .lvl = 14, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 14, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Andrea[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 40, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_Crissy[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_GOLDEEN, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Rick[] = { - { - .lvl = 4, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 4, - .species = SPECIES_WURMPLE, - } -}; - -static const struct TrainerMon sParty_Lyle[] = { - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - }, - { - .lvl = 3, - .species = SPECIES_WURMPLE, - } -}; - -static const struct TrainerMon sParty_Jose[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 8, - .species = SPECIES_WURMPLE, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 8, - .species = SPECIES_NINCADA, - } -}; - -static const struct TrainerMon sParty_Doug[] = { - { - .lvl = 28, - .species = SPECIES_NINCADA, - }, - { - .lvl = 28, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Greg[] = { - { - .lvl = 25, - .species = SPECIES_VOLBEAT, - }, - { - .lvl = 25, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_Kent[] = { - { - .lvl = 25, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James1[] = { - { - .lvl = 6, - .species = SPECIES_NINCADA, - }, - { - .lvl = 6, - .species = SPECIES_NINCADA, - } -}; - -static const struct TrainerMon sParty_James2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 27, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 29, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 31, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_James5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_SURSKIT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_NINJASK, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_DUSTOX, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_NINJASK, - } -}; - -static const struct TrainerMon sParty_Brice[] = { - { - .lvl = 17, - .species = SPECIES_NUMEL, - }, - { - .lvl = 17, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Trent1[] = { - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 17, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Lenny[] = { - { - .lvl = 18, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 18, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Lucas1[] = { - { - .lvl = 18, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 18, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Alan[] = { - { - .lvl = 22, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 22, - .species = SPECIES_NOSEPASS, - }, - { - .lvl = 22, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Clark[] = { - { - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Eric[] = { - { - .lvl = 20, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 20, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_Lucas2[] = { - { - .lvl = 9, - .species = SPECIES_WAILMER, - .moves = {MOVE_SPLASH, MOVE_WATER_GUN, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Mike1[] = { - { - .lvl = 10, - .species = SPECIES_PELIPPER, - .moves = {MOVE_GUST, MOVE_GROWL, MOVE_NONE, MOVE_NONE} - }, - { - .lvl = 10, - .species = SPECIES_POOCHYENA, - .moves = {MOVE_BITE, MOVE_SCARY_FACE, MOVE_NONE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Mike2[] = { - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 16, - .species = SPECIES_MACHOP, - } -}; - -static const struct TrainerMon sParty_Trent2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 24, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 27, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Trent5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GRAVELER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GOLEM, - } -}; - -static const struct TrainerMon sParty_DezAndLuke[] = { - { - .lvl = 31, - .species = SPECIES_DELCATTY, - }, - { - .lvl = 31, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_LeaAndJed[] = { - { - .lvl = 45, - .species = SPECIES_LUVDISC, - }, - { - .lvl = 45, - .species = SPECIES_LUVDISC, - } -}; - -static const struct TrainerMon sParty_KiraAndDan1[] = { - { - .lvl = 25, - .species = SPECIES_VOLBEAT, - }, - { - .lvl = 25, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 36, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_KiraAndDan5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_VOLBEAT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 39, - .species = SPECIES_ILLUMISE, - } -}; - -static const struct TrainerMon sParty_Johanna[] = { - { - .lvl = 13, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Gerald[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_KECLEON, - .moves = {MOVE_FLAMETHROWER, MOVE_FURY_SWIPES, MOVE_FEINT_ATTACK, MOVE_BIND} - } -}; - -static const struct TrainerMon sParty_Vivian[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MEDITITE, - .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_THUNDER_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_MEDITITE, - .moves = {MOVE_THUNDER_PUNCH, MOVE_DETECT, MOVE_CONFUSION, MOVE_MEDITATE} - } -}; - -static const struct TrainerMon sParty_Danielle[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 23, - .species = SPECIES_MEDITITE, - .moves = {MOVE_BIDE, MOVE_DETECT, MOVE_CONFUSION, MOVE_FIRE_PUNCH} - } -}; - -static const struct TrainerMon sParty_Hideo[] = { - { - .lvl = 25, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - }, - { - .lvl = 25, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_POISON_GAS, MOVE_SLUDGE, MOVE_SMOKESCREEN} - } -}; - -static const struct TrainerMon sParty_Keigo[] = { - { - .lvl = 28, - .species = SPECIES_KOFFING, - .moves = {MOVE_POISON_GAS, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - }, - { - .lvl = 28, - .species = SPECIES_NINJASK, - .moves = {MOVE_SAND_ATTACK, MOVE_DOUBLE_TEAM, MOVE_FURY_CUTTER, MOVE_SWORDS_DANCE} - } -}; - -static const struct TrainerMon sParty_Riley[] = { - { - .lvl = 28, - .species = SPECIES_NINCADA, - .moves = {MOVE_LEECH_LIFE, MOVE_FURY_SWIPES, MOVE_MIND_READER, MOVE_DIG} - }, - { - .lvl = 28, - .species = SPECIES_KOFFING, - .moves = {MOVE_TACKLE, MOVE_SELF_DESTRUCT, MOVE_SLUDGE, MOVE_SMOKESCREEN} - } -}; - -static const struct TrainerMon sParty_Flint[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 29, - .species = SPECIES_XATU, - } -}; - -static const struct TrainerMon sParty_Ashley[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 27, - .species = SPECIES_SWABLU, - } -}; - -static const struct TrainerMon sParty_WallyMauville[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 16, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_WallyVR2[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 46, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 48, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR3[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 49, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 47, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 51, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR4[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 52, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 50, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 54, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_WallyVR5[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 56, - .species = SPECIES_ALTARIA, - .moves = {MOVE_AERIAL_ACE, MOVE_SAFEGUARD, MOVE_DRAGON_BREATH, MOVE_DRAGON_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 55, - .species = SPECIES_DELCATTY, - .moves = {MOVE_SING, MOVE_ASSIST, MOVE_CHARM, MOVE_FEINT_ATTACK} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 56, - .species = SPECIES_ROSELIA, - .moves = {MOVE_MAGICAL_LEAF, MOVE_LEECH_SEED, MOVE_GIGA_DRAIN, MOVE_TOXIC} - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 53, - .species = SPECIES_MAGNETON, - .moves = {MOVE_SUPERSONIC, MOVE_THUNDERBOLT, MOVE_TRI_ATTACK, MOVE_SCREECH} - }, - { - .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), - .lvl = 57, - .species = SPECIES_GARDEVOIR, - .moves = {MOVE_DOUBLE_TEAM, MOVE_CALM_MIND, MOVE_PSYCHIC, MOVE_FUTURE_SIGHT} - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_BrendanLilycoveTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_MayLilycoveMudkip[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_GROVYLE, - } -}; - -static const struct TrainerMon sParty_MayLilycoveTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_COMBUSKEN, - } -}; - -static const struct TrainerMon sParty_MayLilycoveTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 31, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 32, - .species = SPECIES_SLUGMA, - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 34, - .species = SPECIES_MARSHTOMP, - } -}; - -static const struct TrainerMon sParty_Jonah[] = { - { - .lvl = 30, - .species = SPECIES_WAILMER, - }, - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 32, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Henry[] = { - { - .lvl = 31, - .species = SPECIES_CARVANHA, - }, - { - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Roger[] = { - { - .lvl = 15, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 25, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 35, - .species = SPECIES_GYARADOS, - } -}; - -static const struct TrainerMon sParty_Alexa[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_GLOOM, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_AZUMARILL, - } -}; - -static const struct TrainerMon sParty_Ruben[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_SHIFTRY, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 34, - .species = SPECIES_NOSEPASS, - } -}; - -static const struct TrainerMon sParty_Koji1[] = { - { - .lvl = 34, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Wayne[] = { - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 31, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 36, - .species = SPECIES_WAILMER, - } -}; - -static const struct TrainerMon sParty_Aidan[] = { - { - .lvl = 32, - .species = SPECIES_SWELLOW, - }, - { - .lvl = 32, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Reed[] = { - { - .lvl = 33, - .species = SPECIES_SPHEAL, - }, - { - .lvl = 33, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_Tisha[] = { - { - .lvl = 34, - .species = SPECIES_CHINCHOU, - } -}; - -static const struct TrainerMon sParty_ToriAndTia[] = { - { - .lvl = 19, - .species = SPECIES_SPINDA, - }, - { - .lvl = 19, - .species = SPECIES_SPINDA, - } -}; - -static const struct TrainerMon sParty_KimAndIris[] = { - { - .lvl = 32, - .species = SPECIES_SWABLU, - .moves = {MOVE_SING, MOVE_FURY_ATTACK, MOVE_SAFEGUARD, MOVE_AERIAL_ACE} - }, - { - .lvl = 35, - .species = SPECIES_NUMEL, - .moves = {MOVE_FLAMETHROWER, MOVE_TAKE_DOWN, MOVE_REST, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_TyraAndIvy[] = { - { - .lvl = 18, - .species = SPECIES_ROSELIA, - .moves = {MOVE_GROWTH, MOVE_STUN_SPORE, MOVE_MEGA_DRAIN, MOVE_LEECH_SEED} - }, - { - .lvl = 20, - .species = SPECIES_GRAVELER, - .moves = {MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MUD_SPORT, MOVE_ROCK_THROW} - } -}; - -static const struct TrainerMon sParty_MelAndPaul[] = { - { - .lvl = 27, - .species = SPECIES_DUSTOX, - .moves = {MOVE_GUST, MOVE_PSYBEAM, MOVE_TOXIC, MOVE_PROTECT} - }, - { - .lvl = 27, - .species = SPECIES_BEAUTIFLY, - .moves = {MOVE_GUST, MOVE_MEGA_DRAIN, MOVE_ATTRACT, MOVE_STUN_SPORE} - } -}; - -static const struct TrainerMon sParty_JohnAndJay1[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 39, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 39, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay2[] = { - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 43, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), - .lvl = 43, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay3[] = { - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 46, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), - .lvl = 46, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay4[] = { - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 49, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), - .lvl = 49, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_JohnAndJay5[] = { - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 52, - .species = SPECIES_MEDICHAM, - .moves = {MOVE_PSYCHIC, MOVE_FIRE_PUNCH, MOVE_PSYCH_UP, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), - .lvl = 52, - .species = SPECIES_HARIYAMA, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROCK_TOMB, MOVE_REST, MOVE_BELLY_DRUM} - } -}; - -static const struct TrainerMon sParty_ReliAndIan[] = { - { - .lvl = 35, - .species = SPECIES_AZUMARILL, - }, - { - .lvl = 33, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy1[] = { - { - .lvl = 34, - .species = SPECIES_CHINCHOU, - }, - { - .lvl = 33, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy2[] = { - { - .lvl = 42, - .species = SPECIES_CHINCHOU, - }, - { - .lvl = 40, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy3[] = { - { - .lvl = 45, - .species = SPECIES_LANTURN, - }, - { - .lvl = 43, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy4[] = { - { - .lvl = 48, - .species = SPECIES_LANTURN, - }, - { - .lvl = 46, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_LilaAndRoy5[] = { - { - .lvl = 51, - .species = SPECIES_LANTURN, - }, - { - .lvl = 49, - .species = SPECIES_SHARPEDO, - } -}; - -static const struct TrainerMon sParty_LisaAndRay[] = { - { - .lvl = 27, - .species = SPECIES_GOLDEEN, - }, - { - .lvl = 25, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Chris[] = { - { - .lvl = 29, - .species = SPECIES_MAGIKARP, - }, - { - .lvl = 20, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 26, - .species = SPECIES_FEEBAS, - }, - { - .lvl = 23, - .species = SPECIES_CARVANHA, - } -}; - -static const struct TrainerMon sParty_Dawson[] = { - { - .lvl = 8, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - }, - { - .lvl = 8, - .species = SPECIES_POOCHYENA, - .heldItem = ITEM_NONE - } -}; - -static const struct TrainerMon sParty_Sarah[] = { - { - .lvl = 8, - .species = SPECIES_LOTAD, - .heldItem = ITEM_NONE - }, - { - .lvl = 8, - .species = SPECIES_ZIGZAGOON, - .heldItem = ITEM_NUGGET - } -}; - -static const struct TrainerMon sParty_Darian[] = { - { - .lvl = 9, - .species = SPECIES_MAGIKARP, - } -}; - -static const struct TrainerMon sParty_Hailey[] = { - { - .lvl = 13, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Chandler[] = { - { - .lvl = 12, - .species = SPECIES_TENTACOOL, - }, - { - .lvl = 12, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Kaleb[] = { - { - .lvl = 14, - .species = SPECIES_MINUN, - .heldItem = ITEM_ORAN_BERRY - }, - { - .lvl = 14, - .species = SPECIES_PLUSLE, - .heldItem = ITEM_ORAN_BERRY - } -}; - -static const struct TrainerMon sParty_Joseph[] = { - { - .lvl = 14, - .species = SPECIES_ELECTRIKE, - }, - { - .lvl = 14, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Alyssa[] = { - { - .lvl = 15, - .species = SPECIES_MAGNEMITE, - } -}; - -static const struct TrainerMon sParty_Marcos[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_VOLTORB, - } -}; - -static const struct TrainerMon sParty_Rhett[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 15, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Tyron[] = { - { - .lvl = 19, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Celina[] = { - { - .lvl = 18, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Bianca[] = { - { - .lvl = 18, - .species = SPECIES_SHROOMISH, - } -}; - -static const struct TrainerMon sParty_Hayden[] = { - { - .lvl = 18, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Sophie[] = { - { - .lvl = 17, - .species = SPECIES_MARILL, - }, - { - .lvl = 19, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Coby[] = { - { - .lvl = 17, - .species = SPECIES_SKARMORY, - }, - { - .lvl = 19, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Lawrence[] = { - { - .lvl = 18, - .species = SPECIES_BALTOY, - }, - { - .lvl = 18, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Wyatt[] = { - { - .lvl = 18, - .species = SPECIES_ARON, - }, - { - .lvl = 18, - .species = SPECIES_ARON, - } -}; - -static const struct TrainerMon sParty_Angelina[] = { - { - .lvl = 18, - .species = SPECIES_LOMBRE, - }, - { - .lvl = 18, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Kai[] = { - { - .lvl = 19, - .species = SPECIES_BARBOACH, - } -}; - -static const struct TrainerMon sParty_Charlotte[] = { - { - .lvl = 19, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Deandre[] = { - { - .lvl = 14, - .species = SPECIES_ZIGZAGOON, - }, - { - .lvl = 14, - .species = SPECIES_ARON, - }, - { - .lvl = 14, - .species = SPECIES_ELECTRIKE, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout1[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout2[] = { - { - .lvl = 29, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout3[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout4[] = { - { - .lvl = 28, - .species = SPECIES_BALTOY, - }, - { - .lvl = 28, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout5[] = { - { - .lvl = 28, - .species = SPECIES_BALTOY, - }, - { - .lvl = 28, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout6[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout7[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout8[] = { - { - .lvl = 29, - .species = SPECIES_POOCHYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout9[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout10[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout11[] = { - { - .lvl = 29, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout12[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout13[] = { - { - .lvl = 29, - .species = SPECIES_ZUBAT, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout14[] = { - { - .lvl = 29, - .species = SPECIES_MIGHTYENA, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout15[] = { - { - .lvl = 29, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_GruntMagmaHideout16[] = { - { - .lvl = 29, - .species = SPECIES_BALTOY, - } -}; - -static const struct TrainerMon sParty_TabithaMagmaHideout[] = { - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 26, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 28, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 30, - .species = SPECIES_ZUBAT, - }, - { - .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), - .lvl = 33, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Darcy[] = { - { - .lvl = 33, - .species = SPECIES_PELIPPER, - }, - { - .lvl = 33, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_MaxieMossdeep[] = { - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 42, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 43, - .species = SPECIES_CROBAT, - }, - { - .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), - .lvl = 44, - .species = SPECIES_CAMERUPT, - } -}; - -static const struct TrainerMon sParty_Pete[] = { - { - .lvl = 15, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Isabelle[] = { - { - .lvl = 15, - .species = SPECIES_MARILL, - } -}; - -static const struct TrainerMon sParty_Andres1[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Josue[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_TAILLOW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 25, - .species = SPECIES_WINGULL, - } -}; - -static const struct TrainerMon sParty_Camron[] = { - { - .lvl = 26, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Cory1[] = { - { - .lvl = 24, - .species = SPECIES_WINGULL, - }, - { - .lvl = 24, - .species = SPECIES_MACHOP, - }, - { - .lvl = 24, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Carolina[] = { - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_SWELLOW, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 24, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Elijah[] = { - { - .lvl = 25, - .species = SPECIES_SKARMORY, - }, - { - .lvl = 25, - .species = SPECIES_SKARMORY, - } -}; - -static const struct TrainerMon sParty_Celia[] = { - { - .lvl = 22, - .species = SPECIES_MARILL, - }, - { - .lvl = 22, - .species = SPECIES_LOMBRE, - } -}; - -static const struct TrainerMon sParty_Bryan[] = { - { - .lvl = 22, - .species = SPECIES_SANDSHREW, - }, - { - .lvl = 22, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Branden[] = { - { - .lvl = 22, - .species = SPECIES_TAILLOW, - }, - { - .lvl = 22, - .species = SPECIES_NUZLEAF, - } -}; - -static const struct TrainerMon sParty_Bryant[] = { - { - .lvl = 18, - .species = SPECIES_NUMEL, - }, - { - .lvl = 18, - .species = SPECIES_SLUGMA, - } -}; - -static const struct TrainerMon sParty_Shayla[] = { - { - .lvl = 18, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 18, - .species = SPECIES_ROSELIA, - } -}; - -static const struct TrainerMon sParty_Kyra[] = { - { - .lvl = 26, - .species = SPECIES_DODUO, - }, - { - .lvl = 26, - .species = SPECIES_DODRIO, - } -}; - -static const struct TrainerMon sParty_Jaiden[] = { - { - .lvl = 26, - .species = SPECIES_NINJASK, - }, - { - .lvl = 26, - .species = SPECIES_GULPIN, - } -}; - -static const struct TrainerMon sParty_Alix[] = { - { - .lvl = 26, - .species = SPECIES_KADABRA, - }, - { - .lvl = 26, - .species = SPECIES_KIRLIA, - } -}; - -static const struct TrainerMon sParty_Helene[] = { - { - .lvl = 26, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 26, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Marlene[] = { - { - .lvl = 18, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 18, - .species = SPECIES_SPOINK, - } -}; - -static const struct TrainerMon sParty_Devan[] = { - { - .lvl = 8, - .species = SPECIES_GEODUDE, - }, - { - .lvl = 8, - .species = SPECIES_GEODUDE, - } -}; - -static const struct TrainerMon sParty_Johnson[] = { - { - .lvl = 8, - .species = SPECIES_SHROOMISH, - }, - { - .lvl = 8, - .species = SPECIES_LOTAD, - } -}; - -static const struct TrainerMon sParty_Melina[] = { - { - .lvl = 17, - .species = SPECIES_DODUO, - } -}; - -static const struct TrainerMon sParty_Brandi[] = { - { - .lvl = 17, - .species = SPECIES_RALTS, - } -}; - -static const struct TrainerMon sParty_Aisha[] = { - { - .lvl = 17, - .species = SPECIES_MEDITITE, - } -}; - -static const struct TrainerMon sParty_Makayla[] = { - { - .lvl = 33, - .species = SPECIES_ROSELIA, - }, - { - .lvl = 33, - .species = SPECIES_MEDICHAM, - } -}; - -static const struct TrainerMon sParty_Fabian[] = { - { - .lvl = 26, - .species = SPECIES_MANECTRIC, - } -}; - -static const struct TrainerMon sParty_Dayton[] = { - { - .lvl = 25, - .species = SPECIES_SLUGMA, - }, - { - .lvl = 25, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Rachel[] = { - { - .lvl = 26, - .species = SPECIES_GOLDEEN, - } -}; - -static const struct TrainerMon sParty_Leonel[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 30, - .species = SPECIES_MANECTRIC, - .moves = {MOVE_THUNDER, MOVE_QUICK_ATTACK, MOVE_THUNDER_WAVE, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Callie[] = { - { - .lvl = 28, - .species = SPECIES_MEDITITE, - }, - { - .lvl = 28, - .species = SPECIES_MAKUHITA, - } -}; - -static const struct TrainerMon sParty_Cale[] = { - { - .lvl = 29, - .species = SPECIES_DUSTOX, - }, - { - .lvl = 29, - .species = SPECIES_BEAUTIFLY, - } -}; - -static const struct TrainerMon sParty_Myles[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_TROPIUS, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Pat[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_POOCHYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SHROOMISH, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_MARILL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 25, - .species = SPECIES_GULPIN, - } -}; - -static const struct TrainerMon sParty_Cristin1[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 29, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_MayRustboroTreecko[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_TORCHIC, - } -}; - -static const struct TrainerMon sParty_MayRustboroTorchic[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 13, - .species = SPECIES_TORKOAL, - }, - { - .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), - .lvl = 15, - .species = SPECIES_MUDKIP, - } -}; - -static const struct TrainerMon sParty_Roxanne2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 32, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_KABUTO, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_OMANYTE, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_MAGNITUDE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_OMASTAR, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_ONIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Roxanne5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_AERODACTYL, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM, MOVE_SUPERSONIC, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_GOLEM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_ROLLOUT, MOVE_EARTHQUAKE, MOVE_EXPLOSION} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_OMASTAR, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_ICE_BEAM, MOVE_ROCK_SLIDE, MOVE_SURF} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_KABUTOPS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SWORDS_DANCE, MOVE_ICE_BEAM, MOVE_SURF, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_STEELIX, - .heldItem = ITEM_NONE, - .moves = {MOVE_IRON_TAIL, MOVE_EXPLOSION, MOVE_ROAR, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_NOSEPASS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_DOUBLE_TEAM, MOVE_EXPLOSION, MOVE_PROTECT, MOVE_ROCK_SLIDE} - } -}; - -static const struct TrainerMon sParty_Brawly2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 33, - .species = SPECIES_MEDITITE, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 35, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 37, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_PSYCHIC, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_HITMONCHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_KARATE_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Brawly5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HITMONLEE, - .heldItem = ITEM_NONE, - .moves = {MOVE_MEGA_KICK, MOVE_FOCUS_PUNCH, MOVE_EARTHQUAKE, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HITMONCHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_SKY_UPPERCUT, MOVE_PROTECT, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MACHAMP, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_CROSS_CHOP, MOVE_ROCK_SLIDE, MOVE_FOCUS_PUNCH, MOVE_BULK_UP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MEDICHAM, - .heldItem = ITEM_NONE, - .moves = {MOVE_FOCUS_PUNCH, MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_PSYCHIC} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_HITMONTOP, - .heldItem = ITEM_NONE, - .moves = {MOVE_PURSUIT, MOVE_COUNTER, MOVE_PROTECT, MOVE_TRIPLE_KICK} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_HARIYAMA, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_FAKE_OUT, MOVE_FOCUS_PUNCH, MOVE_BELLY_DRUM, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Wattson2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_MAREEP, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 39, - .species = SPECIES_PIKACHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_SHOCK_WAVE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_FLAAFFY, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 44, - .species = SPECIES_RAICHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_AMPHAROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Wattson5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_ELECTABUZZ, - .heldItem = ITEM_NONE, - .moves = {MOVE_SWIFT, MOVE_FOCUS_PUNCH, MOVE_THUNDER_PUNCH, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_RAICHU, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_SLAM, MOVE_RAIN_DANCE, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_AMPHAROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_PROTECT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_ELECTRODE, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROLLOUT, MOVE_THUNDER, MOVE_EXPLOSION, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_MAGNETON, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_THUNDER, MOVE_RAIN_DANCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_MANECTRIC, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BITE, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_PROTECT} - } -}; - -static const struct TrainerMon sParty_Flannery2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 36, - .species = SPECIES_PONYTA, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_GROWLITHE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_ROAR, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_PONYTA, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_HOUNDOUR, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_GROWLITHE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_RAPIDASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Flannery5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_ARCANINE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HELPING_HAND, MOVE_FLAMETHROWER, MOVE_SUNNY_DAY, MOVE_ROAR} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_MAGCARGO, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_ATTRACT, MOVE_LIGHT_SCREEN, MOVE_ROCK_SLIDE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_HOUNDOOM, - .heldItem = ITEM_NONE, - .moves = {MOVE_ROAR, MOVE_SOLAR_BEAM, MOVE_TAUNT, MOVE_SUNNY_DAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_RAPIDASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_SOLAR_BEAM, MOVE_BOUNCE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_CAMERUPT, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EARTHQUAKE, MOVE_ATTRACT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_TORKOAL, - .heldItem = ITEM_WHITE_HERB, - .moves = {MOVE_OVERHEAT, MOVE_SUNNY_DAY, MOVE_EXPLOSION, MOVE_ATTRACT} - } -}; - -static const struct TrainerMon sParty_Norman2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_CHANSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 42, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 47, - .species = SPECIES_CHANSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 52, - .species = SPECIES_BLISSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_LIGHT_SCREEN, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Norman5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_BLIZZARD, MOVE_SHADOW_BALL, MOVE_DOUBLE_EDGE, MOVE_FIRE_BLAST} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_BLISSEY, - .heldItem = ITEM_NONE, - .moves = {MOVE_PROTECT, MOVE_SING, MOVE_SKILL_SWAP, MOVE_FOCUS_PUNCH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_KANGASKHAN, - .heldItem = ITEM_NONE, - .moves = {MOVE_FAKE_OUT, MOVE_DIZZY_PUNCH, MOVE_ENDURE, MOVE_REVERSAL} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 57, - .species = SPECIES_TAUROS, - .heldItem = ITEM_NONE, - .moves = {MOVE_TAKE_DOWN, MOVE_PROTECT, MOVE_FIRE_BLAST, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SPINDA, - .heldItem = ITEM_NONE, - .moves = {MOVE_TEETER_DANCE, MOVE_SKILL_SWAP, MOVE_FACADE, MOVE_HYPNOSIS} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_SLAKING, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_FLAMETHROWER, MOVE_THUNDERBOLT, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Winona2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 40, - .species = SPECIES_DRATINI, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 38, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 41, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_HOOTHOOT, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 43, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 45, - .species = SPECIES_DRAGONAIR, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_NOCTOWL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_DRAGONAIR, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_AERIAL_ACE, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_Winona5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_NOCTOWL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_DREAM_EATER} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_TROPIUS, - .heldItem = ITEM_NONE, - .moves = {MOVE_SUNNY_DAY, MOVE_AERIAL_ACE, MOVE_SOLAR_BEAM, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_PELIPPER, - .heldItem = ITEM_NONE, - .moves = {MOVE_SURF, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_DRAGONITE, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_HYPER_BEAM, MOVE_THUNDERBOLT, MOVE_EARTHQUAKE, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_WHIRLWIND, MOVE_SPIKES, MOVE_STEEL_WING, MOVE_AERIAL_ACE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_ALTARIA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_SKY_ATTACK, MOVE_REST, MOVE_DRAGON_DANCE, MOVE_EARTHQUAKE} - } -}; - -static const struct TrainerMon sParty_TateAndLiza2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 49, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_DROWZEE, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 54, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 55, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_HYPNO, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 59, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_SLOWPOKE, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 59, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 60, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_TateAndLiza5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_HYPNO, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_HEADBUTT, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 64, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_EARTHQUAKE, MOVE_EXPLOSION, MOVE_PSYCHIC, MOVE_LIGHT_SCREEN} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_SLOWKING, - .heldItem = ITEM_NONE, - .moves = {MOVE_YAWN, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_PROTECT} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 64, - .species = SPECIES_XATU, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_PSYCHIC, MOVE_REST, MOVE_CONFUSE_RAY, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 65, - .species = SPECIES_LUNATONE, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_REST, MOVE_CALM_MIND} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 65, - .species = SPECIES_SOLROCK, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER} - } -}; - -static const struct TrainerMon sParty_Juan2[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_POLIWAG, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 46, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 48, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_CRABHAMMER, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan3[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 50, - .species = SPECIES_POLIWHIRL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 51, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 53, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan4[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_LAPRAS, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 56, - .species = SPECIES_POLIWHIRL, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_PROTECT, MOVE_HYDRO_PUMP} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_ICE_BEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 58, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Juan5[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_LAPRAS, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYDRO_PUMP, MOVE_PERISH_SONG, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_WHISCASH, - .heldItem = ITEM_NONE, - .moves = {MOVE_RAIN_DANCE, MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_FISSURE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 61, - .species = SPECIES_POLITOED, - .heldItem = ITEM_NONE, - .moves = {MOVE_HYPNOSIS, MOVE_RAIN_DANCE, MOVE_HYDRO_PUMP, MOVE_PERISH_SONG} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_WALREIN, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_BODY_SLAM, MOVE_PROTECT, MOVE_SHEER_COLD} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 63, - .species = SPECIES_CRAWDAUNT, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_REST, MOVE_GUILLOTINE, MOVE_TAUNT, MOVE_DOUBLE_TEAM} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 66, - .species = SPECIES_KINGDRA, - .heldItem = ITEM_CHESTO_BERRY, - .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_ICE_BEAM, MOVE_REST} - } -}; - -static const struct TrainerMon sParty_Angelo[] = { - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_ILLUMISE, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CHARM, MOVE_NONE} - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 17, - .species = SPECIES_VOLBEAT, - .heldItem = ITEM_NONE, - .moves = {MOVE_SHOCK_WAVE, MOVE_QUICK_ATTACK, MOVE_CONFUSE_RAY, MOVE_NONE} - } -}; - -static const struct TrainerMon sParty_Darius[] = { - { - .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), - .lvl = 30, - .species = SPECIES_TROPIUS, - } -}; - -static const struct TrainerMon sParty_Steven[] = { - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 77, - .species = SPECIES_SKARMORY, - .heldItem = ITEM_NONE, - .moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_SPIKES, MOVE_STEEL_WING} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 75, - .species = SPECIES_CLAYDOL, - .heldItem = ITEM_NONE, - .moves = {MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_ANCIENT_POWER, MOVE_EARTHQUAKE} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_AGGRON, - .heldItem = ITEM_NONE, - .moves = {MOVE_THUNDER, MOVE_EARTHQUAKE, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_CRADILY, - .heldItem = ITEM_NONE, - .moves = {MOVE_GIGA_DRAIN, MOVE_ANCIENT_POWER, MOVE_INGRAIN, MOVE_CONFUSE_RAY} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 76, - .species = SPECIES_ARMALDO, - .heldItem = ITEM_NONE, - .moves = {MOVE_WATER_PULSE, MOVE_ANCIENT_POWER, MOVE_AERIAL_ACE, MOVE_SLASH} - }, - { - .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), - .lvl = 78, - .species = SPECIES_METAGROSS, - .heldItem = ITEM_SITRUS_BERRY, - .moves = {MOVE_EARTHQUAKE, MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_SHADOW_BALL} - } -}; - -static const struct TrainerMon sParty_Anabel[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Tucker[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Spenser[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Greta[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Noland[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Lucy[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Brandon[] = { - { - .lvl = 5, - .species = SPECIES_BELDUM, - } -}; - -static const struct TrainerMon sParty_Andres2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SANDSHREW, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SANDSHREW, - } -}; - -static const struct TrainerMon sParty_Andres5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_NOSEPASS, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SANDSLASH, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SANDSLASH, - } -}; - -static const struct TrainerMon sParty_Cory2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 30, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Cory3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 32, - .species = SPECIES_TENTACOOL, - } -}; - -static const struct TrainerMon sParty_Cory4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 34, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Cory5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 36, - .species = SPECIES_TENTACRUEL, - } -}; - -static const struct TrainerMon sParty_Pablo2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_WINGULL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_STARYU, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_STARYU, - } -}; - -static const struct TrainerMon sParty_Pablo5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_PELIPPER, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_STARMIE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_STARMIE, - } -}; - -static const struct TrainerMon sParty_Koji2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 37, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MAKUHITA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 39, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_HARIYAMA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 41, - .species = SPECIES_MACHOKE, - } -}; - -static const struct TrainerMon sParty_Koji5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_HARIYAMA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_MACHAMP, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 43, - .species = SPECIES_MACHAMP, - } -}; - -static const struct TrainerMon sParty_Cristin2[] = { - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 35, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), - .lvl = 35, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin3[] = { - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), - .lvl = 37, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin4[] = { - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 39, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), - .lvl = 39, - .species = SPECIES_LOUDRED, - }, - { - .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), - .lvl = 39, - .species = SPECIES_VIGOROTH, - } -}; - -static const struct TrainerMon sParty_Cristin5[] = { - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_SPINDA, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_EXPLOUD, - }, - { - .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), - .lvl = 41, - .species = SPECIES_SLAKING, - } -}; - -static const struct TrainerMon sParty_Fernando2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 35, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_ELECTRIKE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 37, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 39, - .species = SPECIES_LOUDRED, - } -}; - -static const struct TrainerMon sParty_Fernando5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_MANECTRIC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 41, - .species = SPECIES_EXPLOUD, - } -}; - -static const struct TrainerMon sParty_Sawyer2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_GEODUDE, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 26, - .species = SPECIES_NUMEL, - } -}; - -static const struct TrainerMon sParty_Sawyer3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 28, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Sawyer4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_MACHOP, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_NUMEL, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 30, - .species = SPECIES_GRAVELER, - } -}; - -static const struct TrainerMon sParty_Sawyer5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_MACHOKE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_CAMERUPT, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 33, - .species = SPECIES_GOLEM, - } -}; - -static const struct TrainerMon sParty_Gabrielle2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_ZIGZAGOON, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_LOTAD, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_SEEDOT, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 31, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_SKITTY, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 33, - .species = SPECIES_TAILLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_LOMBRE, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_NUZLEAF, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 35, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Gabrielle5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_DELCATTY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_MIGHTYENA, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_LINOONE, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_LUDICOLO, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SHIFTRY, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 37, - .species = SPECIES_SWELLOW, - } -}; - -static const struct TrainerMon sParty_Thalia2[] = { - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), - .lvl = 34, - .species = SPECIES_HORSEA, - } -}; - -static const struct TrainerMon sParty_Thalia3[] = { - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), - .lvl = 36, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Thalia4[] = { - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_WAILMER, - }, - { - .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), - .lvl = 38, - .species = SPECIES_SEADRA, - } -}; - -static const struct TrainerMon sParty_Thalia5[] = { - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_LUVDISC, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_WAILORD, - }, - { - .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), - .lvl = 40, - .species = SPECIES_KINGDRA, - } -}; - -static const struct TrainerMon sParty_Mariela[] = { - { - .lvl = 41, - .species = SPECIES_CHIMECHO, - } -}; - -static const struct TrainerMon sParty_Alvaro[] = { - { - .lvl = 41, - .species = SPECIES_BANETTE, - }, - { - .lvl = 41, - .species = SPECIES_KADABRA, - } -}; - -static const struct TrainerMon sParty_Everett[] = { - { - .lvl = 41, - .species = SPECIES_WOBBUFFET, - } -}; - -static const struct TrainerMon sParty_Red[] = { - { - .lvl = 5, - .species = SPECIES_CHARMANDER, - } -}; - -static const struct TrainerMon sParty_Leaf[] = { - { - .lvl = 5, - .species = SPECIES_BULBASAUR, - } -}; - -static const struct TrainerMon sParty_BrendanLinkPlaceholder[] = { - { - .lvl = 5, - .species = SPECIES_GROUDON, - } -}; - -static const struct TrainerMon sParty_MayLinkPlaceholder[] = { - { - .lvl = 5, - .species = SPECIES_KYOGRE, - } -}; diff --git a/src/data/trainers.h b/src/data/trainers.h index 433cac517e9f..6215baf1c40e 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -1,10272 +1,42185 @@ -const struct Trainer gTrainers[] = { +// +// DO NOT MODIFY THIS FILE! It is auto-generated from src/data/trainers.party +// +// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE +// in include/config/general.h and remove this notice. +// Use sed -i '/^#line/d' 'src/data/trainers.h' to remove #line markers. +// + +#line 1 "src/data/trainers.party" + +#line 11 [TRAINER_NONE] = { +#line 13 .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _(""), - .items = {}, + .encounterMusic_gender = +#line 16 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 17 .doubleBattle = FALSE, - .aiFlags = 0, .partySize = 0, - .party = NULL, + .party = (const struct TrainerMon[]) + { + }, }, - +#line 19 [TRAINER_SAWYER_1] = { +#line 20 + .trainerName = _("SAWYER"), +#line 21 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 22 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("SAWYER"), - .items = {}, + .encounterMusic_gender = +#line 24 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 25 .doubleBattle = FALSE, +#line 26 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer1), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 28 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 30 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 29 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 32 [TRAINER_GRUNT_AQUA_HIDEOUT_1] = { +#line 33 + .trainerName = _("GRUNT"), +#line 34 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 35 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout1), - }, - + .encounterMusic_gender = +#line 37 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 38 + .doubleBattle = FALSE, +#line 39 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 41 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 43 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 42 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 45 [TRAINER_GRUNT_AQUA_HIDEOUT_2] = { +#line 46 + .trainerName = _("GRUNT"), +#line 47 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 48 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout2), - }, - + .encounterMusic_gender = +#line 50 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 51 + .doubleBattle = FALSE, +#line 52 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 54 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 56 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 55 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 58 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 60 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 59 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 62 [TRAINER_GRUNT_AQUA_HIDEOUT_3] = { +#line 63 + .trainerName = _("GRUNT"), +#line 64 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 65 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout3), - }, - + .encounterMusic_gender = +#line 67 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 68 + .doubleBattle = FALSE, +#line 69 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 71 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 73 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 72 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 75 [TRAINER_GRUNT_AQUA_HIDEOUT_4] = { +#line 76 + .trainerName = _("GRUNT"), +#line 77 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 78 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout4), - }, - + .encounterMusic_gender = +#line 80 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 81 + .doubleBattle = FALSE, +#line 82 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 84 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 86 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 85 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 88 [TRAINER_GRUNT_SEAFLOOR_CAVERN_1] = { +#line 89 + .trainerName = _("GRUNT"), +#line 90 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 91 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern1), - }, - + .encounterMusic_gender = +#line 93 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 94 + .doubleBattle = FALSE, +#line 95 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 97 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 99 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 98 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 101 [TRAINER_GRUNT_SEAFLOOR_CAVERN_2] = { +#line 102 + .trainerName = _("GRUNT"), +#line 103 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 104 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern2), - }, - + .encounterMusic_gender = +#line 106 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 107 + .doubleBattle = FALSE, +#line 108 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 110 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 112 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 111 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 114 [TRAINER_GRUNT_SEAFLOOR_CAVERN_3] = { +#line 115 + .trainerName = _("GRUNT"), +#line 116 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 117 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern3), - }, - + .encounterMusic_gender = +#line 119 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 120 + .doubleBattle = FALSE, +#line 121 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 123 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 125 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 124 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 127 [TRAINER_GABRIELLE_1] = { +#line 128 + .trainerName = _("GABRIELLE"), +#line 129 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 130 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("GABRIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle1), - }, - + .encounterMusic_gender = +#line 131 +F_TRAINER_FEMALE | +#line 132 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 133 + .doubleBattle = FALSE, +#line 134 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 136 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 138 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 137 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 140 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 142 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 141 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 144 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 146 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 145 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 148 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 150 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 149 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 152 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 154 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 153 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 156 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 158 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 157 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 160 [TRAINER_GRUNT_PETALBURG_WOODS] = { +#line 161 + .trainerName = _("GRUNT"), +#line 162 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 163 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntPetalburgWoods), - }, - + .encounterMusic_gender = +#line 165 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 166 + .doubleBattle = FALSE, +#line 167 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 169 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 171 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 170 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 173 [TRAINER_MARCEL] = { +#line 174 + .trainerName = _("MARCEL"), +#line 175 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 176 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("MARCEL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 178 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 179 + .items = { ITEM_HYPER_POTION }, +#line 180 + .doubleBattle = FALSE, +#line 181 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Marcel), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 183 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 185 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 184 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 187 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 189 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 188 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 191 [TRAINER_ALBERTO] = { +#line 192 + .trainerName = _("ALBERTO"), +#line 193 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 194 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ALBERTO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alberto), - }, - + .encounterMusic_gender = +#line 196 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 197 + .doubleBattle = FALSE, +#line 198 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 200 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 202 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 201 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 204 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 206 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 205 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 208 [TRAINER_ED] = { +#line 209 + .trainerName = _("ED"), +#line 210 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 211 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("ED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ed), - }, - + .encounterMusic_gender = +#line 213 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 214 + .doubleBattle = FALSE, +#line 215 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 217 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 219 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 218 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 221 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 223 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 222 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 225 [TRAINER_GRUNT_SEAFLOOR_CAVERN_4] = { +#line 226 + .trainerName = _("GRUNT"), +#line 227 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 228 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern4), - }, - + .encounterMusic_gender = +#line 229 +F_TRAINER_FEMALE | +#line 230 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 231 + .doubleBattle = FALSE, +#line 232 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 234 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 236 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 235 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 238 [TRAINER_DECLAN] = { +#line 239 + .trainerName = _("DECLAN"), +#line 240 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 241 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DECLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Declan), - }, - + .encounterMusic_gender = +#line 243 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 244 + .doubleBattle = FALSE, +#line 245 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 247 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 249 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 248 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 251 [TRAINER_GRUNT_RUSTURF_TUNNEL] = { +#line 252 + .trainerName = _("GRUNT"), +#line 253 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 254 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntRusturfTunnel), - }, - + .encounterMusic_gender = +#line 256 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 257 + .doubleBattle = FALSE, +#line 258 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 260 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 262 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 261 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 264 [TRAINER_GRUNT_WEATHER_INST_1] = { +#line 265 + .trainerName = _("GRUNT"), +#line 266 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 267 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst1), - }, - + .encounterMusic_gender = +#line 269 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 270 + .doubleBattle = FALSE, +#line 271 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 273 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 275 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 274 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 277 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 279 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 278 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 281 [TRAINER_GRUNT_WEATHER_INST_2] = { +#line 282 + .trainerName = _("GRUNT"), +#line 283 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 284 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst2), - }, - + .encounterMusic_gender = +#line 286 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 287 + .doubleBattle = FALSE, +#line 288 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 290 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 292 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 291 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 294 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 296 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 295 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 298 [TRAINER_GRUNT_WEATHER_INST_3] = { +#line 299 + .trainerName = _("GRUNT"), +#line 300 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 301 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst3), - }, - + .encounterMusic_gender = +#line 303 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 304 + .doubleBattle = FALSE, +#line 305 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 307 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 309 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 308 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 311 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 313 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 312 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 315 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 317 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 316 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 319 [TRAINER_GRUNT_MUSEUM_1] = { +#line 320 + .trainerName = _("GRUNT"), +#line 321 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 322 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMuseum1), - }, - + .encounterMusic_gender = +#line 324 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 325 + .doubleBattle = FALSE, +#line 326 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 328 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 330 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 329 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 332 [TRAINER_GRUNT_MUSEUM_2] = { +#line 333 + .trainerName = _("GRUNT"), +#line 334 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 335 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMuseum2), - }, - + .encounterMusic_gender = +#line 337 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 338 + .doubleBattle = FALSE, +#line 339 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 341 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 343 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 342 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 345 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 347 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 346 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 349 [TRAINER_GRUNT_SPACE_CENTER_1] = { +#line 350 + .trainerName = _("GRUNT"), +#line 351 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 352 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter1), - }, - + .encounterMusic_gender = +#line 354 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 355 + .doubleBattle = FALSE, +#line 356 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 358 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 360 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 359 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 362 [TRAINER_GRUNT_MT_PYRE_1] = { +#line 363 + .trainerName = _("GRUNT"), +#line 364 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 365 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre1), - }, - + .encounterMusic_gender = +#line 367 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 368 + .doubleBattle = FALSE, +#line 369 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 371 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 373 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 372 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 375 [TRAINER_GRUNT_MT_PYRE_2] = { +#line 376 + .trainerName = _("GRUNT"), +#line 377 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 378 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre2), - }, - + .encounterMusic_gender = +#line 380 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 381 + .doubleBattle = FALSE, +#line 382 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 384 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 386 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 385 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 388 [TRAINER_GRUNT_MT_PYRE_3] = { +#line 389 + .trainerName = _("GRUNT"), +#line 390 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 391 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre3), - }, - + .encounterMusic_gender = +#line 393 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 394 + .doubleBattle = FALSE, +#line 395 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 397 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 399 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 398 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 401 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 403 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 402 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 405 [TRAINER_GRUNT_WEATHER_INST_4] = { +#line 406 + .trainerName = _("GRUNT"), +#line 407 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 408 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst4), - }, - + .encounterMusic_gender = +#line 409 +F_TRAINER_FEMALE | +#line 410 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 411 + .doubleBattle = FALSE, +#line 412 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 414 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 416 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 415 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 418 [TRAINER_GRUNT_AQUA_HIDEOUT_5] = { +#line 419 + .trainerName = _("GRUNT"), +#line 420 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 421 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout5), - }, - + .encounterMusic_gender = +#line 422 +F_TRAINER_FEMALE | +#line 423 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 424 + .doubleBattle = FALSE, +#line 425 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 427 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 429 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 428 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 431 [TRAINER_GRUNT_AQUA_HIDEOUT_6] = { +#line 432 + .trainerName = _("GRUNT"), +#line 433 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 434 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout6), - }, - + .encounterMusic_gender = +#line 435 +F_TRAINER_FEMALE | +#line 436 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 437 + .doubleBattle = FALSE, +#line 438 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 440 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 442 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 441 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 444 [TRAINER_FREDRICK] = { +#line 445 + .trainerName = _("FREDRICK"), +#line 446 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 447 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("FREDRICK"), - .items = {}, + .encounterMusic_gender = +#line 449 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 450 .doubleBattle = FALSE, +#line 451 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Fredrick), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 453 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 455 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 454 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 457 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 459 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 458 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 461 [TRAINER_MATT] = { +#line 462 + .trainerName = _("MATT"), +#line 463 .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 464 .trainerPic = TRAINER_PIC_AQUA_ADMIN_M, - .trainerName = _("MATT"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 466 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 467 + .items = { ITEM_SUPER_POTION }, +#line 468 + .doubleBattle = FALSE, +#line 469 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Matt), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 471 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 473 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 472 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 475 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 477 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 476 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 479 [TRAINER_ZANDER] = { +#line 480 + .trainerName = _("ZANDER"), +#line 481 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 482 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("ZANDER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Zander), - }, - + .encounterMusic_gender = +#line 484 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 485 + .doubleBattle = FALSE, +#line 486 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 488 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 490 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 489 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 492 [TRAINER_SHELLY_WEATHER_INSTITUTE] = { +#line 493 + .trainerName = _("SHELLY"), +#line 494 .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 495 .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, - .trainerName = _("SHELLY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 496 +F_TRAINER_FEMALE | +#line 497 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 498 + .doubleBattle = FALSE, +#line 499 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_ShellyWeatherInstitute), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 501 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 503 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 502 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 505 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 507 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 506 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 509 [TRAINER_SHELLY_SEAFLOOR_CAVERN] = { +#line 510 + .trainerName = _("SHELLY"), +#line 511 .trainerClass = TRAINER_CLASS_AQUA_ADMIN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 512 .trainerPic = TRAINER_PIC_AQUA_ADMIN_F, - .trainerName = _("SHELLY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 513 +F_TRAINER_FEMALE | +#line 514 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 515 + .doubleBattle = FALSE, +#line 516 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_ShellySeafloorCavern), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 518 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 520 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 519 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 522 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 524 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 523 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 526 [TRAINER_ARCHIE] = { +#line 527 + .trainerName = _("ARCHIE"), +#line 528 .trainerClass = TRAINER_CLASS_AQUA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 529 .trainerPic = TRAINER_PIC_AQUA_LEADER_ARCHIE, - .trainerName = _("ARCHIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 531 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 532 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 533 + .doubleBattle = FALSE, +#line 534 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Archie), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 536 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 538 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 537 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 540 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 542 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 541 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 544 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 546 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 545 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 548 [TRAINER_LEAH] = { +#line 549 + .trainerName = _("LEAH"), +#line 550 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 551 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("LEAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leah), - }, - + .encounterMusic_gender = +#line 552 +F_TRAINER_FEMALE | +#line 553 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 554 + .doubleBattle = FALSE, +#line 555 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 557 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 559 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 558 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 561 [TRAINER_DAISY] = { +#line 562 + .trainerName = _("DAISY"), +#line 563 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 564 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("DAISY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daisy), - }, - + .encounterMusic_gender = +#line 565 +F_TRAINER_FEMALE | +#line 566 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 567 + .doubleBattle = FALSE, +#line 568 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 570 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 572 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 571 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 574 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 576 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 575 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 578 [TRAINER_ROSE_1] = { +#line 579 + .trainerName = _("ROSE"), +#line 580 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 581 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("ROSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose1), - }, - + .encounterMusic_gender = +#line 582 +F_TRAINER_FEMALE | +#line 583 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 584 + .doubleBattle = FALSE, +#line 585 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 587 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 589 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 588 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 591 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 593 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 592 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 595 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 597 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 596 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 599 [TRAINER_FELIX] = { +#line 600 + .trainerName = _("FELIX"), +#line 601 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 602 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("FELIX"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 604 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 605 + .items = { ITEM_FULL_RESTORE }, +#line 606 + .doubleBattle = FALSE, +#line 607 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Felix), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 609 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 611 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 610 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 612 + MOVE_PSYCHIC, + }, + }, + { +#line 614 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 616 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 615 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 617 + MOVE_SKILL_SWAP, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 620 [TRAINER_VIOLET] = { +#line 621 + .trainerName = _("VIOLET"), +#line 622 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 623 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("VIOLET"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Violet), - }, - + .encounterMusic_gender = +#line 624 +F_TRAINER_FEMALE | +#line 625 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 626 + .doubleBattle = FALSE, +#line 627 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 629 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 631 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 630 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 633 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 635 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 634 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 637 [TRAINER_ROSE_2] = { +#line 638 + .trainerName = _("ROSE"), +#line 639 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 640 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("ROSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose2), - }, - + .encounterMusic_gender = +#line 641 +F_TRAINER_FEMALE | +#line 642 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 643 + .doubleBattle = FALSE, +#line 644 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 646 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 648 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 647 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 650 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 652 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 651 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 654 [TRAINER_ROSE_3] = { +#line 655 + .trainerName = _("ROSE"), +#line 656 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 657 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("ROSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose3), - }, - + .encounterMusic_gender = +#line 658 +F_TRAINER_FEMALE | +#line 659 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 660 + .doubleBattle = FALSE, +#line 661 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 663 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 665 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 664 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 667 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 669 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 668 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 671 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 673 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 672 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 675 [TRAINER_ROSE_4] = { +#line 676 + .trainerName = _("ROSE"), +#line 677 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 678 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("ROSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose4), - }, - + .encounterMusic_gender = +#line 679 +F_TRAINER_FEMALE | +#line 680 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 681 + .doubleBattle = FALSE, +#line 682 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 684 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 686 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 685 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 688 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 690 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 689 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 692 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 694 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 693 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 696 [TRAINER_ROSE_5] = { +#line 697 + .trainerName = _("ROSE"), +#line 698 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 699 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("ROSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rose5), - }, - + .encounterMusic_gender = +#line 700 +F_TRAINER_FEMALE | +#line 701 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 702 + .doubleBattle = FALSE, +#line 703 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 705 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 707 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 706 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 709 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 711 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 710 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 713 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 715 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 714 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 717 [TRAINER_DUSTY_1] = { +#line 718 + .trainerName = _("DUSTY"), +#line 719 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 720 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("DUSTY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty1), - }, - + .encounterMusic_gender = +#line 722 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 723 + .doubleBattle = FALSE, +#line 724 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 726 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 728 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 727 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 729 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 734 [TRAINER_CHIP] = { +#line 735 + .trainerName = _("CHIP"), +#line 736 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 737 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("CHIP"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chip), - }, - + .encounterMusic_gender = +#line 739 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 740 + .doubleBattle = FALSE, +#line 741 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 743 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 745 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 744 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 746 + MOVE_PSYBEAM, + MOVE_SELF_DESTRUCT, + MOVE_SANDSTORM, + MOVE_ANCIENT_POWER, + }, + }, + { +#line 751 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 753 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 752 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 754 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + { +#line 759 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 761 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 760 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 762 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 767 [TRAINER_FOSTER] = { +#line 768 + .trainerName = _("FOSTER"), +#line 769 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 770 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("FOSTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Foster), - }, - + .encounterMusic_gender = +#line 772 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 773 + .doubleBattle = FALSE, +#line 774 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 776 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 778 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 777 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 779 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + { +#line 784 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 786 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 785 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 787 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 792 [TRAINER_DUSTY_2] = { +#line 793 + .trainerName = _("DUSTY"), +#line 794 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 795 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("DUSTY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty2), - }, - + .encounterMusic_gender = +#line 797 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 798 + .doubleBattle = FALSE, +#line 799 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 801 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 803 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 802 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 804 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 809 [TRAINER_DUSTY_3] = { +#line 810 + .trainerName = _("DUSTY"), +#line 811 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 812 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("DUSTY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty3), - }, - + .encounterMusic_gender = +#line 814 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 815 + .doubleBattle = FALSE, +#line 816 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 818 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 820 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 819 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 821 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 826 [TRAINER_DUSTY_4] = { +#line 827 + .trainerName = _("DUSTY"), +#line 828 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 829 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("DUSTY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty4), - }, - + .encounterMusic_gender = +#line 831 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 832 + .doubleBattle = FALSE, +#line 833 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 835 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 837 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 836 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 838 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 843 [TRAINER_DUSTY_5] = { +#line 844 + .trainerName = _("DUSTY"), +#line 845 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 846 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("DUSTY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dusty5), - }, - + .encounterMusic_gender = +#line 848 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 849 + .doubleBattle = FALSE, +#line 850 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 852 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 854 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 853 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 855 + MOVE_DIG, + MOVE_SLASH, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + }, + }, + }, + }, +#line 860 [TRAINER_GABBY_AND_TY_1] = { +#line 861 + .trainerName = _("GABBY & TY"), +#line 862 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 863 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 865 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 866 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy1), - }, - +#line 867 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 869 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 871 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 870 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 873 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 875 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 874 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 877 [TRAINER_GABBY_AND_TY_2] = { +#line 878 + .trainerName = _("GABBY & TY"), +#line 879 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 880 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 882 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 883 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy2), - }, - +#line 884 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 886 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 888 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 887 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 890 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 892 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 891 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 894 [TRAINER_GABBY_AND_TY_3] = { +#line 895 + .trainerName = _("GABBY & TY"), +#line 896 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 897 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 899 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 900 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy3), - }, - +#line 901 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 903 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 905 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 904 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 907 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 909 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 908 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 911 [TRAINER_GABBY_AND_TY_4] = { +#line 912 + .trainerName = _("GABBY & TY"), +#line 913 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 914 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 916 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 917 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy4), - }, - +#line 918 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 920 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 922 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 921 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 924 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 926 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 925 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 928 [TRAINER_GABBY_AND_TY_5] = { +#line 929 + .trainerName = _("GABBY & TY"), +#line 930 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 931 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 933 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 934 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy5), - }, - +#line 935 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 937 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 939 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 938 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 941 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 943 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 942 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 945 [TRAINER_GABBY_AND_TY_6] = { +#line 946 + .trainerName = _("GABBY & TY"), +#line 947 .trainerClass = TRAINER_CLASS_INTERVIEWER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 948 .trainerPic = TRAINER_PIC_INTERVIEWER, - .trainerName = _("GABBY & TY"), - .items = {}, + .encounterMusic_gender = +#line 950 + TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, +#line 951 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GabbyAndTy6), - }, - +#line 952 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 954 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 956 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 955 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 957 + MOVE_SONIC_BOOM, + MOVE_THUNDER_WAVE, + MOVE_METAL_SOUND, + MOVE_THUNDERBOLT, + }, + }, + { +#line 962 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 964 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 963 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 965 + MOVE_ASTONISH, + MOVE_STOMP, + MOVE_SUPERSONIC, + MOVE_HYPER_VOICE, + }, + }, + }, + }, +#line 970 [TRAINER_LOLA_1] = { +#line 971 + .trainerName = _("LOLA"), +#line 972 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 973 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("LOLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola1), - }, - + .encounterMusic_gender = +#line 974 +F_TRAINER_FEMALE | +#line 975 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 976 + .doubleBattle = FALSE, +#line 977 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 979 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 981 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 980 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 983 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 985 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 984 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 987 [TRAINER_AUSTINA] = { +#line 988 + .trainerName = _("AUSTINA"), +#line 989 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 990 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("AUSTINA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Austina), - }, - + .encounterMusic_gender = +#line 991 +F_TRAINER_FEMALE | +#line 992 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 993 + .doubleBattle = FALSE, +#line 994 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 996 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 998 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 997 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1000 [TRAINER_GWEN] = { +#line 1001 + .trainerName = _("GWEN"), +#line 1002 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1003 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("GWEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gwen), - }, - + .encounterMusic_gender = +#line 1004 +F_TRAINER_FEMALE | +#line 1005 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1006 + .doubleBattle = FALSE, +#line 1007 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1009 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1011 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1010 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1013 [TRAINER_LOLA_2] = { +#line 1014 + .trainerName = _("LOLA"), +#line 1015 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1016 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("LOLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola2), - }, - + .encounterMusic_gender = +#line 1017 +F_TRAINER_FEMALE | +#line 1018 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1019 + .doubleBattle = FALSE, +#line 1020 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1022 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1024 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1023 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1026 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1028 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1027 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1030 [TRAINER_LOLA_3] = { +#line 1031 + .trainerName = _("LOLA"), +#line 1032 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1033 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("LOLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola3), - }, - + .encounterMusic_gender = +#line 1034 +F_TRAINER_FEMALE | +#line 1035 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1036 + .doubleBattle = FALSE, +#line 1037 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1039 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1041 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1040 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1043 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1045 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1044 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1047 [TRAINER_LOLA_4] = { +#line 1048 + .trainerName = _("LOLA"), +#line 1049 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1050 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("LOLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola4), - }, - + .encounterMusic_gender = +#line 1051 +F_TRAINER_FEMALE | +#line 1052 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1053 + .doubleBattle = FALSE, +#line 1054 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1056 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1058 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1057 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1060 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1062 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1061 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1064 [TRAINER_LOLA_5] = { +#line 1065 + .trainerName = _("LOLA"), +#line 1066 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1067 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("LOLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lola5), - }, - + .encounterMusic_gender = +#line 1068 +F_TRAINER_FEMALE | +#line 1069 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1070 + .doubleBattle = FALSE, +#line 1071 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1073 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1075 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1074 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1077 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1079 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1078 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1081 [TRAINER_RICKY_1] = { +#line 1082 + .trainerName = _("RICKY"), +#line 1083 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1084 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("RICKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky1), - }, - + .encounterMusic_gender = +#line 1086 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1087 + .doubleBattle = FALSE, +#line 1088 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1090 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1092 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1091 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1093 + MOVE_SAND_ATTACK, + MOVE_HEADBUTT, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, + }, +#line 1098 [TRAINER_SIMON] = { +#line 1099 + .trainerName = _("SIMON"), +#line 1100 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1101 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("SIMON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Simon), - }, - + .encounterMusic_gender = +#line 1103 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1104 + .doubleBattle = FALSE, +#line 1105 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1107 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1109 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1108 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1111 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1113 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1112 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1115 [TRAINER_CHARLIE] = { +#line 1116 + .trainerName = _("CHARLIE"), +#line 1117 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1118 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("CHARLIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Charlie), - }, - + .encounterMusic_gender = +#line 1120 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1121 + .doubleBattle = FALSE, +#line 1122 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1124 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1126 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1125 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1128 [TRAINER_RICKY_2] = { +#line 1129 + .trainerName = _("RICKY"), +#line 1130 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1131 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("RICKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky2), - }, - + .encounterMusic_gender = +#line 1133 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1134 + .doubleBattle = FALSE, +#line 1135 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1137 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1139 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1138 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1140 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, + }, +#line 1145 [TRAINER_RICKY_3] = { +#line 1146 + .trainerName = _("RICKY"), +#line 1147 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1148 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("RICKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky3), - }, - + .encounterMusic_gender = +#line 1150 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1151 + .doubleBattle = FALSE, +#line 1152 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1154 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1156 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 1155 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1157 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, + }, +#line 1162 [TRAINER_RICKY_4] = { +#line 1163 + .trainerName = _("RICKY"), +#line 1164 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1165 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("RICKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky4), - }, - + .encounterMusic_gender = +#line 1167 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1168 + .doubleBattle = FALSE, +#line 1169 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1171 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1173 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 1172 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1174 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, + }, +#line 1179 [TRAINER_RICKY_5] = { +#line 1180 + .trainerName = _("RICKY"), +#line 1181 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1182 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("RICKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ricky5), - }, - + .encounterMusic_gender = +#line 1184 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 1185 + .doubleBattle = FALSE, +#line 1186 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1188 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1190 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 1189 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1191 + MOVE_SAND_ATTACK, + MOVE_PIN_MISSILE, + MOVE_TAIL_WHIP, + MOVE_SURF, + }, + }, + }, + }, +#line 1196 [TRAINER_RANDALL] = { +#line 1197 + .trainerName = _("RANDALL"), +#line 1198 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1199 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("RANDALL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1201 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1202 + .items = { ITEM_HYPER_POTION }, +#line 1203 + .doubleBattle = FALSE, +#line 1204 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Randall), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1206 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1208 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1207 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1209 + MOVE_QUICK_ATTACK, + MOVE_AGILITY, + MOVE_WING_ATTACK, + }, + }, + }, + }, +#line 1213 [TRAINER_PARKER] = { +#line 1214 + .trainerName = _("PARKER"), +#line 1215 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1216 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("PARKER"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1218 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1219 + .items = { ITEM_HYPER_POTION }, +#line 1220 + .doubleBattle = FALSE, +#line 1221 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Parker), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1223 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1225 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1224 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1226 + MOVE_TEETER_DANCE, + MOVE_DIZZY_PUNCH, + MOVE_FOCUS_PUNCH, + }, + }, + }, + }, +#line 1230 [TRAINER_GEORGE] = { +#line 1231 + .trainerName = _("GEORGE"), +#line 1232 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1233 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("GEORGE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1235 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1236 + .items = { ITEM_HYPER_POTION }, +#line 1237 + .doubleBattle = FALSE, +#line 1238 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_George), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1240 + .species = SPECIES_SLAKOTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1240 + .heldItem = ITEM_SITRUS_BERRY, +#line 1242 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1241 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1243 + MOVE_SLACK_OFF, + MOVE_COUNTER, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 1247 [TRAINER_BERKE] = { +#line 1248 + .trainerName = _("BERKE"), +#line 1249 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1250 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("BERKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1252 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1253 + .items = { ITEM_HYPER_POTION }, +#line 1254 + .doubleBattle = FALSE, +#line 1255 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Berke), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1257 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1259 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1258 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1260 + MOVE_FOCUS_ENERGY, + MOVE_SLASH, + }, + }, + }, + }, +#line 1263 [TRAINER_BRAXTON] = { +#line 1264 + .trainerName = _("BRAXTON"), +#line 1265 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1266 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("BRAXTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1268 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1269 + .items = { ITEM_HYPER_POTION }, +#line 1270 + .doubleBattle = FALSE, +#line 1271 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Braxton), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 1273 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1275 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1274 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1276 + MOVE_FOCUS_ENERGY, + MOVE_QUICK_ATTACK, + MOVE_WING_ATTACK, + MOVE_ENDEAVOR, + }, + }, + { +#line 1281 + .species = SPECIES_TRAPINCH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1283 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1282 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1284 + MOVE_BITE, + MOVE_DIG, + MOVE_FEINT_ATTACK, + MOVE_SAND_TOMB, + }, + }, + { +#line 1289 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1291 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1290 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1292 + MOVE_ROLLOUT, + MOVE_WHIRLPOOL, + MOVE_ASTONISH, + MOVE_WATER_PULSE, + }, + }, + { +#line 1297 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1299 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1298 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1300 + MOVE_THUNDERBOLT, + MOVE_SUPERSONIC, + MOVE_THUNDER_WAVE, + MOVE_SONIC_BOOM, + }, + }, + { +#line 1305 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1307 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1306 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1308 + MOVE_GIGA_DRAIN, + MOVE_FEINT_ATTACK, + MOVE_DOUBLE_TEAM, + MOVE_SWAGGER, + }, + }, + }, + }, +#line 1313 [TRAINER_VINCENT] = { +#line 1314 + .trainerName = _("VINCENT"), +#line 1315 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1316 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("VINCENT"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1318 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1319 + .items = { ITEM_FULL_RESTORE }, +#line 1320 + .doubleBattle = FALSE, +#line 1321 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vincent), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1323 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1325 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1324 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1327 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1329 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1328 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1331 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1333 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1332 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1335 [TRAINER_LEROY] = { +#line 1336 + .trainerName = _("LEROY"), +#line 1337 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1338 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("LEROY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1340 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1341 + .items = { ITEM_FULL_RESTORE }, +#line 1342 + .doubleBattle = FALSE, +#line 1343 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Leroy), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1345 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1347 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1346 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1349 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1351 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1350 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1353 [TRAINER_WILTON_1] = { +#line 1354 + .trainerName = _("WILTON"), +#line 1355 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1356 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WILTON"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1358 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1359 + .items = { ITEM_SUPER_POTION }, +#line 1360 + .doubleBattle = FALSE, +#line 1361 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton1), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1363 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1365 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1364 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1367 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1369 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1368 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1371 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1373 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1372 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1375 [TRAINER_EDGAR] = { +#line 1376 + .trainerName = _("EDGAR"), +#line 1377 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1378 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("EDGAR"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1380 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1381 + .items = { ITEM_FULL_RESTORE }, +#line 1382 + .doubleBattle = FALSE, +#line 1383 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Edgar), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1385 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1387 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1386 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1389 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1391 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1390 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1393 [TRAINER_ALBERT] = { +#line 1394 + .trainerName = _("ALBERT"), +#line 1395 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1396 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("ALBERT"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1398 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1399 + .items = { ITEM_FULL_RESTORE }, +#line 1400 + .doubleBattle = FALSE, +#line 1401 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Albert), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1403 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1405 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1404 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1407 + .species = SPECIES_MUK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1409 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1408 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1411 [TRAINER_SAMUEL] = { +#line 1412 + .trainerName = _("SAMUEL"), +#line 1413 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1414 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("SAMUEL"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1416 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1417 + .items = { ITEM_FULL_RESTORE }, +#line 1418 + .doubleBattle = FALSE, +#line 1419 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Samuel), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1421 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1423 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1422 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1425 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1427 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1426 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1429 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1431 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1430 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1433 [TRAINER_VITO] = { +#line 1434 + .trainerName = _("VITO"), +#line 1435 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1436 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("VITO"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1438 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1439 + .items = { ITEM_FULL_RESTORE }, +#line 1440 + .doubleBattle = FALSE, +#line 1441 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vito), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 1443 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1445 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1444 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1447 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1449 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1448 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1451 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1453 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1452 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1455 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1457 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1456 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1459 [TRAINER_OWEN] = { +#line 1460 + .trainerName = _("OWEN"), +#line 1461 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1462 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("OWEN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1464 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1465 + .items = { ITEM_FULL_RESTORE }, +#line 1466 + .doubleBattle = FALSE, +#line 1467 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Owen), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1469 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1471 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1470 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1473 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1475 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1474 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1477 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1479 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1478 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1481 [TRAINER_WILTON_2] = { +#line 1482 + .trainerName = _("WILTON"), +#line 1483 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1484 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WILTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1486 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1487 + .items = { ITEM_HYPER_POTION }, +#line 1488 + .doubleBattle = FALSE, +#line 1489 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton2), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1491 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1493 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1492 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1495 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1497 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1496 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1499 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1501 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1500 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1503 [TRAINER_WILTON_3] = { +#line 1504 + .trainerName = _("WILTON"), +#line 1505 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1506 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WILTON"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1508 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1509 + .items = { ITEM_HYPER_POTION }, +#line 1510 + .doubleBattle = FALSE, +#line 1511 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton3), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1513 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1515 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1514 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1517 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1519 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1518 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1521 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1523 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1522 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1525 [TRAINER_WILTON_4] = { +#line 1526 + .trainerName = _("WILTON"), +#line 1527 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1528 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WILTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1530 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1531 + .items = { ITEM_FULL_RESTORE }, +#line 1532 + .doubleBattle = FALSE, +#line 1533 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton4), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1535 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1537 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1536 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1539 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1541 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1540 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1543 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1545 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1544 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1547 [TRAINER_WILTON_5] = { +#line 1548 + .trainerName = _("WILTON"), +#line 1549 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1550 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WILTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1552 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1553 + .items = { ITEM_FULL_RESTORE }, +#line 1554 + .doubleBattle = FALSE, +#line 1555 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wilton5), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1557 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1559 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1558 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1561 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1563 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1562 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1565 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1567 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1566 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1569 [TRAINER_WARREN] = { +#line 1570 + .trainerName = _("WARREN"), +#line 1571 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1572 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("WARREN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1574 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1575 + .items = { ITEM_FULL_RESTORE }, +#line 1576 + .doubleBattle = FALSE, +#line 1577 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Warren), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1579 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1581 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1580 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1583 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1585 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1584 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1587 [TRAINER_MARY] = { +#line 1588 + .trainerName = _("MARY"), +#line 1589 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1590 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("MARY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1591 +F_TRAINER_FEMALE | +#line 1592 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1593 + .items = { ITEM_HYPER_POTION }, +#line 1594 + .doubleBattle = FALSE, +#line 1595 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Mary), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1597 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1599 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1598 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1600 + MOVE_FEINT_ATTACK, + MOVE_SHOCK_WAVE, + }, + }, + }, + }, +#line 1603 [TRAINER_ALEXIA] = { +#line 1604 + .trainerName = _("ALEXIA"), +#line 1605 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1606 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("ALEXIA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1607 +F_TRAINER_FEMALE | +#line 1608 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1609 + .items = { ITEM_HYPER_POTION }, +#line 1610 + .doubleBattle = FALSE, +#line 1611 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Alexia), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1613 + .species = SPECIES_WIGGLYTUFF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1615 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1614 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1616 + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 1620 [TRAINER_JODY] = { +#line 1621 + .trainerName = _("JODY"), +#line 1622 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1623 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("JODY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1624 +F_TRAINER_FEMALE | +#line 1625 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1626 + .items = { ITEM_HYPER_POTION }, +#line 1627 + .doubleBattle = FALSE, +#line 1628 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jody), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1630 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1632 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 1631 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1633 + MOVE_SWORDS_DANCE, + MOVE_SLASH, + }, + }, + }, + }, +#line 1636 [TRAINER_WENDY] = { +#line 1637 + .trainerName = _("WENDY"), +#line 1638 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1639 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("WENDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1640 +F_TRAINER_FEMALE | +#line 1641 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1642 + .items = { ITEM_FULL_RESTORE }, +#line 1643 + .doubleBattle = FALSE, +#line 1644 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Wendy), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1646 + .species = SPECIES_MAWILE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1648 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1647 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1649 + MOVE_BATON_PASS, + MOVE_FEINT_ATTACK, + MOVE_FAKE_TEARS, + MOVE_BITE, + }, + }, + { +#line 1654 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1656 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1655 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1657 + MOVE_MEGA_DRAIN, + MOVE_MAGICAL_LEAF, + MOVE_GRASS_WHISTLE, + MOVE_LEECH_SEED, + }, + }, + { +#line 1662 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1664 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1663 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 1665 + MOVE_FLY, + MOVE_WATER_GUN, + MOVE_MIST, + MOVE_PROTECT, + }, + }, + }, + }, +#line 1670 [TRAINER_KEIRA] = { +#line 1671 + .trainerName = _("KEIRA"), +#line 1672 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1673 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("KEIRA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1674 +F_TRAINER_FEMALE | +#line 1675 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1676 + .items = { ITEM_FULL_RESTORE }, +#line 1677 + .doubleBattle = FALSE, +#line 1678 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Keira), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1680 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1682 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1681 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1684 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1686 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1685 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1688 [TRAINER_BROOKE_1] = { +#line 1689 + .trainerName = _("BROOKE"), +#line 1690 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1691 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("BROOKE"), - .items = {ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1692 +F_TRAINER_FEMALE | +#line 1693 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1694 + .items = { ITEM_SUPER_POTION }, +#line 1695 + .doubleBattle = FALSE, +#line 1696 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke1), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1698 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1700 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1699 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1702 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1704 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1703 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1706 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1708 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1707 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1710 [TRAINER_JENNIFER] = { +#line 1711 + .trainerName = _("JENNIFER"), +#line 1712 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1713 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("JENNIFER"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1714 +F_TRAINER_FEMALE | +#line 1715 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1716 + .items = { ITEM_FULL_RESTORE }, +#line 1717 + .doubleBattle = FALSE, +#line 1718 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jennifer), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1720 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1722 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 1721 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1724 [TRAINER_HOPE] = { +#line 1725 + .trainerName = _("HOPE"), +#line 1726 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1727 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("HOPE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1728 +F_TRAINER_FEMALE | +#line 1729 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1730 + .items = { ITEM_FULL_RESTORE }, +#line 1731 + .doubleBattle = FALSE, +#line 1732 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Hope), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1734 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1736 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1735 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1738 [TRAINER_SHANNON] = { +#line 1739 + .trainerName = _("SHANNON"), +#line 1740 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1741 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("SHANNON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1742 +F_TRAINER_FEMALE | +#line 1743 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1744 + .items = { ITEM_FULL_RESTORE }, +#line 1745 + .doubleBattle = FALSE, +#line 1746 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shannon), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1748 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1750 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1749 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1752 [TRAINER_MICHELLE] = { +#line 1753 + .trainerName = _("MICHELLE"), +#line 1754 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1755 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("MICHELLE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1756 +F_TRAINER_FEMALE | +#line 1757 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1758 + .items = { ITEM_FULL_RESTORE }, +#line 1759 + .doubleBattle = FALSE, +#line 1760 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Michelle), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1762 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1764 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1763 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1766 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1768 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1767 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1770 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1772 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1771 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1774 [TRAINER_CAROLINE] = { +#line 1775 + .trainerName = _("CAROLINE"), +#line 1776 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1777 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CAROLINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1778 +F_TRAINER_FEMALE | +#line 1779 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1780 + .items = { ITEM_FULL_RESTORE }, +#line 1781 + .doubleBattle = FALSE, +#line 1782 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Caroline), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1784 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1786 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1785 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1788 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1790 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1789 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1792 [TRAINER_JULIE] = { +#line 1793 + .trainerName = _("JULIE"), +#line 1794 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1795 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("JULIE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1796 +F_TRAINER_FEMALE | +#line 1797 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1798 + .items = { ITEM_FULL_RESTORE }, +#line 1799 + .doubleBattle = FALSE, +#line 1800 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Julie), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1802 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1804 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1803 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1806 + .species = SPECIES_NINETALES, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1808 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1807 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1810 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1812 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 1811 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1814 [TRAINER_BROOKE_2] = { +#line 1815 + .trainerName = _("BROOKE"), +#line 1816 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1817 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("BROOKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1818 +F_TRAINER_FEMALE | +#line 1819 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1820 + .items = { ITEM_HYPER_POTION }, +#line 1821 + .doubleBattle = FALSE, +#line 1822 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke2), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1824 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1826 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1825 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1828 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1830 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1829 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1832 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1834 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 1833 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1836 [TRAINER_BROOKE_3] = { +#line 1837 + .trainerName = _("BROOKE"), +#line 1838 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1839 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("BROOKE"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1840 +F_TRAINER_FEMALE | +#line 1841 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1842 + .items = { ITEM_HYPER_POTION }, +#line 1843 + .doubleBattle = FALSE, +#line 1844 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke3), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1846 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1848 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1847 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1850 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1852 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1851 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1854 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1856 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 1855 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1858 [TRAINER_BROOKE_4] = { +#line 1859 + .trainerName = _("BROOKE"), +#line 1860 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1861 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("BROOKE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1862 +F_TRAINER_FEMALE | +#line 1863 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1864 + .items = { ITEM_FULL_RESTORE }, +#line 1865 + .doubleBattle = FALSE, +#line 1866 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke4), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1868 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1870 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1869 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1872 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1874 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1873 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1876 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1878 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 1877 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1880 [TRAINER_BROOKE_5] = { +#line 1881 + .trainerName = _("BROOKE"), +#line 1882 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1883 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("BROOKE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 1884 +F_TRAINER_FEMALE | +#line 1885 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 1886 + .items = { ITEM_FULL_RESTORE }, +#line 1887 + .doubleBattle = FALSE, +#line 1888 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brooke5), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 1890 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1892 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1891 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1894 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1896 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1895 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1898 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1900 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 1899 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1902 [TRAINER_PATRICIA] = { +#line 1903 + .trainerName = _("PATRICIA"), +#line 1904 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1905 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("PATRICIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Patricia), - }, - + .encounterMusic_gender = +#line 1906 +F_TRAINER_FEMALE | +#line 1907 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1908 + .doubleBattle = FALSE, +#line 1909 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1911 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1913 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1912 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1915 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1917 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1916 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1919 [TRAINER_KINDRA] = { +#line 1920 + .trainerName = _("KINDRA"), +#line 1921 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1922 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("KINDRA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kindra), - }, - + .encounterMusic_gender = +#line 1923 +F_TRAINER_FEMALE | +#line 1924 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1925 + .doubleBattle = FALSE, +#line 1926 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1928 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1930 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1929 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1932 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1934 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1933 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1936 [TRAINER_TAMMY] = { +#line 1937 + .trainerName = _("TAMMY"), +#line 1938 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1939 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("TAMMY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tammy), - }, - + .encounterMusic_gender = +#line 1940 +F_TRAINER_FEMALE | +#line 1941 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1942 + .doubleBattle = FALSE, +#line 1943 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1945 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1947 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1946 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1949 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1951 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1950 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1953 [TRAINER_VALERIE_1] = { +#line 1954 + .trainerName = _("VALERIE"), +#line 1955 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1956 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("VALERIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie1), - }, - + .encounterMusic_gender = +#line 1957 +F_TRAINER_FEMALE | +#line 1958 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1959 + .doubleBattle = FALSE, +#line 1960 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1962 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1964 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 1963 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1966 [TRAINER_TASHA] = { +#line 1967 + .trainerName = _("TASHA"), +#line 1968 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1969 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("TASHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tasha), - }, - + .encounterMusic_gender = +#line 1970 +F_TRAINER_FEMALE | +#line 1971 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1972 + .doubleBattle = FALSE, +#line 1973 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 1975 + .species = SPECIES_SHUPPET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1977 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 1976 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1979 [TRAINER_VALERIE_2] = { +#line 1980 + .trainerName = _("VALERIE"), +#line 1981 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1982 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("VALERIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie2), - }, - + .encounterMusic_gender = +#line 1983 +F_TRAINER_FEMALE | +#line 1984 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1985 + .doubleBattle = FALSE, +#line 1986 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 1988 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1990 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1989 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 1992 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 1994 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 1993 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 1996 [TRAINER_VALERIE_3] = { +#line 1997 + .trainerName = _("VALERIE"), +#line 1998 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 1999 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("VALERIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie3), - }, - + .encounterMusic_gender = +#line 2000 +F_TRAINER_FEMALE | +#line 2001 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2002 + .doubleBattle = FALSE, +#line 2003 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2005 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2007 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2006 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2009 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2011 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2010 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2013 [TRAINER_VALERIE_4] = { +#line 2014 + .trainerName = _("VALERIE"), +#line 2015 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2016 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("VALERIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie4), - }, - + .encounterMusic_gender = +#line 2017 +F_TRAINER_FEMALE | +#line 2018 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2019 + .doubleBattle = FALSE, +#line 2020 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2022 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2024 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2023 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2026 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2028 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2027 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2030 [TRAINER_VALERIE_5] = { +#line 2031 + .trainerName = _("VALERIE"), +#line 2032 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2033 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("VALERIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Valerie5), - }, - + .encounterMusic_gender = +#line 2034 +F_TRAINER_FEMALE | +#line 2035 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2036 + .doubleBattle = FALSE, +#line 2037 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2039 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2041 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2040 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2043 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2045 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2044 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2047 + .species = SPECIES_GRUMPIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2049 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2048 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2051 [TRAINER_CINDY_1] = { +#line 2052 + .trainerName = _("CINDY"), +#line 2053 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2054 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy1), - }, - + .encounterMusic_gender = +#line 2055 +F_TRAINER_FEMALE | +#line 2056 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2057 + .items = { ITEM_FULL_RESTORE }, +#line 2058 + .doubleBattle = FALSE, +#line 2059 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2061 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2061 + .heldItem = ITEM_NUGGET, +#line 2063 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2062 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2065 [TRAINER_DAPHNE] = { +#line 2066 + .trainerName = _("DAPHNE"), +#line 2067 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2068 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("DAPHNE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daphne), - }, - + .encounterMusic_gender = +#line 2069 +F_TRAINER_FEMALE | +#line 2070 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2071 + .items = { ITEM_FULL_RESTORE }, +#line 2072 + .doubleBattle = FALSE, +#line 2073 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2075 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2075 + .heldItem = ITEM_NUGGET, +#line 2077 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2076 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2078 + MOVE_ATTRACT, + MOVE_SWEET_KISS, + MOVE_FLAIL, + MOVE_WATER_PULSE, + }, + }, + { +#line 2083 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2083 + .heldItem = ITEM_NUGGET, +#line 2085 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2084 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2086 + MOVE_ATTRACT, + MOVE_SAFEGUARD, + MOVE_TAKE_DOWN, + MOVE_WATER_PULSE, + }, + }, + }, + }, +#line 2091 [TRAINER_GRUNT_SPACE_CENTER_2] = { +#line 2092 + .trainerName = _("GRUNT"), +#line 2093 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2094 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter2), - }, - + .encounterMusic_gender = +#line 2096 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2097 + .doubleBattle = FALSE, +#line 2098 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2100 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2102 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2101 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2104 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2106 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2105 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2108 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2110 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2109 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2112 [TRAINER_CINDY_2] = { +#line 2113 + .trainerName = _("CINDY"), +#line 2114 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2115 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy2), - }, - + .encounterMusic_gender = +#line 2116 +F_TRAINER_FEMALE | +#line 2117 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2118 + .items = { ITEM_FULL_RESTORE }, +#line 2119 + .doubleBattle = FALSE, +#line 2120 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2122 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2122 + .heldItem = ITEM_NUGGET, +#line 2124 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2123 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2125 + MOVE_TACKLE, + MOVE_TAIL_WHIP, + }, + }, + }, + }, +#line 2128 [TRAINER_BRIANNA] = { +#line 2129 + .trainerName = _("BRIANNA"), +#line 2130 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2131 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("BRIANNA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brianna), - }, - + .encounterMusic_gender = +#line 2132 +F_TRAINER_FEMALE | +#line 2133 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2134 + .items = { ITEM_FULL_RESTORE }, +#line 2135 + .doubleBattle = FALSE, +#line 2136 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2138 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2138 + .heldItem = ITEM_NUGGET, +#line 2140 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 2139 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2142 [TRAINER_NAOMI] = { +#line 2143 + .trainerName = _("NAOMI"), +#line 2144 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2145 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("NAOMI"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Naomi), - }, - + .encounterMusic_gender = +#line 2146 +F_TRAINER_FEMALE | +#line 2147 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2148 + .items = { ITEM_FULL_RESTORE }, +#line 2149 + .doubleBattle = FALSE, +#line 2150 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2152 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2152 + .heldItem = ITEM_NUGGET, +#line 2154 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2153 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2156 [TRAINER_CINDY_3] = { +#line 2157 + .trainerName = _("CINDY"), +#line 2158 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2159 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy3), - }, - + .encounterMusic_gender = +#line 2160 +F_TRAINER_FEMALE | +#line 2161 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2162 + .items = { ITEM_FULL_RESTORE }, +#line 2163 + .doubleBattle = FALSE, +#line 2164 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2166 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2166 + .heldItem = ITEM_NUGGET, +#line 2168 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2167 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2170 [TRAINER_CINDY_4] = { +#line 2171 + .trainerName = _("CINDY"), +#line 2172 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2173 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy4), - }, - + .encounterMusic_gender = +#line 2174 +F_TRAINER_FEMALE | +#line 2175 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2176 + .items = { ITEM_FULL_RESTORE }, +#line 2177 + .doubleBattle = FALSE, +#line 2178 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2180 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2180 + .heldItem = ITEM_NUGGET, +#line 2182 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2181 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2184 [TRAINER_CINDY_5] = { +#line 2185 + .trainerName = _("CINDY"), +#line 2186 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2187 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy5), - }, - + .encounterMusic_gender = +#line 2188 +F_TRAINER_FEMALE | +#line 2189 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2190 + .items = { ITEM_FULL_RESTORE }, +#line 2191 + .doubleBattle = FALSE, +#line 2192 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2194 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2194 + .heldItem = ITEM_NUGGET, +#line 2196 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2195 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2198 [TRAINER_CINDY_6] = { +#line 2199 + .trainerName = _("CINDY"), +#line 2200 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2201 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("CINDY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cindy6), - }, - + .encounterMusic_gender = +#line 2202 +F_TRAINER_FEMALE | +#line 2203 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2204 + .items = { ITEM_FULL_RESTORE }, +#line 2205 + .doubleBattle = FALSE, +#line 2206 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2208 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2208 + .heldItem = ITEM_NUGGET, +#line 2210 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2209 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2211 + MOVE_FURY_SWIPES, + MOVE_MUD_SPORT, + MOVE_ODOR_SLEUTH, + MOVE_SAND_ATTACK, + }, + }, + }, + }, +#line 2216 [TRAINER_MELISSA] = { +#line 2217 + .trainerName = _("MELISSA"), +#line 2218 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2219 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("MELISSA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Melissa), - }, - + .encounterMusic_gender = +#line 2220 +F_TRAINER_FEMALE | +#line 2221 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2222 + .doubleBattle = FALSE, +#line 2223 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2225 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2227 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2226 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2229 [TRAINER_SHEILA] = { +#line 2230 + .trainerName = _("SHEILA"), +#line 2231 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2232 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("SHEILA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sheila), - }, - + .encounterMusic_gender = +#line 2233 +F_TRAINER_FEMALE | +#line 2234 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2235 + .doubleBattle = FALSE, +#line 2236 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2238 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2240 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2239 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2242 [TRAINER_SHIRLEY] = { +#line 2243 + .trainerName = _("SHIRLEY"), +#line 2244 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2245 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("SHIRLEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shirley), - }, - + .encounterMusic_gender = +#line 2246 +F_TRAINER_FEMALE | +#line 2247 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2248 + .doubleBattle = FALSE, +#line 2249 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2251 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2253 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2252 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2255 [TRAINER_JESSICA_1] = { +#line 2256 + .trainerName = _("JESSICA"), +#line 2257 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2258 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JESSICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica1), - }, - + .encounterMusic_gender = +#line 2259 +F_TRAINER_FEMALE | +#line 2260 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2261 + .doubleBattle = FALSE, +#line 2262 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2264 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2266 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2265 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2267 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2272 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2274 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2273 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2275 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 2280 [TRAINER_CONNIE] = { +#line 2281 + .trainerName = _("CONNIE"), +#line 2282 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2283 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("CONNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Connie), - }, - + .encounterMusic_gender = +#line 2284 +F_TRAINER_FEMALE | +#line 2285 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2286 + .doubleBattle = FALSE, +#line 2287 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2289 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2291 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2290 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2293 [TRAINER_BRIDGET] = { +#line 2294 + .trainerName = _("BRIDGET"), +#line 2295 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2296 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("BRIDGET"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bridget), - }, - + .encounterMusic_gender = +#line 2297 +F_TRAINER_FEMALE | +#line 2298 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2299 + .doubleBattle = FALSE, +#line 2300 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2302 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2304 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 2303 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2306 [TRAINER_OLIVIA] = { +#line 2307 + .trainerName = _("OLIVIA"), +#line 2308 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2309 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("OLIVIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Olivia), - }, - + .encounterMusic_gender = +#line 2310 +F_TRAINER_FEMALE | +#line 2311 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2312 + .doubleBattle = FALSE, +#line 2313 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2315 + .species = SPECIES_CLAMPERL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2317 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2316 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2318 + MOVE_IRON_DEFENSE, + MOVE_WHIRLPOOL, + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + }, + }, + { +#line 2323 + .species = SPECIES_CORPHISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2325 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2324 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2326 + MOVE_TAUNT, + MOVE_CRABHAMMER, + MOVE_WATER_PULSE, + }, + }, + { +#line 2330 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2332 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2331 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2333 + MOVE_UPROAR, + MOVE_FURY_SWIPES, + MOVE_FAKE_OUT, + MOVE_WATER_PULSE, + }, + }, + }, + }, +#line 2338 [TRAINER_TIFFANY] = { +#line 2339 + .trainerName = _("TIFFANY"), +#line 2340 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2341 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("TIFFANY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tiffany), - }, - + .encounterMusic_gender = +#line 2342 +F_TRAINER_FEMALE | +#line 2343 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2344 + .doubleBattle = FALSE, +#line 2345 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2347 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2349 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2348 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2351 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2353 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 2352 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2355 [TRAINER_JESSICA_2] = { +#line 2356 + .trainerName = _("JESSICA"), +#line 2357 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2358 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JESSICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica2), - }, - + .encounterMusic_gender = +#line 2359 +F_TRAINER_FEMALE | +#line 2360 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2361 + .doubleBattle = FALSE, +#line 2362 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2364 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2366 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2365 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2367 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2372 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2374 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2373 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2375 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 2380 [TRAINER_JESSICA_3] = { +#line 2381 + .trainerName = _("JESSICA"), +#line 2382 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2383 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JESSICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica3), - }, - + .encounterMusic_gender = +#line 2384 +F_TRAINER_FEMALE | +#line 2385 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2386 + .doubleBattle = FALSE, +#line 2387 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2389 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2391 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2390 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2392 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2397 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2399 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2398 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2400 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 2405 [TRAINER_JESSICA_4] = { +#line 2406 + .trainerName = _("JESSICA"), +#line 2407 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2408 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JESSICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica4), - }, - + .encounterMusic_gender = +#line 2409 +F_TRAINER_FEMALE | +#line 2410 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2411 + .doubleBattle = FALSE, +#line 2412 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2414 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2416 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2415 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2417 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2422 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2424 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2423 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2425 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 2430 [TRAINER_JESSICA_5] = { +#line 2431 + .trainerName = _("JESSICA"), +#line 2432 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2433 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JESSICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jessica5), - }, - + .encounterMusic_gender = +#line 2434 +F_TRAINER_FEMALE | +#line 2435 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2436 + .doubleBattle = FALSE, +#line 2437 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2439 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2441 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2440 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2442 + MOVE_BIND, + MOVE_LICK, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 2447 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2449 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2448 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2450 + MOVE_POISON_TAIL, + MOVE_SCREECH, + MOVE_GLARE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 2455 [TRAINER_WINSTON_1] = { +#line 2456 + .trainerName = _("WINSTON"), +#line 2457 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2458 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston1), - }, - + .encounterMusic_gender = +#line 2460 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2461 + .items = { ITEM_FULL_RESTORE }, +#line 2462 + .doubleBattle = FALSE, +#line 2463 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2465 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2465 + .heldItem = ITEM_NUGGET, +#line 2467 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2466 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2469 [TRAINER_MOLLIE] = { +#line 2470 + .trainerName = _("MOLLIE"), +#line 2471 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 2472 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("MOLLIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mollie), - }, - + .encounterMusic_gender = +#line 2473 +F_TRAINER_FEMALE | +#line 2474 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 2475 + .doubleBattle = FALSE, +#line 2476 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2478 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2480 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2479 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2482 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2484 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 2483 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2486 [TRAINER_GARRET] = { +#line 2487 + .trainerName = _("GARRET"), +#line 2488 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2489 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("GARRET"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Garret), - }, - + .encounterMusic_gender = +#line 2491 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2492 + .items = { ITEM_FULL_RESTORE }, +#line 2493 + .doubleBattle = FALSE, +#line 2494 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2496 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2496 + .heldItem = ITEM_NUGGET, +#line 2498 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2497 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2500 [TRAINER_WINSTON_2] = { +#line 2501 + .trainerName = _("WINSTON"), +#line 2502 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2503 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston2), - }, - + .encounterMusic_gender = +#line 2505 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2506 + .items = { ITEM_FULL_RESTORE }, +#line 2507 + .doubleBattle = FALSE, +#line 2508 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2510 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2510 + .heldItem = ITEM_NUGGET, +#line 2512 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2511 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2514 [TRAINER_WINSTON_3] = { +#line 2515 + .trainerName = _("WINSTON"), +#line 2516 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2517 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston3), - }, - + .encounterMusic_gender = +#line 2519 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2520 + .items = { ITEM_FULL_RESTORE }, +#line 2521 + .doubleBattle = FALSE, +#line 2522 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2524 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2524 + .heldItem = ITEM_NUGGET, +#line 2526 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2525 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2528 [TRAINER_WINSTON_4] = { +#line 2529 + .trainerName = _("WINSTON"), +#line 2530 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2531 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston4), - }, - + .encounterMusic_gender = +#line 2533 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2534 + .items = { ITEM_FULL_RESTORE }, +#line 2535 + .doubleBattle = FALSE, +#line 2536 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2538 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2538 + .heldItem = ITEM_NUGGET, +#line 2540 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2539 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2542 [TRAINER_WINSTON_5] = { +#line 2543 + .trainerName = _("WINSTON"), +#line 2544 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2545 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("WINSTON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Winston5), - }, - + .encounterMusic_gender = +#line 2547 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 2548 + .items = { ITEM_FULL_RESTORE }, +#line 2549 + .doubleBattle = FALSE, +#line 2550 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2552 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2552 + .heldItem = ITEM_NUGGET, +#line 2554 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2553 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 2555 + MOVE_FURY_SWIPES, + MOVE_MUD_SPORT, + MOVE_ODOR_SLEUTH, + MOVE_SAND_ATTACK, + }, + }, + }, + }, +#line 2560 [TRAINER_STEVE_1] = { +#line 2561 + .trainerName = _("STEVE"), +#line 2562 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2563 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("STEVE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve1), - }, - + .encounterMusic_gender = +#line 2565 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2566 + .doubleBattle = FALSE, +#line 2567 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2569 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2571 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2570 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2573 [TRAINER_THALIA_1] = { +#line 2574 + .trainerName = _("THALIA"), +#line 2575 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2576 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("THALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia1), - }, - + .encounterMusic_gender = +#line 2577 +F_TRAINER_FEMALE | +#line 2578 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 2579 + .doubleBattle = FALSE, +#line 2580 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2582 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2584 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2583 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2586 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2588 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2587 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2590 [TRAINER_MARK] = { +#line 2591 + .trainerName = _("MARK"), +#line 2592 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2593 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("MARK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mark), - }, - + .encounterMusic_gender = +#line 2595 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2596 + .doubleBattle = FALSE, +#line 2597 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2599 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2601 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2600 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2603 [TRAINER_GRUNT_MT_CHIMNEY_1] = { +#line 2604 + .trainerName = _("GRUNT"), +#line 2605 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2606 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtChimney1), - }, - + .encounterMusic_gender = +#line 2607 +F_TRAINER_FEMALE | +#line 2608 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 2609 + .doubleBattle = FALSE, +#line 2610 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2612 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2614 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2613 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2616 [TRAINER_STEVE_2] = { +#line 2617 + .trainerName = _("STEVE"), +#line 2618 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2619 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("STEVE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve2), - }, - + .encounterMusic_gender = +#line 2621 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2622 + .doubleBattle = FALSE, +#line 2623 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2625 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2627 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2626 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2629 [TRAINER_STEVE_3] = { +#line 2630 + .trainerName = _("STEVE"), +#line 2631 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2632 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("STEVE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve3), - }, - + .encounterMusic_gender = +#line 2634 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2635 + .doubleBattle = FALSE, +#line 2636 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2638 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2640 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2639 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2642 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2644 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 2643 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2646 [TRAINER_STEVE_4] = { +#line 2647 + .trainerName = _("STEVE"), +#line 2648 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2649 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("STEVE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve4), - }, - + .encounterMusic_gender = +#line 2651 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2652 + .doubleBattle = FALSE, +#line 2653 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2655 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2657 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2656 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2659 + .species = SPECIES_RHYHORN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2661 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 2660 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2663 [TRAINER_STEVE_5] = { +#line 2664 + .trainerName = _("STEVE"), +#line 2665 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2666 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("STEVE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Steve5), - }, - + .encounterMusic_gender = +#line 2668 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 2669 + .doubleBattle = FALSE, +#line 2670 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2672 + .species = SPECIES_AGGRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2674 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2673 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2676 + .species = SPECIES_RHYDON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2678 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 2677 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2680 [TRAINER_LUIS] = { +#line 2681 + .trainerName = _("LUIS"), +#line 2682 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2683 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("LUIS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Luis), - }, - + .encounterMusic_gender = +#line 2685 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2686 + .doubleBattle = FALSE, +#line 2687 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2689 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2691 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2690 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2693 [TRAINER_DOMINIK] = { +#line 2694 + .trainerName = _("DOMINIK"), +#line 2695 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2696 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DOMINIK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dominik), - }, - + .encounterMusic_gender = +#line 2698 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2699 + .doubleBattle = FALSE, +#line 2700 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2702 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2704 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2703 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2706 [TRAINER_DOUGLAS] = { +#line 2707 + .trainerName = _("DOUGLAS"), +#line 2708 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2709 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DOUGLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Douglas), - }, - + .encounterMusic_gender = +#line 2711 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2712 + .doubleBattle = FALSE, +#line 2713 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2715 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2717 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2716 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2719 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2721 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2720 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2723 [TRAINER_DARRIN] = { +#line 2724 + .trainerName = _("DARRIN"), +#line 2725 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2726 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DARRIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Darrin), - }, - + .encounterMusic_gender = +#line 2728 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2729 + .doubleBattle = FALSE, +#line 2730 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2732 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2734 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2733 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2736 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2738 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2737 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2740 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2742 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 2741 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2744 [TRAINER_TONY_1] = { +#line 2745 + .trainerName = _("TONY"), +#line 2746 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2747 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("TONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony1), - }, - + .encounterMusic_gender = +#line 2749 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2750 + .doubleBattle = FALSE, +#line 2751 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2753 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2755 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2754 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2757 [TRAINER_JEROME] = { +#line 2758 + .trainerName = _("JEROME"), +#line 2759 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2760 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("JEROME"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerome), - }, - + .encounterMusic_gender = +#line 2762 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2763 + .doubleBattle = FALSE, +#line 2764 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2766 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2768 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2767 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2770 [TRAINER_MATTHEW] = { +#line 2771 + .trainerName = _("MATTHEW"), +#line 2772 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2773 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("MATTHEW"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Matthew), - }, - + .encounterMusic_gender = +#line 2775 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2776 + .doubleBattle = FALSE, +#line 2777 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2779 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2781 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2780 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2783 [TRAINER_DAVID] = { +#line 2784 + .trainerName = _("DAVID"), +#line 2785 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2786 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DAVID"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_David), - }, - + .encounterMusic_gender = +#line 2788 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2789 + .doubleBattle = FALSE, +#line 2790 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2792 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2794 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2793 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2796 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2798 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2797 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2800 [TRAINER_SPENCER] = { +#line 2801 + .trainerName = _("SPENCER"), +#line 2802 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2803 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("SPENCER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Spencer), - }, - + .encounterMusic_gender = +#line 2805 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2806 + .doubleBattle = FALSE, +#line 2807 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2809 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2811 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2810 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2813 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2815 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2814 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2817 [TRAINER_ROLAND] = { +#line 2818 + .trainerName = _("ROLAND"), +#line 2819 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2820 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("ROLAND"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Roland), - }, - + .encounterMusic_gender = +#line 2822 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2823 + .doubleBattle = FALSE, +#line 2824 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2826 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2828 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2827 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2830 [TRAINER_NOLEN] = { +#line 2831 + .trainerName = _("NOLEN"), +#line 2832 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2833 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("NOLEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nolen), - }, - + .encounterMusic_gender = +#line 2835 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2836 + .doubleBattle = FALSE, +#line 2837 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2839 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2841 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2840 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2843 [TRAINER_STAN] = { +#line 2844 + .trainerName = _("STAN"), +#line 2845 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2846 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("STAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Stan), - }, - + .encounterMusic_gender = +#line 2848 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2849 + .doubleBattle = FALSE, +#line 2850 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2852 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2854 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2853 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2856 [TRAINER_BARRY] = { +#line 2857 + .trainerName = _("BARRY"), +#line 2858 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2859 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("BARRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Barry), - }, - + .encounterMusic_gender = +#line 2861 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2862 + .doubleBattle = FALSE, +#line 2863 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2865 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2867 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2866 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2869 [TRAINER_DEAN] = { +#line 2870 + .trainerName = _("DEAN"), +#line 2871 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2872 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DEAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dean), - }, - + .encounterMusic_gender = +#line 2874 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2875 + .doubleBattle = FALSE, +#line 2876 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 2878 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2880 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2879 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2882 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2884 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2883 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2886 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2888 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2887 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2890 [TRAINER_RODNEY] = { +#line 2891 + .trainerName = _("RODNEY"), +#line 2892 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2893 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("RODNEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rodney), - }, - + .encounterMusic_gender = +#line 2895 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2896 + .doubleBattle = FALSE, +#line 2897 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2899 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2901 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2900 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2903 [TRAINER_RICHARD] = { +#line 2904 + .trainerName = _("RICHARD"), +#line 2905 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2906 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("RICHARD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Richard), - }, - + .encounterMusic_gender = +#line 2908 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2909 + .doubleBattle = FALSE, +#line 2910 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2912 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2914 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2913 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2916 [TRAINER_HERMAN] = { +#line 2917 + .trainerName = _("HERMAN"), +#line 2918 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2919 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("HERMAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Herman), - }, - + .encounterMusic_gender = +#line 2921 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2922 + .doubleBattle = FALSE, +#line 2923 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2925 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2927 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2926 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2929 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2931 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2930 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2933 [TRAINER_SANTIAGO] = { +#line 2934 + .trainerName = _("SANTIAGO"), +#line 2935 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2936 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("SANTIAGO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Santiago), - }, - + .encounterMusic_gender = +#line 2938 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2939 + .doubleBattle = FALSE, +#line 2940 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 2942 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2944 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2943 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 2946 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2948 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2947 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2950 [TRAINER_GILBERT] = { +#line 2951 + .trainerName = _("GILBERT"), +#line 2952 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2953 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("GILBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gilbert), - }, - + .encounterMusic_gender = +#line 2955 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2956 + .doubleBattle = FALSE, +#line 2957 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2959 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2961 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2960 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2963 [TRAINER_FRANKLIN] = { +#line 2964 + .trainerName = _("FRANKLIN"), +#line 2965 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2966 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("FRANKLIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Franklin), - }, - + .encounterMusic_gender = +#line 2968 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2969 + .doubleBattle = FALSE, +#line 2970 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2972 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2974 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2973 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2976 [TRAINER_KEVIN] = { +#line 2977 + .trainerName = _("KEVIN"), +#line 2978 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2979 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("KEVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kevin), - }, - + .encounterMusic_gender = +#line 2981 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2982 + .doubleBattle = FALSE, +#line 2983 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2985 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 2987 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2986 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 2989 [TRAINER_JACK] = { +#line 2990 + .trainerName = _("JACK"), +#line 2991 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2992 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("JACK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jack), - }, - + .encounterMusic_gender = +#line 2994 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 2995 + .doubleBattle = FALSE, +#line 2996 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 2998 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3000 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 2999 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3002 [TRAINER_DUDLEY] = { +#line 3003 + .trainerName = _("DUDLEY"), +#line 3004 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3005 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("DUDLEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dudley), - }, - + .encounterMusic_gender = +#line 3007 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3008 + .doubleBattle = FALSE, +#line 3009 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3011 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3013 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3012 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3015 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3017 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3016 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3019 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3021 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3020 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3023 [TRAINER_CHAD] = { +#line 3024 + .trainerName = _("CHAD"), +#line 3025 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3026 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("CHAD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chad), - }, - + .encounterMusic_gender = +#line 3028 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3029 + .doubleBattle = FALSE, +#line 3030 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3032 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3034 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3033 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3036 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3038 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3037 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3040 [TRAINER_TONY_2] = { +#line 3041 + .trainerName = _("TONY"), +#line 3042 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3043 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("TONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony2), - }, - + .encounterMusic_gender = +#line 3045 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3046 + .doubleBattle = FALSE, +#line 3047 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3049 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3051 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3050 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3053 [TRAINER_TONY_3] = { +#line 3054 + .trainerName = _("TONY"), +#line 3055 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3056 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("TONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony3), - }, - + .encounterMusic_gender = +#line 3058 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3059 + .doubleBattle = FALSE, +#line 3060 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3062 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3064 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3063 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3066 [TRAINER_TONY_4] = { +#line 3067 + .trainerName = _("TONY"), +#line 3068 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3069 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("TONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony4), - }, - + .encounterMusic_gender = +#line 3071 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3072 + .doubleBattle = FALSE, +#line 3073 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3075 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3077 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3076 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3079 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3081 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3080 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3083 [TRAINER_TONY_5] = { +#line 3084 + .trainerName = _("TONY"), +#line 3085 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3086 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("TONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tony5), - }, - + .encounterMusic_gender = +#line 3088 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 3089 + .doubleBattle = FALSE, +#line 3090 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3092 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3094 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3093 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3096 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3098 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3097 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3100 [TRAINER_TAKAO] = { +#line 3101 + .trainerName = _("TAKAO"), +#line 3102 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3103 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("TAKAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Takao), - }, - + .encounterMusic_gender = +#line 3105 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3106 + .doubleBattle = FALSE, +#line 3107 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3109 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3111 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3110 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3113 [TRAINER_HITOSHI] = { +#line 3114 + .trainerName = _("HITOSHI"), +#line 3115 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3116 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("HITOSHI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hitoshi), - }, - + .encounterMusic_gender = +#line 3118 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3119 + .doubleBattle = FALSE, +#line 3120 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3122 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3124 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 3123 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3126 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3128 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 3127 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3130 [TRAINER_KIYO] = { +#line 3131 + .trainerName = _("KIYO"), +#line 3132 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3133 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KIYO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kiyo), - }, - + .encounterMusic_gender = +#line 3135 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3136 + .doubleBattle = FALSE, +#line 3137 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3139 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3141 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3140 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3143 [TRAINER_KOICHI] = { +#line 3144 + .trainerName = _("KOICHI"), +#line 3145 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3146 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOICHI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koichi), - }, - + .encounterMusic_gender = +#line 3148 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3149 + .doubleBattle = FALSE, +#line 3150 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3152 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3154 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3153 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3156 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3158 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3157 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3160 [TRAINER_NOB_1] = { +#line 3161 + .trainerName = _("NOB"), +#line 3162 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3163 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("NOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob1), - }, - + .encounterMusic_gender = +#line 3165 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3166 + .doubleBattle = FALSE, +#line 3167 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3169 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3171 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3170 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3173 [TRAINER_NOB_2] = { +#line 3174 + .trainerName = _("NOB"), +#line 3175 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3176 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("NOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob2), - }, - + .encounterMusic_gender = +#line 3178 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3179 + .doubleBattle = FALSE, +#line 3180 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3182 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3184 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 3183 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3186 [TRAINER_NOB_3] = { +#line 3187 + .trainerName = _("NOB"), +#line 3188 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3189 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("NOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob3), - }, - + .encounterMusic_gender = +#line 3191 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3192 + .doubleBattle = FALSE, +#line 3193 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3195 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3197 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3196 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3199 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3201 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3200 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3203 [TRAINER_NOB_4] = { +#line 3204 + .trainerName = _("NOB"), +#line 3205 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3206 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("NOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob4), - }, - + .encounterMusic_gender = +#line 3208 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3209 + .doubleBattle = FALSE, +#line 3210 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3212 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3214 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3213 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3216 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3218 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3217 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3220 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3222 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 3221 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3224 [TRAINER_NOB_5] = { +#line 3225 + .trainerName = _("NOB"), +#line 3226 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3227 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("NOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nob5), - }, - + .encounterMusic_gender = +#line 3229 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3230 + .doubleBattle = FALSE, +#line 3231 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 3233 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3235 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3234 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3237 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3239 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3238 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3241 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3243 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3242 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3245 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3245 + .heldItem = ITEM_BLACK_BELT, +#line 3247 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 3246 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3249 [TRAINER_YUJI] = { +#line 3250 + .trainerName = _("YUJI"), +#line 3251 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3252 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("YUJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Yuji), - }, - + .encounterMusic_gender = +#line 3254 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3255 + .doubleBattle = FALSE, +#line 3256 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3258 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3260 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3259 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3262 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3264 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3263 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3266 [TRAINER_DAISUKE] = { +#line 3267 + .trainerName = _("DAISUKE"), +#line 3268 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3269 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("DAISUKE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Daisuke), - }, - + .encounterMusic_gender = +#line 3271 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3272 + .doubleBattle = FALSE, +#line 3273 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3275 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3277 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3276 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3279 [TRAINER_ATSUSHI] = { +#line 3280 + .trainerName = _("ATSUSHI"), +#line 3281 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3282 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("ATSUSHI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Atsushi), - }, - + .encounterMusic_gender = +#line 3284 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3285 + .doubleBattle = FALSE, +#line 3286 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3288 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3290 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3289 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3292 [TRAINER_KIRK] = { +#line 3293 + .trainerName = _("KIRK"), +#line 3294 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3295 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("KIRK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kirk), - }, - + .encounterMusic_gender = +#line 3297 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3298 + .doubleBattle = FALSE, +#line 3299 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3301 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3303 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3302 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3304 + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + MOVE_SPARK, + MOVE_LEER, + }, + }, + { +#line 3309 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3311 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3310 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3312 + MOVE_CHARGE, + MOVE_SHOCK_WAVE, + MOVE_SCREECH, + }, + }, + }, + }, +#line 3316 [TRAINER_GRUNT_AQUA_HIDEOUT_7] = { +#line 3317 + .trainerName = _("GRUNT"), +#line 3318 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3319 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout7), - }, - + .encounterMusic_gender = +#line 3320 +F_TRAINER_FEMALE | +#line 3321 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3322 + .doubleBattle = FALSE, +#line 3323 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3325 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3327 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3326 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3329 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3331 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3330 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3333 [TRAINER_GRUNT_AQUA_HIDEOUT_8] = { +#line 3334 + .trainerName = _("GRUNT"), +#line 3335 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3336 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntAquaHideout8), - }, - + .encounterMusic_gender = +#line 3338 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 3339 + .doubleBattle = FALSE, +#line 3340 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3342 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3344 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3343 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3346 [TRAINER_SHAWN] = { +#line 3347 + .trainerName = _("SHAWN"), +#line 3348 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3349 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("SHAWN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shawn), - }, - + .encounterMusic_gender = +#line 3351 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3352 + .doubleBattle = FALSE, +#line 3353 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3355 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3357 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3356 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3359 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3361 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3360 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3363 [TRAINER_FERNANDO_1] = { +#line 3364 + .trainerName = _("FERNANDO"), +#line 3365 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3366 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FERNANDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando1), - }, - + .encounterMusic_gender = +#line 3368 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3369 + .doubleBattle = FALSE, +#line 3370 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3372 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3374 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3373 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3376 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3378 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3377 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3380 [TRAINER_DALTON_1] = { +#line 3381 + .trainerName = _("DALTON"), +#line 3382 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3383 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("DALTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton1), - }, - + .encounterMusic_gender = +#line 3385 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3386 + .doubleBattle = FALSE, +#line 3387 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3389 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3391 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3390 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3393 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3395 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3394 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3397 [TRAINER_DALTON_2] = { +#line 3398 + .trainerName = _("DALTON"), +#line 3399 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3400 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("DALTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton2), - }, - + .encounterMusic_gender = +#line 3402 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3403 + .doubleBattle = FALSE, +#line 3404 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3406 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3408 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3407 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3410 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3412 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3411 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3414 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3416 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3415 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3418 [TRAINER_DALTON_3] = { +#line 3419 + .trainerName = _("DALTON"), +#line 3420 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3421 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("DALTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton3), - }, - + .encounterMusic_gender = +#line 3423 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3424 + .doubleBattle = FALSE, +#line 3425 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3427 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3429 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3428 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3431 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3433 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3432 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3435 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3437 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3436 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3439 [TRAINER_DALTON_4] = { +#line 3440 + .trainerName = _("DALTON"), +#line 3441 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3442 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("DALTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton4), - }, - + .encounterMusic_gender = +#line 3444 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3445 + .doubleBattle = FALSE, +#line 3446 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3448 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3450 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3449 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3452 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3454 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3453 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3456 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3458 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3457 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3460 [TRAINER_DALTON_5] = { +#line 3461 + .trainerName = _("DALTON"), +#line 3462 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3463 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("DALTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dalton5), - }, - + .encounterMusic_gender = +#line 3465 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 3466 + .doubleBattle = FALSE, +#line 3467 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3469 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3471 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3470 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3473 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3475 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3474 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3477 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3479 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3478 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3481 [TRAINER_COLE] = { +#line 3482 + .trainerName = _("COLE"), +#line 3483 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3484 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("COLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cole), - }, - + .encounterMusic_gender = +#line 3486 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3487 + .doubleBattle = FALSE, +#line 3488 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3490 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3492 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3491 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3494 [TRAINER_JEFF] = { +#line 3495 + .trainerName = _("JEFF"), +#line 3496 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3497 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("JEFF"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeff), - }, - + .encounterMusic_gender = +#line 3499 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3500 + .doubleBattle = FALSE, +#line 3501 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3503 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3505 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3504 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3507 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3509 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3508 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3511 [TRAINER_AXLE] = { +#line 3512 + .trainerName = _("AXLE"), +#line 3513 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3514 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("AXLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Axle), - }, - + .encounterMusic_gender = +#line 3516 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3517 + .doubleBattle = FALSE, +#line 3518 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3520 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3522 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3521 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3524 [TRAINER_JACE] = { +#line 3525 + .trainerName = _("JACE"), +#line 3526 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3527 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("JACE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jace), - }, - + .encounterMusic_gender = +#line 3529 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3530 + .doubleBattle = FALSE, +#line 3531 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3533 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3535 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3534 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3537 [TRAINER_KEEGAN] = { +#line 3538 + .trainerName = _("KEEGAN"), +#line 3539 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3540 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("KEEGAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Keegan), - }, - + .encounterMusic_gender = +#line 3542 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3543 + .doubleBattle = FALSE, +#line 3544 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3546 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3548 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 3547 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3550 [TRAINER_BERNIE_1] = { +#line 3551 + .trainerName = _("BERNIE"), +#line 3552 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3553 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BERNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie1), - }, - + .encounterMusic_gender = +#line 3555 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3556 + .doubleBattle = FALSE, +#line 3557 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3559 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3561 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3560 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3563 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3565 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3564 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3567 [TRAINER_BERNIE_2] = { +#line 3568 + .trainerName = _("BERNIE"), +#line 3569 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3570 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BERNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie2), - }, - + .encounterMusic_gender = +#line 3572 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3573 + .doubleBattle = FALSE, +#line 3574 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3576 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3578 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3577 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3580 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3582 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3581 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3584 [TRAINER_BERNIE_3] = { +#line 3585 + .trainerName = _("BERNIE"), +#line 3586 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3587 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BERNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie3), - }, - + .encounterMusic_gender = +#line 3589 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3590 + .doubleBattle = FALSE, +#line 3591 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3593 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3595 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3594 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3597 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3599 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3598 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3601 [TRAINER_BERNIE_4] = { +#line 3602 + .trainerName = _("BERNIE"), +#line 3603 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3604 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BERNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie4), - }, - + .encounterMusic_gender = +#line 3606 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3607 + .doubleBattle = FALSE, +#line 3608 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3610 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3612 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3611 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3614 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3616 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3615 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3618 [TRAINER_BERNIE_5] = { +#line 3619 + .trainerName = _("BERNIE"), +#line 3620 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3621 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BERNIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bernie5), - }, - + .encounterMusic_gender = +#line 3623 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 3624 + .doubleBattle = FALSE, +#line 3625 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3627 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3629 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3628 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3631 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3633 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3632 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3635 [TRAINER_DREW] = { +#line 3636 + .trainerName = _("DREW"), +#line 3637 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3638 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("DREW"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Drew), - }, - + .encounterMusic_gender = +#line 3640 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3641 + .doubleBattle = FALSE, +#line 3642 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3644 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3646 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3645 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3647 + MOVE_DIG, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + }, + }, + }, + }, +#line 3652 [TRAINER_BEAU] = { +#line 3653 + .trainerName = _("BEAU"), +#line 3654 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3655 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("BEAU"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beau), - }, - + .encounterMusic_gender = +#line 3657 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3658 + .doubleBattle = FALSE, +#line 3659 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3661 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3663 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3662 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3664 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + { +#line 3669 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3671 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3670 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3672 + MOVE_POISON_STING, + MOVE_SAND_ATTACK, + MOVE_SCRATCH, + MOVE_DIG, + }, + }, + { +#line 3677 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3679 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3678 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 3680 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + }, + }, +#line 3685 [TRAINER_LARRY] = { +#line 3686 + .trainerName = _("LARRY"), +#line 3687 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3688 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("LARRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Larry), - }, - + .encounterMusic_gender = +#line 3690 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3691 + .doubleBattle = FALSE, +#line 3692 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3694 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3696 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3695 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3698 [TRAINER_SHANE] = { +#line 3699 + .trainerName = _("SHANE"), +#line 3700 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3701 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("SHANE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shane), - }, - + .encounterMusic_gender = +#line 3703 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3704 + .doubleBattle = FALSE, +#line 3705 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3707 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3709 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3708 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3711 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3713 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3712 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3715 [TRAINER_JUSTIN] = { +#line 3716 + .trainerName = _("JUSTIN"), +#line 3717 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3718 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("JUSTIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Justin), - }, - + .encounterMusic_gender = +#line 3720 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3721 + .doubleBattle = FALSE, +#line 3722 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3724 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3726 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3725 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3728 [TRAINER_ETHAN_1] = { +#line 3729 + .trainerName = _("ETHAN"), +#line 3730 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3731 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("ETHAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan1), - }, - + .encounterMusic_gender = +#line 3733 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3734 + .doubleBattle = FALSE, +#line 3735 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3737 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3739 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3738 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3741 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3743 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3742 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3745 [TRAINER_AUTUMN] = { +#line 3746 + .trainerName = _("AUTUMN"), +#line 3747 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 3748 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("AUTUMN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Autumn), - }, - + .encounterMusic_gender = +#line 3749 +F_TRAINER_FEMALE | +#line 3750 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 3751 + .doubleBattle = FALSE, +#line 3752 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3754 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3756 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3755 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3758 [TRAINER_TRAVIS] = { +#line 3759 + .trainerName = _("TRAVIS"), +#line 3760 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3761 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("TRAVIS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Travis), - }, - + .encounterMusic_gender = +#line 3763 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3764 + .doubleBattle = FALSE, +#line 3765 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3767 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3769 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3768 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3771 [TRAINER_ETHAN_2] = { +#line 3772 + .trainerName = _("ETHAN"), +#line 3773 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3774 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("ETHAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan2), - }, - + .encounterMusic_gender = +#line 3776 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3777 + .doubleBattle = FALSE, +#line 3778 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3780 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3782 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3781 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3784 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3786 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3785 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3788 [TRAINER_ETHAN_3] = { +#line 3789 + .trainerName = _("ETHAN"), +#line 3790 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3791 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("ETHAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan3), - }, - + .encounterMusic_gender = +#line 3793 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3794 + .doubleBattle = FALSE, +#line 3795 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3797 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3799 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3798 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3801 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3803 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3802 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3805 [TRAINER_ETHAN_4] = { +#line 3806 + .trainerName = _("ETHAN"), +#line 3807 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3808 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("ETHAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan4), - }, - + .encounterMusic_gender = +#line 3810 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3811 + .doubleBattle = FALSE, +#line 3812 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3814 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3816 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3815 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3818 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3820 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3819 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3822 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3824 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3823 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3826 [TRAINER_ETHAN_5] = { +#line 3827 + .trainerName = _("ETHAN"), +#line 3828 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3829 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("ETHAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ethan5), - }, - + .encounterMusic_gender = +#line 3831 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 3832 + .doubleBattle = FALSE, +#line 3833 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3835 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3837 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3836 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3839 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3841 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3840 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3843 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3845 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 3844 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3847 [TRAINER_BRENT] = { +#line 3848 + .trainerName = _("BRENT"), +#line 3849 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3850 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("BRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brent), - }, - + .encounterMusic_gender = +#line 3852 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3853 + .doubleBattle = FALSE, +#line 3854 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 3856 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3858 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3857 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3860 [TRAINER_DONALD] = { +#line 3861 + .trainerName = _("DONALD"), +#line 3862 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3863 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("DONALD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Donald), - }, - + .encounterMusic_gender = +#line 3865 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3866 + .doubleBattle = FALSE, +#line 3867 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3869 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3871 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3870 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3873 + .species = SPECIES_SILCOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3875 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3874 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3877 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3879 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3878 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3881 [TRAINER_TAYLOR] = { +#line 3882 + .trainerName = _("TAYLOR"), +#line 3883 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3884 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("TAYLOR"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Taylor), - }, - + .encounterMusic_gender = +#line 3886 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3887 + .doubleBattle = FALSE, +#line 3888 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3890 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3892 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3891 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3894 + .species = SPECIES_CASCOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3896 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3895 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3898 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3900 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 3899 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3902 [TRAINER_JEFFREY_1] = { +#line 3903 + .trainerName = _("JEFFREY"), +#line 3904 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3905 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("JEFFREY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey1), - }, - + .encounterMusic_gender = +#line 3907 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3908 + .doubleBattle = FALSE, +#line 3909 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3911 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3913 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3912 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3915 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3917 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3916 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3919 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3921 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 3920 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3923 [TRAINER_DEREK] = { +#line 3924 + .trainerName = _("DEREK"), +#line 3925 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3926 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("DEREK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Derek), - }, - + .encounterMusic_gender = +#line 3928 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3929 + .doubleBattle = FALSE, +#line 3930 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 3932 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3934 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3933 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3936 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3938 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 3937 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3940 [TRAINER_JEFFREY_2] = { +#line 3941 + .trainerName = _("JEFFREY"), +#line 3942 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3943 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("JEFFREY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey2), - }, - + .encounterMusic_gender = +#line 3945 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3946 + .doubleBattle = FALSE, +#line 3947 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3949 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3951 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3950 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3953 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3955 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3954 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3957 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3959 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 3958 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3961 [TRAINER_JEFFREY_3] = { +#line 3962 + .trainerName = _("JEFFREY"), +#line 3963 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3964 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("JEFFREY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey3), - }, - + .encounterMusic_gender = +#line 3966 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3967 + .doubleBattle = FALSE, +#line 3968 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 3970 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3972 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3971 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3974 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3976 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3975 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3978 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3980 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 3979 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 3982 [TRAINER_JEFFREY_4] = { +#line 3983 + .trainerName = _("JEFFREY"), +#line 3984 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3985 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("JEFFREY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey4), - }, - + .encounterMusic_gender = +#line 3987 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 3988 + .doubleBattle = FALSE, +#line 3989 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 3991 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3993 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3992 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3995 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 3997 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 3996 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 3999 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4001 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4000 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4003 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4005 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4004 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4007 [TRAINER_JEFFREY_5] = { +#line 4008 + .trainerName = _("JEFFREY"), +#line 4009 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 4010 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("JEFFREY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jeffrey5), - }, - + .encounterMusic_gender = +#line 4012 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 4013 + .doubleBattle = FALSE, +#line 4014 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4016 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4018 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4017 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4020 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4022 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4021 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4024 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4026 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4025 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4028 + .species = SPECIES_MASQUERAIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4028 + .heldItem = ITEM_SILVER_POWDER, +#line 4030 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4029 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4032 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4034 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4033 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4036 [TRAINER_EDWARD] = { +#line 4037 + .trainerName = _("EDWARD"), +#line 4038 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4039 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("EDWARD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edward), - }, - + .encounterMusic_gender = +#line 4041 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4042 + .doubleBattle = FALSE, +#line 4043 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4045 + .species = SPECIES_ABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4047 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4046 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4048 + MOVE_HIDDEN_POWER, + }, + }, + }, + }, +#line 4050 [TRAINER_PRESTON] = { +#line 4051 + .trainerName = _("PRESTON"), +#line 4052 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4053 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("PRESTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Preston), - }, - + .encounterMusic_gender = +#line 4055 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4056 + .doubleBattle = FALSE, +#line 4057 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4059 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4061 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4060 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4063 [TRAINER_VIRGIL] = { +#line 4064 + .trainerName = _("VIRGIL"), +#line 4065 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4066 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("VIRGIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Virgil), - }, - + .encounterMusic_gender = +#line 4068 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4069 + .doubleBattle = FALSE, +#line 4070 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4072 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4074 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4073 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4076 [TRAINER_BLAKE] = { +#line 4077 + .trainerName = _("BLAKE"), +#line 4078 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4079 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("BLAKE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Blake), - }, - + .encounterMusic_gender = +#line 4081 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4082 + .doubleBattle = FALSE, +#line 4083 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4085 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4087 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4086 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4089 [TRAINER_WILLIAM] = { +#line 4090 + .trainerName = _("WILLIAM"), +#line 4091 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4092 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("WILLIAM"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_William), - }, - + .encounterMusic_gender = +#line 4094 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4095 + .doubleBattle = FALSE, +#line 4096 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4098 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4100 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4099 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4102 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4104 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4103 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4106 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4108 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4107 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4110 [TRAINER_JOSHUA] = { +#line 4111 + .trainerName = _("JOSHUA"), +#line 4112 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4113 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("JOSHUA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joshua), - }, - + .encounterMusic_gender = +#line 4115 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4116 + .doubleBattle = FALSE, +#line 4117 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4119 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4121 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4120 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4123 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4125 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4124 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4127 [TRAINER_CAMERON_1] = { +#line 4128 + .trainerName = _("CAMERON"), +#line 4129 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4130 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CAMERON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron1), - }, - + .encounterMusic_gender = +#line 4132 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4133 + .doubleBattle = FALSE, +#line 4134 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4136 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4138 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4137 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4140 [TRAINER_CAMERON_2] = { +#line 4141 + .trainerName = _("CAMERON"), +#line 4142 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4143 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CAMERON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron2), - }, - + .encounterMusic_gender = +#line 4145 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4146 + .doubleBattle = FALSE, +#line 4147 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4149 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4151 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4150 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4153 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4155 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4154 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4157 [TRAINER_CAMERON_3] = { +#line 4158 + .trainerName = _("CAMERON"), +#line 4159 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4160 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CAMERON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron3), - }, - + .encounterMusic_gender = +#line 4162 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4163 + .doubleBattle = FALSE, +#line 4164 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4166 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4168 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4167 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4170 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4172 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4171 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4174 [TRAINER_CAMERON_4] = { +#line 4175 + .trainerName = _("CAMERON"), +#line 4176 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4177 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CAMERON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron4), - }, - + .encounterMusic_gender = +#line 4179 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4180 + .doubleBattle = FALSE, +#line 4181 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4183 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4185 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4184 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4187 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4189 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4188 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4191 [TRAINER_CAMERON_5] = { +#line 4192 + .trainerName = _("CAMERON"), +#line 4193 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4194 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CAMERON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cameron5), - }, - + .encounterMusic_gender = +#line 4196 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4197 + .doubleBattle = FALSE, +#line 4198 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4200 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4202 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4201 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4204 + .species = SPECIES_ALAKAZAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4206 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4205 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4208 [TRAINER_JACLYN] = { +#line 4209 + .trainerName = _("JACLYN"), +#line 4210 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4211 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACLYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaclyn), - }, - + .encounterMusic_gender = +#line 4212 +F_TRAINER_FEMALE | +#line 4213 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4214 + .doubleBattle = FALSE, +#line 4215 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4217 + .species = SPECIES_ABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4219 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4218 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4220 + MOVE_HIDDEN_POWER, + }, + }, + }, + }, +#line 4222 [TRAINER_HANNAH] = { +#line 4223 + .trainerName = _("HANNAH"), +#line 4224 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4225 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("HANNAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hannah), - }, - + .encounterMusic_gender = +#line 4226 +F_TRAINER_FEMALE | +#line 4227 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4228 + .doubleBattle = FALSE, +#line 4229 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4231 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4233 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4232 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4235 [TRAINER_SAMANTHA] = { +#line 4236 + .trainerName = _("SAMANTHA"), +#line 4237 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4238 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("SAMANTHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Samantha), - }, - + .encounterMusic_gender = +#line 4239 +F_TRAINER_FEMALE | +#line 4240 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4241 + .doubleBattle = FALSE, +#line 4242 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4244 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4246 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4245 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4248 [TRAINER_MAURA] = { +#line 4249 + .trainerName = _("MAURA"), +#line 4250 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4251 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("MAURA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maura), - }, - + .encounterMusic_gender = +#line 4252 +F_TRAINER_FEMALE | +#line 4253 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4254 + .doubleBattle = FALSE, +#line 4255 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4257 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4259 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4258 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4261 [TRAINER_KAYLA] = { +#line 4262 + .trainerName = _("KAYLA"), +#line 4263 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4264 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("KAYLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kayla), - }, - + .encounterMusic_gender = +#line 4265 +F_TRAINER_FEMALE | +#line 4266 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4267 + .doubleBattle = FALSE, +#line 4268 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4270 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4272 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4271 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4274 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4276 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4275 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4278 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4280 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4279 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4282 [TRAINER_ALEXIS] = { +#line 4283 + .trainerName = _("ALEXIS"), +#line 4284 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4285 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("ALEXIS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alexis), - }, - + .encounterMusic_gender = +#line 4286 +F_TRAINER_FEMALE | +#line 4287 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4288 + .doubleBattle = FALSE, +#line 4289 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4291 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4293 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4292 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4295 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4297 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4296 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4299 [TRAINER_JACKI_1] = { +#line 4300 + .trainerName = _("JACKI"), +#line 4301 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4302 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki1), - }, - + .encounterMusic_gender = +#line 4303 +F_TRAINER_FEMALE | +#line 4304 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4305 + .doubleBattle = FALSE, +#line 4306 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4308 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4310 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4309 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4312 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4314 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4313 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4316 [TRAINER_JACKI_2] = { +#line 4317 + .trainerName = _("JACKI"), +#line 4318 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4319 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki2), - }, - + .encounterMusic_gender = +#line 4320 +F_TRAINER_FEMALE | +#line 4321 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4322 + .doubleBattle = FALSE, +#line 4323 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4325 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4327 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4326 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4329 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4331 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4330 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4333 [TRAINER_JACKI_3] = { +#line 4334 + .trainerName = _("JACKI"), +#line 4335 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4336 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki3), - }, - + .encounterMusic_gender = +#line 4337 +F_TRAINER_FEMALE | +#line 4338 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4339 + .doubleBattle = FALSE, +#line 4340 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4342 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4344 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4343 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4346 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4348 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4347 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4350 [TRAINER_JACKI_4] = { +#line 4351 + .trainerName = _("JACKI"), +#line 4352 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4353 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki4), - }, - + .encounterMusic_gender = +#line 4354 +F_TRAINER_FEMALE | +#line 4355 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4356 + .doubleBattle = FALSE, +#line 4357 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4359 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4361 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4360 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4363 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4365 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4364 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4367 [TRAINER_JACKI_5] = { +#line 4368 + .trainerName = _("JACKI"), +#line 4369 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4370 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("JACKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacki5), - }, - + .encounterMusic_gender = +#line 4371 +F_TRAINER_FEMALE | +#line 4372 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 4373 + .doubleBattle = FALSE, +#line 4374 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4376 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4378 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4377 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4380 + .species = SPECIES_ALAKAZAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4382 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4381 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4384 [TRAINER_WALTER_1] = { +#line 4385 + .trainerName = _("WALTER"), +#line 4386 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4387 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("WALTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter1), - }, - + .encounterMusic_gender = +#line 4389 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4390 + .doubleBattle = FALSE, +#line 4391 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4393 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4395 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4394 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4397 [TRAINER_MICAH] = { +#line 4398 + .trainerName = _("MICAH"), +#line 4399 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4400 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("MICAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Micah), - }, - + .encounterMusic_gender = +#line 4402 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4403 + .doubleBattle = FALSE, +#line 4404 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4406 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4408 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4407 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 4410 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4412 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4411 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4414 [TRAINER_THOMAS] = { +#line 4415 + .trainerName = _("THOMAS"), +#line 4416 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4417 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("THOMAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thomas), - }, - + .encounterMusic_gender = +#line 4419 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4420 + .doubleBattle = FALSE, +#line 4421 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4423 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4425 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 4424 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4427 [TRAINER_WALTER_2] = { +#line 4428 + .trainerName = _("WALTER"), +#line 4429 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4430 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("WALTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter2), - }, - + .encounterMusic_gender = +#line 4432 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4433 + .doubleBattle = FALSE, +#line 4434 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 4436 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4438 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 4437 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 4440 [TRAINER_WALTER_3] = { +#line 4441 + .trainerName = _("WALTER"), +#line 4442 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4443 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("WALTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter3), - }, - + .encounterMusic_gender = +#line 4445 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4446 + .doubleBattle = FALSE, +#line 4447 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4449 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4451 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4450 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4452 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4457 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4459 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 4458 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4460 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + MOVE_ROAR, + }, + }, + }, + }, +#line 4465 [TRAINER_WALTER_4] = { +#line 4466 + .trainerName = _("WALTER"), +#line 4467 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4468 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("WALTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter4), - }, - + .encounterMusic_gender = +#line 4470 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4471 + .doubleBattle = FALSE, +#line 4472 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 4474 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4476 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4475 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4477 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4482 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4484 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 4483 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4485 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + }, + }, + }, + }, +#line 4489 [TRAINER_WALTER_5] = { +#line 4490 + .trainerName = _("WALTER"), +#line 4491 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4492 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("WALTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Walter5), - }, - + .encounterMusic_gender = +#line 4494 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 4495 + .doubleBattle = FALSE, +#line 4496 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4498 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4500 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4499 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4501 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_ODOR_SLEUTH, + MOVE_FURY_SWIPES, + }, + }, + { +#line 4506 + .species = SPECIES_GOLDUCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4508 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4507 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4509 + MOVE_FURY_SWIPES, + MOVE_DISABLE, + MOVE_CONFUSION, + MOVE_PSYCH_UP, + }, + }, + { +#line 4514 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4516 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 4515 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4517 + MOVE_QUICK_ATTACK, + MOVE_SPARK, + MOVE_ODOR_SLEUTH, + MOVE_ROAR, + }, + }, + }, + }, +#line 4522 [TRAINER_SIDNEY] = { +#line 4523 + .trainerName = _("SIDNEY"), +#line 4524 .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4525 .trainerPic = TRAINER_PIC_ELITE_FOUR_SIDNEY, - .trainerName = _("SIDNEY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4527 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4528 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4529 + .doubleBattle = FALSE, +#line 4530 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SETUP_FIRST_TURN, +#line 4531 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_PURPLE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Sidney), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4533 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4535 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4534 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4536 + MOVE_ROAR, + MOVE_DOUBLE_EDGE, + MOVE_SAND_ATTACK, + MOVE_CRUNCH, + }, + }, + { +#line 4541 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4543 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4542 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4544 + MOVE_TORMENT, + MOVE_DOUBLE_TEAM, + MOVE_SWAGGER, + MOVE_EXTRASENSORY, + }, + }, + { +#line 4549 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4551 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4550 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4552 + MOVE_LEECH_SEED, + MOVE_FEINT_ATTACK, + MOVE_NEEDLE_ARM, + MOVE_COTTON_SPORE, + }, + }, + { +#line 4557 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4559 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4558 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4560 + MOVE_SURF, + MOVE_SWORDS_DANCE, + MOVE_STRENGTH, + MOVE_FACADE, + }, + }, + { +#line 4565 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4565 + .heldItem = ITEM_SITRUS_BERRY, +#line 4567 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4566 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4568 + MOVE_AERIAL_ACE, + MOVE_ROCK_SLIDE, + MOVE_SWORDS_DANCE, + MOVE_SLASH, + }, + }, + }, + }, +#line 4573 [TRAINER_PHOEBE] = { +#line 4574 + .trainerName = _("PHOEBE"), +#line 4575 .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4576 .trainerPic = TRAINER_PIC_ELITE_FOUR_PHOEBE, - .trainerName = _("PHOEBE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4577 +F_TRAINER_FEMALE | +#line 4578 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4579 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4580 + .doubleBattle = FALSE, +#line 4581 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4582 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_GREEN, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Phoebe), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4584 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4586 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4585 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4587 + MOVE_SHADOW_PUNCH, + MOVE_CONFUSE_RAY, + MOVE_CURSE, + MOVE_PROTECT, + }, + }, + { +#line 4592 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4594 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4593 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4595 + MOVE_SHADOW_BALL, + MOVE_GRUDGE, + MOVE_WILL_O_WISP, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4600 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4602 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4601 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4603 + MOVE_SHADOW_BALL, + MOVE_DOUBLE_TEAM, + MOVE_NIGHT_SHADE, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4608 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4610 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4609 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4611 + MOVE_SHADOW_BALL, + MOVE_PSYCHIC, + MOVE_THUNDERBOLT, + MOVE_FACADE, + }, + }, + { +#line 4616 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4616 + .heldItem = ITEM_SITRUS_BERRY, +#line 4618 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4617 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4619 + MOVE_SHADOW_BALL, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 4624 [TRAINER_GLACIA] = { +#line 4625 + .trainerName = _("GLACIA"), +#line 4626 .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4627 .trainerPic = TRAINER_PIC_ELITE_FOUR_GLACIA, - .trainerName = _("GLACIA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4628 +F_TRAINER_FEMALE | +#line 4629 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4630 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4631 + .doubleBattle = FALSE, +#line 4632 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4633 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_PINK, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Glacia), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4635 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4637 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4636 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4638 + MOVE_ENCORE, + MOVE_BODY_SLAM, + MOVE_HAIL, + MOVE_ICE_BALL, + }, + }, + { +#line 4643 + .species = SPECIES_GLALIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4645 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4644 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4646 + MOVE_LIGHT_SCREEN, + MOVE_CRUNCH, + MOVE_ICY_WIND, + MOVE_ICE_BEAM, + }, + }, + { +#line 4651 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4653 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4652 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4654 + MOVE_ATTRACT, + MOVE_DOUBLE_EDGE, + MOVE_HAIL, + MOVE_BLIZZARD, + }, + }, + { +#line 4659 + .species = SPECIES_GLALIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4661 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4660 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4662 + MOVE_SHADOW_BALL, + MOVE_EXPLOSION, + MOVE_HAIL, + MOVE_ICE_BEAM, + }, + }, + { +#line 4667 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4667 + .heldItem = ITEM_SITRUS_BERRY, +#line 4669 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4668 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4670 + MOVE_SURF, + MOVE_BODY_SLAM, + MOVE_ICE_BEAM, + MOVE_SHEER_COLD, + }, + }, + }, + }, +#line 4675 [TRAINER_DRAKE] = { +#line 4676 + .trainerName = _("DRAKE"), +#line 4677 .trainerClass = TRAINER_CLASS_ELITE_FOUR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4678 .trainerPic = TRAINER_PIC_ELITE_FOUR_DRAKE, - .trainerName = _("DRAKE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4680 + TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, +#line 4681 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 4682 + .doubleBattle = FALSE, +#line 4683 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 4684 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_BLUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Drake), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4686 + .species = SPECIES_SHELGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4688 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4687 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4689 + MOVE_ROCK_TOMB, + MOVE_DRAGON_CLAW, + MOVE_PROTECT, + MOVE_DOUBLE_EDGE, + }, + }, + { +#line 4694 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4696 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4695 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4697 + MOVE_DOUBLE_EDGE, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4702 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4704 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4703 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4705 + MOVE_SMOKESCREEN, + MOVE_DRAGON_DANCE, + MOVE_SURF, + MOVE_BODY_SLAM, + }, + }, + { +#line 4710 + .species = SPECIES_FLYGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4712 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4711 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4713 + MOVE_FLAMETHROWER, + MOVE_CRUNCH, + MOVE_DRAGON_BREATH, + MOVE_EARTHQUAKE, + }, + }, + { +#line 4718 + .species = SPECIES_SALAMENCE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4718 + .heldItem = ITEM_SITRUS_BERRY, +#line 4720 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4719 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4721 + MOVE_FLAMETHROWER, + MOVE_DRAGON_CLAW, + MOVE_ROCK_SLIDE, + MOVE_CRUNCH, + }, + }, + }, + }, +#line 4726 [TRAINER_ROXANNE_1] = { +#line 4727 + .trainerName = _("ROXANNE"), +#line 4728 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4729 .trainerPic = TRAINER_PIC_LEADER_ROXANNE, - .trainerName = _("ROXANNE"), - .items = {ITEM_POTION, ITEM_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4730 +F_TRAINER_FEMALE | +#line 4731 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4732 + .items = { ITEM_POTION, ITEM_POTION }, +#line 4733 + .doubleBattle = FALSE, +#line 4734 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne1), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4736 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4738 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4737 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4739 + MOVE_TACKLE, + MOVE_DEFENSE_CURL, + MOVE_ROCK_THROW, + MOVE_ROCK_TOMB, + }, + }, + { +#line 4744 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4746 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4745 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4747 + MOVE_TACKLE, + MOVE_DEFENSE_CURL, + MOVE_ROCK_THROW, + MOVE_ROCK_TOMB, + }, + }, + { +#line 4752 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4752 + .heldItem = ITEM_ORAN_BERRY, +#line 4754 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4753 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4755 + MOVE_BLOCK, + MOVE_HARDEN, + MOVE_TACKLE, + MOVE_ROCK_TOMB, + }, + }, + }, + }, +#line 4760 [TRAINER_BRAWLY_1] = { +#line 4761 + .trainerName = _("BRAWLY"), +#line 4762 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4763 .trainerPic = TRAINER_PIC_LEADER_BRAWLY, - .trainerName = _("BRAWLY"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4765 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4766 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 4767 + .doubleBattle = FALSE, +#line 4768 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly1), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 4770 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4772 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4771 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4773 + MOVE_KARATE_CHOP, + MOVE_LOW_KICK, + MOVE_SEISMIC_TOSS, + MOVE_BULK_UP, + }, + }, + { +#line 4778 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4780 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 4779 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4781 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_BULK_UP, + }, + }, + { +#line 4786 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4786 + .heldItem = ITEM_SITRUS_BERRY, +#line 4788 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4787 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4789 + MOVE_ARM_THRUST, + MOVE_VITAL_THROW, + MOVE_REVERSAL, + MOVE_BULK_UP, + }, + }, + }, + }, +#line 4794 [TRAINER_WATTSON_1] = { +#line 4795 + .trainerName = _("WATTSON"), +#line 4796 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4797 .trainerPic = TRAINER_PIC_LEADER_WATTSON, - .trainerName = _("WATTSON"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4799 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4800 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 4801 + .doubleBattle = FALSE, +#line 4802 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson1), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4804 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4806 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4805 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4807 + MOVE_ROLLOUT, + MOVE_SPARK, + MOVE_SELF_DESTRUCT, + MOVE_SHOCK_WAVE, + }, + }, + { +#line 4812 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4814 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4813 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4815 + MOVE_SHOCK_WAVE, + MOVE_LEER, + MOVE_QUICK_ATTACK, + MOVE_HOWL, + }, + }, + { +#line 4820 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4822 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 4821 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4823 + MOVE_SUPERSONIC, + MOVE_SHOCK_WAVE, + MOVE_THUNDER_WAVE, + MOVE_SONIC_BOOM, + }, + }, + { +#line 4828 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4828 + .heldItem = ITEM_SITRUS_BERRY, +#line 4830 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4829 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4831 + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + MOVE_SHOCK_WAVE, + MOVE_HOWL, + }, + }, + }, + }, +#line 4836 [TRAINER_FLANNERY_1] = { +#line 4837 + .trainerName = _("FLANNERY"), +#line 4838 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4839 .trainerPic = TRAINER_PIC_LEADER_FLANNERY, - .trainerName = _("FLANNERY"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4840 +F_TRAINER_FEMALE | +#line 4841 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4842 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4843 + .doubleBattle = FALSE, +#line 4844 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery1), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4846 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4848 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4847 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4849 + MOVE_OVERHEAT, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + { +#line 4854 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4856 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4855 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4857 + MOVE_OVERHEAT, + MOVE_SMOG, + MOVE_LIGHT_SCREEN, + MOVE_SUNNY_DAY, + }, + }, + { +#line 4862 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4864 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4863 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4865 + MOVE_OVERHEAT, + MOVE_TACKLE, + MOVE_SUNNY_DAY, + MOVE_ATTRACT, + }, + }, + { +#line 4870 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4870 + .heldItem = ITEM_WHITE_HERB, +#line 4872 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4871 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4873 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 4878 [TRAINER_NORMAN_1] = { +#line 4879 + .trainerName = _("NORMAN"), +#line 4880 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4881 .trainerPic = TRAINER_PIC_LEADER_NORMAN, - .trainerName = _("NORMAN"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4883 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 4884 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4885 + .doubleBattle = FALSE, +#line 4886 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman1), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4888 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4890 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4889 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4891 + MOVE_TEETER_DANCE, + MOVE_PSYBEAM, + MOVE_FACADE, + MOVE_ENCORE, + }, + }, + { +#line 4896 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4898 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4897 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4899 + MOVE_SLASH, + MOVE_FACADE, + MOVE_ENCORE, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 4904 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4906 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 4905 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4907 + MOVE_SLASH, + MOVE_BELLY_DRUM, + MOVE_FACADE, + MOVE_HEADBUTT, + }, + }, + { +#line 4912 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4912 + .heldItem = ITEM_SITRUS_BERRY, +#line 4914 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4913 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4915 + MOVE_COUNTER, + MOVE_YAWN, + MOVE_FACADE, + MOVE_FEINT_ATTACK, + }, + }, + }, + }, +#line 4920 [TRAINER_WINONA_1] = { +#line 4921 + .trainerName = _("WINONA"), +#line 4922 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4923 .trainerPic = TRAINER_PIC_LEADER_WINONA, - .trainerName = _("WINONA"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 4924 +F_TRAINER_FEMALE | +#line 4925 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4926 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4927 + .doubleBattle = FALSE, +#line 4928 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona1), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 4930 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4932 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4931 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4933 + MOVE_PERISH_SONG, + MOVE_MIRROR_MOVE, + MOVE_SAFEGUARD, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4938 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4940 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4939 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4941 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_SYNTHESIS, + }, + }, + { +#line 4946 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4948 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 4947 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4949 + MOVE_WATER_GUN, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4954 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4956 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 4955 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4957 + MOVE_SAND_ATTACK, + MOVE_FURY_ATTACK, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 4962 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4962 + .heldItem = ITEM_ORAN_BERRY, +#line 4964 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 4963 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4965 + MOVE_EARTHQUAKE, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + MOVE_AERIAL_ACE, + }, + }, + }, + }, +#line 4970 [TRAINER_TATE_AND_LIZA_1] = { +#line 4971 + .trainerName = _("TATE&LIZA"), +#line 4972 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4973 .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, - .trainerName = _("TATE&LIZA"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION}, + .encounterMusic_gender = +#line 4975 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 4976 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 4977 .doubleBattle = TRUE, +#line 4978 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza1), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 4980 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4982 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4981 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4983 + MOVE_EARTHQUAKE, + MOVE_ANCIENT_POWER, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 4988 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4990 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4989 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4991 + MOVE_PSYCHIC, + MOVE_SUNNY_DAY, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 4996 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 4996 + .heldItem = ITEM_SITRUS_BERRY, +#line 4998 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 4997 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 4999 + MOVE_LIGHT_SCREEN, + MOVE_PSYCHIC, + MOVE_HYPNOSIS, + MOVE_CALM_MIND, + }, + }, + { +#line 5004 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5004 + .heldItem = ITEM_SITRUS_BERRY, +#line 5006 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 5005 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5007 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, + }, +#line 5012 [TRAINER_JUAN_1] = { +#line 5013 + .trainerName = _("JUAN"), +#line 5014 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5015 .trainerPic = TRAINER_PIC_LEADER_JUAN, - .trainerName = _("JUAN"), - .items = {ITEM_HYPER_POTION, ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5017 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5018 + .items = { ITEM_HYPER_POTION, ITEM_HYPER_POTION }, +#line 5019 + .doubleBattle = FALSE, +#line 5020 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan1), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 5022 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5024 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5023 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5025 + MOVE_WATER_PULSE, + MOVE_ATTRACT, + MOVE_SWEET_KISS, + MOVE_FLAIL, + }, + }, + { +#line 5030 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5032 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5031 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5033 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_AMNESIA, + MOVE_EARTHQUAKE, + }, + }, + { +#line 5038 + .species = SPECIES_SEALEO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5040 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5039 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5041 + MOVE_ENCORE, + MOVE_BODY_SLAM, + MOVE_AURORA_BEAM, + MOVE_WATER_PULSE, + }, + }, + { +#line 5046 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5048 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5047 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5049 + MOVE_WATER_PULSE, + MOVE_CRABHAMMER, + MOVE_TAUNT, + MOVE_LEER, + }, + }, + { +#line 5054 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5054 + .heldItem = ITEM_CHESTO_BERRY, +#line 5056 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 5055 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5057 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, + }, +#line 5062 [TRAINER_JERRY_1] = { +#line 5063 + .trainerName = _("JERRY"), +#line 5064 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5065 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("JERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry1), - }, - + .encounterMusic_gender = +#line 5067 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5068 + .doubleBattle = FALSE, +#line 5069 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5071 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5073 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5072 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5075 [TRAINER_TED] = { +#line 5076 + .trainerName = _("TED"), +#line 5077 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5078 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("TED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ted), - }, - + .encounterMusic_gender = +#line 5080 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5081 + .doubleBattle = FALSE, +#line 5082 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5084 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5086 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5085 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5088 [TRAINER_PAUL] = { +#line 5089 + .trainerName = _("PAUL"), +#line 5090 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5091 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("PAUL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Paul), - }, - + .encounterMusic_gender = +#line 5093 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5094 + .doubleBattle = FALSE, +#line 5095 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5097 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5099 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5098 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5101 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5103 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5102 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5105 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5107 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5106 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5109 [TRAINER_JERRY_2] = { +#line 5110 + .trainerName = _("JERRY"), +#line 5111 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5112 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("JERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry2), - }, - + .encounterMusic_gender = +#line 5114 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5115 + .doubleBattle = FALSE, +#line 5116 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5118 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5120 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5119 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5122 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5124 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5123 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5126 [TRAINER_JERRY_3] = { +#line 5127 + .trainerName = _("JERRY"), +#line 5128 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5129 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("JERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry3), - }, - + .encounterMusic_gender = +#line 5131 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5132 + .doubleBattle = FALSE, +#line 5133 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5135 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5137 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5136 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5139 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5141 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5140 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5143 [TRAINER_JERRY_4] = { +#line 5144 + .trainerName = _("JERRY"), +#line 5145 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5146 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("JERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry4), - }, - + .encounterMusic_gender = +#line 5148 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5149 + .doubleBattle = FALSE, +#line 5150 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5152 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5154 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5153 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5156 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5158 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5157 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5160 [TRAINER_JERRY_5] = { +#line 5161 + .trainerName = _("JERRY"), +#line 5162 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5163 .trainerPic = TRAINER_PIC_SCHOOL_KID_M, - .trainerName = _("JERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jerry5), - }, - + .encounterMusic_gender = +#line 5165 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5166 + .doubleBattle = FALSE, +#line 5167 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5169 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5171 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5170 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5173 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5175 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5174 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5177 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5179 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5178 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5181 [TRAINER_KAREN_1] = { +#line 5182 + .trainerName = _("KAREN"), +#line 5183 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5184 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("KAREN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen1), - }, - + .encounterMusic_gender = +#line 5185 +F_TRAINER_FEMALE | +#line 5186 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5187 + .doubleBattle = FALSE, +#line 5188 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5190 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5192 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5191 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5194 [TRAINER_GEORGIA] = { +#line 5195 + .trainerName = _("GEORGIA"), +#line 5196 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5197 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("GEORGIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Georgia), - }, - + .encounterMusic_gender = +#line 5198 +F_TRAINER_FEMALE | +#line 5199 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5200 + .doubleBattle = FALSE, +#line 5201 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5203 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5205 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5204 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5207 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5209 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5208 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5211 [TRAINER_KAREN_2] = { +#line 5212 + .trainerName = _("KAREN"), +#line 5213 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5214 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("KAREN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen2), - }, - + .encounterMusic_gender = +#line 5215 +F_TRAINER_FEMALE | +#line 5216 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5217 + .doubleBattle = FALSE, +#line 5218 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5220 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5222 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5221 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5224 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5226 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5225 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5228 [TRAINER_KAREN_3] = { +#line 5229 + .trainerName = _("KAREN"), +#line 5230 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5231 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("KAREN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen3), - }, - + .encounterMusic_gender = +#line 5232 +F_TRAINER_FEMALE | +#line 5233 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5234 + .doubleBattle = FALSE, +#line 5235 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5237 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5239 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5238 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5241 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5243 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5242 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5245 [TRAINER_KAREN_4] = { +#line 5246 + .trainerName = _("KAREN"), +#line 5247 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5248 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("KAREN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen4), - }, - + .encounterMusic_gender = +#line 5249 +F_TRAINER_FEMALE | +#line 5250 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5251 + .doubleBattle = FALSE, +#line 5252 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5254 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5256 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5255 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5258 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5260 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5259 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5262 [TRAINER_KAREN_5] = { +#line 5263 + .trainerName = _("KAREN"), +#line 5264 .trainerClass = TRAINER_CLASS_SCHOOL_KID, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5265 .trainerPic = TRAINER_PIC_SCHOOL_KID_F, - .trainerName = _("KAREN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Karen5), - }, - + .encounterMusic_gender = +#line 5266 +F_TRAINER_FEMALE | +#line 5267 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 5268 + .doubleBattle = FALSE, +#line 5269 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5271 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5273 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5272 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5275 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5277 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5276 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5279 [TRAINER_KATE_AND_JOY] = { +#line 5280 + .trainerName = _("KATE & JOY"), +#line 5281 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5282 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("KATE & JOY"), - .items = {}, + .encounterMusic_gender = +#line 5284 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5285 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KateAndJoy), - }, - +#line 5286 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5288 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5290 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5289 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5291 + MOVE_HYPNOSIS, + MOVE_PSYBEAM, + MOVE_DIZZY_PUNCH, + MOVE_TEETER_DANCE, + }, + }, + { +#line 5296 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5298 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5297 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5299 + MOVE_FOCUS_PUNCH, + MOVE_YAWN, + MOVE_SLACK_OFF, + MOVE_FEINT_ATTACK, + }, + }, + }, + }, +#line 5304 [TRAINER_ANNA_AND_MEG_1] = { +#line 5305 + .trainerName = _("ANNA & MEG"), +#line 5306 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5307 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("ANNA & MEG"), - .items = {}, + .encounterMusic_gender = +#line 5309 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5310 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg1), - }, - +#line 5311 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5313 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5315 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5314 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5316 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5321 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5323 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5322 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5324 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, + }, +#line 5328 [TRAINER_ANNA_AND_MEG_2] = { +#line 5329 + .trainerName = _("ANNA & MEG"), +#line 5330 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5331 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("ANNA & MEG"), - .items = {}, + .encounterMusic_gender = +#line 5333 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5334 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg2), - }, - +#line 5335 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5337 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5339 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5338 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5340 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5345 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5347 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5346 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5348 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, + }, +#line 5352 [TRAINER_ANNA_AND_MEG_3] = { +#line 5353 + .trainerName = _("ANNA & MEG"), +#line 5354 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5355 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("ANNA & MEG"), - .items = {}, + .encounterMusic_gender = +#line 5357 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5358 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg3), - }, - +#line 5359 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5361 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5363 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5362 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5364 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5369 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5371 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5370 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5372 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, + }, +#line 5376 [TRAINER_ANNA_AND_MEG_4] = { +#line 5377 + .trainerName = _("ANNA & MEG"), +#line 5378 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5379 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("ANNA & MEG"), - .items = {}, + .encounterMusic_gender = +#line 5381 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5382 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg4), - }, - +#line 5383 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5385 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5387 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5386 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5388 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5393 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5395 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5394 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5396 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, + }, +#line 5400 [TRAINER_ANNA_AND_MEG_5] = { +#line 5401 + .trainerName = _("ANNA & MEG"), +#line 5402 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5403 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("ANNA & MEG"), - .items = {}, + .encounterMusic_gender = +#line 5405 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5406 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AnnaAndMeg5), - }, - +#line 5407 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5409 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5411 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5410 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5412 + MOVE_GROWL, + MOVE_TAIL_WHIP, + MOVE_HEADBUTT, + MOVE_ODOR_SLEUTH, + }, + }, + { +#line 5417 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5419 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5418 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5420 + MOVE_TACKLE, + MOVE_FOCUS_ENERGY, + MOVE_ARM_THRUST, + }, + }, + }, + }, +#line 5424 [TRAINER_VICTOR] = { +#line 5425 + .trainerName = _("VICTOR"), +#line 5426 .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5427 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("VICTOR"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Victor), - }, - + .encounterMusic_gender = +#line 5429 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5430 + .doubleBattle = FALSE, +#line 5431 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5433 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5433 + .heldItem = ITEM_ORAN_BERRY, +#line 5435 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5434 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5437 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5437 + .heldItem = ITEM_ORAN_BERRY, +#line 5439 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5438 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5441 [TRAINER_MIGUEL_1] = { +#line 5442 + .trainerName = _("MIGUEL"), +#line 5443 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5444 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("MIGUEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel1), - }, - + .encounterMusic_gender = +#line 5446 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5447 + .doubleBattle = FALSE, +#line 5448 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5450 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5450 + .heldItem = ITEM_ORAN_BERRY, +#line 5452 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5451 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5454 [TRAINER_COLTON] = { +#line 5455 + .trainerName = _("COLTON"), +#line 5456 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5457 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("COLTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Colton), - }, - + .encounterMusic_gender = +#line 5459 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5460 + .doubleBattle = FALSE, +#line 5461 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 5463 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5463 + .heldItem = ITEM_ORAN_BERRY, +#line 5465 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5464 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5466 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5471 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5471 + .heldItem = ITEM_ORAN_BERRY, +#line 5473 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5472 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5474 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5479 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5479 + .heldItem = ITEM_ORAN_BERRY, +#line 5481 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5480 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5482 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5487 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5487 + .heldItem = ITEM_ORAN_BERRY, +#line 5489 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5488 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5490 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5495 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5495 + .heldItem = ITEM_ORAN_BERRY, +#line 5497 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5496 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5498 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + { +#line 5503 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5503 + .heldItem = ITEM_ORAN_BERRY, +#line 5505 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5504 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5506 + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + MOVE_HEAL_BELL, + }, + }, + }, + }, +#line 5511 [TRAINER_MIGUEL_2] = { +#line 5512 + .trainerName = _("MIGUEL"), +#line 5513 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5514 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("MIGUEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel2), - }, - + .encounterMusic_gender = +#line 5516 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5517 + .doubleBattle = FALSE, +#line 5518 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5520 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5520 + .heldItem = ITEM_ORAN_BERRY, +#line 5522 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5521 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5524 [TRAINER_MIGUEL_3] = { +#line 5525 + .trainerName = _("MIGUEL"), +#line 5526 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5527 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("MIGUEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel3), - }, - + .encounterMusic_gender = +#line 5529 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5530 + .doubleBattle = FALSE, +#line 5531 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5533 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5533 + .heldItem = ITEM_ORAN_BERRY, +#line 5535 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5534 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5537 [TRAINER_MIGUEL_4] = { +#line 5538 + .trainerName = _("MIGUEL"), +#line 5539 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5540 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("MIGUEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel4), - }, - + .encounterMusic_gender = +#line 5542 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5543 + .doubleBattle = FALSE, +#line 5544 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5546 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5546 + .heldItem = ITEM_ORAN_BERRY, +#line 5548 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5547 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5550 [TRAINER_MIGUEL_5] = { +#line 5551 + .trainerName = _("MIGUEL"), +#line 5552 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5553 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("MIGUEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Miguel5), - }, - + .encounterMusic_gender = +#line 5555 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5556 + .doubleBattle = FALSE, +#line 5557 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5559 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5559 + .heldItem = ITEM_SITRUS_BERRY, +#line 5561 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5560 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5563 [TRAINER_VICTORIA] = { +#line 5564 + .trainerName = _("VICTORIA"), +#line 5565 .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5566 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("VICTORIA"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5567 +F_TRAINER_FEMALE | +#line 5568 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5569 + .doubleBattle = FALSE, +#line 5570 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Victoria), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5572 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5572 + .heldItem = ITEM_ORAN_BERRY, +#line 5574 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 5573 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5576 [TRAINER_VANESSA] = { +#line 5577 + .trainerName = _("VANESSA"), +#line 5578 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5579 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("VANESSA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Vanessa), - }, - + .encounterMusic_gender = +#line 5580 +F_TRAINER_FEMALE | +#line 5581 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5582 + .doubleBattle = FALSE, +#line 5583 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5585 + .species = SPECIES_PIKACHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5585 + .heldItem = ITEM_ORAN_BERRY, +#line 5587 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5586 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5589 [TRAINER_BETHANY] = { +#line 5590 + .trainerName = _("BETHANY"), +#line 5591 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5592 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("BETHANY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bethany), - }, - + .encounterMusic_gender = +#line 5593 +F_TRAINER_FEMALE | +#line 5594 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5595 + .doubleBattle = FALSE, +#line 5596 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 5598 + .species = SPECIES_AZURILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5598 + .heldItem = ITEM_ORAN_BERRY, +#line 5600 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5599 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5602 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5602 + .heldItem = ITEM_ORAN_BERRY, +#line 5604 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5603 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5606 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5606 + .heldItem = ITEM_ORAN_BERRY, +#line 5608 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5607 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5610 [TRAINER_ISABEL_1] = { +#line 5611 + .trainerName = _("ISABEL"), +#line 5612 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5613 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ISABEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel1), - }, - + .encounterMusic_gender = +#line 5614 +F_TRAINER_FEMALE | +#line 5615 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5616 + .doubleBattle = FALSE, +#line 5617 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5619 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5619 + .heldItem = ITEM_ORAN_BERRY, +#line 5621 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5620 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5623 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5623 + .heldItem = ITEM_ORAN_BERRY, +#line 5625 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5624 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5627 [TRAINER_ISABEL_2] = { +#line 5628 + .trainerName = _("ISABEL"), +#line 5629 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5630 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ISABEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel2), - }, - + .encounterMusic_gender = +#line 5631 +F_TRAINER_FEMALE | +#line 5632 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5633 + .doubleBattle = FALSE, +#line 5634 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5636 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5636 + .heldItem = ITEM_ORAN_BERRY, +#line 5638 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5637 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5640 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5640 + .heldItem = ITEM_ORAN_BERRY, +#line 5642 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 5641 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5644 [TRAINER_ISABEL_3] = { +#line 5645 + .trainerName = _("ISABEL"), +#line 5646 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5647 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ISABEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel3), - }, - + .encounterMusic_gender = +#line 5648 +F_TRAINER_FEMALE | +#line 5649 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5650 + .doubleBattle = FALSE, +#line 5651 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5653 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5653 + .heldItem = ITEM_ORAN_BERRY, +#line 5655 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5654 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5657 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5657 + .heldItem = ITEM_ORAN_BERRY, +#line 5659 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 5658 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5661 [TRAINER_ISABEL_4] = { +#line 5662 + .trainerName = _("ISABEL"), +#line 5663 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5664 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ISABEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel4), - }, - + .encounterMusic_gender = +#line 5665 +F_TRAINER_FEMALE | +#line 5666 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5667 + .doubleBattle = FALSE, +#line 5668 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5670 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5670 + .heldItem = ITEM_ORAN_BERRY, +#line 5672 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5671 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5674 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5674 + .heldItem = ITEM_ORAN_BERRY, +#line 5676 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 5675 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5678 [TRAINER_ISABEL_5] = { +#line 5679 + .trainerName = _("ISABEL"), +#line 5680 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5681 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ISABEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabel5), - }, - + .encounterMusic_gender = +#line 5682 +F_TRAINER_FEMALE | +#line 5683 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 5684 + .doubleBattle = FALSE, +#line 5685 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5687 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5687 + .heldItem = ITEM_SITRUS_BERRY, +#line 5689 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5688 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5691 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5691 + .heldItem = ITEM_SITRUS_BERRY, +#line 5693 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 5692 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5695 [TRAINER_TIMOTHY_1] = { +#line 5696 + .trainerName = _("TIMOTHY"), +#line 5697 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5698 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("TIMOTHY"), - .items = {}, + .encounterMusic_gender = +#line 5700 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5701 .doubleBattle = FALSE, +#line 5702 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy1), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5704 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5706 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5705 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5708 [TRAINER_TIMOTHY_2] = { +#line 5709 + .trainerName = _("TIMOTHY"), +#line 5710 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5711 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("TIMOTHY"), - .items = {}, + .encounterMusic_gender = +#line 5713 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5714 .doubleBattle = FALSE, +#line 5715 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy2), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5717 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5719 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5718 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5720 + MOVE_ARM_THRUST, + MOVE_KNOCK_OFF, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, + }, +#line 5725 [TRAINER_TIMOTHY_3] = { +#line 5726 + .trainerName = _("TIMOTHY"), +#line 5727 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5728 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("TIMOTHY"), - .items = {}, + .encounterMusic_gender = +#line 5730 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5731 .doubleBattle = FALSE, +#line 5732 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy3), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5734 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5736 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5735 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5737 + MOVE_ARM_THRUST, + MOVE_KNOCK_OFF, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, + }, +#line 5742 [TRAINER_TIMOTHY_4] = { +#line 5743 + .trainerName = _("TIMOTHY"), +#line 5744 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5745 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("TIMOTHY"), - .items = {}, + .encounterMusic_gender = +#line 5747 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5748 .doubleBattle = FALSE, +#line 5749 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy4), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5751 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5753 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5752 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5754 + MOVE_ARM_THRUST, + MOVE_BELLY_DRUM, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, + }, +#line 5759 [TRAINER_TIMOTHY_5] = { +#line 5760 + .trainerName = _("TIMOTHY"), +#line 5761 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5762 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("TIMOTHY"), - .items = {}, + .encounterMusic_gender = +#line 5764 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5765 .doubleBattle = FALSE, +#line 5766 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Timothy5), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5768 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5770 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5769 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5771 + MOVE_ARM_THRUST, + MOVE_BELLY_DRUM, + MOVE_SAND_ATTACK, + MOVE_DIG, + }, + }, + }, + }, +#line 5776 [TRAINER_VICKY] = { +#line 5777 + .trainerName = _("VICKY"), +#line 5778 .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5779 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("VICKY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5780 +F_TRAINER_FEMALE | +#line 5781 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5782 + .doubleBattle = FALSE, +#line 5783 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vicky), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5785 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5787 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5786 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5788 + MOVE_HIGH_JUMP_KICK, + MOVE_MEDITATE, + MOVE_CONFUSION, + MOVE_DETECT, + }, + }, + }, + }, +#line 5793 [TRAINER_SHELBY_1] = { +#line 5794 + .trainerName = _("SHELBY"), +#line 5795 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5796 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("SHELBY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5797 +F_TRAINER_FEMALE | +#line 5798 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5799 + .doubleBattle = FALSE, +#line 5800 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby1), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5802 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5804 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5803 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5806 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5808 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 5807 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5810 [TRAINER_SHELBY_2] = { +#line 5811 + .trainerName = _("SHELBY"), +#line 5812 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5813 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("SHELBY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5814 +F_TRAINER_FEMALE | +#line 5815 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5816 + .doubleBattle = FALSE, +#line 5817 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby2), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5819 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5821 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5820 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5823 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5825 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 5824 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5827 [TRAINER_SHELBY_3] = { +#line 5828 + .trainerName = _("SHELBY"), +#line 5829 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5830 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("SHELBY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5831 +F_TRAINER_FEMALE | +#line 5832 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5833 + .doubleBattle = FALSE, +#line 5834 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby3), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5836 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5838 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5837 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5840 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5842 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 5841 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5844 [TRAINER_SHELBY_4] = { +#line 5845 + .trainerName = _("SHELBY"), +#line 5846 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5847 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("SHELBY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5848 +F_TRAINER_FEMALE | +#line 5849 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5850 + .doubleBattle = FALSE, +#line 5851 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby4), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5853 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5855 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5854 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5857 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5859 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 5858 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5861 [TRAINER_SHELBY_5] = { +#line 5862 + .trainerName = _("SHELBY"), +#line 5863 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5864 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("SHELBY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5865 +F_TRAINER_FEMALE | +#line 5866 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 5867 + .doubleBattle = FALSE, +#line 5868 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Shelby5), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5870 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5872 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5871 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5874 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5876 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 5875 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5878 [TRAINER_CALVIN_1] = { +#line 5879 + .trainerName = _("CALVIN"), +#line 5880 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5881 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("CALVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin1), - }, - + .encounterMusic_gender = +#line 5883 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5884 + .doubleBattle = FALSE, +#line 5885 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5887 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5889 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5888 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5891 [TRAINER_BILLY] = { +#line 5892 + .trainerName = _("BILLY"), +#line 5893 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5894 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("BILLY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Billy), - }, - + .encounterMusic_gender = +#line 5896 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5897 + .doubleBattle = FALSE, +#line 5898 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5900 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5902 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5901 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5904 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5906 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5905 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5908 [TRAINER_JOSH] = { +#line 5909 + .trainerName = _("JOSH"), +#line 5910 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5911 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("JOSH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Josh), - }, - + .encounterMusic_gender = +#line 5913 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5914 + .doubleBattle = FALSE, +#line 5915 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5917 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5919 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5918 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5920 + MOVE_TACKLE, + }, + }, + }, + }, +#line 5922 [TRAINER_TOMMY] = { +#line 5923 + .trainerName = _("TOMMY"), +#line 5924 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5925 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("TOMMY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tommy), - }, - + .encounterMusic_gender = +#line 5927 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5928 + .doubleBattle = FALSE, +#line 5929 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5931 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5933 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 5932 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 5935 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5937 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 5936 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5939 [TRAINER_JOEY] = { +#line 5940 + .trainerName = _("JOEY"), +#line 5941 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5942 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("JOEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joey), - }, - + .encounterMusic_gender = +#line 5944 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5945 + .doubleBattle = FALSE, +#line 5946 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 5948 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5950 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 5949 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 5952 [TRAINER_BEN] = { +#line 5953 + .trainerName = _("BEN"), +#line 5954 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5955 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("BEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ben), - }, - + .encounterMusic_gender = +#line 5957 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 5958 + .doubleBattle = FALSE, +#line 5959 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5961 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5963 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 5962 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5964 + MOVE_HEADBUTT, + MOVE_SAND_ATTACK, + MOVE_GROWL, + MOVE_THUNDERBOLT, + }, + }, + { +#line 5969 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5971 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 5970 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5972 + MOVE_AMNESIA, + MOVE_SLUDGE, + MOVE_YAWN, + MOVE_POUND, + }, + }, + }, + }, +#line 5977 [TRAINER_QUINCY] = { +#line 5978 + .trainerName = _("QUINCY"), +#line 5979 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 5980 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("QUINCY"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 5982 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 5983 + .items = { ITEM_FULL_RESTORE }, +#line 5984 + .doubleBattle = FALSE, +#line 5985 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Quincy), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 5987 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5989 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5988 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5990 + MOVE_ATTRACT, + MOVE_ICE_BEAM, + MOVE_THUNDERBOLT, + MOVE_FLAMETHROWER, + }, + }, + { +#line 5995 + .species = SPECIES_DUSCLOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 5997 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 5996 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 5998 + MOVE_SKILL_SWAP, + MOVE_PROTECT, + MOVE_WILL_O_WISP, + MOVE_TOXIC, + }, + }, + }, + }, +#line 6003 [TRAINER_KATELYNN] = { +#line 6004 + .trainerName = _("KATELYNN"), +#line 6005 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 6006 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("KATELYNN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 6007 +F_TRAINER_FEMALE | +#line 6008 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 6009 + .items = { ITEM_FULL_RESTORE }, +#line 6010 + .doubleBattle = FALSE, +#line 6011 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Katelynn), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6013 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6015 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 6014 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6016 + MOVE_SKILL_SWAP, + MOVE_PSYCHIC, + MOVE_THUNDERBOLT, + MOVE_CALM_MIND, + }, + }, + { +#line 6021 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6023 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 6022 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6024 + MOVE_EARTHQUAKE, + MOVE_SHADOW_BALL, + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + }, + }, + }, + }, +#line 6029 [TRAINER_JAYLEN] = { +#line 6030 + .trainerName = _("JAYLEN"), +#line 6031 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6032 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("JAYLEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaylen), - }, - + .encounterMusic_gender = +#line 6034 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6035 + .doubleBattle = FALSE, +#line 6036 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6038 + .species = SPECIES_TRAPINCH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6040 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6039 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6042 [TRAINER_DILLON] = { +#line 6043 + .trainerName = _("DILLON"), +#line 6044 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6045 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("DILLON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dillon), - }, - + .encounterMusic_gender = +#line 6047 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6048 + .doubleBattle = FALSE, +#line 6049 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6051 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6053 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6052 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6055 [TRAINER_CALVIN_2] = { +#line 6056 + .trainerName = _("CALVIN"), +#line 6057 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6058 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("CALVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin2), - }, - + .encounterMusic_gender = +#line 6060 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6061 + .doubleBattle = FALSE, +#line 6062 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6064 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6066 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6065 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6068 [TRAINER_CALVIN_3] = { +#line 6069 + .trainerName = _("CALVIN"), +#line 6070 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6071 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("CALVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin3), - }, - + .encounterMusic_gender = +#line 6073 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6074 + .doubleBattle = FALSE, +#line 6075 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6077 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6079 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6078 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6081 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6083 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6082 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6085 [TRAINER_CALVIN_4] = { +#line 6086 + .trainerName = _("CALVIN"), +#line 6087 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6088 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("CALVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin4), - }, - + .encounterMusic_gender = +#line 6090 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6091 + .doubleBattle = FALSE, +#line 6092 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6094 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6096 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6095 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6098 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6100 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6099 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6102 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6104 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6103 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6106 [TRAINER_CALVIN_5] = { +#line 6107 + .trainerName = _("CALVIN"), +#line 6108 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6109 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("CALVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Calvin5), - }, - + .encounterMusic_gender = +#line 6111 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6112 + .doubleBattle = FALSE, +#line 6113 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6115 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6117 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6116 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6119 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6121 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6120 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6123 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6125 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6124 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6127 [TRAINER_EDDIE] = { +#line 6128 + .trainerName = _("EDDIE"), +#line 6129 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6130 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("EDDIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eddie), - }, - + .encounterMusic_gender = +#line 6132 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6133 + .doubleBattle = FALSE, +#line 6134 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6136 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6138 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6137 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6140 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6142 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6141 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6144 [TRAINER_ALLEN] = { +#line 6145 + .trainerName = _("ALLEN"), +#line 6146 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6147 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("ALLEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Allen), - }, - + .encounterMusic_gender = +#line 6149 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6150 + .doubleBattle = FALSE, +#line 6151 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6153 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6155 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6154 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6157 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6159 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6158 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6161 [TRAINER_TIMMY] = { +#line 6162 + .trainerName = _("TIMMY"), +#line 6163 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6164 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("TIMMY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Timmy), - }, - + .encounterMusic_gender = +#line 6166 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6167 + .doubleBattle = FALSE, +#line 6168 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6170 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6172 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6171 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6174 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6176 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6175 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6178 [TRAINER_WALLACE] = { +#line 6179 + .trainerName = _("WALLACE"), +#line 6180 .trainerClass = TRAINER_CLASS_CHAMPION, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6181 .trainerPic = TRAINER_PIC_CHAMPION_WALLACE, - .trainerName = _("WALLACE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 6183 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6184 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 6185 + .doubleBattle = FALSE, +#line 6186 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, +#line 6187 .mugshotEnabled = TRUE, .mugshotColor = MUGSHOT_COLOR_YELLOW, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wallace), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 6189 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6191 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6190 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6192 + MOVE_RAIN_DANCE, + MOVE_WATER_SPOUT, + MOVE_DOUBLE_EDGE, + MOVE_BLIZZARD, + }, + }, + { +#line 6197 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6199 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6198 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6200 + MOVE_TOXIC, + MOVE_HYDRO_PUMP, + MOVE_SLUDGE_BOMB, + MOVE_ICE_BEAM, + }, + }, + { +#line 6205 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6207 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6206 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6208 + MOVE_GIGA_DRAIN, + MOVE_SURF, + MOVE_LEECH_SEED, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 6213 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6215 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6214 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6216 + MOVE_EARTHQUAKE, + MOVE_SURF, + MOVE_AMNESIA, + MOVE_HYPER_BEAM, + }, + }, + { +#line 6221 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6223 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6222 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6224 + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + MOVE_HYPER_BEAM, + MOVE_SURF, + }, + }, + { +#line 6229 + .species = SPECIES_MILOTIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6229 + .heldItem = ITEM_SITRUS_BERRY, +#line 6231 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 6230 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 6232 + MOVE_RECOVER, + MOVE_SURF, + MOVE_ICE_BEAM, + MOVE_TOXIC, + }, + }, + }, + }, +#line 6237 [TRAINER_ANDREW] = { +#line 6238 + .trainerName = _("ANDREW"), +#line 6239 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6240 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ANDREW"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andrew), - }, - + .encounterMusic_gender = +#line 6242 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6243 + .doubleBattle = FALSE, +#line 6244 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6246 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6248 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6247 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6250 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6252 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6251 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6254 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6256 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6255 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6258 [TRAINER_IVAN] = { +#line 6259 + .trainerName = _("IVAN"), +#line 6260 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6261 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("IVAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ivan), - }, - + .encounterMusic_gender = +#line 6263 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6264 + .doubleBattle = FALSE, +#line 6265 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6267 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6269 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6268 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6271 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6273 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6272 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6275 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6277 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6276 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6279 [TRAINER_CLAUDE] = { +#line 6280 + .trainerName = _("CLAUDE"), +#line 6281 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6282 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("CLAUDE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Claude), - }, - + .encounterMusic_gender = +#line 6284 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6285 + .doubleBattle = FALSE, +#line 6286 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6288 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6290 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6289 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6292 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6294 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6293 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6296 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6298 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6297 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6300 [TRAINER_ELLIOT_1] = { +#line 6301 + .trainerName = _("ELLIOT"), +#line 6302 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6303 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ELLIOT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot1), - }, - + .encounterMusic_gender = +#line 6305 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6306 + .doubleBattle = FALSE, +#line 6307 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6309 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6311 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6310 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6313 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6315 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6314 + .lvl = 7, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6317 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6319 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6318 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6321 [TRAINER_NED] = { +#line 6322 + .trainerName = _("NED"), +#line 6323 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6324 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("NED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ned), - }, - + .encounterMusic_gender = +#line 6326 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6327 + .doubleBattle = FALSE, +#line 6328 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6330 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6332 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6331 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6334 [TRAINER_DALE] = { +#line 6335 + .trainerName = _("DALE"), +#line 6336 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6337 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("DALE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dale), - }, - + .encounterMusic_gender = +#line 6339 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6340 + .doubleBattle = FALSE, +#line 6341 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6343 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6345 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6344 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6347 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6349 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6348 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6351 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6353 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6352 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6355 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6357 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6356 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6359 [TRAINER_NOLAN] = { +#line 6360 + .trainerName = _("NOLAN"), +#line 6361 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6362 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("NOLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nolan), - }, - + .encounterMusic_gender = +#line 6364 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6365 + .doubleBattle = FALSE, +#line 6366 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6368 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6370 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6369 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6372 [TRAINER_BARNY] = { +#line 6373 + .trainerName = _("BARNY"), +#line 6374 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6375 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("BARNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Barny), - }, - + .encounterMusic_gender = +#line 6377 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6378 + .doubleBattle = FALSE, +#line 6379 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6381 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6383 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6382 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6385 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6387 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6386 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6389 [TRAINER_WADE] = { +#line 6390 + .trainerName = _("WADE"), +#line 6391 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6392 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("WADE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wade), - }, - + .encounterMusic_gender = +#line 6394 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6395 + .doubleBattle = FALSE, +#line 6396 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6398 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6400 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6399 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6402 [TRAINER_CARTER] = { +#line 6403 + .trainerName = _("CARTER"), +#line 6404 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6405 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("CARTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carter), - }, - + .encounterMusic_gender = +#line 6407 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6408 + .doubleBattle = FALSE, +#line 6409 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6411 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6413 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6412 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6415 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6417 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6416 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6419 [TRAINER_ELLIOT_2] = { +#line 6420 + .trainerName = _("ELLIOT"), +#line 6421 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6422 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ELLIOT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot2), - }, - + .encounterMusic_gender = +#line 6424 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6425 + .doubleBattle = FALSE, +#line 6426 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6428 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6430 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6429 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6432 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6434 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6433 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6436 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6438 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6437 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6440 [TRAINER_ELLIOT_3] = { +#line 6441 + .trainerName = _("ELLIOT"), +#line 6442 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6443 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ELLIOT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot3), - }, - + .encounterMusic_gender = +#line 6445 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6446 + .doubleBattle = FALSE, +#line 6447 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6449 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6451 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6450 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6453 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6455 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6454 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6457 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6459 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6458 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6461 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6463 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6462 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6465 [TRAINER_ELLIOT_4] = { +#line 6466 + .trainerName = _("ELLIOT"), +#line 6467 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6468 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ELLIOT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elliot4), - }, - + .encounterMusic_gender = +#line 6470 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6471 + .doubleBattle = FALSE, +#line 6472 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6474 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6476 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6475 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6478 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6480 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6479 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6482 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6484 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6483 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6486 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6488 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6487 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6490 [TRAINER_ELLIOT_5] = { +#line 6491 + .trainerName = _("ELLIOT"), +#line 6492 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6493 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ELLIOT"), - .items = {}, + .encounterMusic_gender = +#line 6495 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6496 .doubleBattle = FALSE, +#line 6497 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Elliot5), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 6499 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6501 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6500 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6503 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6505 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6504 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6507 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6509 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6508 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6511 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6513 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6512 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6515 [TRAINER_RONALD] = { +#line 6516 + .trainerName = _("RONALD"), +#line 6517 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6518 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("RONALD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ronald), - }, - + .encounterMusic_gender = +#line 6520 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 6521 + .doubleBattle = FALSE, +#line 6522 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 6524 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6526 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6525 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6528 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6530 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6529 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6532 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6534 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6533 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6536 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6538 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6537 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6540 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6542 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6541 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6544 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6546 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6545 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6548 [TRAINER_JACOB] = { +#line 6549 + .trainerName = _("JACOB"), +#line 6550 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6551 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("JACOB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jacob), - }, - + .encounterMusic_gender = +#line 6553 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6554 + .doubleBattle = FALSE, +#line 6555 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6557 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6559 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6558 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6561 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6563 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6562 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6565 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6567 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 6566 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6569 [TRAINER_ANTHONY] = { +#line 6570 + .trainerName = _("ANTHONY"), +#line 6571 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6572 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("ANTHONY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Anthony), - }, - + .encounterMusic_gender = +#line 6574 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6575 + .doubleBattle = FALSE, +#line 6576 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6578 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6580 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6579 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6582 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6584 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6583 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6586 [TRAINER_BENJAMIN_1] = { +#line 6587 + .trainerName = _("BENJAMIN"), +#line 6588 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6589 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("BENJAMIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin1), - }, - + .encounterMusic_gender = +#line 6591 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6592 + .doubleBattle = FALSE, +#line 6593 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6595 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6597 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6596 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6599 [TRAINER_BENJAMIN_2] = { +#line 6600 + .trainerName = _("BENJAMIN"), +#line 6601 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6602 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("BENJAMIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin2), - }, - + .encounterMusic_gender = +#line 6604 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6605 + .doubleBattle = FALSE, +#line 6606 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6608 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6610 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6609 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6612 [TRAINER_BENJAMIN_3] = { +#line 6613 + .trainerName = _("BENJAMIN"), +#line 6614 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6615 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("BENJAMIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin3), - }, - + .encounterMusic_gender = +#line 6617 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6618 + .doubleBattle = FALSE, +#line 6619 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6621 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6623 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6622 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6625 [TRAINER_BENJAMIN_4] = { +#line 6626 + .trainerName = _("BENJAMIN"), +#line 6627 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6628 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("BENJAMIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin4), - }, - + .encounterMusic_gender = +#line 6630 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6631 + .doubleBattle = FALSE, +#line 6632 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6634 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6636 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6635 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6638 [TRAINER_BENJAMIN_5] = { +#line 6639 + .trainerName = _("BENJAMIN"), +#line 6640 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6641 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("BENJAMIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benjamin5), - }, - + .encounterMusic_gender = +#line 6643 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6644 + .doubleBattle = FALSE, +#line 6645 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6647 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6649 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6648 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6651 [TRAINER_ABIGAIL_1] = { +#line 6652 + .trainerName = _("ABIGAIL"), +#line 6653 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6654 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ABIGAIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail1), - }, - + .encounterMusic_gender = +#line 6655 +F_TRAINER_FEMALE | +#line 6656 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6657 + .doubleBattle = FALSE, +#line 6658 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6660 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6662 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6661 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6664 [TRAINER_JASMINE] = { +#line 6665 + .trainerName = _("JASMINE"), +#line 6666 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6667 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("JASMINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jasmine), - }, - + .encounterMusic_gender = +#line 6668 +F_TRAINER_FEMALE | +#line 6669 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6670 + .doubleBattle = FALSE, +#line 6671 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 6673 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6675 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6674 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6677 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6679 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6678 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6681 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6683 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6682 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6685 [TRAINER_ABIGAIL_2] = { +#line 6686 + .trainerName = _("ABIGAIL"), +#line 6687 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6688 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ABIGAIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail2), - }, - + .encounterMusic_gender = +#line 6689 +F_TRAINER_FEMALE | +#line 6690 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6691 + .doubleBattle = FALSE, +#line 6692 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6694 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6696 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6695 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6698 [TRAINER_ABIGAIL_3] = { +#line 6699 + .trainerName = _("ABIGAIL"), +#line 6700 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6701 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ABIGAIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail3), - }, - + .encounterMusic_gender = +#line 6702 +F_TRAINER_FEMALE | +#line 6703 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6704 + .doubleBattle = FALSE, +#line 6705 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6707 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6709 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6708 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6711 [TRAINER_ABIGAIL_4] = { +#line 6712 + .trainerName = _("ABIGAIL"), +#line 6713 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6714 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ABIGAIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail4), - }, - + .encounterMusic_gender = +#line 6715 +F_TRAINER_FEMALE | +#line 6716 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6717 + .doubleBattle = FALSE, +#line 6718 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6720 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6722 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6721 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6724 [TRAINER_ABIGAIL_5] = { +#line 6725 + .trainerName = _("ABIGAIL"), +#line 6726 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6727 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ABIGAIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Abigail5), - }, - + .encounterMusic_gender = +#line 6728 +F_TRAINER_FEMALE | +#line 6729 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6730 + .doubleBattle = FALSE, +#line 6731 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6733 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6735 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6734 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6737 [TRAINER_DYLAN_1] = { +#line 6738 + .trainerName = _("DYLAN"), +#line 6739 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6740 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, - .trainerName = _("DYLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan1), - }, - + .encounterMusic_gender = +#line 6742 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6743 + .doubleBattle = FALSE, +#line 6744 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6746 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6748 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6747 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6750 [TRAINER_DYLAN_2] = { +#line 6751 + .trainerName = _("DYLAN"), +#line 6752 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6753 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, - .trainerName = _("DYLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan2), - }, - + .encounterMusic_gender = +#line 6755 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6756 + .doubleBattle = FALSE, +#line 6757 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6759 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6761 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6760 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6763 [TRAINER_DYLAN_3] = { +#line 6764 + .trainerName = _("DYLAN"), +#line 6765 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6766 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, - .trainerName = _("DYLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan3), - }, - + .encounterMusic_gender = +#line 6768 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6769 + .doubleBattle = FALSE, +#line 6770 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6772 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6774 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6773 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6776 [TRAINER_DYLAN_4] = { +#line 6777 + .trainerName = _("DYLAN"), +#line 6778 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6779 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, - .trainerName = _("DYLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan4), - }, - + .encounterMusic_gender = +#line 6781 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6782 + .doubleBattle = FALSE, +#line 6783 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6785 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6787 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6786 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6789 [TRAINER_DYLAN_5] = { +#line 6790 + .trainerName = _("DYLAN"), +#line 6791 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6792 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_M, - .trainerName = _("DYLAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dylan5), - }, - + .encounterMusic_gender = +#line 6794 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6795 + .doubleBattle = FALSE, +#line 6796 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6798 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6800 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6799 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6802 [TRAINER_MARIA_1] = { +#line 6803 + .trainerName = _("MARIA"), +#line 6804 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6805 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MARIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria1), - }, - + .encounterMusic_gender = +#line 6806 +F_TRAINER_FEMALE | +#line 6807 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6808 + .doubleBattle = FALSE, +#line 6809 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6811 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6813 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6812 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6815 [TRAINER_MARIA_2] = { +#line 6816 + .trainerName = _("MARIA"), +#line 6817 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6818 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MARIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria2), - }, - + .encounterMusic_gender = +#line 6819 +F_TRAINER_FEMALE | +#line 6820 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6821 + .doubleBattle = FALSE, +#line 6822 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6824 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6826 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6825 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6828 [TRAINER_MARIA_3] = { +#line 6829 + .trainerName = _("MARIA"), +#line 6830 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6831 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MARIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria3), - }, - + .encounterMusic_gender = +#line 6832 +F_TRAINER_FEMALE | +#line 6833 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6834 + .doubleBattle = FALSE, +#line 6835 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6837 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6839 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6838 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6841 [TRAINER_MARIA_4] = { +#line 6842 + .trainerName = _("MARIA"), +#line 6843 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6844 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MARIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria4), - }, - + .encounterMusic_gender = +#line 6845 +F_TRAINER_FEMALE | +#line 6846 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6847 + .doubleBattle = FALSE, +#line 6848 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6850 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6852 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6851 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6854 [TRAINER_MARIA_5] = { +#line 6855 + .trainerName = _("MARIA"), +#line 6856 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6857 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MARIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Maria5), - }, - + .encounterMusic_gender = +#line 6858 +F_TRAINER_FEMALE | +#line 6859 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 6860 + .doubleBattle = FALSE, +#line 6861 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6863 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6865 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6864 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6867 [TRAINER_CAMDEN] = { +#line 6868 + .trainerName = _("CAMDEN"), +#line 6869 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6870 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("CAMDEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Camden), - }, - + .encounterMusic_gender = +#line 6872 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6873 + .doubleBattle = FALSE, +#line 6874 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6876 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6878 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6877 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6880 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6882 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6881 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6884 [TRAINER_DEMETRIUS] = { +#line 6885 + .trainerName = _("DEMETRIUS"), +#line 6886 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6887 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("DEMETRIUS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Demetrius), - }, - + .encounterMusic_gender = +#line 6889 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 6890 + .doubleBattle = FALSE, +#line 6891 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6893 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6895 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6894 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6897 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6899 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6898 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6901 [TRAINER_ISAIAH_1] = { +#line 6902 + .trainerName = _("ISAIAH"), +#line 6903 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6904 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("ISAIAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah1), - }, - + .encounterMusic_gender = +#line 6906 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6907 + .doubleBattle = FALSE, +#line 6908 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6910 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6912 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6911 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6914 [TRAINER_PABLO_1] = { +#line 6915 + .trainerName = _("PABLO"), +#line 6916 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6917 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("PABLO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo1), - }, - + .encounterMusic_gender = +#line 6919 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6920 + .doubleBattle = FALSE, +#line 6921 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6923 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6925 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6924 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6927 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6929 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6928 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6931 [TRAINER_CHASE] = { +#line 6932 + .trainerName = _("CHASE"), +#line 6933 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6934 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("CHASE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chase), - }, - + .encounterMusic_gender = +#line 6936 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6937 + .doubleBattle = FALSE, +#line 6938 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 6940 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6942 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 6941 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 6944 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6946 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 6945 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6948 [TRAINER_ISAIAH_2] = { +#line 6949 + .trainerName = _("ISAIAH"), +#line 6950 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6951 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("ISAIAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah2), - }, - + .encounterMusic_gender = +#line 6953 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6954 + .doubleBattle = FALSE, +#line 6955 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6957 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6959 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 6958 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6961 [TRAINER_ISAIAH_3] = { +#line 6962 + .trainerName = _("ISAIAH"), +#line 6963 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6964 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("ISAIAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah3), - }, - + .encounterMusic_gender = +#line 6966 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6967 + .doubleBattle = FALSE, +#line 6968 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6970 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6972 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 6971 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6974 [TRAINER_ISAIAH_4] = { +#line 6975 + .trainerName = _("ISAIAH"), +#line 6976 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6977 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("ISAIAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah4), - }, - + .encounterMusic_gender = +#line 6979 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6980 + .doubleBattle = FALSE, +#line 6981 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6983 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6985 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 6984 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 6987 [TRAINER_ISAIAH_5] = { +#line 6988 + .trainerName = _("ISAIAH"), +#line 6989 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6990 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("ISAIAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaiah5), - }, - + .encounterMusic_gender = +#line 6992 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 6993 + .doubleBattle = FALSE, +#line 6994 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 6996 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 6998 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 6997 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7000 [TRAINER_ISOBEL] = { +#line 7001 + .trainerName = _("ISOBEL"), +#line 7002 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7003 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("ISOBEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isobel), - }, - + .encounterMusic_gender = +#line 7004 +F_TRAINER_FEMALE | +#line 7005 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7006 + .doubleBattle = FALSE, +#line 7007 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7009 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7011 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7010 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7013 [TRAINER_DONNY] = { +#line 7014 + .trainerName = _("DONNY"), +#line 7015 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7016 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("DONNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Donny), - }, - + .encounterMusic_gender = +#line 7017 +F_TRAINER_FEMALE | +#line 7018 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7019 + .doubleBattle = FALSE, +#line 7020 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7022 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7024 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7023 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7026 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7028 + .iv = TRAINER_PARTY_IVS(19, 19, 19, 19, 19, 19), +#line 7027 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7030 [TRAINER_TALIA] = { +#line 7031 + .trainerName = _("TALIA"), +#line 7032 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7033 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("TALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Talia), - }, - + .encounterMusic_gender = +#line 7034 +F_TRAINER_FEMALE | +#line 7035 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7036 + .doubleBattle = FALSE, +#line 7037 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7039 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7041 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7040 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7043 [TRAINER_KATELYN_1] = { +#line 7044 + .trainerName = _("KATELYN"), +#line 7045 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7046 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("KATELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn1), - }, - + .encounterMusic_gender = +#line 7047 +F_TRAINER_FEMALE | +#line 7048 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7049 + .doubleBattle = FALSE, +#line 7050 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7052 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7054 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7053 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7056 [TRAINER_ALLISON] = { +#line 7057 + .trainerName = _("ALLISON"), +#line 7058 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7059 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("ALLISON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Allison), - }, - + .encounterMusic_gender = +#line 7060 +F_TRAINER_FEMALE | +#line 7061 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7062 + .doubleBattle = FALSE, +#line 7063 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7065 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7067 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7066 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7069 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7071 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 7070 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7073 [TRAINER_KATELYN_2] = { +#line 7074 + .trainerName = _("KATELYN"), +#line 7075 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7076 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("KATELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn2), - }, - + .encounterMusic_gender = +#line 7077 +F_TRAINER_FEMALE | +#line 7078 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7079 + .doubleBattle = FALSE, +#line 7080 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7082 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7084 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7083 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7086 [TRAINER_KATELYN_3] = { +#line 7087 + .trainerName = _("KATELYN"), +#line 7088 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7089 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("KATELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn3), - }, - + .encounterMusic_gender = +#line 7090 +F_TRAINER_FEMALE | +#line 7091 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7092 + .doubleBattle = FALSE, +#line 7093 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7095 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7097 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7096 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7099 [TRAINER_KATELYN_4] = { +#line 7100 + .trainerName = _("KATELYN"), +#line 7101 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7102 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("KATELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn4), - }, - + .encounterMusic_gender = +#line 7103 +F_TRAINER_FEMALE | +#line 7104 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7105 + .doubleBattle = FALSE, +#line 7106 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7108 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7110 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7109 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7112 [TRAINER_KATELYN_5] = { +#line 7113 + .trainerName = _("KATELYN"), +#line 7114 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7115 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("KATELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katelyn5), - }, - + .encounterMusic_gender = +#line 7116 +F_TRAINER_FEMALE | +#line 7117 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 7118 + .doubleBattle = FALSE, +#line 7119 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7121 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7123 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7122 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7125 [TRAINER_NICOLAS_1] = { +#line 7126 + .trainerName = _("NICOLAS"), +#line 7127 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7128 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("NICOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas1), - }, - + .encounterMusic_gender = +#line 7130 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7131 + .doubleBattle = FALSE, +#line 7132 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7134 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7136 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7135 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7138 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7140 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7139 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7142 [TRAINER_NICOLAS_2] = { +#line 7143 + .trainerName = _("NICOLAS"), +#line 7144 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7145 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("NICOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas2), - }, - + .encounterMusic_gender = +#line 7147 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7148 + .doubleBattle = FALSE, +#line 7149 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7151 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7153 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7152 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7155 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7157 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7156 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7159 [TRAINER_NICOLAS_3] = { +#line 7160 + .trainerName = _("NICOLAS"), +#line 7161 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7162 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("NICOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas3), - }, - + .encounterMusic_gender = +#line 7164 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7165 + .doubleBattle = FALSE, +#line 7166 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7168 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7170 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7169 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7172 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7174 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7173 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7176 [TRAINER_NICOLAS_4] = { +#line 7177 + .trainerName = _("NICOLAS"), +#line 7178 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7179 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("NICOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas4), - }, - + .encounterMusic_gender = +#line 7181 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7182 + .doubleBattle = FALSE, +#line 7183 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7185 + .species = SPECIES_BAGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7187 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7186 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7189 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7191 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7190 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7193 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7195 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7194 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7197 [TRAINER_NICOLAS_5] = { +#line 7198 + .trainerName = _("NICOLAS"), +#line 7199 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7200 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("NICOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicolas5), - }, - + .encounterMusic_gender = +#line 7202 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7203 + .doubleBattle = FALSE, +#line 7204 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7206 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7208 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7207 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7210 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7212 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7211 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7214 + .species = SPECIES_SHELGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7214 + .heldItem = ITEM_DRAGON_FANG, +#line 7216 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7215 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7218 [TRAINER_AARON] = { +#line 7219 + .trainerName = _("AARON"), +#line 7220 .trainerClass = TRAINER_CLASS_DRAGON_TAMER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7221 .trainerPic = TRAINER_PIC_DRAGON_TAMER, - .trainerName = _("AARON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aaron), - }, - + .encounterMusic_gender = +#line 7223 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7224 + .doubleBattle = FALSE, +#line 7225 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7227 + .species = SPECIES_BAGON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7229 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 7228 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7230 + MOVE_DRAGON_BREATH, + MOVE_HEADBUTT, + MOVE_FOCUS_ENERGY, + MOVE_EMBER, + }, + }, + }, + }, +#line 7235 [TRAINER_PERRY] = { +#line 7236 + .trainerName = _("PERRY"), +#line 7237 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7238 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("PERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Perry), - }, - + .encounterMusic_gender = +#line 7240 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7241 + .doubleBattle = FALSE, +#line 7242 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7244 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7246 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7245 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7248 [TRAINER_HUGH] = { +#line 7249 + .trainerName = _("HUGH"), +#line 7250 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7251 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("HUGH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hugh), - }, - + .encounterMusic_gender = +#line 7253 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7254 + .doubleBattle = FALSE, +#line 7255 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7257 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7259 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7258 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7261 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7263 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7262 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7265 [TRAINER_PHIL] = { +#line 7266 + .trainerName = _("PHIL"), +#line 7267 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7268 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("PHIL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Phil), - }, - + .encounterMusic_gender = +#line 7270 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7271 + .doubleBattle = FALSE, +#line 7272 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7274 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7276 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7275 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7278 [TRAINER_JARED] = { +#line 7279 + .trainerName = _("JARED"), +#line 7280 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7281 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("JARED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jared), - }, - + .encounterMusic_gender = +#line 7283 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7284 + .doubleBattle = FALSE, +#line 7285 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7287 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7289 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7288 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7291 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7293 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7292 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7295 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7297 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7296 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7299 [TRAINER_HUMBERTO] = { +#line 7300 + .trainerName = _("HUMBERTO"), +#line 7301 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7302 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("HUMBERTO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Humberto), - }, - + .encounterMusic_gender = +#line 7304 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7305 + .doubleBattle = FALSE, +#line 7306 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7308 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7310 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 7309 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7312 [TRAINER_PRESLEY] = { +#line 7313 + .trainerName = _("PRESLEY"), +#line 7314 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7315 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("PRESLEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Presley), - }, - + .encounterMusic_gender = +#line 7317 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7318 + .doubleBattle = FALSE, +#line 7319 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7321 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7323 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7322 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7325 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7327 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7326 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7329 [TRAINER_EDWARDO] = { +#line 7330 + .trainerName = _("EDWARDO"), +#line 7331 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7332 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("EDWARDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwardo), - }, - + .encounterMusic_gender = +#line 7334 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7335 + .doubleBattle = FALSE, +#line 7336 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7338 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7340 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7339 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7342 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7344 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7343 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7346 [TRAINER_COLIN] = { +#line 7347 + .trainerName = _("COLIN"), +#line 7348 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7349 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("COLIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Colin), - }, - + .encounterMusic_gender = +#line 7351 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7352 + .doubleBattle = FALSE, +#line 7353 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7355 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7357 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7356 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7359 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7361 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7360 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7363 [TRAINER_ROBERT_1] = { +#line 7364 + .trainerName = _("ROBERT"), +#line 7365 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7366 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ROBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert1), - }, - + .encounterMusic_gender = +#line 7368 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7369 + .doubleBattle = FALSE, +#line 7370 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7372 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7374 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7373 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7376 [TRAINER_BENNY] = { +#line 7377 + .trainerName = _("BENNY"), +#line 7378 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7379 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("BENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Benny), - }, - + .encounterMusic_gender = +#line 7381 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7382 + .doubleBattle = FALSE, +#line 7383 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7385 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7387 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7386 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7389 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7391 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7390 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7393 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7395 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7394 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7397 [TRAINER_CHESTER] = { +#line 7398 + .trainerName = _("CHESTER"), +#line 7399 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7400 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("CHESTER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chester), - }, - + .encounterMusic_gender = +#line 7402 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7403 + .doubleBattle = FALSE, +#line 7404 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7406 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7408 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7407 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7410 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7412 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7411 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7414 [TRAINER_ROBERT_2] = { +#line 7415 + .trainerName = _("ROBERT"), +#line 7416 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7417 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ROBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert2), - }, - + .encounterMusic_gender = +#line 7419 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7420 + .doubleBattle = FALSE, +#line 7421 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7423 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7425 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7424 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7427 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7429 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7428 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7431 [TRAINER_ROBERT_3] = { +#line 7432 + .trainerName = _("ROBERT"), +#line 7433 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7434 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ROBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert3), - }, - + .encounterMusic_gender = +#line 7436 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7437 + .doubleBattle = FALSE, +#line 7438 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7440 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7442 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7441 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7444 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7446 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7445 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7448 [TRAINER_ROBERT_4] = { +#line 7449 + .trainerName = _("ROBERT"), +#line 7450 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7451 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ROBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert4), - }, - + .encounterMusic_gender = +#line 7453 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7454 + .doubleBattle = FALSE, +#line 7455 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7457 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7459 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7458 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7461 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7463 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7462 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7465 [TRAINER_ROBERT_5] = { +#line 7466 + .trainerName = _("ROBERT"), +#line 7467 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7468 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ROBERT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robert5), - }, - + .encounterMusic_gender = +#line 7470 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7471 + .doubleBattle = FALSE, +#line 7472 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7474 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7476 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7475 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7478 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7480 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7479 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7482 [TRAINER_ALEX] = { +#line 7483 + .trainerName = _("ALEX"), +#line 7484 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7485 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ALEX"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alex), - }, - + .encounterMusic_gender = +#line 7487 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7488 + .doubleBattle = FALSE, +#line 7489 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7491 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7493 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7492 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7495 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7497 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7496 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7499 [TRAINER_BECK] = { +#line 7500 + .trainerName = _("BECK"), +#line 7501 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7502 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("BECK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beck), - }, - + .encounterMusic_gender = +#line 7504 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7505 + .doubleBattle = FALSE, +#line 7506 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7508 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7510 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7509 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7512 [TRAINER_YASU] = { +#line 7513 + .trainerName = _("YASU"), +#line 7514 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7515 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("YASU"), - .items = {}, + .encounterMusic_gender = +#line 7517 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7518 .doubleBattle = FALSE, +#line 7519 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Yasu), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7521 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7523 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7522 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7525 [TRAINER_TAKASHI] = { +#line 7526 + .trainerName = _("TAKASHI"), +#line 7527 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7528 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("TAKASHI"), - .items = {}, + .encounterMusic_gender = +#line 7530 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7531 .doubleBattle = FALSE, +#line 7532 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Takashi), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7534 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7536 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7535 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7538 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7540 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7539 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7542 [TRAINER_DIANNE] = { +#line 7543 + .trainerName = _("DIANNE"), +#line 7544 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7545 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("DIANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Dianne), - }, - + .encounterMusic_gender = +#line 7546 +F_TRAINER_FEMALE | +#line 7547 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 7548 + .items = { ITEM_FULL_RESTORE }, +#line 7549 + .doubleBattle = FALSE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7551 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7553 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7552 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7554 + MOVE_SKILL_SWAP, + MOVE_EARTHQUAKE, + }, + }, + { +#line 7557 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7559 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7558 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7560 + MOVE_THUNDERBOLT, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 7563 [TRAINER_JANI] = { +#line 7564 + .trainerName = _("JANI"), +#line 7565 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 7566 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("JANI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Jani), - }, - + .encounterMusic_gender = +#line 7567 +F_TRAINER_FEMALE | +#line 7568 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 7569 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7571 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7573 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7572 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7575 [TRAINER_LAO_1] = { +#line 7576 + .trainerName = _("LAO"), +#line 7577 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7578 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao1), - }, - + .encounterMusic_gender = +#line 7580 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7581 + .doubleBattle = FALSE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 7583 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7585 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7584 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7586 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SMOG, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7591 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7593 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7592 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7594 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SMOG, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7599 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7601 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7600 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7602 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + }, + }, +#line 7607 [TRAINER_LUNG] = { +#line 7608 + .trainerName = _("LUNG"), +#line 7609 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7610 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LUNG"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lung), - }, - + .encounterMusic_gender = +#line 7612 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7613 + .doubleBattle = FALSE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7615 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7617 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7616 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7619 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7621 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7620 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7623 [TRAINER_LAO_2] = { +#line 7624 + .trainerName = _("LAO"), +#line 7625 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7626 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao2), - }, - + .encounterMusic_gender = +#line 7628 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7629 + .doubleBattle = FALSE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7631 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7633 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7632 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7634 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7639 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7641 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7640 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7642 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7646 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7648 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7647 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7649 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7654 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7656 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7655 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7657 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, + }, +#line 7660 [TRAINER_LAO_3] = { +#line 7661 + .trainerName = _("LAO"), +#line 7662 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7663 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao3), - }, - + .encounterMusic_gender = +#line 7665 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7666 + .doubleBattle = FALSE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7668 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7670 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7669 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7671 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7676 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7678 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7677 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7679 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7684 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7686 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7685 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7687 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7691 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7693 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7692 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7694 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, + }, +#line 7697 [TRAINER_LAO_4] = { +#line 7698 + .trainerName = _("LAO"), +#line 7699 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7700 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao4), - }, - + .encounterMusic_gender = +#line 7702 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7703 + .doubleBattle = FALSE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7705 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7707 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7706 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7708 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7712 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7714 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7713 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7715 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7719 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7721 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7720 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7722 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7726 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7728 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 7727 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7729 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, + }, +#line 7732 [TRAINER_LAO_5] = { +#line 7733 + .trainerName = _("LAO"), +#line 7734 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7735 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("LAO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Lao5), - }, - + .encounterMusic_gender = +#line 7737 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 7738 + .doubleBattle = FALSE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 7740 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7742 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7741 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7743 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + { +#line 7747 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7749 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7748 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7750 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7755 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7757 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7756 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7758 + MOVE_POISON_GAS, + MOVE_TACKLE, + MOVE_SLUDGE, + MOVE_SELF_DESTRUCT, + }, + }, + { +#line 7763 + .species = SPECIES_WEEZING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7763 + .heldItem = ITEM_SMOKE_BALL, +#line 7765 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 7764 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7766 + MOVE_TACKLE, + MOVE_SLUDGE, + }, + }, + }, + }, +#line 7769 [TRAINER_JOCELYN] = { +#line 7770 + .trainerName = _("JOCELYN"), +#line 7771 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7772 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("JOCELYN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jocelyn), - }, - + .encounterMusic_gender = +#line 7773 +F_TRAINER_FEMALE | +#line 7774 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7775 + .doubleBattle = FALSE, +#line 7776 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7778 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7780 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7779 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7782 [TRAINER_LAURA] = { +#line 7783 + .trainerName = _("LAURA"), +#line 7784 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7785 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("LAURA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Laura), - }, - + .encounterMusic_gender = +#line 7786 +F_TRAINER_FEMALE | +#line 7787 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7788 + .doubleBattle = FALSE, +#line 7789 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7791 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7793 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 7792 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7795 [TRAINER_CYNDY_1] = { +#line 7796 + .trainerName = _("CYNDY"), +#line 7797 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7798 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CYNDY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy1), - }, - + .encounterMusic_gender = +#line 7799 +F_TRAINER_FEMALE | +#line 7800 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7801 + .doubleBattle = FALSE, +#line 7802 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7804 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7806 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7805 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7808 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7810 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7809 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7812 [TRAINER_CORA] = { +#line 7813 + .trainerName = _("CORA"), +#line 7814 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7815 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CORA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cora), - }, - + .encounterMusic_gender = +#line 7816 +F_TRAINER_FEMALE | +#line 7817 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7818 + .doubleBattle = FALSE, +#line 7819 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7821 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7823 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7822 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7825 [TRAINER_PAULA] = { +#line 7826 + .trainerName = _("PAULA"), +#line 7827 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7828 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("PAULA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Paula), - }, - + .encounterMusic_gender = +#line 7829 +F_TRAINER_FEMALE | +#line 7830 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7831 + .doubleBattle = FALSE, +#line 7832 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7834 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7836 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 7835 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7838 [TRAINER_CYNDY_2] = { +#line 7839 + .trainerName = _("CYNDY"), +#line 7840 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7841 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CYNDY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy2), - }, - + .encounterMusic_gender = +#line 7842 +F_TRAINER_FEMALE | +#line 7843 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7844 + .doubleBattle = FALSE, +#line 7845 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7847 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7849 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7848 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7851 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7853 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 7852 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7855 [TRAINER_CYNDY_3] = { +#line 7856 + .trainerName = _("CYNDY"), +#line 7857 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7858 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CYNDY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy3), - }, - + .encounterMusic_gender = +#line 7859 +F_TRAINER_FEMALE | +#line 7860 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7861 + .doubleBattle = FALSE, +#line 7862 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7864 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7866 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7865 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7868 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7870 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 7869 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7872 [TRAINER_CYNDY_4] = { +#line 7873 + .trainerName = _("CYNDY"), +#line 7874 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7875 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CYNDY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy4), - }, - + .encounterMusic_gender = +#line 7876 +F_TRAINER_FEMALE | +#line 7877 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7878 + .doubleBattle = FALSE, +#line 7879 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7881 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7883 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7882 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7885 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7887 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 7886 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7889 [TRAINER_CYNDY_5] = { +#line 7890 + .trainerName = _("CYNDY"), +#line 7891 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7892 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CYNDY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cyndy5), - }, - + .encounterMusic_gender = +#line 7893 +F_TRAINER_FEMALE | +#line 7894 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 7895 + .doubleBattle = FALSE, +#line 7896 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7898 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7900 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7899 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7902 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7904 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 7903 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7906 [TRAINER_MADELINE_1] = { +#line 7907 + .trainerName = _("MADELINE"), +#line 7908 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7909 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("MADELINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline1), - }, - + .encounterMusic_gender = +#line 7910 +F_TRAINER_FEMALE | +#line 7911 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7912 + .doubleBattle = FALSE, +#line 7913 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7915 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7917 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7916 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7918 + MOVE_EMBER, + MOVE_TACKLE, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, + }, +#line 7923 [TRAINER_CLARISSA] = { +#line 7924 + .trainerName = _("CLARISSA"), +#line 7925 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7926 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("CLARISSA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clarissa), - }, - + .encounterMusic_gender = +#line 7927 +F_TRAINER_FEMALE | +#line 7928 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7929 + .doubleBattle = FALSE, +#line 7930 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 7932 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7934 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7933 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 7936 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7938 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 7937 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 7940 [TRAINER_ANGELICA] = { +#line 7941 + .trainerName = _("ANGELICA"), +#line 7942 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7943 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("ANGELICA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Angelica), - }, - + .encounterMusic_gender = +#line 7944 +F_TRAINER_FEMALE | +#line 7945 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7946 + .doubleBattle = FALSE, +#line 7947 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7949 + .species = SPECIES_CASTFORM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7951 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 7950 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7952 + MOVE_RAIN_DANCE, + MOVE_WEATHER_BALL, + MOVE_THUNDER, + MOVE_WATER_PULSE, + }, + }, + }, + }, +#line 7957 [TRAINER_MADELINE_2] = { +#line 7958 + .trainerName = _("MADELINE"), +#line 7959 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7960 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("MADELINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline2), - }, - + .encounterMusic_gender = +#line 7961 +F_TRAINER_FEMALE | +#line 7962 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7963 + .doubleBattle = FALSE, +#line 7964 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7966 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7968 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 7967 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7969 + MOVE_EMBER, + MOVE_TACKLE, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, + }, +#line 7974 [TRAINER_MADELINE_3] = { +#line 7975 + .trainerName = _("MADELINE"), +#line 7976 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7977 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("MADELINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline3), - }, - + .encounterMusic_gender = +#line 7978 +F_TRAINER_FEMALE | +#line 7979 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7980 + .doubleBattle = FALSE, +#line 7981 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 7983 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 7985 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 7984 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 7986 + MOVE_EMBER, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, + }, +#line 7991 [TRAINER_MADELINE_4] = { +#line 7992 + .trainerName = _("MADELINE"), +#line 7993 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7994 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("MADELINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline4), - }, - + .encounterMusic_gender = +#line 7995 +F_TRAINER_FEMALE | +#line 7996 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 7997 + .doubleBattle = FALSE, +#line 7998 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8000 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8002 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8001 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8003 + MOVE_LEECH_SEED, + MOVE_MEGA_DRAIN, + MOVE_GRASS_WHISTLE, + MOVE_SUNNY_DAY, + }, + }, + { +#line 8008 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8010 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8009 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8011 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_MAGNITUDE, + MOVE_SUNNY_DAY, + }, + }, + }, + }, +#line 8016 [TRAINER_MADELINE_5] = { +#line 8017 + .trainerName = _("MADELINE"), +#line 8018 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 8019 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("MADELINE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Madeline5), - }, - + .encounterMusic_gender = +#line 8020 +F_TRAINER_FEMALE | +#line 8021 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 8022 + .doubleBattle = FALSE, +#line 8023 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8025 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8027 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8026 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8028 + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + }, + }, + { +#line 8033 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8035 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8034 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8036 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_EARTHQUAKE, + MOVE_SUNNY_DAY, + }, + }, + }, + }, +#line 8041 [TRAINER_BEVERLY] = { +#line 8042 + .trainerName = _("BEVERLY"), +#line 8043 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8044 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("BEVERLY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beverly), - }, - + .encounterMusic_gender = +#line 8045 +F_TRAINER_FEMALE | +#line 8046 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8047 + .doubleBattle = FALSE, +#line 8048 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8050 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8052 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8051 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8054 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8056 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8055 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8058 [TRAINER_IMANI] = { +#line 8059 + .trainerName = _("IMANI"), +#line 8060 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8061 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("IMANI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Imani), - }, - + .encounterMusic_gender = +#line 8062 +F_TRAINER_FEMALE | +#line 8063 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8064 + .doubleBattle = FALSE, +#line 8065 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8067 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8069 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8068 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8071 [TRAINER_KYLA] = { +#line 8072 + .trainerName = _("KYLA"), +#line 8073 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8074 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("KYLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kyla), - }, - + .encounterMusic_gender = +#line 8075 +F_TRAINER_FEMALE | +#line 8076 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8077 + .doubleBattle = FALSE, +#line 8078 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8080 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8082 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8081 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8084 [TRAINER_DENISE] = { +#line 8085 + .trainerName = _("DENISE"), +#line 8086 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8087 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("DENISE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Denise), - }, - + .encounterMusic_gender = +#line 8088 +F_TRAINER_FEMALE | +#line 8089 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8090 + .doubleBattle = FALSE, +#line 8091 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8093 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8095 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8094 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8097 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8099 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8098 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8101 [TRAINER_BETH] = { +#line 8102 + .trainerName = _("BETH"), +#line 8103 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8104 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("BETH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Beth), - }, - + .encounterMusic_gender = +#line 8105 +F_TRAINER_FEMALE | +#line 8106 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8107 + .doubleBattle = FALSE, +#line 8108 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8110 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8112 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8111 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8114 [TRAINER_TARA] = { +#line 8115 + .trainerName = _("TARA"), +#line 8116 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8117 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("TARA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tara), - }, - + .encounterMusic_gender = +#line 8118 +F_TRAINER_FEMALE | +#line 8119 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8120 + .doubleBattle = FALSE, +#line 8121 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8123 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8125 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8124 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8127 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8129 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8128 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8131 [TRAINER_MISSY] = { +#line 8132 + .trainerName = _("MISSY"), +#line 8133 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8134 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("MISSY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Missy), - }, - + .encounterMusic_gender = +#line 8135 +F_TRAINER_FEMALE | +#line 8136 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8137 + .doubleBattle = FALSE, +#line 8138 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8140 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8142 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8141 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8144 [TRAINER_ALICE] = { +#line 8145 + .trainerName = _("ALICE"), +#line 8146 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8147 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("ALICE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alice), - }, - + .encounterMusic_gender = +#line 8148 +F_TRAINER_FEMALE | +#line 8149 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8150 + .doubleBattle = FALSE, +#line 8151 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8153 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8155 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8154 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8157 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8159 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8158 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8161 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8163 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8162 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8165 [TRAINER_JENNY_1] = { +#line 8166 + .trainerName = _("JENNY"), +#line 8167 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8168 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("JENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny1), - }, - + .encounterMusic_gender = +#line 8169 +F_TRAINER_FEMALE | +#line 8170 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8171 + .doubleBattle = FALSE, +#line 8172 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8174 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8176 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8175 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8178 [TRAINER_GRACE] = { +#line 8179 + .trainerName = _("GRACE"), +#line 8180 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8181 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("GRACE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Grace), - }, - + .encounterMusic_gender = +#line 8182 +F_TRAINER_FEMALE | +#line 8183 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8184 + .doubleBattle = FALSE, +#line 8185 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8187 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8189 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8188 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8191 [TRAINER_TANYA] = { +#line 8192 + .trainerName = _("TANYA"), +#line 8193 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8194 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("TANYA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tanya), - }, - + .encounterMusic_gender = +#line 8195 +F_TRAINER_FEMALE | +#line 8196 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8197 + .doubleBattle = FALSE, +#line 8198 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8200 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8202 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8201 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8204 [TRAINER_SHARON] = { +#line 8205 + .trainerName = _("SHARON"), +#line 8206 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8207 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("SHARON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sharon), - }, - + .encounterMusic_gender = +#line 8208 +F_TRAINER_FEMALE | +#line 8209 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8210 + .doubleBattle = FALSE, +#line 8211 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8213 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8215 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8214 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8217 [TRAINER_NIKKI] = { +#line 8218 + .trainerName = _("NIKKI"), +#line 8219 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8220 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("NIKKI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nikki), - }, - + .encounterMusic_gender = +#line 8221 +F_TRAINER_FEMALE | +#line 8222 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8223 + .doubleBattle = FALSE, +#line 8224 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8226 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8228 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8227 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8230 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8232 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8231 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8234 [TRAINER_BRENDA] = { +#line 8235 + .trainerName = _("BRENDA"), +#line 8236 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8237 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("BRENDA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brenda), - }, - + .encounterMusic_gender = +#line 8238 +F_TRAINER_FEMALE | +#line 8239 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8240 + .doubleBattle = FALSE, +#line 8241 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8243 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8245 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8244 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8247 [TRAINER_KATIE] = { +#line 8248 + .trainerName = _("KATIE"), +#line 8249 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8250 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("KATIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Katie), - }, - + .encounterMusic_gender = +#line 8251 +F_TRAINER_FEMALE | +#line 8252 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8253 + .doubleBattle = FALSE, +#line 8254 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8256 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8258 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8257 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8260 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8262 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8261 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8264 [TRAINER_SUSIE] = { +#line 8265 + .trainerName = _("SUSIE"), +#line 8266 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8267 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("SUSIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Susie), - }, - + .encounterMusic_gender = +#line 8268 +F_TRAINER_FEMALE | +#line 8269 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8270 + .doubleBattle = FALSE, +#line 8271 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8273 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8275 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8274 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8277 [TRAINER_KARA] = { +#line 8278 + .trainerName = _("KARA"), +#line 8279 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8280 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("KARA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kara), - }, - + .encounterMusic_gender = +#line 8281 +F_TRAINER_FEMALE | +#line 8282 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8283 + .doubleBattle = FALSE, +#line 8284 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8286 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8288 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8287 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8290 [TRAINER_DANA] = { +#line 8291 + .trainerName = _("DANA"), +#line 8292 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8293 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("DANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dana), - }, - + .encounterMusic_gender = +#line 8294 +F_TRAINER_FEMALE | +#line 8295 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8296 + .doubleBattle = FALSE, +#line 8297 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8299 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8301 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8300 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8303 [TRAINER_SIENNA] = { +#line 8304 + .trainerName = _("SIENNA"), +#line 8305 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8306 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("SIENNA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sienna), - }, - + .encounterMusic_gender = +#line 8307 +F_TRAINER_FEMALE | +#line 8308 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8309 + .doubleBattle = FALSE, +#line 8310 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8312 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8314 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8313 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8316 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8318 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8317 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8320 [TRAINER_DEBRA] = { +#line 8321 + .trainerName = _("DEBRA"), +#line 8322 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8323 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("DEBRA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Debra), - }, - + .encounterMusic_gender = +#line 8324 +F_TRAINER_FEMALE | +#line 8325 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8326 + .doubleBattle = FALSE, +#line 8327 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8329 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8331 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8330 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8333 [TRAINER_LINDA] = { +#line 8334 + .trainerName = _("LINDA"), +#line 8335 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8336 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("LINDA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Linda), - }, - + .encounterMusic_gender = +#line 8337 +F_TRAINER_FEMALE | +#line 8338 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8339 + .doubleBattle = FALSE, +#line 8340 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8342 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8344 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8343 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8346 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8348 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8347 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8350 [TRAINER_KAYLEE] = { +#line 8351 + .trainerName = _("KAYLEE"), +#line 8352 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8353 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("KAYLEE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kaylee), - }, - + .encounterMusic_gender = +#line 8354 +F_TRAINER_FEMALE | +#line 8355 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8356 + .doubleBattle = FALSE, +#line 8357 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8359 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8361 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8360 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8363 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8365 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8364 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8367 [TRAINER_LAUREL] = { +#line 8368 + .trainerName = _("LAUREL"), +#line 8369 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8370 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("LAUREL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Laurel), - }, - + .encounterMusic_gender = +#line 8371 +F_TRAINER_FEMALE | +#line 8372 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8373 + .doubleBattle = FALSE, +#line 8374 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8376 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8378 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8377 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8380 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8382 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8381 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8384 [TRAINER_CARLEE] = { +#line 8385 + .trainerName = _("CARLEE"), +#line 8386 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8387 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("CARLEE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carlee), - }, - + .encounterMusic_gender = +#line 8388 +F_TRAINER_FEMALE | +#line 8389 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8390 + .doubleBattle = FALSE, +#line 8391 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8393 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8395 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8394 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8397 [TRAINER_JENNY_2] = { +#line 8398 + .trainerName = _("JENNY"), +#line 8399 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8400 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("JENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny2), - }, - + .encounterMusic_gender = +#line 8401 +F_TRAINER_FEMALE | +#line 8402 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8403 + .doubleBattle = FALSE, +#line 8404 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8406 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8408 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8407 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8410 [TRAINER_JENNY_3] = { +#line 8411 + .trainerName = _("JENNY"), +#line 8412 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8413 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("JENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny3), - }, - + .encounterMusic_gender = +#line 8414 +F_TRAINER_FEMALE | +#line 8415 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8416 + .doubleBattle = FALSE, +#line 8417 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8419 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8421 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8420 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8423 [TRAINER_JENNY_4] = { +#line 8424 + .trainerName = _("JENNY"), +#line 8425 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8426 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("JENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny4), - }, - + .encounterMusic_gender = +#line 8427 +F_TRAINER_FEMALE | +#line 8428 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8429 + .doubleBattle = FALSE, +#line 8430 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8432 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8434 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8433 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8436 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8438 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8437 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8440 [TRAINER_JENNY_5] = { +#line 8441 + .trainerName = _("JENNY"), +#line 8442 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8443 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("JENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jenny5), - }, - + .encounterMusic_gender = +#line 8444 +F_TRAINER_FEMALE | +#line 8445 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 8446 + .doubleBattle = FALSE, +#line 8447 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8449 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8451 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8450 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8453 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8455 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8454 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8457 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8459 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8458 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8461 [TRAINER_HEIDI] = { +#line 8462 + .trainerName = _("HEIDI"), +#line 8463 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8464 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("HEIDI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Heidi), - }, - + .encounterMusic_gender = +#line 8465 +F_TRAINER_FEMALE | +#line 8466 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8467 + .doubleBattle = FALSE, +#line 8468 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8470 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8472 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8471 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8473 + MOVE_DIG, + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + }, + }, + { +#line 8478 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8480 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8479 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8481 + MOVE_RAPID_SPIN, + MOVE_MUD_SLAP, + MOVE_PSYBEAM, + MOVE_ROCK_TOMB, + }, + }, + }, + }, +#line 8486 [TRAINER_BECKY] = { +#line 8487 + .trainerName = _("BECKY"), +#line 8488 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8489 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("BECKY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Becky), - }, - + .encounterMusic_gender = +#line 8490 +F_TRAINER_FEMALE | +#line 8491 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8492 + .doubleBattle = FALSE, +#line 8493 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8495 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8497 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8496 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8498 + MOVE_SAND_ATTACK, + MOVE_POISON_STING, + MOVE_SLASH, + MOVE_DIG, + }, + }, + { +#line 8503 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8505 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8504 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8506 + MOVE_ROLLOUT, + MOVE_BUBBLE_BEAM, + MOVE_TAIL_WHIP, + MOVE_DEFENSE_CURL, + }, + }, + }, + }, +#line 8511 [TRAINER_CAROL] = { +#line 8512 + .trainerName = _("CAROL"), +#line 8513 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8514 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("CAROL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Carol), - }, - + .encounterMusic_gender = +#line 8515 +F_TRAINER_FEMALE | +#line 8516 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8517 + .doubleBattle = FALSE, +#line 8518 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8520 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8522 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8521 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8524 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8526 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8525 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8528 [TRAINER_NANCY] = { +#line 8529 + .trainerName = _("NANCY"), +#line 8530 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8531 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("NANCY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nancy), - }, - + .encounterMusic_gender = +#line 8532 +F_TRAINER_FEMALE | +#line 8533 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8534 + .doubleBattle = FALSE, +#line 8535 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8537 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8539 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8538 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8541 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8543 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8542 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8545 [TRAINER_MARTHA] = { +#line 8546 + .trainerName = _("MARTHA"), +#line 8547 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8548 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("MARTHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Martha), - }, - + .encounterMusic_gender = +#line 8549 +F_TRAINER_FEMALE | +#line 8550 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8551 + .doubleBattle = FALSE, +#line 8552 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8554 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8556 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8555 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8558 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8560 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8559 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8562 [TRAINER_DIANA_1] = { +#line 8563 + .trainerName = _("DIANA"), +#line 8564 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8565 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("DIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana1), - }, - + .encounterMusic_gender = +#line 8566 +F_TRAINER_FEMALE | +#line 8567 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8568 + .doubleBattle = FALSE, +#line 8569 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8571 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8573 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8572 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8575 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8577 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8576 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8579 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8581 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8580 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8583 [TRAINER_CEDRIC] = { +#line 8584 + .trainerName = _("CEDRIC"), +#line 8585 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 8586 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("CEDRIC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cedric), - }, - + .encounterMusic_gender = +#line 8588 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 8589 + .doubleBattle = FALSE, +#line 8590 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8592 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8594 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8593 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8595 + MOVE_DESTINY_BOND, + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_MIRROR_COAT, + }, + }, + }, + }, +#line 8600 [TRAINER_IRENE] = { - .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, - .trainerPic = TRAINER_PIC_PICNICKER, +#line 8601 .trainerName = _("IRENE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Irene), - }, - - [TRAINER_DIANA_2] = - { +#line 8602 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8603 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("DIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana2), - }, - - [TRAINER_DIANA_3] = + .encounterMusic_gender = +#line 8604 +F_TRAINER_FEMALE | +#line 8605 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8606 + .doubleBattle = FALSE, +#line 8607 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8609 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8611 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8610 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8613 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8615 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8614 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8617 + [TRAINER_DIANA_2] = { +#line 8618 + .trainerName = _("DIANA"), +#line 8619 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8620 .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8621 +F_TRAINER_FEMALE | +#line 8622 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8623 + .doubleBattle = FALSE, +#line 8624 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8626 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8628 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8627 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8630 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8632 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8631 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8634 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8636 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8635 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8638 + [TRAINER_DIANA_3] = + { +#line 8639 .trainerName = _("DIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana3), - }, - +#line 8640 + .trainerClass = TRAINER_CLASS_PICNICKER, +#line 8641 + .trainerPic = TRAINER_PIC_PICNICKER, + .encounterMusic_gender = +#line 8642 +F_TRAINER_FEMALE | +#line 8643 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8644 + .doubleBattle = FALSE, +#line 8645 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8647 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8649 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8648 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8651 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8653 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8652 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8655 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8657 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8656 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8659 [TRAINER_DIANA_4] = { +#line 8660 + .trainerName = _("DIANA"), +#line 8661 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8662 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("DIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana4), - }, - + .encounterMusic_gender = +#line 8663 +F_TRAINER_FEMALE | +#line 8664 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8665 + .doubleBattle = FALSE, +#line 8666 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8668 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8670 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8669 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8672 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8674 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8673 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8676 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8678 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8677 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8680 [TRAINER_DIANA_5] = { +#line 8681 + .trainerName = _("DIANA"), +#line 8682 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8683 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("DIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Diana5), - }, - + .encounterMusic_gender = +#line 8684 +F_TRAINER_FEMALE | +#line 8685 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 8686 + .doubleBattle = FALSE, +#line 8687 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8689 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8691 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8690 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8693 + .species = SPECIES_VILEPLUME, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8695 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8694 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8697 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8699 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8698 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8701 [TRAINER_AMY_AND_LIV_1] = { +#line 8702 + .trainerName = _("AMY & LIV"), +#line 8703 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8704 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8706 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8707 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv1), - }, - +#line 8708 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8710 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8712 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8711 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8714 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8716 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8715 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8718 [TRAINER_AMY_AND_LIV_2] = { +#line 8719 + .trainerName = _("AMY & LIV"), +#line 8720 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8721 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8723 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8724 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv2), - }, - +#line 8725 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8727 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8729 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8728 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8731 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8733 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8732 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8735 [TRAINER_GINA_AND_MIA_1] = { +#line 8736 + .trainerName = _("GINA & MIA"), +#line 8737 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8738 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("GINA & MIA"), - .items = {}, + .encounterMusic_gender = +#line 8740 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8741 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GinaAndMia1), - }, - +#line 8742 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8744 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8746 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8745 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8748 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8750 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8749 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8752 [TRAINER_MIU_AND_YUKI] = { +#line 8753 + .trainerName = _("MIU & YUKI"), +#line 8754 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8755 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("MIU & YUKI"), - .items = {}, + .encounterMusic_gender = +#line 8757 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8758 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_MiuAndYuki), - }, - +#line 8759 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8761 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8763 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8762 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8765 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8767 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8766 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8769 [TRAINER_AMY_AND_LIV_3] = { +#line 8770 + .trainerName = _("AMY & LIV"), +#line 8771 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8772 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8774 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8775 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv3), - }, - +#line 8776 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8778 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8780 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8779 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8782 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8784 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8783 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8786 [TRAINER_GINA_AND_MIA_2] = { +#line 8787 + .trainerName = _("GINA & MIA"), +#line 8788 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8789 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("GINA & MIA"), - .items = {}, + .encounterMusic_gender = +#line 8791 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8792 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GinaAndMia2), - }, - +#line 8793 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8795 + .species = SPECIES_DUSKULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8797 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8796 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8798 + MOVE_NIGHT_SHADE, + MOVE_DISABLE, + }, + }, + { +#line 8801 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8803 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8802 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8804 + MOVE_ABSORB, + MOVE_LEECH_SEED, + }, + }, + }, + }, +#line 8807 [TRAINER_AMY_AND_LIV_4] = { +#line 8808 + .trainerName = _("AMY & LIV"), +#line 8809 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8810 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8812 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8813 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv4), - }, - +#line 8814 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8816 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8818 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8817 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8820 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8822 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 8821 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8824 [TRAINER_AMY_AND_LIV_5] = { +#line 8825 + .trainerName = _("AMY & LIV"), +#line 8826 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8827 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8829 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8830 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv5), - }, - +#line 8831 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8833 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8835 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8834 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8836 + MOVE_SPARK, + MOVE_CHARGE, + MOVE_FAKE_TEARS, + MOVE_HELPING_HAND, + }, + }, + { +#line 8841 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8843 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 8842 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8844 + MOVE_SPARK, + MOVE_CHARGE, + MOVE_CHARM, + MOVE_HELPING_HAND, + }, + }, + }, + }, +#line 8849 [TRAINER_AMY_AND_LIV_6] = { +#line 8850 + .trainerName = _("AMY & LIV"), +#line 8851 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8852 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("AMY & LIV"), - .items = {}, + .encounterMusic_gender = +#line 8854 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 8855 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_AmyAndLiv6), - }, - +#line 8856 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8858 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8860 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8859 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8861 + MOVE_THUNDER, + MOVE_CHARGE, + MOVE_FAKE_TEARS, + MOVE_HELPING_HAND, + }, + }, + { +#line 8866 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8868 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 8867 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 8869 + MOVE_THUNDER, + MOVE_CHARGE, + MOVE_CHARM, + MOVE_HELPING_HAND, + }, + }, + }, + }, +#line 8874 [TRAINER_HUEY] = { +#line 8875 + .trainerName = _("HUEY"), +#line 8876 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8877 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("HUEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Huey), - }, - + .encounterMusic_gender = +#line 8879 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8880 + .doubleBattle = FALSE, +#line 8881 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8883 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8885 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8884 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8887 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8889 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 8888 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8891 [TRAINER_EDMOND] = { +#line 8892 + .trainerName = _("EDMOND"), +#line 8893 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8894 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("EDMOND"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edmond), - }, - + .encounterMusic_gender = +#line 8896 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8897 + .doubleBattle = FALSE, +#line 8898 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 8900 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8902 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8901 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8904 [TRAINER_ERNEST_1] = { +#line 8905 + .trainerName = _("ERNEST"), +#line 8906 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8907 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("ERNEST"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest1), - }, - + .encounterMusic_gender = +#line 8909 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8910 + .doubleBattle = FALSE, +#line 8911 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8913 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8915 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8914 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8917 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8919 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8918 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8921 [TRAINER_DWAYNE] = { +#line 8922 + .trainerName = _("DWAYNE"), +#line 8923 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8924 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("DWAYNE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dwayne), - }, - + .encounterMusic_gender = +#line 8926 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8927 + .doubleBattle = FALSE, +#line 8928 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8930 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8932 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8931 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8934 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8936 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8935 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8938 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8940 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8939 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8942 [TRAINER_PHILLIP] = { +#line 8943 + .trainerName = _("PHILLIP"), +#line 8944 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8945 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("PHILLIP"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Phillip), - }, - + .encounterMusic_gender = +#line 8947 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8948 + .doubleBattle = FALSE, +#line 8949 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8951 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8953 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8952 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8955 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8957 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8956 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8959 [TRAINER_LEONARD] = { +#line 8960 + .trainerName = _("LEONARD"), +#line 8961 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8962 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("LEONARD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leonard), - }, - + .encounterMusic_gender = +#line 8964 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8965 + .doubleBattle = FALSE, +#line 8966 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 8968 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8970 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8969 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8972 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8974 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8973 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8976 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8978 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8977 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8980 [TRAINER_DUNCAN] = { +#line 8981 + .trainerName = _("DUNCAN"), +#line 8982 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8983 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("DUNCAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Duncan), - }, - + .encounterMusic_gender = +#line 8985 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 8986 + .doubleBattle = FALSE, +#line 8987 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 8989 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8991 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8990 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 8993 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 8995 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 8994 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 8997 [TRAINER_ERNEST_2] = { +#line 8998 + .trainerName = _("ERNEST"), +#line 8999 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9000 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("ERNEST"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest2), - }, - + .encounterMusic_gender = +#line 9002 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9003 + .doubleBattle = FALSE, +#line 9004 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9006 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9008 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9007 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9010 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9012 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9011 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9014 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9016 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9015 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9018 [TRAINER_ERNEST_3] = { +#line 9019 + .trainerName = _("ERNEST"), +#line 9020 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9021 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("ERNEST"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest3), - }, - + .encounterMusic_gender = +#line 9023 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9024 + .doubleBattle = FALSE, +#line 9025 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9027 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9029 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9028 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9031 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9033 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9032 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9035 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9037 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9036 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9039 [TRAINER_ERNEST_4] = { +#line 9040 + .trainerName = _("ERNEST"), +#line 9041 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9042 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("ERNEST"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest4), - }, - + .encounterMusic_gender = +#line 9044 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9045 + .doubleBattle = FALSE, +#line 9046 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9048 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9050 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9049 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9052 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9054 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9053 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9056 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9058 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9057 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9060 [TRAINER_ERNEST_5] = { +#line 9061 + .trainerName = _("ERNEST"), +#line 9062 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9063 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("ERNEST"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ernest5), - }, - + .encounterMusic_gender = +#line 9065 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9066 + .doubleBattle = FALSE, +#line 9067 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9069 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9071 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9070 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9073 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9075 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9074 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9077 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9079 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9078 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9081 [TRAINER_ELI] = { +#line 9082 + .trainerName = _("ELI"), +#line 9083 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 9084 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("ELI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eli), - }, - + .encounterMusic_gender = +#line 9086 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 9087 + .doubleBattle = FALSE, +#line 9088 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9090 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9092 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9091 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9094 [TRAINER_ANNIKA] = { +#line 9095 + .trainerName = _("ANNIKA"), +#line 9096 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 9097 .trainerPic = TRAINER_PIC_POKEFAN_F, - .trainerName = _("ANNIKA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Annika), - }, - + .encounterMusic_gender = +#line 9098 +F_TRAINER_FEMALE | +#line 9099 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 9100 + .doubleBattle = FALSE, +#line 9101 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9103 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9103 + .heldItem = ITEM_ORAN_BERRY, +#line 9105 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9104 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9106 + MOVE_FLAIL, + MOVE_WATER_PULSE, + MOVE_RETURN, + MOVE_ATTRACT, + }, + }, + { +#line 9111 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9111 + .heldItem = ITEM_ORAN_BERRY, +#line 9113 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9112 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9114 + MOVE_FLAIL, + MOVE_WATER_PULSE, + MOVE_RETURN, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 9119 [TRAINER_JAZMYN] = { +#line 9120 + .trainerName = _("JAZMYN"), +#line 9121 .trainerClass = TRAINER_CLASS_COOLTRAINER_2, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9122 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("JAZMYN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9123 +F_TRAINER_FEMALE | +#line 9124 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9125 + .items = { ITEM_HYPER_POTION }, +#line 9126 + .doubleBattle = FALSE, +#line 9127 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jazmyn), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9129 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9131 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9130 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9133 [TRAINER_JONAS] = { +#line 9134 + .trainerName = _("JONAS"), +#line 9135 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9136 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("JONAS"), - .items = {}, + .encounterMusic_gender = +#line 9138 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9139 .doubleBattle = FALSE, +#line 9140 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jonas), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9142 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9144 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9143 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9145 + MOVE_TOXIC, + MOVE_THUNDER, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE_BOMB, + }, + }, + }, + }, +#line 9150 [TRAINER_KAYLEY] = { +#line 9151 + .trainerName = _("KAYLEY"), +#line 9152 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9153 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("KAYLEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kayley), - }, - + .encounterMusic_gender = +#line 9154 +F_TRAINER_FEMALE | +#line 9155 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9156 + .doubleBattle = FALSE, +#line 9157 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9159 + .species = SPECIES_CASTFORM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9161 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9160 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9162 + MOVE_SUNNY_DAY, + MOVE_WEATHER_BALL, + MOVE_FLAMETHROWER, + MOVE_SOLAR_BEAM, + }, + }, + }, + }, +#line 9167 [TRAINER_AURON] = { +#line 9168 + .trainerName = _("AURON"), +#line 9169 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9170 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("AURON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Auron), - }, - + .encounterMusic_gender = +#line 9172 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9173 + .doubleBattle = FALSE, +#line 9174 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9176 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9178 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9177 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9180 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9182 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9181 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9184 [TRAINER_KELVIN] = { +#line 9185 + .trainerName = _("KELVIN"), +#line 9186 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9187 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("KELVIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kelvin), - }, - + .encounterMusic_gender = +#line 9189 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9190 + .doubleBattle = FALSE, +#line 9191 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9193 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9195 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9194 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9197 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9199 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9198 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9201 [TRAINER_MARLEY] = { +#line 9202 + .trainerName = _("MARLEY"), +#line 9203 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9204 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("MARLEY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9205 +F_TRAINER_FEMALE | +#line 9206 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9207 + .items = { ITEM_HYPER_POTION }, +#line 9208 + .doubleBattle = FALSE, +#line 9209 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Marley), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9211 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9213 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 9212 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9214 + MOVE_BITE, + MOVE_ROAR, + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + }, + }, + }, + }, +#line 9219 [TRAINER_REYNA] = { +#line 9220 + .trainerName = _("REYNA"), +#line 9221 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9222 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("REYNA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Reyna), - }, - + .encounterMusic_gender = +#line 9223 +F_TRAINER_FEMALE | +#line 9224 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9225 + .doubleBattle = FALSE, +#line 9226 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9228 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9230 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9229 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9232 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9234 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 9233 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9236 [TRAINER_HUDSON] = { +#line 9237 + .trainerName = _("HUDSON"), +#line 9238 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9239 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("HUDSON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hudson), - }, - + .encounterMusic_gender = +#line 9241 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9242 + .doubleBattle = FALSE, +#line 9243 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9245 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9247 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9246 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9249 [TRAINER_CONOR] = { +#line 9250 + .trainerName = _("CONOR"), +#line 9251 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9252 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("CONOR"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Conor), - }, - + .encounterMusic_gender = +#line 9254 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 9255 + .doubleBattle = FALSE, +#line 9256 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9258 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9260 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9259 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9262 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9264 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 9263 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9266 [TRAINER_EDWIN_1] = { +#line 9267 + .trainerName = _("EDWIN"), +#line 9268 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9269 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("EDWIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin1), - }, - + .encounterMusic_gender = +#line 9271 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9272 + .doubleBattle = FALSE, +#line 9273 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9275 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9277 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9276 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9279 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9281 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9280 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9283 [TRAINER_HECTOR] = { +#line 9284 + .trainerName = _("HECTOR"), +#line 9285 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9286 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("HECTOR"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hector), - }, - + .encounterMusic_gender = +#line 9288 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9289 + .doubleBattle = FALSE, +#line 9290 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9292 + .species = SPECIES_ZANGOOSE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9294 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9293 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9296 + .species = SPECIES_SEVIPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9298 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9297 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9300 [TRAINER_TABITHA_MOSSDEEP] = { +#line 9301 + .trainerName = _("TABITHA"), +#line 9302 .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 9303 .trainerPic = TRAINER_PIC_MAGMA_ADMIN, - .trainerName = _("TABITHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TabithaMossdeep), - }, - + .encounterMusic_gender = +#line 9305 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 9306 + .doubleBattle = FALSE, +#line 9307 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9309 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9311 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9310 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9313 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9315 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9314 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9317 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9319 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9318 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9321 [TRAINER_EDWIN_2] = { +#line 9322 + .trainerName = _("EDWIN"), +#line 9323 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9324 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("EDWIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin2), - }, - + .encounterMusic_gender = +#line 9326 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9327 + .doubleBattle = FALSE, +#line 9328 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9330 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9332 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9331 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9334 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9336 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9335 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9338 [TRAINER_EDWIN_3] = { +#line 9339 + .trainerName = _("EDWIN"), +#line 9340 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9341 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("EDWIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin3), - }, - + .encounterMusic_gender = +#line 9343 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9344 + .doubleBattle = FALSE, +#line 9345 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9347 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9349 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9348 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9351 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9353 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9352 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9355 [TRAINER_EDWIN_4] = { +#line 9356 + .trainerName = _("EDWIN"), +#line 9357 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9358 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("EDWIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin4), - }, - + .encounterMusic_gender = +#line 9360 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9361 + .doubleBattle = FALSE, +#line 9362 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9364 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9366 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9365 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9368 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9370 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9369 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9372 [TRAINER_EDWIN_5] = { +#line 9373 + .trainerName = _("EDWIN"), +#line 9374 .trainerClass = TRAINER_CLASS_COLLECTOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9375 .trainerPic = TRAINER_PIC_COLLECTOR, - .trainerName = _("EDWIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Edwin5), - }, - + .encounterMusic_gender = +#line 9377 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 9378 + .doubleBattle = FALSE, +#line 9379 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9381 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9383 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9382 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9385 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9387 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9386 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9389 [TRAINER_WALLY_VR_1] = { +#line 9390 + .trainerName = _("WALLY"), +#line 9391 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9392 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9394 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9395 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 9396 + .doubleBattle = FALSE, +#line 9397 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR1), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 9399 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9401 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9400 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9402 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 9407 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9409 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9408 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9410 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 9415 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9417 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9416 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9418 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 9423 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9425 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9424 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9426 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 9431 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9433 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 9432 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9434 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, + }, +#line 9439 [TRAINER_BRENDAN_ROUTE_103_MUDKIP] = { +#line 9440 + .trainerName = _("BRENDAN"), +#line 9441 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9442 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9444 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9445 .doubleBattle = FALSE, +#line 9446 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute103Mudkip), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9448 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9450 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9449 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9452 [TRAINER_BRENDAN_ROUTE_110_MUDKIP] = { +#line 9453 + .trainerName = _("BRENDAN"), +#line 9454 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9455 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9457 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9458 .doubleBattle = FALSE, +#line 9459 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Mudkip), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9461 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9463 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9462 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9465 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9467 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9466 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9469 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9471 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9470 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9473 [TRAINER_BRENDAN_ROUTE_119_MUDKIP] = { +#line 9474 + .trainerName = _("BRENDAN"), +#line 9475 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9476 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9478 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9479 .doubleBattle = FALSE, +#line 9480 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Mudkip), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9482 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9484 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9483 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9486 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9488 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9487 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9490 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9492 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9491 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9494 [TRAINER_BRENDAN_ROUTE_103_TREECKO] = { +#line 9495 + .trainerName = _("BRENDAN"), +#line 9496 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9497 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9499 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9500 .doubleBattle = FALSE, +#line 9501 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_BrendanRoute103Treecko), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9503 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9505 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9504 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9507 [TRAINER_BRENDAN_ROUTE_110_TREECKO] = { +#line 9508 + .trainerName = _("BRENDAN"), +#line 9509 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9510 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9512 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9513 .doubleBattle = FALSE, +#line 9514 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Treecko), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9516 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9518 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9517 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9520 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9522 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9521 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9524 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9526 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9525 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9528 [TRAINER_BRENDAN_ROUTE_119_TREECKO] = { +#line 9529 + .trainerName = _("BRENDAN"), +#line 9530 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9531 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9533 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9534 .doubleBattle = FALSE, +#line 9535 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Treecko), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9537 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9539 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9538 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9541 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9543 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9542 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9545 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9547 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9546 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9549 [TRAINER_BRENDAN_ROUTE_103_TORCHIC] = { +#line 9550 + .trainerName = _("BRENDAN"), +#line 9551 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9552 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9554 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9555 .doubleBattle = FALSE, +#line 9556 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute103Torchic), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9558 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9560 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9559 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9562 [TRAINER_BRENDAN_ROUTE_110_TORCHIC] = { +#line 9563 + .trainerName = _("BRENDAN"), +#line 9564 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9565 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9567 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9568 .doubleBattle = FALSE, +#line 9569 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute110Torchic), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9571 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9573 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9572 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9575 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9577 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9576 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9579 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9581 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9580 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9583 [TRAINER_BRENDAN_ROUTE_119_TORCHIC] = { +#line 9584 + .trainerName = _("BRENDAN"), +#line 9585 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9586 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 9588 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9589 .doubleBattle = FALSE, +#line 9590 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRoute119Torchic), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9592 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9594 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9593 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9596 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9598 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9597 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9600 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9602 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9601 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9604 [TRAINER_MAY_ROUTE_103_MUDKIP] = { +#line 9605 + .trainerName = _("MAY"), +#line 9606 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9607 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9608 +F_TRAINER_FEMALE | +#line 9609 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9610 + .doubleBattle = FALSE, +#line 9611 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Mudkip), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9613 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9615 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9614 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9617 [TRAINER_MAY_ROUTE_110_MUDKIP] = { +#line 9618 + .trainerName = _("MAY"), +#line 9619 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9620 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9621 +F_TRAINER_FEMALE | +#line 9622 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9623 + .doubleBattle = FALSE, +#line 9624 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Mudkip), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9626 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9628 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9627 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9630 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9632 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9631 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9634 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9636 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9635 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9638 [TRAINER_MAY_ROUTE_119_MUDKIP] = { +#line 9639 + .trainerName = _("MAY"), +#line 9640 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9641 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9642 +F_TRAINER_FEMALE | +#line 9643 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9644 + .doubleBattle = FALSE, +#line 9645 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Mudkip), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9647 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9649 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9648 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9651 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9653 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9652 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9655 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9657 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9656 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9659 [TRAINER_MAY_ROUTE_103_TREECKO] = { +#line 9660 + .trainerName = _("MAY"), +#line 9661 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9662 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9663 +F_TRAINER_FEMALE | +#line 9664 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9665 + .doubleBattle = FALSE, +#line 9666 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Treecko), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9668 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9670 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9669 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9672 [TRAINER_MAY_ROUTE_110_TREECKO] = { +#line 9673 + .trainerName = _("MAY"), +#line 9674 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9675 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9676 +F_TRAINER_FEMALE | +#line 9677 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9678 + .doubleBattle = FALSE, +#line 9679 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Treecko), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9681 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9683 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9682 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9685 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9687 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9686 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9689 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9691 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9690 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9693 [TRAINER_MAY_ROUTE_119_TREECKO] = { +#line 9694 + .trainerName = _("MAY"), +#line 9695 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9696 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9697 +F_TRAINER_FEMALE | +#line 9698 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9699 + .doubleBattle = FALSE, +#line 9700 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Treecko), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9702 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9704 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9703 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9706 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9708 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9707 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9710 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9712 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9711 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9714 [TRAINER_MAY_ROUTE_103_TORCHIC] = { +#line 9715 + .trainerName = _("MAY"), +#line 9716 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9717 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9718 +F_TRAINER_FEMALE | +#line 9719 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9720 + .doubleBattle = FALSE, +#line 9721 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute103Torchic), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9723 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9725 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9724 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9727 [TRAINER_MAY_ROUTE_110_TORCHIC] = { +#line 9728 + .trainerName = _("MAY"), +#line 9729 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9730 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9731 +F_TRAINER_FEMALE | +#line 9732 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9733 + .doubleBattle = FALSE, +#line 9734 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute110Torchic), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9736 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9738 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9737 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9740 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9742 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 9741 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9744 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9746 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9745 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9748 [TRAINER_MAY_ROUTE_119_TORCHIC] = { +#line 9749 + .trainerName = _("MAY"), +#line 9750 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9751 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 9752 +F_TRAINER_FEMALE | +#line 9753 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9754 + .doubleBattle = FALSE, +#line 9755 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRoute119Torchic), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9757 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9759 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9758 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9761 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9763 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 9762 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9765 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9767 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 9766 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9769 [TRAINER_ISAAC_1] = { +#line 9770 + .trainerName = _("ISAAC"), +#line 9771 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9772 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("ISAAC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac1), - }, - + .encounterMusic_gender = +#line 9774 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9775 + .doubleBattle = FALSE, +#line 9776 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9778 + .species = SPECIES_WHISMUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9780 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9779 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9782 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9784 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9783 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9786 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9788 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9787 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9790 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9792 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9791 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9794 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9796 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9795 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9798 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9800 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9799 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9802 [TRAINER_DAVIS] = { +#line 9803 + .trainerName = _("DAVIS"), +#line 9804 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9805 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("DAVIS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Davis), - }, - + .encounterMusic_gender = +#line 9807 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9808 + .doubleBattle = FALSE, +#line 9809 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 9811 + .species = SPECIES_PINSIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9813 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9812 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9815 [TRAINER_MITCHELL] = { +#line 9816 + .trainerName = _("MITCHELL"), +#line 9817 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9818 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("MITCHELL"), - .items = {}, + .encounterMusic_gender = +#line 9820 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 9821 .doubleBattle = FALSE, +#line 9822 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Mitchell), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 9824 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9826 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9825 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9827 + MOVE_EXPLOSION, + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_PSYCHIC, + }, + }, + { +#line 9832 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9834 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9833 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 9835 + MOVE_EXPLOSION, + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 9840 [TRAINER_ISAAC_2] = { +#line 9841 + .trainerName = _("ISAAC"), +#line 9842 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9843 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("ISAAC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac2), - }, - + .encounterMusic_gender = +#line 9845 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9846 + .doubleBattle = FALSE, +#line 9847 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9849 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9851 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9850 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9853 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9855 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9854 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9857 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9859 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9858 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9861 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9863 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9862 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9865 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9867 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9866 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9869 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9871 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 9870 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9873 [TRAINER_ISAAC_3] = { +#line 9874 + .trainerName = _("ISAAC"), +#line 9875 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9876 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("ISAAC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac3), - }, - + .encounterMusic_gender = +#line 9878 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9879 + .doubleBattle = FALSE, +#line 9880 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9882 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9884 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9883 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9886 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9888 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9887 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9890 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9892 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9891 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9894 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9896 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9895 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9898 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9900 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9899 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9902 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9904 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 9903 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9906 [TRAINER_ISAAC_4] = { +#line 9907 + .trainerName = _("ISAAC"), +#line 9908 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9909 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("ISAAC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac4), - }, - + .encounterMusic_gender = +#line 9911 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9912 + .doubleBattle = FALSE, +#line 9913 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9915 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9917 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9916 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9919 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9921 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9920 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9923 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9925 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9924 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9927 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9929 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9928 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9931 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9933 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9932 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9935 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9937 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 9936 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9939 [TRAINER_ISAAC_5] = { +#line 9940 + .trainerName = _("ISAAC"), +#line 9941 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9942 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("ISAAC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isaac5), - }, - + .encounterMusic_gender = +#line 9944 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 9945 + .doubleBattle = FALSE, +#line 9946 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9948 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9950 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9949 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9952 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9954 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9953 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9956 + .species = SPECIES_LAIRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9958 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9957 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9960 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9962 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9961 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9964 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9966 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9965 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9968 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9970 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 9969 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 9972 [TRAINER_LYDIA_1] = { +#line 9973 + .trainerName = _("LYDIA"), +#line 9974 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9975 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("LYDIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia1), - }, - + .encounterMusic_gender = +#line 9976 +F_TRAINER_FEMALE | +#line 9977 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 9978 + .doubleBattle = FALSE, +#line 9979 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 9981 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9983 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9982 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9985 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9987 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9986 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9989 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9991 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9990 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9993 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9995 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9994 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 9997 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 9999 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 9998 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10001 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10003 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10002 + .lvl = 11, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10005 [TRAINER_HALLE] = { +#line 10006 + .trainerName = _("HALLE"), +#line 10007 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10008 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("HALLE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10009 +F_TRAINER_FEMALE | +#line 10010 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10011 + .items = { ITEM_FULL_RESTORE }, +#line 10012 + .doubleBattle = FALSE, +#line 10013 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Halle), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10015 + .species = SPECIES_SABLEYE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10017 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10016 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10019 + .species = SPECIES_ABSOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10021 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10020 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10023 [TRAINER_GARRISON] = { +#line 10024 + .trainerName = _("GARRISON"), +#line 10025 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 10026 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("GARRISON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Garrison), - }, - + .encounterMusic_gender = +#line 10028 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 10029 + .doubleBattle = FALSE, +#line 10030 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10032 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10034 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10033 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10036 [TRAINER_LYDIA_2] = { +#line 10037 + .trainerName = _("LYDIA"), +#line 10038 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10039 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("LYDIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia2), - }, - + .encounterMusic_gender = +#line 10040 +F_TRAINER_FEMALE | +#line 10041 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10042 + .doubleBattle = FALSE, +#line 10043 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10045 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10047 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10046 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10049 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10051 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10050 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10053 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10055 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10054 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10057 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10059 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10058 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10061 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10063 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10062 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10065 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10067 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 10066 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10069 [TRAINER_LYDIA_3] = { +#line 10070 + .trainerName = _("LYDIA"), +#line 10071 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10072 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("LYDIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia3), - }, - + .encounterMusic_gender = +#line 10073 +F_TRAINER_FEMALE | +#line 10074 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10075 + .doubleBattle = FALSE, +#line 10076 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10078 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10080 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10079 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10082 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10084 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10083 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10086 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10088 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10087 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10090 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10092 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10091 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10094 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10096 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10095 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10098 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10100 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 10099 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10102 [TRAINER_LYDIA_4] = { +#line 10103 + .trainerName = _("LYDIA"), +#line 10104 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10105 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("LYDIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia4), - }, - + .encounterMusic_gender = +#line 10106 +F_TRAINER_FEMALE | +#line 10107 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10108 + .doubleBattle = FALSE, +#line 10109 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10111 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10113 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10112 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10115 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10117 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10116 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10119 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10121 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10120 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10123 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10125 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10124 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10127 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10129 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10128 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10131 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10133 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10132 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10135 [TRAINER_LYDIA_5] = { +#line 10136 + .trainerName = _("LYDIA"), +#line 10137 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10138 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("LYDIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lydia5), - }, - + .encounterMusic_gender = +#line 10139 +F_TRAINER_FEMALE | +#line 10140 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10141 + .doubleBattle = FALSE, +#line 10142 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 10144 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10146 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10145 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10148 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10150 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10149 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10152 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10154 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10153 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10156 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10158 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10157 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10160 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10162 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10161 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10164 + .species = SPECIES_SEAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10166 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 10165 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10168 [TRAINER_JACKSON_1] = { +#line 10169 + .trainerName = _("JACKSON"), +#line 10170 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10171 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10173 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10174 + .items = { ITEM_FULL_RESTORE }, +#line 10175 + .doubleBattle = FALSE, +#line 10176 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson1), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10178 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10180 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10179 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10182 [TRAINER_LORENZO] = { +#line 10183 + .trainerName = _("LORENZO"), +#line 10184 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10185 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("LORENZO"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10187 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10188 + .items = { ITEM_FULL_RESTORE }, +#line 10189 + .doubleBattle = FALSE, +#line 10190 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Lorenzo), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10192 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10194 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10193 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10196 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10198 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10197 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10200 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10202 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10201 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10204 [TRAINER_SEBASTIAN] = { +#line 10205 + .trainerName = _("SEBASTIAN"), +#line 10206 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10207 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("SEBASTIAN"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10209 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10210 + .items = { ITEM_FULL_RESTORE }, +#line 10211 + .doubleBattle = FALSE, +#line 10212 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sebastian), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10214 + .species = SPECIES_CACTURNE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10216 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10215 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10218 [TRAINER_JACKSON_2] = { +#line 10219 + .trainerName = _("JACKSON"), +#line 10220 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10221 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10223 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10224 + .items = { ITEM_FULL_RESTORE }, +#line 10225 + .doubleBattle = FALSE, +#line 10226 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jackson2), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10228 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10230 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10229 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10232 [TRAINER_JACKSON_3] = { +#line 10233 + .trainerName = _("JACKSON"), +#line 10234 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10235 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10237 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10238 + .items = { ITEM_FULL_RESTORE }, +#line 10239 + .doubleBattle = FALSE, +#line 10240 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson3), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10242 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10244 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10243 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10246 [TRAINER_JACKSON_4] = { +#line 10247 + .trainerName = _("JACKSON"), +#line 10248 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10249 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10251 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10252 + .items = { ITEM_FULL_RESTORE }, +#line 10253 + .doubleBattle = FALSE, +#line 10254 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jackson4), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10256 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10258 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10257 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10260 [TRAINER_JACKSON_5] = { +#line 10261 + .trainerName = _("JACKSON"), +#line 10262 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10263 .trainerPic = TRAINER_PIC_POKEMON_RANGER_M, - .trainerName = _("JACKSON"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10265 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10266 + .items = { ITEM_FULL_RESTORE }, +#line 10267 + .doubleBattle = FALSE, +#line 10268 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Jackson5), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10270 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10272 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10271 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10274 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10276 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10275 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10278 [TRAINER_CATHERINE_1] = { +#line 10279 + .trainerName = _("CATHERINE"), +#line 10280 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10281 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10282 +F_TRAINER_FEMALE | +#line 10283 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10284 + .items = { ITEM_FULL_RESTORE }, +#line 10285 + .doubleBattle = FALSE, +#line 10286 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine1), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10288 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10290 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10289 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10292 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10294 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10293 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10296 [TRAINER_JENNA] = { +#line 10297 + .trainerName = _("JENNA"), +#line 10298 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10299 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("JENNA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10300 +F_TRAINER_FEMALE | +#line 10301 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10302 + .items = { ITEM_FULL_RESTORE }, +#line 10303 + .doubleBattle = FALSE, +#line 10304 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jenna), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10306 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10308 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10307 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10310 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10312 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10311 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10314 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10316 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10315 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10318 [TRAINER_SOPHIA] = { +#line 10319 + .trainerName = _("SOPHIA"), +#line 10320 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10321 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("SOPHIA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10322 +F_TRAINER_FEMALE | +#line 10323 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10324 + .items = { ITEM_FULL_RESTORE }, +#line 10325 + .doubleBattle = FALSE, +#line 10326 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sophia), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10328 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10330 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10329 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10332 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10334 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10333 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10336 [TRAINER_CATHERINE_2] = { +#line 10337 + .trainerName = _("CATHERINE"), +#line 10338 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10339 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10340 +F_TRAINER_FEMALE | +#line 10341 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10342 + .items = { ITEM_FULL_RESTORE }, +#line 10343 + .doubleBattle = FALSE, +#line 10344 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine2), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10346 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10348 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10347 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10350 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10352 + .iv = TRAINER_PARTY_IVS(7, 7, 7, 7, 7, 7), +#line 10351 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10354 [TRAINER_CATHERINE_3] = { +#line 10355 + .trainerName = _("CATHERINE"), +#line 10356 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10357 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10358 +F_TRAINER_FEMALE | +#line 10359 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10360 + .items = { ITEM_FULL_RESTORE }, +#line 10361 + .doubleBattle = FALSE, +#line 10362 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Catherine3), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10364 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10366 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10365 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10368 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10370 + .iv = TRAINER_PARTY_IVS(8, 8, 8, 8, 8, 8), +#line 10369 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10372 [TRAINER_CATHERINE_4] = { +#line 10373 + .trainerName = _("CATHERINE"), +#line 10374 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10375 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10376 +F_TRAINER_FEMALE | +#line 10377 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10378 + .items = { ITEM_FULL_RESTORE }, +#line 10379 + .doubleBattle = FALSE, +#line 10380 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Catherine4), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10382 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10384 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10383 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10386 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10388 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 10387 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10390 [TRAINER_CATHERINE_5] = { +#line 10391 + .trainerName = _("CATHERINE"), +#line 10392 .trainerClass = TRAINER_CLASS_PKMN_RANGER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10393 .trainerPic = TRAINER_PIC_POKEMON_RANGER_F, - .trainerName = _("CATHERINE"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10394 +F_TRAINER_FEMALE | +#line 10395 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10396 + .items = { ITEM_FULL_RESTORE }, +#line 10397 + .doubleBattle = FALSE, +#line 10398 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Catherine5), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10400 + .species = SPECIES_BELLOSSOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10402 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10401 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10404 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10406 + .iv = TRAINER_PARTY_IVS(10, 10, 10, 10, 10, 10), +#line 10405 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10408 [TRAINER_JULIO] = { +#line 10409 + .trainerName = _("JULIO"), +#line 10410 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10411 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_M, - .trainerName = _("JULIO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Julio), - }, - + .encounterMusic_gender = +#line 10413 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10414 + .doubleBattle = FALSE, +#line 10415 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10417 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10419 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10418 + .lvl = 21, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10421 [TRAINER_GRUNT_SEAFLOOR_CAVERN_5] = { +#line 10422 + .trainerName = _("GRUNT"), +#line 10423 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10424 .trainerPic = TRAINER_PIC_AQUA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSeafloorCavern5), - }, - + .encounterMusic_gender = +#line 10426 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10427 + .doubleBattle = FALSE, +#line 10428 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10430 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10432 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10431 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10434 + .species = SPECIES_GOLBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10436 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10435 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10438 [TRAINER_GRUNT_UNUSED] = { +#line 10439 + .trainerName = _("GRUNT"), +#line 10440 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10441 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntUnused), - }, - + .encounterMusic_gender = +#line 10442 +F_TRAINER_FEMALE | +#line 10443 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10444 + .doubleBattle = FALSE, +#line 10445 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10447 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10449 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10448 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10451 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10453 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10452 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10455 [TRAINER_GRUNT_MT_PYRE_4] = { +#line 10456 + .trainerName = _("GRUNT"), +#line 10457 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10458 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtPyre4), - }, - + .encounterMusic_gender = +#line 10459 +F_TRAINER_FEMALE | +#line 10460 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10461 + .doubleBattle = FALSE, +#line 10462 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10464 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10466 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10465 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10468 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10470 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10469 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10472 [TRAINER_GRUNT_JAGGED_PASS] = { +#line 10473 + .trainerName = _("GRUNT"), +#line 10474 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10475 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntJaggedPass), - }, - + .encounterMusic_gender = +#line 10477 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10478 + .doubleBattle = FALSE, +#line 10479 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10481 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10483 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10482 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10485 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10487 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10486 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10489 [TRAINER_MARC] = - { - .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, - .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("MARC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marc), - }, - + { +#line 10490 + .trainerName = _("MARC"), +#line 10491 + .trainerClass = TRAINER_CLASS_HIKER, +#line 10492 + .trainerPic = TRAINER_PIC_HIKER, + .encounterMusic_gender = +#line 10494 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 10495 + .doubleBattle = FALSE, +#line 10496 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10498 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10500 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 10499 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10502 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10504 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 10503 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10506 [TRAINER_BRENDEN] = { +#line 10507 + .trainerName = _("BRENDEN"), +#line 10508 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10509 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("BRENDEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brenden), - }, - + .encounterMusic_gender = +#line 10511 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10512 + .doubleBattle = FALSE, +#line 10513 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10515 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10517 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10516 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10519 [TRAINER_LILITH] = { +#line 10520 + .trainerName = _("LILITH"), +#line 10521 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10522 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("LILITH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lilith), - }, - + .encounterMusic_gender = +#line 10523 +F_TRAINER_FEMALE | +#line 10524 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10525 + .doubleBattle = FALSE, +#line 10526 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10528 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10530 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10529 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10532 [TRAINER_CRISTIAN] = { +#line 10533 + .trainerName = _("CRISTIAN"), +#line 10534 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10535 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("CRISTIAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cristian), - }, - + .encounterMusic_gender = +#line 10537 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10538 + .doubleBattle = FALSE, +#line 10539 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10541 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10543 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 10542 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10545 [TRAINER_SYLVIA] = { +#line 10546 + .trainerName = _("SYLVIA"), +#line 10547 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10548 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("SYLVIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sylvia), - }, - + .encounterMusic_gender = +#line 10549 +F_TRAINER_FEMALE | +#line 10550 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10551 + .doubleBattle = FALSE, +#line 10552 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10554 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10556 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10555 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10558 [TRAINER_LEONARDO] = { +#line 10559 + .trainerName = _("LEONARDO"), +#line 10560 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10561 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("LEONARDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Leonardo), - }, - + .encounterMusic_gender = +#line 10563 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10564 + .doubleBattle = FALSE, +#line 10565 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10567 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10569 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10568 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10571 [TRAINER_ATHENA] = { +#line 10572 + .trainerName = _("ATHENA"), +#line 10573 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10574 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("ATHENA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10575 +F_TRAINER_FEMALE | +#line 10576 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10577 + .items = { ITEM_HYPER_POTION }, +#line 10578 + .doubleBattle = FALSE, +#line 10579 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Athena), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10581 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10583 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10582 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 10584 + MOVE_THUNDER, + MOVE_THUNDER_WAVE, + MOVE_QUICK_ATTACK, + }, + }, + { +#line 10588 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10590 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10589 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 10591 + MOVE_SURF, + MOVE_THIEF, + }, + }, + }, + }, +#line 10594 [TRAINER_HARRISON] = { +#line 10595 + .trainerName = _("HARRISON"), +#line 10596 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10597 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("HARRISON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Harrison), - }, - + .encounterMusic_gender = +#line 10599 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10600 + .doubleBattle = FALSE, +#line 10601 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10603 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10605 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10604 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10607 [TRAINER_GRUNT_MT_CHIMNEY_2] = { +#line 10608 + .trainerName = _("GRUNT"), +#line 10609 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10610 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMtChimney2), - }, - + .encounterMusic_gender = +#line 10612 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10613 + .doubleBattle = FALSE, +#line 10614 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10616 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10618 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10617 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10620 [TRAINER_CLARENCE] = { +#line 10621 + .trainerName = _("CLARENCE"), +#line 10622 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10623 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("CLARENCE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clarence), - }, - + .encounterMusic_gender = +#line 10625 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10626 + .doubleBattle = FALSE, +#line 10627 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10629 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10631 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10630 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10633 [TRAINER_TERRY] = { +#line 10634 + .trainerName = _("TERRY"), +#line 10635 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10636 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("TERRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Terry), - }, - + .encounterMusic_gender = +#line 10637 +F_TRAINER_FEMALE | +#line 10638 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10639 + .doubleBattle = FALSE, +#line 10640 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10642 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10644 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10643 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10646 [TRAINER_NATE] = { +#line 10647 + .trainerName = _("NATE"), +#line 10648 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10649 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("NATE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nate), - }, - + .encounterMusic_gender = +#line 10651 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10652 + .doubleBattle = FALSE, +#line 10653 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10655 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10657 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10656 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10659 [TRAINER_KATHLEEN] = { +#line 10660 + .trainerName = _("KATHLEEN"), +#line 10661 .trainerClass = TRAINER_CLASS_HEX_MANIAC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10662 .trainerPic = TRAINER_PIC_HEX_MANIAC, - .trainerName = _("KATHLEEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kathleen), - }, - + .encounterMusic_gender = +#line 10663 +F_TRAINER_FEMALE | +#line 10664 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 10665 + .doubleBattle = FALSE, +#line 10666 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10668 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10670 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 10669 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10672 [TRAINER_CLIFFORD] = { +#line 10673 + .trainerName = _("CLIFFORD"), +#line 10674 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10675 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("CLIFFORD"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clifford), - }, - + .encounterMusic_gender = +#line 10677 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 10678 + .doubleBattle = FALSE, +#line 10679 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10681 + .species = SPECIES_GIRAFARIG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10683 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10682 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10685 [TRAINER_NICHOLAS] = { +#line 10686 + .trainerName = _("NICHOLAS"), +#line 10687 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10688 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("NICHOLAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Nicholas), - }, - + .encounterMusic_gender = +#line 10690 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10691 + .doubleBattle = FALSE, +#line 10692 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10694 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10696 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10695 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10698 [TRAINER_GRUNT_SPACE_CENTER_3] = { +#line 10699 + .trainerName = _("GRUNT"), +#line 10700 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10701 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter3), - }, - + .encounterMusic_gender = +#line 10702 +F_TRAINER_FEMALE | +#line 10703 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10704 + .doubleBattle = FALSE, +#line 10705 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10707 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10709 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10708 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10711 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10713 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10712 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10715 [TRAINER_GRUNT_SPACE_CENTER_4] = { +#line 10716 + .trainerName = _("GRUNT"), +#line 10717 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10718 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter4), - }, - + .encounterMusic_gender = +#line 10720 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10721 + .doubleBattle = FALSE, +#line 10722 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10724 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10726 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10725 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10728 [TRAINER_GRUNT_SPACE_CENTER_5] = { +#line 10729 + .trainerName = _("GRUNT"), +#line 10730 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10731 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter5), - }, - + .encounterMusic_gender = +#line 10733 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10734 + .doubleBattle = FALSE, +#line 10735 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10737 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10739 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10738 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10741 [TRAINER_GRUNT_SPACE_CENTER_6] = { +#line 10742 + .trainerName = _("GRUNT"), +#line 10743 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10744 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter6), - }, - + .encounterMusic_gender = +#line 10746 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10747 + .doubleBattle = FALSE, +#line 10748 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10750 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10752 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10751 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10754 [TRAINER_GRUNT_SPACE_CENTER_7] = { +#line 10755 + .trainerName = _("GRUNT"), +#line 10756 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10757 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntSpaceCenter7), - }, - + .encounterMusic_gender = +#line 10759 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10760 + .doubleBattle = FALSE, +#line 10761 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10763 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10765 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10764 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10767 [TRAINER_MACEY] = { +#line 10768 + .trainerName = _("MACEY"), +#line 10769 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10770 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("MACEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Macey), - }, - + .encounterMusic_gender = +#line 10771 +F_TRAINER_FEMALE | +#line 10772 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10773 + .doubleBattle = FALSE, +#line 10774 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10776 + .species = SPECIES_NATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10778 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10777 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10780 [TRAINER_BRENDAN_RUSTBORO_TREECKO] = { +#line 10781 + .trainerName = _("BRENDAN"), +#line 10782 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10783 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_BrendanRustboroTreecko), - }, - + .encounterMusic_gender = +#line 10785 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10786 + .doubleBattle = FALSE, +#line 10787 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10789 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10791 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10790 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10793 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10795 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10794 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10797 [TRAINER_BRENDAN_RUSTBORO_MUDKIP] = { +#line 10798 + .trainerName = _("BRENDAN"), +#line 10799 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10800 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_BrendanRustboroMudkip), - }, - + .encounterMusic_gender = +#line 10802 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10803 + .doubleBattle = FALSE, +#line 10804 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10806 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10808 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10807 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10810 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10812 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10811 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10814 [TRAINER_PAXTON] = { +#line 10815 + .trainerName = _("PAXTON"), +#line 10816 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10817 .trainerPic = TRAINER_PIC_EXPERT_M, - .trainerName = _("PAXTON"), - .items = {}, + .encounterMusic_gender = +#line 10819 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 10820 .doubleBattle = FALSE, +#line 10821 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Paxton), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10823 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10825 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10824 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10827 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10829 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10828 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10831 [TRAINER_ISABELLA] = { +#line 10832 + .trainerName = _("ISABELLA"), +#line 10833 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10834 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_F, - .trainerName = _("ISABELLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabella), - }, - + .encounterMusic_gender = +#line 10835 +F_TRAINER_FEMALE | +#line 10836 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 10837 + .doubleBattle = FALSE, +#line 10838 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 10840 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10842 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10841 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10844 [TRAINER_GRUNT_WEATHER_INST_5] = { +#line 10845 + .trainerName = _("GRUNT"), +#line 10846 .trainerClass = TRAINER_CLASS_TEAM_AQUA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10847 .trainerPic = TRAINER_PIC_AQUA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntWeatherInst5), - }, - + .encounterMusic_gender = +#line 10848 +F_TRAINER_FEMALE | +#line 10849 + TRAINER_ENCOUNTER_MUSIC_AQUA, +#line 10850 + .doubleBattle = FALSE, +#line 10851 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10853 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10855 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10854 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10857 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10859 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10858 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10861 [TRAINER_TABITHA_MT_CHIMNEY] = { +#line 10862 + .trainerName = _("TABITHA"), +#line 10863 .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10864 .trainerPic = TRAINER_PIC_MAGMA_ADMIN, - .trainerName = _("TABITHA"), - .items = {}, + .encounterMusic_gender = +#line 10866 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10867 .doubleBattle = FALSE, +#line 10868 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TabithaMtChimney), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 10870 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10872 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10871 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10874 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10876 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10875 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10878 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10880 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10879 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10882 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10884 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10883 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10886 [TRAINER_JONATHAN] = { +#line 10887 + .trainerName = _("JONATHAN"), +#line 10888 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10889 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("JONATHAN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10891 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 10892 + .items = { ITEM_HYPER_POTION }, +#line 10893 + .doubleBattle = FALSE, +#line 10894 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_Jonathan), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10896 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10898 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10897 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10900 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10902 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10901 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10904 [TRAINER_BRENDAN_RUSTBORO_TORCHIC] = { +#line 10905 + .trainerName = _("BRENDAN"), +#line 10906 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10907 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 10909 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 10910 .doubleBattle = FALSE, +#line 10911 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanRustboroTorchic), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10913 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10915 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10914 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10917 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10919 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10918 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10921 [TRAINER_MAY_RUSTBORO_MUDKIP] = { +#line 10922 + .trainerName = _("MAY"), +#line 10923 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10924 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10925 +F_TRAINER_FEMALE | +#line 10926 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10927 + .doubleBattle = FALSE, +#line 10928 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_MayRustboroMudkip), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10930 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10932 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 10931 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10934 + .species = SPECIES_TREECKO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10936 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 10935 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10938 [TRAINER_MAXIE_MAGMA_HIDEOUT] = { +#line 10939 + .trainerName = _("MAXIE"), +#line 10940 .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10941 .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, - .trainerName = _("MAXIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10943 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10944 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 10945 + .doubleBattle = FALSE, +#line 10946 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMagmaHideout), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10948 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10950 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10949 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10952 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10954 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10953 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10956 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10958 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10957 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10960 [TRAINER_MAXIE_MT_CHIMNEY] = { +#line 10961 + .trainerName = _("MAXIE"), +#line 10962 .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10963 .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, - .trainerName = _("MAXIE"), - .items = {ITEM_SUPER_POTION, ITEM_SUPER_POTION, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 10965 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 10966 + .items = { ITEM_SUPER_POTION, ITEM_SUPER_POTION }, +#line 10967 + .doubleBattle = FALSE, +#line 10968 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMtChimney), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 10970 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10972 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10971 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10974 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10976 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10975 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10978 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10980 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 10979 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10982 [TRAINER_TIANA] = { +#line 10983 + .trainerName = _("TIANA"), +#line 10984 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10985 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("TIANA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tiana), - }, - + .encounterMusic_gender = +#line 10986 +F_TRAINER_FEMALE | +#line 10987 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 10988 + .doubleBattle = FALSE, +#line 10989 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 10991 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10993 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10992 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 10995 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 10997 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 10996 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 10999 [TRAINER_HALEY_1] = { +#line 11000 + .trainerName = _("HALEY"), +#line 11001 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11002 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("HALEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley1), - }, - + .encounterMusic_gender = +#line 11003 +F_TRAINER_FEMALE | +#line 11004 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11005 + .doubleBattle = FALSE, +#line 11006 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11008 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11010 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11009 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11012 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11014 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11013 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11016 [TRAINER_JANICE] = { +#line 11017 + .trainerName = _("JANICE"), +#line 11018 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11019 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("JANICE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Janice), - }, - + .encounterMusic_gender = +#line 11020 +F_TRAINER_FEMALE | +#line 11021 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11022 + .doubleBattle = FALSE, +#line 11023 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11025 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11027 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11026 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11029 [TRAINER_VIVI] = { +#line 11030 + .trainerName = _("VIVI"), +#line 11031 .trainerClass = TRAINER_CLASS_WINSTRATE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11032 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("VIVI"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 11033 +F_TRAINER_FEMALE | +#line 11034 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11035 + .doubleBattle = FALSE, +#line 11036 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Vivi), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11038 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11040 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11039 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11042 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11044 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11043 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11046 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11048 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11047 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11050 [TRAINER_HALEY_2] = { +#line 11051 + .trainerName = _("HALEY"), +#line 11052 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11053 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("HALEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley2), - }, - + .encounterMusic_gender = +#line 11054 +F_TRAINER_FEMALE | +#line 11055 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11056 + .doubleBattle = FALSE, +#line 11057 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11059 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11061 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11060 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11063 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11065 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11064 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11067 [TRAINER_HALEY_3] = { +#line 11068 + .trainerName = _("HALEY"), +#line 11069 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11070 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("HALEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley3), - }, - + .encounterMusic_gender = +#line 11071 +F_TRAINER_FEMALE | +#line 11072 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11073 + .doubleBattle = FALSE, +#line 11074 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11076 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11078 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11077 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11080 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11082 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11081 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11084 [TRAINER_HALEY_4] = { +#line 11085 + .trainerName = _("HALEY"), +#line 11086 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11087 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("HALEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley4), - }, - + .encounterMusic_gender = +#line 11088 +F_TRAINER_FEMALE | +#line 11089 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11090 + .doubleBattle = FALSE, +#line 11091 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11093 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11095 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11094 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11097 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11099 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11098 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11101 [TRAINER_HALEY_5] = { +#line 11102 + .trainerName = _("HALEY"), +#line 11103 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11104 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("HALEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Haley5), - }, - + .encounterMusic_gender = +#line 11105 +F_TRAINER_FEMALE | +#line 11106 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11107 + .doubleBattle = FALSE, +#line 11108 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11110 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11112 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11111 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11114 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11116 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11115 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11118 + .species = SPECIES_BRELOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11120 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11119 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11122 [TRAINER_SALLY] = { +#line 11123 + .trainerName = _("SALLY"), +#line 11124 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11125 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("SALLY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sally), - }, - + .encounterMusic_gender = +#line 11126 +F_TRAINER_FEMALE | +#line 11127 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11128 + .doubleBattle = FALSE, +#line 11129 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11131 + .species = SPECIES_ODDISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11133 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11132 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11135 [TRAINER_ROBIN] = { +#line 11136 + .trainerName = _("ROBIN"), +#line 11137 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11138 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("ROBIN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Robin), - }, - + .encounterMusic_gender = +#line 11139 +F_TRAINER_FEMALE | +#line 11140 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11141 + .doubleBattle = FALSE, +#line 11142 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11144 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11146 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11145 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11148 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11150 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11149 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11152 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11154 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11153 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11156 [TRAINER_ANDREA] = { +#line 11157 + .trainerName = _("ANDREA"), +#line 11158 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11159 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("ANDREA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andrea), - }, - + .encounterMusic_gender = +#line 11160 +F_TRAINER_FEMALE | +#line 11161 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11162 + .doubleBattle = FALSE, +#line 11163 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11165 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11167 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11166 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11169 [TRAINER_CRISSY] = { +#line 11170 + .trainerName = _("CRISSY"), +#line 11171 .trainerClass = TRAINER_CLASS_LASS, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11172 .trainerPic = TRAINER_PIC_LASS, - .trainerName = _("CRISSY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Crissy), - }, - + .encounterMusic_gender = +#line 11173 +F_TRAINER_FEMALE | +#line 11174 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11175 + .doubleBattle = FALSE, +#line 11176 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11178 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11180 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11179 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11182 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11184 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11183 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11186 [TRAINER_RICK] = { +#line 11187 + .trainerName = _("RICK"), +#line 11188 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11189 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("RICK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rick), - }, - + .encounterMusic_gender = +#line 11191 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11192 + .doubleBattle = FALSE, +#line 11193 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11195 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11197 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11196 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11199 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11201 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11200 + .lvl = 4, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11203 [TRAINER_LYLE] = { +#line 11204 + .trainerName = _("LYLE"), +#line 11205 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11206 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("LYLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lyle), - }, - + .encounterMusic_gender = +#line 11208 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11209 + .doubleBattle = FALSE, +#line 11210 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11212 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11214 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11213 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11216 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11218 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11217 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11220 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11222 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11221 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11224 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11226 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11225 + .lvl = 3, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11228 [TRAINER_JOSE] = { +#line 11229 + .trainerName = _("JOSE"), +#line 11230 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11231 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JOSE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jose), - }, - + .encounterMusic_gender = +#line 11233 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11234 + .doubleBattle = FALSE, +#line 11235 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11237 + .species = SPECIES_WURMPLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11239 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 11238 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11241 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11243 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 11242 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11245 [TRAINER_DOUG] = { +#line 11246 + .trainerName = _("DOUG"), +#line 11247 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11248 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("DOUG"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Doug), - }, - + .encounterMusic_gender = +#line 11250 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11251 + .doubleBattle = FALSE, +#line 11252 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11254 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11256 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11255 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11258 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11260 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11259 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11262 [TRAINER_GREG] = { +#line 11263 + .trainerName = _("GREG"), +#line 11264 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11265 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("GREG"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Greg), - }, - + .encounterMusic_gender = +#line 11267 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11268 + .doubleBattle = FALSE, +#line 11269 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11271 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11273 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11272 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11275 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11277 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11276 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11279 [TRAINER_KENT] = { +#line 11280 + .trainerName = _("KENT"), +#line 11281 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11282 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("KENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kent), - }, - + .encounterMusic_gender = +#line 11284 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11285 + .doubleBattle = FALSE, +#line 11286 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11288 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11290 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11289 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11292 [TRAINER_JAMES_1] = { +#line 11293 + .trainerName = _("JAMES"), +#line 11294 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11295 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JAMES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James1), - }, - + .encounterMusic_gender = +#line 11297 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11298 + .doubleBattle = FALSE, +#line 11299 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11301 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11303 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11302 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11305 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11307 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11306 + .lvl = 6, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11309 [TRAINER_JAMES_2] = { +#line 11310 + .trainerName = _("JAMES"), +#line 11311 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11312 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JAMES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James2), - }, - + .encounterMusic_gender = +#line 11314 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11315 + .doubleBattle = FALSE, +#line 11316 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11318 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11320 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11319 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11322 [TRAINER_JAMES_3] = { +#line 11323 + .trainerName = _("JAMES"), +#line 11324 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11325 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JAMES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James3), - }, - + .encounterMusic_gender = +#line 11327 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11328 + .doubleBattle = FALSE, +#line 11329 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11331 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11333 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11332 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11335 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11337 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11336 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11339 [TRAINER_JAMES_4] = { +#line 11340 + .trainerName = _("JAMES"), +#line 11341 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11342 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JAMES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James4), - }, - + .encounterMusic_gender = +#line 11344 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11345 + .doubleBattle = FALSE, +#line 11346 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11348 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11350 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11349 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11352 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11354 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11353 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11356 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11358 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11357 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11360 [TRAINER_JAMES_5] = { +#line 11361 + .trainerName = _("JAMES"), +#line 11362 .trainerClass = TRAINER_CLASS_BUG_CATCHER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11363 .trainerPic = TRAINER_PIC_BUG_CATCHER, - .trainerName = _("JAMES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_James5), - }, - + .encounterMusic_gender = +#line 11365 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11366 + .doubleBattle = FALSE, +#line 11367 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11369 + .species = SPECIES_SURSKIT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11371 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11370 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11373 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11375 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11374 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11377 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11379 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11378 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11381 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11383 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11382 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11385 [TRAINER_BRICE] = { +#line 11386 + .trainerName = _("BRICE"), +#line 11387 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11388 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("BRICE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brice), - }, - + .encounterMusic_gender = +#line 11390 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11391 + .doubleBattle = FALSE, +#line 11392 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11394 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11396 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11395 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11398 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11400 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11399 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11402 [TRAINER_TRENT_1] = { +#line 11403 + .trainerName = _("TRENT"), +#line 11404 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11405 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("TRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent1), - }, - + .encounterMusic_gender = +#line 11407 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11408 + .doubleBattle = FALSE, +#line 11409 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11411 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11413 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11412 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11415 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11417 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11416 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11419 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11421 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11420 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11423 [TRAINER_LENNY] = { +#line 11424 + .trainerName = _("LENNY"), +#line 11425 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11426 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("LENNY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lenny), - }, - + .encounterMusic_gender = +#line 11428 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11429 + .doubleBattle = FALSE, +#line 11430 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11432 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11434 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11433 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11436 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11438 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11437 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11440 [TRAINER_LUCAS_1] = { +#line 11441 + .trainerName = _("LUCAS"), +#line 11442 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11443 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("LUCAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lucas1), - }, - + .encounterMusic_gender = +#line 11445 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11446 + .doubleBattle = FALSE, +#line 11447 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11449 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11451 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11450 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11453 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11455 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11454 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11457 [TRAINER_ALAN] = { +#line 11458 + .trainerName = _("ALAN"), +#line 11459 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11460 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("ALAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alan), - }, - + .encounterMusic_gender = +#line 11462 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11463 + .doubleBattle = FALSE, +#line 11464 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11466 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11468 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11467 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11470 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11472 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11471 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11474 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11476 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11475 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11478 [TRAINER_CLARK] = { +#line 11479 + .trainerName = _("CLARK"), +#line 11480 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11481 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("CLARK"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Clark), - }, - + .encounterMusic_gender = +#line 11483 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11484 + .doubleBattle = FALSE, +#line 11485 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11487 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11489 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11488 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11491 [TRAINER_ERIC] = { +#line 11492 + .trainerName = _("ERIC"), +#line 11493 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11494 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("ERIC"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Eric), - }, - + .encounterMusic_gender = +#line 11496 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11497 + .doubleBattle = FALSE, +#line 11498 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11500 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11502 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11501 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11504 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11506 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11505 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11508 [TRAINER_LUCAS_2] = { +#line 11509 + .trainerName = _("LUCAS"), +#line 11510 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11511 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("LUCAS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lucas2), - }, - + .encounterMusic_gender = +#line 11513 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11514 + .doubleBattle = FALSE, +#line 11515 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11517 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11519 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11518 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11520 + MOVE_SPLASH, + MOVE_WATER_GUN, + }, + }, + }, + }, +#line 11523 [TRAINER_MIKE_1] = { +#line 11524 + .trainerName = _("MIKE"), +#line 11525 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11526 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("MIKE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mike1), - }, - + .encounterMusic_gender = +#line 11528 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11529 + .doubleBattle = FALSE, +#line 11530 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11532 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11534 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11533 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11535 + MOVE_GUST, + MOVE_GROWL, + }, + }, + { +#line 11538 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11540 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11539 + .lvl = 10, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11541 + MOVE_BITE, + MOVE_SCARY_FACE, + }, + }, + }, + }, +#line 11544 [TRAINER_MIKE_2] = { +#line 11545 + .trainerName = _("MIKE"), +#line 11546 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11547 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("MIKE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Mike2), - }, - + .encounterMusic_gender = +#line 11549 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11550 + .doubleBattle = FALSE, +#line 11551 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11553 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11555 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11554 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11557 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11559 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11558 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11561 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11563 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11562 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11565 [TRAINER_TRENT_2] = { +#line 11566 + .trainerName = _("TRENT"), +#line 11567 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11568 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("TRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent2), - }, - + .encounterMusic_gender = +#line 11570 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11571 + .doubleBattle = FALSE, +#line 11572 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11574 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11576 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11575 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11578 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11580 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11579 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11582 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11584 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11583 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11586 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11588 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11587 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11590 [TRAINER_TRENT_3] = { +#line 11591 + .trainerName = _("TRENT"), +#line 11592 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11593 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("TRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent3), - }, - + .encounterMusic_gender = +#line 11595 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11596 + .doubleBattle = FALSE, +#line 11597 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11599 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11601 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11600 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11603 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11605 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11604 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11607 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11609 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11608 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11611 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11613 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11612 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11615 [TRAINER_TRENT_4] = { +#line 11616 + .trainerName = _("TRENT"), +#line 11617 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11618 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("TRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent4), - }, - + .encounterMusic_gender = +#line 11620 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11621 + .doubleBattle = FALSE, +#line 11622 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11624 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11626 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11625 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11628 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11630 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11629 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11632 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11634 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11633 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11636 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11638 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11637 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11640 [TRAINER_TRENT_5] = { +#line 11641 + .trainerName = _("TRENT"), +#line 11642 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11643 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("TRENT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Trent5), - }, - + .encounterMusic_gender = +#line 11645 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 11646 + .doubleBattle = FALSE, +#line 11647 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 11649 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11651 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11650 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11653 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11655 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11654 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11657 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11659 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11658 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11661 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11663 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11662 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11665 [TRAINER_DEZ_AND_LUKE] = { +#line 11666 + .trainerName = _("DEZ & LUKE"), +#line 11667 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11668 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("DEZ & LUKE"), - .items = {}, + .encounterMusic_gender = +#line 11670 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11671 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_DezAndLuke), - }, - +#line 11672 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11674 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11676 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11675 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11678 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11680 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11679 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11682 [TRAINER_LEA_AND_JED] = { +#line 11683 + .trainerName = _("LEA & JED"), +#line 11684 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11685 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("LEA & JED"), - .items = {}, + .encounterMusic_gender = +#line 11687 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11688 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LeaAndJed), - }, - +#line 11689 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11691 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11693 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11692 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11695 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11697 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11696 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11699 [TRAINER_KIRA_AND_DAN_1] = { +#line 11700 + .trainerName = _("KIRA & DAN"), +#line 11701 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11702 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("KIRA & DAN"), - .items = {}, + .encounterMusic_gender = +#line 11704 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11705 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan1), - }, - +#line 11706 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11708 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11710 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11709 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11712 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11714 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11713 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11716 [TRAINER_KIRA_AND_DAN_2] = { +#line 11717 + .trainerName = _("KIRA & DAN"), +#line 11718 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11719 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("KIRA & DAN"), - .items = {}, + .encounterMusic_gender = +#line 11721 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11722 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan2), - }, - +#line 11723 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11725 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11727 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11726 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11729 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11731 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 11730 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11733 [TRAINER_KIRA_AND_DAN_3] = { +#line 11734 + .trainerName = _("KIRA & DAN"), +#line 11735 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11736 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("KIRA & DAN"), - .items = {}, + .encounterMusic_gender = +#line 11738 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11739 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan3), - }, - +#line 11740 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11742 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11744 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11743 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11746 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11748 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 11747 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11750 [TRAINER_KIRA_AND_DAN_4] = { +#line 11751 + .trainerName = _("KIRA & DAN"), +#line 11752 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11753 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("KIRA & DAN"), - .items = {}, + .encounterMusic_gender = +#line 11755 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11756 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan4), - }, - +#line 11757 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11759 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11761 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11760 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11763 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11765 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11764 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11767 [TRAINER_KIRA_AND_DAN_5] = { +#line 11768 + .trainerName = _("KIRA & DAN"), +#line 11769 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11770 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("KIRA & DAN"), - .items = {}, + .encounterMusic_gender = +#line 11772 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11773 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KiraAndDan5), - }, - +#line 11774 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11776 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11778 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11777 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11780 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11782 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 11781 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11784 [TRAINER_JOHANNA] = { +#line 11785 + .trainerName = _("JOHANNA"), +#line 11786 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11787 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("JOHANNA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Johanna), - }, - + .encounterMusic_gender = +#line 11788 +F_TRAINER_FEMALE | +#line 11789 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 11790 + .doubleBattle = FALSE, +#line 11791 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11793 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11795 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11794 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11797 [TRAINER_GERALD] = { +#line 11798 + .trainerName = _("GERALD"), +#line 11799 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 11800 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("GERALD"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 11802 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 11803 + .items = { ITEM_HYPER_POTION }, +#line 11804 + .doubleBattle = FALSE, +#line 11805 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Gerald), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11807 + .species = SPECIES_KECLEON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11809 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11808 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11810 + MOVE_FLAMETHROWER, + MOVE_FURY_SWIPES, + MOVE_FEINT_ATTACK, + MOVE_BIND, + }, + }, + }, + }, +#line 11815 [TRAINER_VIVIAN] = { +#line 11816 + .trainerName = _("VIVIAN"), +#line 11817 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11818 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("VIVIAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Vivian), - }, - + .encounterMusic_gender = +#line 11819 +F_TRAINER_FEMALE | +#line 11820 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11821 + .doubleBattle = FALSE, +#line 11822 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11824 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11826 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11825 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11827 + MOVE_BIDE, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_THUNDER_PUNCH, + }, + }, + { +#line 11832 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11834 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11833 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11835 + MOVE_THUNDER_PUNCH, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_MEDITATE, + }, + }, + }, + }, +#line 11840 [TRAINER_DANIELLE] = { +#line 11841 + .trainerName = _("DANIELLE"), +#line 11842 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11843 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("DANIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Danielle), - }, - + .encounterMusic_gender = +#line 11844 +F_TRAINER_FEMALE | +#line 11845 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 11846 + .doubleBattle = FALSE, +#line 11847 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11849 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11851 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11850 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11852 + MOVE_BIDE, + MOVE_DETECT, + MOVE_CONFUSION, + MOVE_FIRE_PUNCH, + }, + }, + }, + }, +#line 11857 [TRAINER_HIDEO] = { +#line 11858 + .trainerName = _("HIDEO"), +#line 11859 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11860 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("HIDEO"), - .items = {}, + .encounterMusic_gender = +#line 11862 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11863 .doubleBattle = FALSE, +#line 11864 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Hideo), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11866 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11868 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11867 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11869 + MOVE_TACKLE, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + { +#line 11874 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11876 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11875 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11877 + MOVE_TACKLE, + MOVE_POISON_GAS, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + }, + }, +#line 11882 [TRAINER_KEIGO] = { +#line 11883 + .trainerName = _("KEIGO"), +#line 11884 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11885 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("KEIGO"), - .items = {}, + .encounterMusic_gender = +#line 11887 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11888 .doubleBattle = FALSE, +#line 11889 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Keigo), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11891 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11893 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11892 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11894 + MOVE_POISON_GAS, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + { +#line 11899 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11901 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11900 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11902 + MOVE_SAND_ATTACK, + MOVE_DOUBLE_TEAM, + MOVE_FURY_CUTTER, + MOVE_SWORDS_DANCE, + }, + }, + }, + }, +#line 11907 [TRAINER_RILEY] = { +#line 11908 + .trainerName = _("RILEY"), +#line 11909 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11910 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("RILEY"), - .items = {}, + .encounterMusic_gender = +#line 11912 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 11913 .doubleBattle = FALSE, +#line 11914 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT, - .party = TRAINER_PARTY(sParty_Riley), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11916 + .species = SPECIES_NINCADA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11918 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11917 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11919 + MOVE_LEECH_LIFE, + MOVE_FURY_SWIPES, + MOVE_MIND_READER, + MOVE_DIG, + }, + }, + { +#line 11924 + .species = SPECIES_KOFFING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11926 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 11925 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11927 + MOVE_TACKLE, + MOVE_SELF_DESTRUCT, + MOVE_SLUDGE, + MOVE_SMOKESCREEN, + }, + }, + }, + }, +#line 11932 [TRAINER_FLINT] = { +#line 11933 + .trainerName = _("FLINT"), +#line 11934 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11935 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("FLINT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Flint), - }, - + .encounterMusic_gender = +#line 11937 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11938 + .doubleBattle = FALSE, +#line 11939 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 11941 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11943 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11942 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11945 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11947 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11946 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11949 [TRAINER_ASHLEY] = { +#line 11950 + .trainerName = _("ASHLEY"), +#line 11951 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11952 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("ASHLEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Ashley), - }, - + .encounterMusic_gender = +#line 11953 +F_TRAINER_FEMALE | +#line 11954 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 11955 + .doubleBattle = FALSE, +#line 11956 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 11958 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11960 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11959 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11962 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11964 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11963 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 11966 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11968 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 11967 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11970 [TRAINER_WALLY_MAUVILLE] = { +#line 11971 + .trainerName = _("WALLY"), +#line 11972 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11973 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {}, + .encounterMusic_gender = +#line 11975 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11976 .doubleBattle = FALSE, +#line 11977 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyMauville), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 11979 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11981 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 11980 + .lvl = 16, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 11983 [TRAINER_WALLY_VR_2] = { +#line 11984 + .trainerName = _("WALLY"), +#line 11985 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11986 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 11988 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 11989 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 11990 + .doubleBattle = FALSE, +#line 11991 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR2), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 11993 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 11995 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 11994 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 11996 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12001 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12003 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12002 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12004 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12009 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12011 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12010 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12012 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12017 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12019 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12018 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12020 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12025 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12027 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12026 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12028 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, + }, +#line 12033 [TRAINER_WALLY_VR_3] = { +#line 12034 + .trainerName = _("WALLY"), +#line 12035 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12036 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12038 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12039 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12040 + .doubleBattle = FALSE, +#line 12041 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12043 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12045 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12044 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12046 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12051 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12053 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12052 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12054 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12059 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12061 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12060 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12062 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12067 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12069 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12068 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12070 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12075 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12077 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12076 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12078 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, + }, +#line 12083 [TRAINER_WALLY_VR_4] = { +#line 12084 + .trainerName = _("WALLY"), +#line 12085 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12086 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12088 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12089 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12090 + .doubleBattle = FALSE, +#line 12091 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR4), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12093 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12095 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12094 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12096 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12101 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12103 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12102 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12104 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12109 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12111 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12110 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12112 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12117 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12119 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12118 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12120 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12125 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12127 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12126 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12128 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, + }, +#line 12133 [TRAINER_WALLY_VR_5] = { +#line 12134 + .trainerName = _("WALLY"), +#line 12135 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12136 .trainerPic = TRAINER_PIC_WALLY, - .trainerName = _("WALLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12138 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12139 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 12140 + .doubleBattle = FALSE, +#line 12141 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_WallyVR5), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 12143 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12145 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12144 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12146 + MOVE_AERIAL_ACE, + MOVE_SAFEGUARD, + MOVE_DRAGON_BREATH, + MOVE_DRAGON_DANCE, + }, + }, + { +#line 12151 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12153 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12152 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12154 + MOVE_SING, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_FEINT_ATTACK, + }, + }, + { +#line 12159 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12161 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12160 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12162 + MOVE_MAGICAL_LEAF, + MOVE_LEECH_SEED, + MOVE_GIGA_DRAIN, + MOVE_TOXIC, + }, + }, + { +#line 12167 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12169 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12168 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12170 + MOVE_SUPERSONIC, + MOVE_THUNDERBOLT, + MOVE_TRI_ATTACK, + MOVE_SCREECH, + }, + }, + { +#line 12175 + .species = SPECIES_GARDEVOIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12177 + .iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30), +#line 12176 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12178 + MOVE_DOUBLE_TEAM, + MOVE_CALM_MIND, + MOVE_PSYCHIC, + MOVE_FUTURE_SIGHT, + }, + }, + }, + }, +#line 12183 [TRAINER_BRENDAN_LILYCOVE_MUDKIP] = { +#line 12184 + .trainerName = _("BRENDAN"), +#line 12185 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12186 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 12188 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12189 .doubleBattle = FALSE, +#line 12190 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveMudkip), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12192 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12194 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12193 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12196 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12198 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12197 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12200 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12202 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12201 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12204 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12206 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12205 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12208 [TRAINER_BRENDAN_LILYCOVE_TREECKO] = { +#line 12209 + .trainerName = _("BRENDAN"), +#line 12210 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12211 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 12213 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12214 .doubleBattle = FALSE, +#line 12215 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveTreecko), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12217 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12219 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12218 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12221 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12223 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12222 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12225 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12227 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12226 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12229 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12231 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12230 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12233 [TRAINER_BRENDAN_LILYCOVE_TORCHIC] = { +#line 12234 + .trainerName = _("BRENDAN"), +#line 12235 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12236 .trainerPic = TRAINER_PIC_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, + .encounterMusic_gender = +#line 12238 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 12239 .doubleBattle = FALSE, +#line 12240 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_BrendanLilycoveTorchic), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12242 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12244 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12243 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12246 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12248 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12247 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12250 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12252 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12251 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12254 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12256 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12255 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12258 [TRAINER_MAY_LILYCOVE_MUDKIP] = { +#line 12259 + .trainerName = _("MAY"), +#line 12260 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12261 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12262 +F_TRAINER_FEMALE | +#line 12263 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12264 + .doubleBattle = FALSE, +#line 12265 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveMudkip), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12267 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12269 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12268 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12271 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12273 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12272 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12275 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12277 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12276 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12279 + .species = SPECIES_GROVYLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12281 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12280 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12283 [TRAINER_MAY_LILYCOVE_TREECKO] = { +#line 12284 + .trainerName = _("MAY"), +#line 12285 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12286 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12287 +F_TRAINER_FEMALE | +#line 12288 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12289 + .doubleBattle = FALSE, +#line 12290 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveTreecko), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12292 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12294 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12293 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12296 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12298 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12297 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12300 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12302 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12301 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12304 + .species = SPECIES_COMBUSKEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12306 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12305 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12308 [TRAINER_MAY_LILYCOVE_TORCHIC] = { +#line 12309 + .trainerName = _("MAY"), +#line 12310 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12311 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12312 +F_TRAINER_FEMALE | +#line 12313 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12314 + .doubleBattle = FALSE, +#line 12315 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayLilycoveTorchic), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12317 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12319 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12318 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12321 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12323 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12322 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12325 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12327 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 12326 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12329 + .species = SPECIES_MARSHTOMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12331 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12330 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12333 [TRAINER_JONAH] = { +#line 12334 + .trainerName = _("JONAH"), +#line 12335 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12336 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("JONAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jonah), - }, - + .encounterMusic_gender = +#line 12338 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12339 + .doubleBattle = FALSE, +#line 12340 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12342 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12344 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12343 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12346 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12348 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12347 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12350 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12352 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12351 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12354 [TRAINER_HENRY] = { +#line 12355 + .trainerName = _("HENRY"), +#line 12356 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12357 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("HENRY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Henry), - }, - + .encounterMusic_gender = +#line 12359 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12360 + .doubleBattle = FALSE, +#line 12361 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12363 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12365 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12364 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12367 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12369 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12368 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12371 [TRAINER_ROGER] = { +#line 12372 + .trainerName = _("ROGER"), +#line 12373 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12374 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("ROGER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Roger), - }, - + .encounterMusic_gender = +#line 12376 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12377 + .doubleBattle = FALSE, +#line 12378 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12380 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12382 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12381 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12384 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12386 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12385 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12388 + .species = SPECIES_GYARADOS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12390 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12389 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12392 [TRAINER_ALEXA] = { +#line 12393 + .trainerName = _("ALEXA"), +#line 12394 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12395 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("ALEXA"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12396 +F_TRAINER_FEMALE | +#line 12397 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12398 + .items = { ITEM_FULL_RESTORE }, +#line 12399 + .doubleBattle = FALSE, +#line 12400 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Alexa), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12402 + .species = SPECIES_GLOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12404 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12403 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12406 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12408 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12407 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12410 [TRAINER_RUBEN] = { +#line 12411 + .trainerName = _("RUBEN"), +#line 12412 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12413 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("RUBEN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 12415 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12416 + .items = { ITEM_HYPER_POTION }, +#line 12417 + .doubleBattle = FALSE, +#line 12418 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Ruben), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12420 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12422 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12421 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12424 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12426 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 12425 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12428 [TRAINER_KOJI_1] = { +#line 12429 + .trainerName = _("KOJI"), +#line 12430 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12431 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji1), - }, - + .encounterMusic_gender = +#line 12433 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12434 + .doubleBattle = FALSE, +#line 12435 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12437 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12439 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12438 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12441 [TRAINER_WAYNE] = { +#line 12442 + .trainerName = _("WAYNE"), +#line 12443 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12444 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("WAYNE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wayne), - }, - + .encounterMusic_gender = +#line 12446 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12447 + .doubleBattle = FALSE, +#line 12448 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 12450 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12452 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12451 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12454 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12456 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12455 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12458 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12460 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12459 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12462 [TRAINER_AIDAN] = { +#line 12463 + .trainerName = _("AIDAN"), +#line 12464 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12465 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("AIDAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aidan), - }, - + .encounterMusic_gender = +#line 12467 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 12468 + .doubleBattle = FALSE, +#line 12469 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12471 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12473 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12472 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12475 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12477 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12476 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12479 [TRAINER_REED] = { +#line 12480 + .trainerName = _("REED"), +#line 12481 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12482 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("REED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Reed), - }, - + .encounterMusic_gender = +#line 12484 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12485 + .doubleBattle = FALSE, +#line 12486 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12488 + .species = SPECIES_SPHEAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12490 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12489 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12492 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12494 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12493 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12496 [TRAINER_TISHA] = { +#line 12497 + .trainerName = _("TISHA"), +#line 12498 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12499 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("TISHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tisha), - }, - + .encounterMusic_gender = +#line 12500 +F_TRAINER_FEMALE | +#line 12501 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12502 + .doubleBattle = FALSE, +#line 12503 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12505 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12507 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12506 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12509 [TRAINER_TORI_AND_TIA] = { +#line 12510 + .trainerName = _("TORI & TIA"), +#line 12511 .trainerClass = TRAINER_CLASS_TWINS, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12512 .trainerPic = TRAINER_PIC_TWINS, - .trainerName = _("TORI & TIA"), - .items = {}, + .encounterMusic_gender = +#line 12514 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12515 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_ToriAndTia), - }, - +#line 12516 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12518 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12520 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12519 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12522 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12524 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12523 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12526 [TRAINER_KIM_AND_IRIS] = { +#line 12527 + .trainerName = _("KIM & IRIS"), +#line 12528 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12529 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("KIM & IRIS"), - .items = {}, + .encounterMusic_gender = +#line 12531 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12532 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_KimAndIris), - }, - +#line 12533 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12535 + .species = SPECIES_SWABLU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12537 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12536 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12538 + MOVE_SING, + MOVE_FURY_ATTACK, + MOVE_SAFEGUARD, + MOVE_AERIAL_ACE, + }, + }, + { +#line 12543 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12545 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12544 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12546 + MOVE_FLAMETHROWER, + MOVE_TAKE_DOWN, + MOVE_REST, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 12551 [TRAINER_TYRA_AND_IVY] = { +#line 12552 + .trainerName = _("TYRA & IVY"), +#line 12553 .trainerClass = TRAINER_CLASS_SR_AND_JR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12554 .trainerPic = TRAINER_PIC_SR_AND_JR, - .trainerName = _("TYRA & IVY"), - .items = {}, + .encounterMusic_gender = +#line 12556 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12557 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TyraAndIvy), - }, - +#line 12558 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12560 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12562 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12561 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12563 + MOVE_GROWTH, + MOVE_STUN_SPORE, + MOVE_MEGA_DRAIN, + MOVE_LEECH_SEED, + }, + }, + { +#line 12568 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12570 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12569 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12571 + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_MUD_SPORT, + MOVE_ROCK_THROW, + }, + }, + }, + }, +#line 12576 [TRAINER_MEL_AND_PAUL] = { +#line 12577 + .trainerName = _("MEL & PAUL"), +#line 12578 .trainerClass = TRAINER_CLASS_YOUNG_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12579 .trainerPic = TRAINER_PIC_YOUNG_COUPLE, - .trainerName = _("MEL & PAUL"), - .items = {}, + .encounterMusic_gender = +#line 12581 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12582 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_MelAndPaul), - }, - +#line 12583 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12585 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12587 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12586 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12588 + MOVE_GUST, + MOVE_PSYBEAM, + MOVE_TOXIC, + MOVE_PROTECT, + }, + }, + { +#line 12593 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12595 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12594 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12596 + MOVE_GUST, + MOVE_MEGA_DRAIN, + MOVE_ATTRACT, + MOVE_STUN_SPORE, + }, + }, + }, + }, +#line 12601 [TRAINER_JOHN_AND_JAY_1] = { +#line 12602 + .trainerName = _("JOHN & JAY"), +#line 12603 .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12604 .trainerPic = TRAINER_PIC_OLD_COUPLE, - .trainerName = _("JOHN & JAY"), - .items = {}, + .encounterMusic_gender = +#line 12606 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12607 .doubleBattle = TRUE, +#line 12608 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay1), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12610 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12612 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12611 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12613 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12618 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12620 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 12619 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12621 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, + }, +#line 12626 [TRAINER_JOHN_AND_JAY_2] = { +#line 12627 + .trainerName = _("JOHN & JAY"), +#line 12628 .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12629 .trainerPic = TRAINER_PIC_OLD_COUPLE, - .trainerName = _("JOHN & JAY"), - .items = {}, + .encounterMusic_gender = +#line 12631 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12632 .doubleBattle = TRUE, +#line 12633 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay2), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12635 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12637 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 12636 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12638 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12643 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12645 + .iv = TRAINER_PARTY_IVS(25, 25, 25, 25, 25, 25), +#line 12644 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12646 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, + }, +#line 12651 [TRAINER_JOHN_AND_JAY_3] = { +#line 12652 + .trainerName = _("JOHN & JAY"), +#line 12653 .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12654 .trainerPic = TRAINER_PIC_OLD_COUPLE, - .trainerName = _("JOHN & JAY"), - .items = {}, + .encounterMusic_gender = +#line 12656 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12657 .doubleBattle = TRUE, +#line 12658 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay3), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12660 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12662 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 12661 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12663 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12668 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12670 + .iv = TRAINER_PARTY_IVS(26, 26, 26, 26, 26, 26), +#line 12669 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12671 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, + }, +#line 12676 [TRAINER_JOHN_AND_JAY_4] = { +#line 12677 + .trainerName = _("JOHN & JAY"), +#line 12678 .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12679 .trainerPic = TRAINER_PIC_OLD_COUPLE, - .trainerName = _("JOHN & JAY"), - .items = {}, + .encounterMusic_gender = +#line 12681 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12682 .doubleBattle = TRUE, +#line 12683 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SETUP_FIRST_TURN, - .party = TRAINER_PARTY(sParty_JohnAndJay4), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12685 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12687 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 12686 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12688 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12693 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12695 + .iv = TRAINER_PARTY_IVS(27, 27, 27, 27, 27, 27), +#line 12694 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12696 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, + }, +#line 12701 [TRAINER_JOHN_AND_JAY_5] = { +#line 12702 + .trainerName = _("JOHN & JAY"), +#line 12703 .trainerClass = TRAINER_CLASS_OLD_COUPLE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12704 .trainerPic = TRAINER_PIC_OLD_COUPLE, - .trainerName = _("JOHN & JAY"), - .items = {}, + .encounterMusic_gender = +#line 12706 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12707 .doubleBattle = TRUE, +#line 12708 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_JohnAndJay5), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12710 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12712 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 12711 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12713 + MOVE_PSYCHIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_PROTECT, + }, + }, + { +#line 12718 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12720 + .iv = TRAINER_PARTY_IVS(29, 29, 29, 29, 29, 29), +#line 12719 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 12721 + MOVE_FOCUS_PUNCH, + MOVE_ROCK_TOMB, + MOVE_REST, + MOVE_BELLY_DRUM, + }, + }, + }, + }, +#line 12726 [TRAINER_RELI_AND_IAN] = { +#line 12727 + .trainerName = _("RELI & IAN"), +#line 12728 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12729 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("RELI & IAN"), - .items = {}, + .encounterMusic_gender = +#line 12731 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12732 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_ReliAndIan), - }, - +#line 12733 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12735 + .species = SPECIES_AZUMARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12737 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12736 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12739 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12741 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12740 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12743 [TRAINER_LILA_AND_ROY_1] = { +#line 12744 + .trainerName = _("LILA & ROY"), +#line 12745 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12746 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LILA & ROY"), - .items = {}, + .encounterMusic_gender = +#line 12748 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12749 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy1), - }, - +#line 12750 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12752 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12754 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12753 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12756 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12758 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12757 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12760 [TRAINER_LILA_AND_ROY_2] = { +#line 12761 + .trainerName = _("LILA & ROY"), +#line 12762 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12763 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LILA & ROY"), - .items = {}, + .encounterMusic_gender = +#line 12765 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12766 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy2), - }, - +#line 12767 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12769 + .species = SPECIES_CHINCHOU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12771 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12770 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12773 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12775 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12774 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12777 [TRAINER_LILA_AND_ROY_3] = { +#line 12778 + .trainerName = _("LILA & ROY"), +#line 12779 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12780 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LILA & ROY"), - .items = {}, + .encounterMusic_gender = +#line 12782 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12783 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy3), - }, - +#line 12784 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12786 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12788 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12787 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12790 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12792 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12791 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12794 [TRAINER_LILA_AND_ROY_4] = { +#line 12795 + .trainerName = _("LILA & ROY"), +#line 12796 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12797 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LILA & ROY"), - .items = {}, + .encounterMusic_gender = +#line 12799 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12800 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy4), - }, - +#line 12801 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12803 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12805 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12804 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12807 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12809 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12808 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12811 [TRAINER_LILA_AND_ROY_5] = { +#line 12812 + .trainerName = _("LILA & ROY"), +#line 12813 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12814 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LILA & ROY"), - .items = {}, + .encounterMusic_gender = +#line 12816 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12817 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LilaAndRoy5), - }, - +#line 12818 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12820 + .species = SPECIES_LANTURN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12822 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12821 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12824 + .species = SPECIES_SHARPEDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12826 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12825 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12828 [TRAINER_LISA_AND_RAY] = { +#line 12829 + .trainerName = _("LISA & RAY"), +#line 12830 .trainerClass = TRAINER_CLASS_SIS_AND_BRO, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12831 .trainerPic = TRAINER_PIC_SIS_AND_BRO, - .trainerName = _("LISA & RAY"), - .items = {}, + .encounterMusic_gender = +#line 12833 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 12834 .doubleBattle = TRUE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_LisaAndRay), - }, - +#line 12835 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12837 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12839 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12838 + .lvl = 27, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12841 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12843 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12842 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12845 [TRAINER_CHRIS] = { +#line 12846 + .trainerName = _("CHRIS"), +#line 12847 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12848 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("CHRIS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chris), - }, - + .encounterMusic_gender = +#line 12850 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12851 + .doubleBattle = FALSE, +#line 12852 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 12854 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12856 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12855 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12858 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12860 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12859 + .lvl = 20, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12862 + .species = SPECIES_FEEBAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12864 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12863 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12866 + .species = SPECIES_CARVANHA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12868 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12867 + .lvl = 23, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12870 [TRAINER_DAWSON] = { +#line 12871 + .trainerName = _("DAWSON"), +#line 12872 .trainerClass = TRAINER_CLASS_RICH_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 12873 .trainerPic = TRAINER_PIC_RICH_BOY, - .trainerName = _("DAWSON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dawson), - }, - + .encounterMusic_gender = +#line 12875 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 12876 + .doubleBattle = FALSE, +#line 12877 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12879 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12879 + .heldItem = ITEM_NUGGET, +#line 12881 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12880 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12883 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12885 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12884 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12887 [TRAINER_SARAH] = { +#line 12888 + .trainerName = _("SARAH"), +#line 12889 .trainerClass = TRAINER_CLASS_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12890 .trainerPic = TRAINER_PIC_LADY, - .trainerName = _("SARAH"), - .items = {ITEM_FULL_RESTORE, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sarah), - }, - + .encounterMusic_gender = +#line 12891 +F_TRAINER_FEMALE | +#line 12892 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12893 + .items = { ITEM_FULL_RESTORE }, +#line 12894 + .doubleBattle = FALSE, +#line 12895 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12897 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12899 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12898 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12901 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12901 + .heldItem = ITEM_NUGGET, +#line 12903 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12902 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12905 [TRAINER_DARIAN] = { +#line 12906 + .trainerName = _("DARIAN"), +#line 12907 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12908 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("DARIAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Darian), - }, - + .encounterMusic_gender = +#line 12910 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 12911 + .doubleBattle = FALSE, +#line 12912 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12914 + .species = SPECIES_MAGIKARP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12916 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12915 + .lvl = 9, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12918 [TRAINER_HAILEY] = { +#line 12919 + .trainerName = _("HAILEY"), +#line 12920 .trainerClass = TRAINER_CLASS_TUBER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12921 .trainerPic = TRAINER_PIC_TUBER_F, - .trainerName = _("HAILEY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hailey), - }, - + .encounterMusic_gender = +#line 12922 +F_TRAINER_FEMALE | +#line 12923 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12924 + .doubleBattle = FALSE, +#line 12925 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12927 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12929 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12928 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12931 [TRAINER_CHANDLER] = { +#line 12932 + .trainerName = _("CHANDLER"), +#line 12933 .trainerClass = TRAINER_CLASS_TUBER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12934 .trainerPic = TRAINER_PIC_TUBER_M, - .trainerName = _("CHANDLER"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Chandler), - }, - + .encounterMusic_gender = +#line 12936 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 12937 + .doubleBattle = FALSE, +#line 12938 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12940 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12942 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12941 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12944 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12946 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12945 + .lvl = 12, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12948 [TRAINER_KALEB] = { +#line 12949 + .trainerName = _("KALEB"), +#line 12950 .trainerClass = TRAINER_CLASS_POKEFAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12951 .trainerPic = TRAINER_PIC_POKEFAN_M, - .trainerName = _("KALEB"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kaleb), - }, - + .encounterMusic_gender = +#line 12953 + TRAINER_ENCOUNTER_MUSIC_TWINS, +#line 12954 + .doubleBattle = FALSE, +#line 12955 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12957 + .species = SPECIES_MINUN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12957 + .heldItem = ITEM_ORAN_BERRY, +#line 12959 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12958 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12961 + .species = SPECIES_PLUSLE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12961 + .heldItem = ITEM_ORAN_BERRY, +#line 12963 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12962 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12965 [TRAINER_JOSEPH] = { +#line 12966 + .trainerName = _("JOSEPH"), +#line 12967 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12968 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("JOSEPH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Joseph), - }, - + .encounterMusic_gender = +#line 12970 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12971 + .doubleBattle = FALSE, +#line 12972 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 12974 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12976 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12975 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 12978 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12980 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12979 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12982 [TRAINER_ALYSSA] = { +#line 12983 + .trainerName = _("ALYSSA"), +#line 12984 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12985 .trainerPic = TRAINER_PIC_CYCLING_TRIATHLETE_F, - .trainerName = _("ALYSSA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alyssa), - }, - + .encounterMusic_gender = +#line 12986 +F_TRAINER_FEMALE | +#line 12987 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 12988 + .doubleBattle = FALSE, +#line 12989 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 12991 + .species = SPECIES_MAGNEMITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 12993 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 12992 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 12995 [TRAINER_MARCOS] = { +#line 12996 + .trainerName = _("MARCOS"), +#line 12997 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 12998 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("MARCOS"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marcos), - }, - + .encounterMusic_gender = +#line 13000 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13001 + .doubleBattle = FALSE, +#line 13002 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13004 + .species = SPECIES_VOLTORB, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13006 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 13005 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13008 [TRAINER_RHETT] = { +#line 13009 + .trainerName = _("RHETT"), +#line 13010 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13011 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("RHETT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rhett), - }, - + .encounterMusic_gender = +#line 13013 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13014 + .doubleBattle = FALSE, +#line 13015 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13017 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13019 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 13018 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13021 [TRAINER_TYRON] = { +#line 13022 + .trainerName = _("TYRON"), +#line 13023 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13024 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("TYRON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Tyron), - }, - + .encounterMusic_gender = +#line 13026 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13027 + .doubleBattle = FALSE, +#line 13028 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13030 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13032 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13031 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13034 [TRAINER_CELINA] = { +#line 13035 + .trainerName = _("CELINA"), +#line 13036 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13037 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("CELINA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Celina), - }, - + .encounterMusic_gender = +#line 13038 +F_TRAINER_FEMALE | +#line 13039 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13040 + .doubleBattle = FALSE, +#line 13041 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13043 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13045 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13044 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13047 [TRAINER_BIANCA] = { +#line 13048 + .trainerName = _("BIANCA"), +#line 13049 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13050 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("BIANCA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bianca), - }, - + .encounterMusic_gender = +#line 13051 +F_TRAINER_FEMALE | +#line 13052 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13053 + .doubleBattle = FALSE, +#line 13054 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13056 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13058 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13057 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13060 [TRAINER_HAYDEN] = { +#line 13061 + .trainerName = _("HAYDEN"), +#line 13062 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13063 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("HAYDEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Hayden), - }, - + .encounterMusic_gender = +#line 13065 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13066 + .doubleBattle = FALSE, +#line 13067 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13069 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13071 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13070 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13073 [TRAINER_SOPHIE] = { +#line 13074 + .trainerName = _("SOPHIE"), +#line 13075 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13076 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("SOPHIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Sophie), - }, - + .encounterMusic_gender = +#line 13077 +F_TRAINER_FEMALE | +#line 13078 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13079 + .doubleBattle = FALSE, +#line 13080 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13082 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13084 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13083 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13086 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13088 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13087 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13090 [TRAINER_COBY] = { +#line 13091 + .trainerName = _("COBY"), +#line 13092 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13093 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("COBY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Coby), - }, - + .encounterMusic_gender = +#line 13095 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13096 + .doubleBattle = FALSE, +#line 13097 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13099 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13101 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13100 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13103 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13105 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13104 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13107 [TRAINER_LAWRENCE] = { +#line 13108 + .trainerName = _("LAWRENCE"), +#line 13109 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13110 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("LAWRENCE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Lawrence), - }, - + .encounterMusic_gender = +#line 13112 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13113 + .doubleBattle = FALSE, +#line 13114 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13116 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13118 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13117 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13120 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13122 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13121 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13124 [TRAINER_WYATT] = { +#line 13125 + .trainerName = _("WYATT"), +#line 13126 .trainerClass = TRAINER_CLASS_POKEMANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13127 .trainerPic = TRAINER_PIC_POKEMANIAC, - .trainerName = _("WYATT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Wyatt), - }, - + .encounterMusic_gender = +#line 13129 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13130 + .doubleBattle = FALSE, +#line 13131 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13133 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13135 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13134 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13137 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13139 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13138 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13141 [TRAINER_ANGELINA] = { +#line 13142 + .trainerName = _("ANGELINA"), +#line 13143 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13144 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("ANGELINA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Angelina), - }, - + .encounterMusic_gender = +#line 13145 +F_TRAINER_FEMALE | +#line 13146 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13147 + .doubleBattle = FALSE, +#line 13148 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13150 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13152 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13151 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13154 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13156 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13155 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13158 [TRAINER_KAI] = { +#line 13159 + .trainerName = _("KAI"), +#line 13160 .trainerClass = TRAINER_CLASS_FISHERMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13161 .trainerPic = TRAINER_PIC_FISHERMAN, - .trainerName = _("KAI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kai), - }, - + .encounterMusic_gender = +#line 13163 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13164 + .doubleBattle = FALSE, +#line 13165 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13167 + .species = SPECIES_BARBOACH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13169 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13168 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13171 [TRAINER_CHARLOTTE] = { +#line 13172 + .trainerName = _("CHARLOTTE"), +#line 13173 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13174 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("CHARLOTTE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Charlotte), - }, - + .encounterMusic_gender = +#line 13175 +F_TRAINER_FEMALE | +#line 13176 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13177 + .doubleBattle = FALSE, +#line 13178 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13180 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13182 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13181 + .lvl = 19, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13184 [TRAINER_DEANDRE] = { +#line 13185 + .trainerName = _("DEANDRE"), +#line 13186 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13187 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("DEANDRE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Deandre), - }, - + .encounterMusic_gender = +#line 13189 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13190 + .doubleBattle = FALSE, +#line 13191 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13193 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13195 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13194 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13197 + .species = SPECIES_ARON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13199 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13198 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13201 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13203 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13202 + .lvl = 14, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13205 [TRAINER_GRUNT_MAGMA_HIDEOUT_1] = { +#line 13206 + .trainerName = _("GRUNT"), +#line 13207 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13208 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout1), - }, - + .encounterMusic_gender = +#line 13210 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13211 + .doubleBattle = FALSE, +#line 13212 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13214 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13216 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13215 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13218 [TRAINER_GRUNT_MAGMA_HIDEOUT_2] = { +#line 13219 + .trainerName = _("GRUNT"), +#line 13220 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13221 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout2), - }, - + .encounterMusic_gender = +#line 13223 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13224 + .doubleBattle = FALSE, +#line 13225 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13227 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13229 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13228 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13231 [TRAINER_GRUNT_MAGMA_HIDEOUT_3] = { +#line 13232 + .trainerName = _("GRUNT"), +#line 13233 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13234 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout3), - }, - + .encounterMusic_gender = +#line 13236 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13237 + .doubleBattle = FALSE, +#line 13238 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13240 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13242 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13241 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13244 [TRAINER_GRUNT_MAGMA_HIDEOUT_4] = { +#line 13245 + .trainerName = _("GRUNT"), +#line 13246 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13247 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout4), - }, - + .encounterMusic_gender = +#line 13249 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13250 + .doubleBattle = FALSE, +#line 13251 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13253 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13255 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13254 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13257 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13259 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13258 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13261 [TRAINER_GRUNT_MAGMA_HIDEOUT_5] = { +#line 13262 + .trainerName = _("GRUNT"), +#line 13263 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13264 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout5), - }, - + .encounterMusic_gender = +#line 13266 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13267 + .doubleBattle = FALSE, +#line 13268 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13270 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13272 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13271 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13274 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13276 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13275 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13278 [TRAINER_GRUNT_MAGMA_HIDEOUT_6] = { +#line 13279 + .trainerName = _("GRUNT"), +#line 13280 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13281 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout6), - }, - + .encounterMusic_gender = +#line 13283 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13284 + .doubleBattle = FALSE, +#line 13285 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13287 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13289 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13288 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13291 [TRAINER_GRUNT_MAGMA_HIDEOUT_7] = { +#line 13292 + .trainerName = _("GRUNT"), +#line 13293 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13294 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout7), - }, - + .encounterMusic_gender = +#line 13296 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13297 + .doubleBattle = FALSE, +#line 13298 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13300 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13302 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13301 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13304 [TRAINER_GRUNT_MAGMA_HIDEOUT_8] = { +#line 13305 + .trainerName = _("GRUNT"), +#line 13306 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13307 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout8), - }, - + .encounterMusic_gender = +#line 13309 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13310 + .doubleBattle = FALSE, +#line 13311 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13313 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13315 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13314 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13317 [TRAINER_GRUNT_MAGMA_HIDEOUT_9] = { +#line 13318 + .trainerName = _("GRUNT"), +#line 13319 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13320 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout9), - }, - + .encounterMusic_gender = +#line 13322 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13323 + .doubleBattle = FALSE, +#line 13324 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13326 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13328 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13327 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13330 [TRAINER_GRUNT_MAGMA_HIDEOUT_10] = { +#line 13331 + .trainerName = _("GRUNT"), +#line 13332 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13333 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout10), - }, - + .encounterMusic_gender = +#line 13335 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13336 + .doubleBattle = FALSE, +#line 13337 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13339 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13341 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13340 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13343 [TRAINER_GRUNT_MAGMA_HIDEOUT_11] = { +#line 13344 + .trainerName = _("GRUNT"), +#line 13345 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13346 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout11), - }, - + .encounterMusic_gender = +#line 13348 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13349 + .doubleBattle = FALSE, +#line 13350 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13352 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13354 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13353 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13356 [TRAINER_GRUNT_MAGMA_HIDEOUT_12] = { +#line 13357 + .trainerName = _("GRUNT"), +#line 13358 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13359 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout12), - }, - + .encounterMusic_gender = +#line 13361 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13362 + .doubleBattle = FALSE, +#line 13363 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13365 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13367 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13366 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13369 [TRAINER_GRUNT_MAGMA_HIDEOUT_13] = { +#line 13370 + .trainerName = _("GRUNT"), +#line 13371 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13372 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_M, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout13), - }, - + .encounterMusic_gender = +#line 13374 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13375 + .doubleBattle = FALSE, +#line 13376 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13378 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13380 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13379 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13382 [TRAINER_GRUNT_MAGMA_HIDEOUT_14] = { +#line 13383 + .trainerName = _("GRUNT"), +#line 13384 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13385 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout14), - }, - + .encounterMusic_gender = +#line 13386 +F_TRAINER_FEMALE | +#line 13387 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13388 + .doubleBattle = FALSE, +#line 13389 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13391 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13393 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13392 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13395 [TRAINER_GRUNT_MAGMA_HIDEOUT_15] = { +#line 13396 + .trainerName = _("GRUNT"), +#line 13397 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13398 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout15), - }, - + .encounterMusic_gender = +#line 13399 +F_TRAINER_FEMALE | +#line 13400 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13401 + .doubleBattle = FALSE, +#line 13402 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13404 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13406 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13405 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13408 [TRAINER_GRUNT_MAGMA_HIDEOUT_16] = { +#line 13409 + .trainerName = _("GRUNT"), +#line 13410 .trainerClass = TRAINER_CLASS_TEAM_MAGMA, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13411 .trainerPic = TRAINER_PIC_MAGMA_GRUNT_F, - .trainerName = _("GRUNT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_GruntMagmaHideout16), - }, - + .encounterMusic_gender = +#line 13412 +F_TRAINER_FEMALE | +#line 13413 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13414 + .doubleBattle = FALSE, +#line 13415 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13417 + .species = SPECIES_BALTOY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13419 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13418 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13421 [TRAINER_TABITHA_MAGMA_HIDEOUT] = { +#line 13422 + .trainerName = _("TABITHA"), +#line 13423 .trainerClass = TRAINER_CLASS_MAGMA_ADMIN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13424 .trainerPic = TRAINER_PIC_MAGMA_ADMIN, - .trainerName = _("TABITHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_TabithaMagmaHideout), - }, - + .encounterMusic_gender = +#line 13426 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13427 + .doubleBattle = FALSE, +#line 13428 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 13430 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13432 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13431 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13434 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13436 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13435 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13438 + .species = SPECIES_ZUBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13440 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13439 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13442 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13444 + .iv = TRAINER_PARTY_IVS(9, 9, 9, 9, 9, 9), +#line 13443 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13446 [TRAINER_DARCY] = { +#line 13447 + .trainerName = _("DARCY"), +#line 13448 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13449 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("DARCY"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 13450 +F_TRAINER_FEMALE | +#line 13451 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13452 + .items = { ITEM_HYPER_POTION }, +#line 13453 + .doubleBattle = FALSE, +#line 13454 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Darcy), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13456 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13458 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13457 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13460 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13462 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13461 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13464 [TRAINER_MAXIE_MOSSDEEP] = { +#line 13465 + .trainerName = _("MAXIE"), +#line 13466 .trainerClass = TRAINER_CLASS_MAGMA_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13467 .trainerPic = TRAINER_PIC_MAGMA_LEADER_MAXIE, - .trainerName = _("MAXIE"), - .items = {}, + .encounterMusic_gender = +#line 13469 + TRAINER_ENCOUNTER_MUSIC_MAGMA, +#line 13470 .doubleBattle = FALSE, +#line 13471 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MaxieMossdeep), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13473 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13475 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13474 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13477 + .species = SPECIES_CROBAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13479 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13478 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13481 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13483 + .iv = TRAINER_PARTY_IVS(18, 18, 18, 18, 18, 18), +#line 13482 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13485 [TRAINER_PETE] = { +#line 13486 + .trainerName = _("PETE"), +#line 13487 .trainerClass = TRAINER_CLASS_SWIMMER_M, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13488 .trainerPic = TRAINER_PIC_SWIMMER_M, - .trainerName = _("PETE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pete), - }, - + .encounterMusic_gender = +#line 13490 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13491 + .doubleBattle = FALSE, +#line 13492 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13494 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13496 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13495 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13498 [TRAINER_ISABELLE] = { +#line 13499 + .trainerName = _("ISABELLE"), +#line 13500 .trainerClass = TRAINER_CLASS_SWIMMER_F, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13501 .trainerPic = TRAINER_PIC_SWIMMER_F, - .trainerName = _("ISABELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Isabelle), - }, - + .encounterMusic_gender = +#line 13502 +F_TRAINER_FEMALE | +#line 13503 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13504 + .doubleBattle = FALSE, +#line 13505 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13507 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13509 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13508 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13511 [TRAINER_ANDRES_1] = { +#line 13512 + .trainerName = _("ANDRES"), +#line 13513 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13514 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("ANDRES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres1), - }, - + .encounterMusic_gender = +#line 13516 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13517 + .doubleBattle = FALSE, +#line 13518 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13520 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13522 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13521 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13524 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13526 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13525 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13528 [TRAINER_JOSUE] = { +#line 13529 + .trainerName = _("JOSUE"), +#line 13530 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13531 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("JOSUE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Josue), - }, - + .encounterMusic_gender = +#line 13533 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13534 + .doubleBattle = FALSE, +#line 13535 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13537 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13539 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13538 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13541 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13543 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13542 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13545 [TRAINER_CAMRON] = { +#line 13546 + .trainerName = _("CAMRON"), +#line 13547 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13548 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("CAMRON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Camron), - }, - + .encounterMusic_gender = +#line 13550 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 13551 + .doubleBattle = FALSE, +#line 13552 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13554 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13556 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13555 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13558 [TRAINER_CORY_1] = { +#line 13559 + .trainerName = _("CORY"), +#line 13560 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13561 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("CORY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory1), - }, - + .encounterMusic_gender = +#line 13563 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13564 + .doubleBattle = FALSE, +#line 13565 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13567 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13569 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13568 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13571 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13573 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13572 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13575 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13577 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13576 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13579 [TRAINER_CAROLINA] = { +#line 13580 + .trainerName = _("CAROLINA"), +#line 13581 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13582 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CAROLINA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 13583 +F_TRAINER_FEMALE | +#line 13584 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13585 + .items = { ITEM_HYPER_POTION }, +#line 13586 + .doubleBattle = FALSE, +#line 13587 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Carolina), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 13589 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13591 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13590 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13593 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13595 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13594 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13597 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13599 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 13598 + .lvl = 24, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13601 [TRAINER_ELIJAH] = { +#line 13602 + .trainerName = _("ELIJAH"), +#line 13603 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13604 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("ELIJAH"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Elijah), - }, - + .encounterMusic_gender = +#line 13606 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13607 + .doubleBattle = FALSE, +#line 13608 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13610 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13612 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13611 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13614 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13616 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13615 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13618 [TRAINER_CELIA] = { +#line 13619 + .trainerName = _("CELIA"), +#line 13620 .trainerClass = TRAINER_CLASS_PICNICKER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13621 .trainerPic = TRAINER_PIC_PICNICKER, - .trainerName = _("CELIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Celia), - }, - + .encounterMusic_gender = +#line 13622 +F_TRAINER_FEMALE | +#line 13623 + TRAINER_ENCOUNTER_MUSIC_GIRL, +#line 13624 + .doubleBattle = FALSE, +#line 13625 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13627 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13629 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13628 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13631 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13633 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13632 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13635 [TRAINER_BRYAN] = { +#line 13636 + .trainerName = _("BRYAN"), +#line 13637 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13638 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("BRYAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bryan), - }, - + .encounterMusic_gender = +#line 13640 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13641 + .doubleBattle = FALSE, +#line 13642 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13644 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13646 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13645 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13648 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13650 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13649 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13652 [TRAINER_BRANDEN] = { +#line 13653 + .trainerName = _("BRANDEN"), +#line 13654 .trainerClass = TRAINER_CLASS_CAMPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13655 .trainerPic = TRAINER_PIC_CAMPER, - .trainerName = _("BRANDEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Branden), - }, - + .encounterMusic_gender = +#line 13657 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13658 + .doubleBattle = FALSE, +#line 13659 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13661 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13663 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13662 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13665 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13667 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13666 + .lvl = 22, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13669 [TRAINER_BRYANT] = { +#line 13670 + .trainerName = _("BRYANT"), +#line 13671 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13672 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("BRYANT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Bryant), - }, - + .encounterMusic_gender = +#line 13674 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13675 + .doubleBattle = FALSE, +#line 13676 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13678 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13680 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13679 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13682 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13684 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13683 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13686 [TRAINER_SHAYLA] = { +#line 13687 + .trainerName = _("SHAYLA"), +#line 13688 .trainerClass = TRAINER_CLASS_AROMA_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13689 .trainerPic = TRAINER_PIC_AROMA_LADY, - .trainerName = _("SHAYLA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Shayla), - }, - + .encounterMusic_gender = +#line 13690 +F_TRAINER_FEMALE | +#line 13691 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13692 + .doubleBattle = FALSE, +#line 13693 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13695 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13697 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13696 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13699 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13701 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13700 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13703 [TRAINER_KYRA] = { +#line 13704 + .trainerName = _("KYRA"), +#line 13705 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13706 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("KYRA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Kyra), - }, - + .encounterMusic_gender = +#line 13707 +F_TRAINER_FEMALE | +#line 13708 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13709 + .doubleBattle = FALSE, +#line 13710 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13712 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13714 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13713 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13716 + .species = SPECIES_DODRIO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13718 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13717 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13720 [TRAINER_JAIDEN] = { +#line 13721 + .trainerName = _("JAIDEN"), +#line 13722 .trainerClass = TRAINER_CLASS_NINJA_BOY, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13723 .trainerPic = TRAINER_PIC_NINJA_BOY, - .trainerName = _("JAIDEN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Jaiden), - }, - + .encounterMusic_gender = +#line 13725 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13726 + .doubleBattle = FALSE, +#line 13727 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13729 + .species = SPECIES_NINJASK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13731 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13730 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13733 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13735 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13734 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13737 [TRAINER_ALIX] = { +#line 13738 + .trainerName = _("ALIX"), +#line 13739 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13740 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("ALIX"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Alix), - }, - + .encounterMusic_gender = +#line 13741 +F_TRAINER_FEMALE | +#line 13742 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13743 + .doubleBattle = FALSE, +#line 13744 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13746 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13748 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13747 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13750 + .species = SPECIES_KIRLIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13752 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13751 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13754 [TRAINER_HELENE] = { +#line 13755 + .trainerName = _("HELENE"), +#line 13756 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13757 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("HELENE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Helene), - }, - + .encounterMusic_gender = +#line 13758 +F_TRAINER_FEMALE | +#line 13759 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13760 + .doubleBattle = FALSE, +#line 13761 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13763 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13765 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13764 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13767 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13769 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13768 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13771 [TRAINER_MARLENE] = - { - .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, - .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("MARLENE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Marlene), - }, - + { +#line 13772 + .trainerName = _("MARLENE"), +#line 13773 + .trainerClass = TRAINER_CLASS_PSYCHIC, +#line 13774 + .trainerPic = TRAINER_PIC_PSYCHIC_F, + .encounterMusic_gender = +#line 13775 +F_TRAINER_FEMALE | +#line 13776 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13777 + .doubleBattle = FALSE, +#line 13778 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13780 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13782 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13781 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13784 + .species = SPECIES_SPOINK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13786 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13785 + .lvl = 18, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13788 [TRAINER_DEVAN] = { +#line 13789 + .trainerName = _("DEVAN"), +#line 13790 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13791 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("DEVAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Devan), - }, - + .encounterMusic_gender = +#line 13793 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13794 + .doubleBattle = FALSE, +#line 13795 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13797 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13799 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13798 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13801 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13803 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13802 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13805 [TRAINER_JOHNSON] = { +#line 13806 + .trainerName = _("JOHNSON"), +#line 13807 .trainerClass = TRAINER_CLASS_YOUNGSTER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13808 .trainerPic = TRAINER_PIC_YOUNGSTER, - .trainerName = _("JOHNSON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Johnson), - }, - + .encounterMusic_gender = +#line 13810 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13811 + .doubleBattle = FALSE, +#line 13812 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13814 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13816 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13815 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13818 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13820 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13819 + .lvl = 8, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13822 [TRAINER_MELINA] = { +#line 13823 + .trainerName = _("MELINA"), +#line 13824 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13825 .trainerPic = TRAINER_PIC_RUNNING_TRIATHLETE_F, - .trainerName = _("MELINA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Melina), - }, - + .encounterMusic_gender = +#line 13826 +F_TRAINER_FEMALE | +#line 13827 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13828 + .doubleBattle = FALSE, +#line 13829 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13831 + .species = SPECIES_DODUO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13833 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13832 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13835 [TRAINER_BRANDI] = { +#line 13836 + .trainerName = _("BRANDI"), +#line 13837 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13838 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("BRANDI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Brandi), - }, - + .encounterMusic_gender = +#line 13839 +F_TRAINER_FEMALE | +#line 13840 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13841 + .doubleBattle = FALSE, +#line 13842 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13844 + .species = SPECIES_RALTS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13846 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13845 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13848 [TRAINER_AISHA] = { +#line 13849 + .trainerName = _("AISHA"), +#line 13850 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13851 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("AISHA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Aisha), - }, - + .encounterMusic_gender = +#line 13852 +F_TRAINER_FEMALE | +#line 13853 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13854 + .doubleBattle = FALSE, +#line 13855 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13857 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13859 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13858 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13861 [TRAINER_MAKAYLA] = { +#line 13862 + .trainerName = _("MAKAYLA"), +#line 13863 .trainerClass = TRAINER_CLASS_EXPERT, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13864 .trainerPic = TRAINER_PIC_EXPERT_F, - .trainerName = _("MAKAYLA"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 13865 +F_TRAINER_FEMALE | +#line 13866 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13867 + .items = { ITEM_HYPER_POTION }, +#line 13868 + .doubleBattle = FALSE, +#line 13869 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Makayla), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13871 + .species = SPECIES_ROSELIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13873 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13872 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13875 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13877 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13876 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13879 [TRAINER_FABIAN] = { +#line 13880 + .trainerName = _("FABIAN"), +#line 13881 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13882 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FABIAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fabian), - }, - + .encounterMusic_gender = +#line 13884 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13885 + .doubleBattle = FALSE, +#line 13886 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13888 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13890 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13889 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13892 [TRAINER_DAYTON] = { +#line 13893 + .trainerName = _("DAYTON"), +#line 13894 .trainerClass = TRAINER_CLASS_KINDLER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13895 .trainerPic = TRAINER_PIC_KINDLER, - .trainerName = _("DAYTON"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Dayton), - }, - + .encounterMusic_gender = +#line 13897 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 13898 + .doubleBattle = FALSE, +#line 13899 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13901 + .species = SPECIES_SLUGMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13903 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13902 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13905 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13907 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13906 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13909 [TRAINER_RACHEL] = { +#line 13910 + .trainerName = _("RACHEL"), +#line 13911 .trainerClass = TRAINER_CLASS_PARASOL_LADY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13912 .trainerPic = TRAINER_PIC_PARASOL_LADY, - .trainerName = _("RACHEL"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Rachel), - }, - + .encounterMusic_gender = +#line 13913 +F_TRAINER_FEMALE | +#line 13914 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 13915 + .doubleBattle = FALSE, +#line 13916 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13918 + .species = SPECIES_GOLDEEN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13920 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13919 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13922 [TRAINER_LEONEL] = { +#line 13923 + .trainerName = _("LEONEL"), +#line 13924 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13925 .trainerPic = TRAINER_PIC_COOLTRAINER_M, - .trainerName = _("LEONEL"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 13927 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 13928 + .items = { ITEM_HYPER_POTION }, +#line 13929 + .doubleBattle = FALSE, +#line 13930 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Leonel), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 13932 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13934 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 13933 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 13935 + MOVE_THUNDER, + MOVE_QUICK_ATTACK, + MOVE_THUNDER_WAVE, + }, + }, + }, + }, +#line 13939 [TRAINER_CALLIE] = { +#line 13940 + .trainerName = _("CALLIE"), +#line 13941 .trainerClass = TRAINER_CLASS_BATTLE_GIRL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13942 .trainerPic = TRAINER_PIC_BATTLE_GIRL, - .trainerName = _("CALLIE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Callie), - }, - + .encounterMusic_gender = +#line 13943 +F_TRAINER_FEMALE | +#line 13944 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 13945 + .doubleBattle = FALSE, +#line 13946 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13948 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13950 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13949 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13952 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13954 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13953 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13956 [TRAINER_CALE] = { +#line 13957 + .trainerName = _("CALE"), +#line 13958 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13959 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("CALE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cale), - }, - + .encounterMusic_gender = +#line 13961 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 13962 + .doubleBattle = FALSE, +#line 13963 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 13965 + .species = SPECIES_DUSTOX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13967 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13966 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13969 + .species = SPECIES_BEAUTIFLY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13971 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 13970 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 13973 [TRAINER_MYLES] = { +#line 13974 + .trainerName = _("MYLES"), +#line 13975 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13976 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_M, - .trainerName = _("MYLES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Myles), - }, - + .encounterMusic_gender = +#line 13978 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 13979 + .doubleBattle = FALSE, +#line 13980 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 13982 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13984 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13983 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13986 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13988 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13987 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13990 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13992 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13991 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13994 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 13996 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13995 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 13998 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14000 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 13999 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14002 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14004 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14003 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 14006 [TRAINER_PAT] = { +#line 14007 + .trainerName = _("PAT"), +#line 14008 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14009 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("PAT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pat), - }, - + .encounterMusic_gender = +#line 14010 +F_TRAINER_FEMALE | +#line 14011 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14012 + .doubleBattle = FALSE, +#line 14013 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14015 + .species = SPECIES_POOCHYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14017 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14016 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14019 + .species = SPECIES_SHROOMISH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14021 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14020 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14023 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14025 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14024 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14027 + .species = SPECIES_MARILL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14029 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14028 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14031 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14033 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14032 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14035 + .species = SPECIES_GULPIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14037 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 14036 + .lvl = 25, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 14039 [TRAINER_CRISTIN_1] = { +#line 14040 + .trainerName = _("CRISTIN"), +#line 14041 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 14042 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 14043 +F_TRAINER_FEMALE | +#line 14044 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 14045 + .items = { ITEM_HYPER_POTION }, +#line 14046 + .doubleBattle = FALSE, +#line 14047 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin1), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14049 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14051 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 14050 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14053 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14055 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 14054 + .lvl = 29, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 14057 [TRAINER_MAY_RUSTBORO_TREECKO] = { +#line 14058 + .trainerName = _("MAY"), +#line 14059 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14060 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 14061 +F_TRAINER_FEMALE | +#line 14062 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14063 + .doubleBattle = FALSE, +#line 14064 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRustboroTreecko), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14066 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14068 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 14067 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14070 + .species = SPECIES_TORCHIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14072 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 14071 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 14074 [TRAINER_MAY_RUSTBORO_TORCHIC] = { +#line 14075 + .trainerName = _("MAY"), +#line 14076 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14077 .trainerPic = TRAINER_PIC_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 14078 +F_TRAINER_FEMALE | +#line 14079 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14080 + .doubleBattle = FALSE, +#line 14081 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_MayRustboroTorchic), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 14083 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14085 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 14084 + .lvl = 13, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 14087 + .species = SPECIES_MUDKIP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14089 + .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), +#line 14088 + .lvl = 15, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 14091 [TRAINER_ROXANNE_2] = { +#line 14092 + .trainerName = _("ROXANNE"), +#line 14093 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14094 .trainerPic = TRAINER_PIC_LEADER_ROXANNE, - .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14095 +F_TRAINER_FEMALE | +#line 14096 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14097 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14098 .doubleBattle = TRUE, +#line 14099 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne2), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14101 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14103 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14102 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14104 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_MAGNITUDE, + MOVE_EXPLOSION, + }, + }, + { +#line 14109 + .species = SPECIES_KABUTO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14109 + .heldItem = ITEM_SITRUS_BERRY, +#line 14111 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14110 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14112 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14117 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14119 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14118 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14120 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14125 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14125 + .heldItem = ITEM_SITRUS_BERRY, +#line 14127 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14126 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14128 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, + }, +#line 14133 [TRAINER_ROXANNE_3] = { +#line 14134 + .trainerName = _("ROXANNE"), +#line 14135 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14136 .trainerPic = TRAINER_PIC_LEADER_ROXANNE, - .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14137 +F_TRAINER_FEMALE | +#line 14138 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14139 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14140 .doubleBattle = TRUE, +#line 14141 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14143 + .species = SPECIES_OMANYTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14145 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14144 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14146 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14151 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14153 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14152 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14154 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_MAGNITUDE, + MOVE_EXPLOSION, + }, + }, + { +#line 14159 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14159 + .heldItem = ITEM_SITRUS_BERRY, +#line 14161 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14160 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14162 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14167 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14169 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14168 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14170 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14175 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14175 + .heldItem = ITEM_SITRUS_BERRY, +#line 14177 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14176 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14178 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, + }, +#line 14183 [TRAINER_ROXANNE_4] = { +#line 14184 + .trainerName = _("ROXANNE"), +#line 14185 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14186 .trainerPic = TRAINER_PIC_LEADER_ROXANNE, - .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14187 +F_TRAINER_FEMALE | +#line 14188 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14189 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14190 .doubleBattle = TRUE, +#line 14191 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne4), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14193 + .species = SPECIES_OMASTAR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14195 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14194 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14196 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14201 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14203 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14202 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14204 + MOVE_PROTECT, + MOVE_ROLLOUT, + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + }, + }, + { +#line 14209 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14209 + .heldItem = ITEM_SITRUS_BERRY, +#line 14211 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14210 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14212 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14217 + .species = SPECIES_ONIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14219 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14218 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14220 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14225 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14225 + .heldItem = ITEM_SITRUS_BERRY, +#line 14227 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14226 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14228 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, + }, +#line 14233 [TRAINER_ROXANNE_5] = { +#line 14234 + .trainerName = _("ROXANNE"), +#line 14235 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14236 .trainerPic = TRAINER_PIC_LEADER_ROXANNE, - .trainerName = _("ROXANNE"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14237 +F_TRAINER_FEMALE | +#line 14238 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14239 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14240 .doubleBattle = TRUE, +#line 14241 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Roxanne5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14243 + .species = SPECIES_AERODACTYL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14245 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14244 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14246 + MOVE_ROCK_SLIDE, + MOVE_HYPER_BEAM, + MOVE_SUPERSONIC, + MOVE_PROTECT, + }, + }, + { +#line 14251 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14253 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14252 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14254 + MOVE_FOCUS_PUNCH, + MOVE_ROLLOUT, + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + }, + }, + { +#line 14259 + .species = SPECIES_OMASTAR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14261 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14260 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14262 + MOVE_PROTECT, + MOVE_ICE_BEAM, + MOVE_ROCK_SLIDE, + MOVE_SURF, + }, + }, + { +#line 14267 + .species = SPECIES_KABUTOPS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14267 + .heldItem = ITEM_SITRUS_BERRY, +#line 14269 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14268 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14270 + MOVE_SWORDS_DANCE, + MOVE_ICE_BEAM, + MOVE_SURF, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14275 + .species = SPECIES_STEELIX, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14277 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14276 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14278 + MOVE_IRON_TAIL, + MOVE_EXPLOSION, + MOVE_ROAR, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14283 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14283 + .heldItem = ITEM_SITRUS_BERRY, +#line 14285 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14284 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14286 + MOVE_DOUBLE_TEAM, + MOVE_EXPLOSION, + MOVE_PROTECT, + MOVE_ROCK_SLIDE, + }, + }, + }, + }, +#line 14291 [TRAINER_BRAWLY_2] = { +#line 14292 + .trainerName = _("BRAWLY"), +#line 14293 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14294 .trainerPic = TRAINER_PIC_LEADER_BRAWLY, - .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14296 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14297 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14298 .doubleBattle = TRUE, +#line 14299 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly2), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14301 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14301 + .heldItem = ITEM_SITRUS_BERRY, +#line 14303 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14302 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14304 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14309 + .species = SPECIES_MEDITITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14311 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14310 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14312 + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14317 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14319 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14318 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14320 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14325 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14325 + .heldItem = ITEM_SITRUS_BERRY, +#line 14327 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14326 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14328 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 14333 [TRAINER_BRAWLY_3] = { +#line 14334 + .trainerName = _("BRAWLY"), +#line 14335 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14336 .trainerPic = TRAINER_PIC_LEADER_BRAWLY, - .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14338 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14339 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14340 .doubleBattle = TRUE, +#line 14341 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly3), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14343 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14343 + .heldItem = ITEM_SITRUS_BERRY, +#line 14345 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14344 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14346 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14351 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14353 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14352 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14354 + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14359 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14361 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14360 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14362 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14367 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14367 + .heldItem = ITEM_SITRUS_BERRY, +#line 14369 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14368 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14370 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 14375 [TRAINER_BRAWLY_4] = { +#line 14376 + .trainerName = _("BRAWLY"), +#line 14377 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14378 .trainerPic = TRAINER_PIC_LEADER_BRAWLY, - .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14380 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14381 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14382 .doubleBattle = TRUE, +#line 14383 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly4), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14385 + .species = SPECIES_HITMONCHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14387 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14386 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14388 + MOVE_SKY_UPPERCUT, + MOVE_PROTECT, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + }, + }, + { +#line 14393 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14393 + .heldItem = ITEM_SITRUS_BERRY, +#line 14395 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14394 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14396 + MOVE_KARATE_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14401 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14403 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14402 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14404 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_PSYCHIC, + }, + }, + { +#line 14409 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14411 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14410 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14412 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14417 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14417 + .heldItem = ITEM_SITRUS_BERRY, +#line 14419 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14418 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14420 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 14425 [TRAINER_BRAWLY_5] = { +#line 14426 + .trainerName = _("BRAWLY"), +#line 14427 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14428 .trainerPic = TRAINER_PIC_LEADER_BRAWLY, - .trainerName = _("BRAWLY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14430 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14431 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14432 .doubleBattle = TRUE, +#line 14433 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brawly5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14435 + .species = SPECIES_HITMONLEE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14437 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14436 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14438 + MOVE_MEGA_KICK, + MOVE_FOCUS_PUNCH, + MOVE_EARTHQUAKE, + MOVE_BULK_UP, + }, + }, + { +#line 14443 + .species = SPECIES_HITMONCHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14445 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14444 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14446 + MOVE_SKY_UPPERCUT, + MOVE_PROTECT, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + }, + }, + { +#line 14451 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14451 + .heldItem = ITEM_SITRUS_BERRY, +#line 14453 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14452 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14454 + MOVE_CROSS_CHOP, + MOVE_ROCK_SLIDE, + MOVE_FOCUS_PUNCH, + MOVE_BULK_UP, + }, + }, + { +#line 14459 + .species = SPECIES_MEDICHAM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14461 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14460 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14462 + MOVE_FOCUS_PUNCH, + MOVE_LIGHT_SCREEN, + MOVE_REFLECT, + MOVE_PSYCHIC, + }, + }, + { +#line 14467 + .species = SPECIES_HITMONTOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14469 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14468 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14470 + MOVE_PURSUIT, + MOVE_COUNTER, + MOVE_PROTECT, + MOVE_TRIPLE_KICK, + }, + }, + { +#line 14475 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14475 + .heldItem = ITEM_SITRUS_BERRY, +#line 14477 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14476 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14478 + MOVE_FAKE_OUT, + MOVE_FOCUS_PUNCH, + MOVE_BELLY_DRUM, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 14483 [TRAINER_WATTSON_2] = { +#line 14484 + .trainerName = _("WATTSON"), +#line 14485 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14486 .trainerPic = TRAINER_PIC_LEADER_WATTSON, - .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14488 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14489 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14490 .doubleBattle = TRUE, +#line 14491 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson2), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14493 + .species = SPECIES_MAREEP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14495 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14494 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14496 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14501 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14503 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14502 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14504 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14509 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14509 + .heldItem = ITEM_SITRUS_BERRY, +#line 14511 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14510 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14512 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14517 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14517 + .heldItem = ITEM_SITRUS_BERRY, +#line 14519 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14518 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14520 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, + }, +#line 14525 [TRAINER_WATTSON_3] = { +#line 14526 + .trainerName = _("WATTSON"), +#line 14527 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14528 .trainerPic = TRAINER_PIC_LEADER_WATTSON, - .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14530 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14531 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14532 .doubleBattle = TRUE, +#line 14533 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14535 + .species = SPECIES_PIKACHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14537 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14536 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14538 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_SHOCK_WAVE, + }, + }, + { +#line 14543 + .species = SPECIES_FLAAFFY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14545 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14544 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14546 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14551 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14553 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14552 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14554 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14559 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14559 + .heldItem = ITEM_SITRUS_BERRY, +#line 14561 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14560 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14562 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14567 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14567 + .heldItem = ITEM_SITRUS_BERRY, +#line 14569 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14568 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14570 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, + }, +#line 14575 [TRAINER_WATTSON_4] = { +#line 14576 + .trainerName = _("WATTSON"), +#line 14577 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14578 .trainerPic = TRAINER_PIC_LEADER_WATTSON, - .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14580 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14581 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14582 .doubleBattle = TRUE, +#line 14583 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson4), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14585 + .species = SPECIES_RAICHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14587 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14586 + .lvl = 44, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14588 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + }, + }, + { +#line 14593 + .species = SPECIES_AMPHAROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14595 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14594 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14596 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14601 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14603 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14602 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14604 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14609 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14609 + .heldItem = ITEM_SITRUS_BERRY, +#line 14611 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14610 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14612 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14617 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14617 + .heldItem = ITEM_SITRUS_BERRY, +#line 14619 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14618 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14620 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, + }, +#line 14625 [TRAINER_WATTSON_5] = { +#line 14626 + .trainerName = _("WATTSON"), +#line 14627 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14628 .trainerPic = TRAINER_PIC_LEADER_WATTSON, - .trainerName = _("WATTSON"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14630 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14631 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14632 .doubleBattle = TRUE, +#line 14633 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Wattson5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14635 + .species = SPECIES_ELECTABUZZ, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14637 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14636 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14638 + MOVE_SWIFT, + MOVE_FOCUS_PUNCH, + MOVE_THUNDER_PUNCH, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14643 + .species = SPECIES_RAICHU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14645 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14644 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14646 + MOVE_THUNDER, + MOVE_SLAM, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + }, + }, + { +#line 14651 + .species = SPECIES_AMPHAROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14653 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14652 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14654 + MOVE_THUNDER, + MOVE_PROTECT, + MOVE_THUNDER_WAVE, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 14659 + .species = SPECIES_ELECTRODE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14661 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14660 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14662 + MOVE_ROLLOUT, + MOVE_THUNDER, + MOVE_EXPLOSION, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14667 + .species = SPECIES_MAGNETON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14667 + .heldItem = ITEM_SITRUS_BERRY, +#line 14669 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14668 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14670 + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_THUNDER, + MOVE_RAIN_DANCE, + }, + }, + { +#line 14675 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14675 + .heldItem = ITEM_SITRUS_BERRY, +#line 14677 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14676 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14678 + MOVE_BITE, + MOVE_THUNDER_WAVE, + MOVE_THUNDER, + MOVE_PROTECT, + }, + }, + }, + }, +#line 14683 [TRAINER_FLANNERY_2] = { +#line 14684 + .trainerName = _("FLANNERY"), +#line 14685 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14686 .trainerPic = TRAINER_PIC_LEADER_FLANNERY, - .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14687 +F_TRAINER_FEMALE | +#line 14688 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14689 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14690 .doubleBattle = TRUE, +#line 14691 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery2), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14693 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14693 + .heldItem = ITEM_WHITE_HERB, +#line 14695 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14694 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14696 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14701 + .species = SPECIES_PONYTA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14703 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14702 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14704 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14709 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14709 + .heldItem = ITEM_WHITE_HERB, +#line 14711 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14710 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14712 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14717 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14717 + .heldItem = ITEM_WHITE_HERB, +#line 14719 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14718 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14720 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 14725 [TRAINER_FLANNERY_3] = { +#line 14726 + .trainerName = _("FLANNERY"), +#line 14727 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14728 .trainerPic = TRAINER_PIC_LEADER_FLANNERY, - .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14729 +F_TRAINER_FEMALE | +#line 14730 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14731 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14732 .doubleBattle = TRUE, +#line 14733 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14735 + .species = SPECIES_GROWLITHE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14737 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14736 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14738 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_ROAR, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14743 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14743 + .heldItem = ITEM_WHITE_HERB, +#line 14745 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14744 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14746 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14751 + .species = SPECIES_PONYTA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14753 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14752 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14754 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14759 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14759 + .heldItem = ITEM_WHITE_HERB, +#line 14761 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14760 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14762 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14767 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14767 + .heldItem = ITEM_WHITE_HERB, +#line 14769 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14768 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14770 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 14775 [TRAINER_FLANNERY_4] = { +#line 14776 + .trainerName = _("FLANNERY"), +#line 14777 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14778 .trainerPic = TRAINER_PIC_LEADER_FLANNERY, - .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14779 +F_TRAINER_FEMALE | +#line 14780 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14781 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14782 .doubleBattle = TRUE, +#line 14783 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery4), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14785 + .species = SPECIES_HOUNDOUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14787 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14786 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14788 + MOVE_ROAR, + MOVE_SOLAR_BEAM, + MOVE_TAUNT, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14793 + .species = SPECIES_GROWLITHE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14795 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14794 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14796 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_SUNNY_DAY, + MOVE_ROAR, + }, + }, + { +#line 14801 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14801 + .heldItem = ITEM_WHITE_HERB, +#line 14803 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14802 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14804 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14809 + .species = SPECIES_RAPIDASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14811 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14810 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14812 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14817 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14817 + .heldItem = ITEM_WHITE_HERB, +#line 14819 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14818 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14820 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14825 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14825 + .heldItem = ITEM_WHITE_HERB, +#line 14827 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14826 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14828 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 14833 [TRAINER_FLANNERY_5] = { +#line 14834 + .trainerName = _("FLANNERY"), +#line 14835 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14836 .trainerPic = TRAINER_PIC_LEADER_FLANNERY, - .trainerName = _("FLANNERY"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14837 +F_TRAINER_FEMALE | +#line 14838 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 14839 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14840 .doubleBattle = TRUE, +#line 14841 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Flannery5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 14843 + .species = SPECIES_ARCANINE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14845 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14844 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14846 + MOVE_HELPING_HAND, + MOVE_FLAMETHROWER, + MOVE_SUNNY_DAY, + MOVE_ROAR, + }, + }, + { +#line 14851 + .species = SPECIES_MAGCARGO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14851 + .heldItem = ITEM_WHITE_HERB, +#line 14853 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14852 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14854 + MOVE_OVERHEAT, + MOVE_ATTRACT, + MOVE_LIGHT_SCREEN, + MOVE_ROCK_SLIDE, + }, + }, + { +#line 14859 + .species = SPECIES_HOUNDOOM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14861 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14860 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14862 + MOVE_ROAR, + MOVE_SOLAR_BEAM, + MOVE_TAUNT, + MOVE_SUNNY_DAY, + }, + }, + { +#line 14867 + .species = SPECIES_RAPIDASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14869 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14868 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14870 + MOVE_FLAMETHROWER, + MOVE_ATTRACT, + MOVE_SOLAR_BEAM, + MOVE_BOUNCE, + }, + }, + { +#line 14875 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14875 + .heldItem = ITEM_WHITE_HERB, +#line 14877 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14876 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14878 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EARTHQUAKE, + MOVE_ATTRACT, + }, + }, + { +#line 14883 + .species = SPECIES_TORKOAL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14883 + .heldItem = ITEM_WHITE_HERB, +#line 14885 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14884 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14886 + MOVE_OVERHEAT, + MOVE_SUNNY_DAY, + MOVE_EXPLOSION, + MOVE_ATTRACT, + }, + }, + }, + }, +#line 14891 [TRAINER_NORMAN_2] = { +#line 14892 + .trainerName = _("NORMAN"), +#line 14893 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14894 .trainerPic = TRAINER_PIC_LEADER_NORMAN, - .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14896 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14897 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14898 .doubleBattle = TRUE, +#line 14899 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman2), - }, - + .partySize = 4, + .party = (const struct TrainerMon[]) + { + { +#line 14901 + .species = SPECIES_CHANSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14903 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14902 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14904 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14909 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14909 + .heldItem = ITEM_SITRUS_BERRY, +#line 14911 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14910 + .lvl = 42, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14912 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 14917 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14919 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14918 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14920 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 14925 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14925 + .heldItem = ITEM_SITRUS_BERRY, +#line 14927 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14926 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14928 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 14933 [TRAINER_NORMAN_3] = { +#line 14934 + .trainerName = _("NORMAN"), +#line 14935 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14936 .trainerPic = TRAINER_PIC_LEADER_NORMAN, - .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14938 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14939 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14940 .doubleBattle = TRUE, +#line 14941 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14943 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14943 + .heldItem = ITEM_SITRUS_BERRY, +#line 14945 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14944 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14946 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 14951 + .species = SPECIES_CHANSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14953 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14952 + .lvl = 47, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14954 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 14959 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14961 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14960 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14962 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 14967 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14969 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14968 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14970 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 14975 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14975 + .heldItem = ITEM_SITRUS_BERRY, +#line 14977 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14976 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14978 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 14983 [TRAINER_NORMAN_4] = { +#line 14984 + .trainerName = _("NORMAN"), +#line 14985 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14986 .trainerPic = TRAINER_PIC_LEADER_NORMAN, - .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 14988 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 14989 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 14990 .doubleBattle = TRUE, +#line 14991 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman4), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 14993 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 14993 + .heldItem = ITEM_SITRUS_BERRY, +#line 14995 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 14994 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 14996 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 15001 + .species = SPECIES_BLISSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15003 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15002 + .lvl = 52, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15004 + MOVE_LIGHT_SCREEN, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 15009 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15011 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15010 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15012 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 15017 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15019 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15018 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15020 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 15025 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15025 + .heldItem = ITEM_SITRUS_BERRY, +#line 15027 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15026 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15028 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 15033 [TRAINER_NORMAN_5] = { +#line 15034 + .trainerName = _("NORMAN"), +#line 15035 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15036 .trainerPic = TRAINER_PIC_LEADER_NORMAN, - .trainerName = _("NORMAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15038 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15039 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15040 .doubleBattle = TRUE, +#line 15041 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Norman5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15043 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15043 + .heldItem = ITEM_SITRUS_BERRY, +#line 15045 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15044 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15046 + MOVE_BLIZZARD, + MOVE_SHADOW_BALL, + MOVE_DOUBLE_EDGE, + MOVE_FIRE_BLAST, + }, + }, + { +#line 15051 + .species = SPECIES_BLISSEY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15053 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15052 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15054 + MOVE_PROTECT, + MOVE_SING, + MOVE_SKILL_SWAP, + MOVE_FOCUS_PUNCH, + }, + }, + { +#line 15059 + .species = SPECIES_KANGASKHAN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15061 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15060 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15062 + MOVE_FAKE_OUT, + MOVE_DIZZY_PUNCH, + MOVE_ENDURE, + MOVE_REVERSAL, + }, + }, + { +#line 15067 + .species = SPECIES_TAUROS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15069 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15068 + .lvl = 57, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15070 + MOVE_TAKE_DOWN, + MOVE_PROTECT, + MOVE_FIRE_BLAST, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15075 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15077 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15076 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15078 + MOVE_TEETER_DANCE, + MOVE_SKILL_SWAP, + MOVE_FACADE, + MOVE_HYPNOSIS, + }, + }, + { +#line 15083 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15083 + .heldItem = ITEM_SITRUS_BERRY, +#line 15085 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15084 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15086 + MOVE_HYPER_BEAM, + MOVE_FLAMETHROWER, + MOVE_THUNDERBOLT, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 15091 [TRAINER_WINONA_2] = { +#line 15092 + .trainerName = _("WINONA"), +#line 15093 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15094 .trainerPic = TRAINER_PIC_LEADER_WINONA, - .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15095 +F_TRAINER_FEMALE | +#line 15096 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15097 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15098 .doubleBattle = TRUE, +#line 15099 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona2), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15101 + .species = SPECIES_DRATINI, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15101 + .heldItem = ITEM_SITRUS_BERRY, +#line 15103 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15102 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15104 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15109 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15111 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15110 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15112 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15117 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15119 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15118 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15120 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15125 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15127 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15126 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15128 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15133 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15133 + .heldItem = ITEM_CHESTO_BERRY, +#line 15135 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15134 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15136 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 15141 [TRAINER_WINONA_3] = { +#line 15142 + .trainerName = _("WINONA"), +#line 15143 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15144 .trainerPic = TRAINER_PIC_LEADER_WINONA, - .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15145 +F_TRAINER_FEMALE | +#line 15146 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15147 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15148 .doubleBattle = TRUE, +#line 15149 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona3), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15151 + .species = SPECIES_HOOTHOOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15153 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15152 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15154 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15159 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15161 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15160 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15162 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15167 + .species = SPECIES_DRAGONAIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15167 + .heldItem = ITEM_SITRUS_BERRY, +#line 15169 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15168 + .lvl = 45, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15170 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15175 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15177 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15176 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15178 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15183 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15185 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15184 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15186 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15191 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15191 + .heldItem = ITEM_CHESTO_BERRY, +#line 15193 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15192 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15194 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 15199 [TRAINER_WINONA_4] = { +#line 15200 + .trainerName = _("WINONA"), +#line 15201 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15202 .trainerPic = TRAINER_PIC_LEADER_WINONA, - .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15203 +F_TRAINER_FEMALE | +#line 15204 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15205 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15206 .doubleBattle = TRUE, +#line 15207 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona4), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15209 + .species = SPECIES_NOCTOWL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15211 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15210 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15212 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15217 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15219 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15218 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15220 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15225 + .species = SPECIES_DRAGONAIR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15225 + .heldItem = ITEM_SITRUS_BERRY, +#line 15227 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15226 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15228 + MOVE_THUNDER_WAVE, + MOVE_THUNDERBOLT, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15233 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15235 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15234 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15236 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15241 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15243 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15242 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15244 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15249 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15249 + .heldItem = ITEM_CHESTO_BERRY, +#line 15251 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15250 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15252 + MOVE_AERIAL_ACE, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 15257 [TRAINER_WINONA_5] = { +#line 15258 + .trainerName = _("WINONA"), +#line 15259 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15260 .trainerPic = TRAINER_PIC_LEADER_WINONA, - .trainerName = _("WINONA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15261 +F_TRAINER_FEMALE | +#line 15262 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15263 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15264 .doubleBattle = TRUE, +#line 15265 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_RISKY, - .party = TRAINER_PARTY(sParty_Winona5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15267 + .species = SPECIES_NOCTOWL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15269 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15268 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15270 + MOVE_HYPNOSIS, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_DREAM_EATER, + }, + }, + { +#line 15275 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15277 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15276 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15278 + MOVE_SUNNY_DAY, + MOVE_AERIAL_ACE, + MOVE_SOLAR_BEAM, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15283 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15285 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15284 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15286 + MOVE_SURF, + MOVE_SUPERSONIC, + MOVE_PROTECT, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15291 + .species = SPECIES_DRAGONITE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15291 + .heldItem = ITEM_SITRUS_BERRY, +#line 15293 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15292 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15294 + MOVE_HYPER_BEAM, + MOVE_THUNDERBOLT, + MOVE_EARTHQUAKE, + MOVE_ICE_BEAM, + }, + }, + { +#line 15299 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15301 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15300 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15302 + MOVE_WHIRLWIND, + MOVE_SPIKES, + MOVE_STEEL_WING, + MOVE_AERIAL_ACE, + }, + }, + { +#line 15307 + .species = SPECIES_ALTARIA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15307 + .heldItem = ITEM_CHESTO_BERRY, +#line 15309 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15308 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15310 + MOVE_SKY_ATTACK, + MOVE_REST, + MOVE_DRAGON_DANCE, + MOVE_EARTHQUAKE, + }, + }, + }, + }, +#line 15315 [TRAINER_TATE_AND_LIZA_2] = { +#line 15316 + .trainerName = _("TATE&LIZA"), +#line 15317 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15318 .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, - .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15320 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15321 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15322 .doubleBattle = TRUE, +#line 15323 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza2), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15325 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15327 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15326 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15328 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15333 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15335 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15334 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15336 + MOVE_EARTHQUAKE, + MOVE_ANCIENT_POWER, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15341 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15341 + .heldItem = ITEM_CHESTO_BERRY, +#line 15343 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15342 + .lvl = 49, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15344 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15349 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15349 + .heldItem = ITEM_CHESTO_BERRY, +#line 15351 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15350 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15352 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15357 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15357 + .heldItem = ITEM_SITRUS_BERRY, +#line 15359 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15358 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15360 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, + }, +#line 15365 [TRAINER_TATE_AND_LIZA_3] = { +#line 15366 + .trainerName = _("TATE&LIZA"), +#line 15367 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15368 .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, - .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15370 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15371 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15372 .doubleBattle = TRUE, +#line 15373 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza3), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15375 + .species = SPECIES_DROWZEE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15377 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15376 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15378 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15383 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15385 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15384 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15386 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15391 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15393 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15392 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15394 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15399 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15399 + .heldItem = ITEM_CHESTO_BERRY, +#line 15401 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15400 + .lvl = 54, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15402 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15407 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15407 + .heldItem = ITEM_CHESTO_BERRY, +#line 15409 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15408 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15410 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15415 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15415 + .heldItem = ITEM_SITRUS_BERRY, +#line 15417 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15416 + .lvl = 55, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15418 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, + }, +#line 15423 [TRAINER_TATE_AND_LIZA_4] = { +#line 15424 + .trainerName = _("TATE&LIZA"), +#line 15425 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15426 .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, - .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15428 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15429 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15430 .doubleBattle = TRUE, +#line 15431 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza4), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15433 + .species = SPECIES_HYPNO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15435 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15434 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15436 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15441 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15443 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15442 + .lvl = 59, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15444 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15449 + .species = SPECIES_SLOWPOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15451 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15450 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15452 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15457 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15457 + .heldItem = ITEM_CHESTO_BERRY, +#line 15459 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15458 + .lvl = 59, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15460 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15465 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15465 + .heldItem = ITEM_CHESTO_BERRY, +#line 15467 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15466 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15468 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15473 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15473 + .heldItem = ITEM_SITRUS_BERRY, +#line 15475 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15474 + .lvl = 60, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15476 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, + }, +#line 15481 [TRAINER_TATE_AND_LIZA_5] = { +#line 15482 + .trainerName = _("TATE&LIZA"), +#line 15483 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15484 .trainerPic = TRAINER_PIC_LEADER_TATE_AND_LIZA, - .trainerName = _("TATE&LIZA"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15486 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 15487 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15488 .doubleBattle = TRUE, +#line 15489 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_TateAndLiza5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15491 + .species = SPECIES_HYPNO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15493 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15492 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15494 + MOVE_HYPNOSIS, + MOVE_DREAM_EATER, + MOVE_HEADBUTT, + MOVE_PROTECT, + }, + }, + { +#line 15499 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15501 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15500 + .lvl = 64, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15502 + MOVE_EARTHQUAKE, + MOVE_EXPLOSION, + MOVE_PSYCHIC, + MOVE_LIGHT_SCREEN, + }, + }, + { +#line 15507 + .species = SPECIES_SLOWKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15509 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15508 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15510 + MOVE_YAWN, + MOVE_PSYCHIC, + MOVE_CALM_MIND, + MOVE_PROTECT, + }, + }, + { +#line 15515 + .species = SPECIES_XATU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15515 + .heldItem = ITEM_CHESTO_BERRY, +#line 15517 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15516 + .lvl = 64, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15518 + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CONFUSE_RAY, + MOVE_CALM_MIND, + }, + }, + { +#line 15523 + .species = SPECIES_LUNATONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15523 + .heldItem = ITEM_CHESTO_BERRY, +#line 15525 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15524 + .lvl = 65, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15526 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_CALM_MIND, + }, + }, + { +#line 15531 + .species = SPECIES_SOLROCK, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15531 + .heldItem = ITEM_SITRUS_BERRY, +#line 15533 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15532 + .lvl = 65, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15534 + MOVE_SUNNY_DAY, + MOVE_SOLAR_BEAM, + MOVE_PSYCHIC, + MOVE_FLAMETHROWER, + }, + }, + }, + }, +#line 15539 [TRAINER_JUAN_2] = { +#line 15540 + .trainerName = _("JUAN"), +#line 15541 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15542 .trainerPic = TRAINER_PIC_LEADER_JUAN, - .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15544 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15545 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15546 .doubleBattle = TRUE, +#line 15547 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan2), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15549 + .species = SPECIES_POLIWAG, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15551 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15550 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15552 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15557 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15559 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15558 + .lvl = 46, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15560 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15565 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15567 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15566 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15568 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15573 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15573 + .heldItem = ITEM_CHESTO_BERRY, +#line 15575 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15574 + .lvl = 48, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15576 + MOVE_REST, + MOVE_CRABHAMMER, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15581 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15581 + .heldItem = ITEM_CHESTO_BERRY, +#line 15583 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15582 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15584 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, + }, +#line 15589 [TRAINER_JUAN_3] = { +#line 15590 + .trainerName = _("JUAN"), +#line 15591 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15592 .trainerPic = TRAINER_PIC_LEADER_JUAN, - .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15594 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15595 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15596 .doubleBattle = TRUE, +#line 15597 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan3), - }, - + .partySize = 5, + .party = (const struct TrainerMon[]) + { + { +#line 15599 + .species = SPECIES_POLIWHIRL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15601 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15600 + .lvl = 50, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15602 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15607 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15609 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15608 + .lvl = 51, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15610 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15615 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15617 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15616 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15618 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15623 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15623 + .heldItem = ITEM_CHESTO_BERRY, +#line 15625 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15624 + .lvl = 53, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15626 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15631 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15631 + .heldItem = ITEM_CHESTO_BERRY, +#line 15633 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15632 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15634 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, + }, +#line 15639 [TRAINER_JUAN_4] = { +#line 15640 + .trainerName = _("JUAN"), +#line 15641 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15642 .trainerPic = TRAINER_PIC_LEADER_JUAN, - .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15644 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15645 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15646 .doubleBattle = TRUE, +#line 15647 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan4), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15649 + .species = SPECIES_LAPRAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15651 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15650 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15652 + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + MOVE_ICE_BEAM, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15657 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15659 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15658 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15660 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15665 + .species = SPECIES_POLIWHIRL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15667 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15666 + .lvl = 56, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15668 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_PROTECT, + MOVE_HYDRO_PUMP, + }, + }, + { +#line 15673 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15675 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15674 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15676 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_ICE_BEAM, + }, + }, + { +#line 15681 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15681 + .heldItem = ITEM_CHESTO_BERRY, +#line 15683 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15682 + .lvl = 58, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15684 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15689 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15689 + .heldItem = ITEM_CHESTO_BERRY, +#line 15691 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15690 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15692 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, + }, +#line 15697 [TRAINER_JUAN_5] = { +#line 15698 + .trainerName = _("JUAN"), +#line 15699 .trainerClass = TRAINER_CLASS_LEADER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15700 .trainerPic = TRAINER_PIC_LEADER_JUAN, - .trainerName = _("JUAN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_NONE}, + .encounterMusic_gender = +#line 15702 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15703 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15704 .doubleBattle = TRUE, +#line 15705 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Juan5), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15707 + .species = SPECIES_LAPRAS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15709 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15708 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15710 + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + MOVE_ICE_BEAM, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15715 + .species = SPECIES_WHISCASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15717 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15716 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15718 + MOVE_RAIN_DANCE, + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_FISSURE, + }, + }, + { +#line 15723 + .species = SPECIES_POLITOED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15725 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15724 + .lvl = 61, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15726 + MOVE_HYPNOSIS, + MOVE_RAIN_DANCE, + MOVE_HYDRO_PUMP, + MOVE_PERISH_SONG, + }, + }, + { +#line 15731 + .species = SPECIES_WALREIN, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15733 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15732 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15734 + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_PROTECT, + MOVE_SHEER_COLD, + }, + }, + { +#line 15739 + .species = SPECIES_CRAWDAUNT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15739 + .heldItem = ITEM_CHESTO_BERRY, +#line 15741 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15740 + .lvl = 63, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15742 + MOVE_REST, + MOVE_GUILLOTINE, + MOVE_TAUNT, + MOVE_DOUBLE_TEAM, + }, + }, + { +#line 15747 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15747 + .heldItem = ITEM_CHESTO_BERRY, +#line 15749 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15748 + .lvl = 66, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15750 + MOVE_WATER_PULSE, + MOVE_DOUBLE_TEAM, + MOVE_ICE_BEAM, + MOVE_REST, + }, + }, + }, + }, +#line 15755 [TRAINER_ANGELO] = { +#line 15756 + .trainerName = _("ANGELO"), +#line 15757 .trainerClass = TRAINER_CLASS_BUG_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 15758 .trainerPic = TRAINER_PIC_BUG_MANIAC, - .trainerName = _("ANGELO"), - .items = {}, + .encounterMusic_gender = +#line 15760 + TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, +#line 15761 .doubleBattle = FALSE, +#line 15762 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Angelo), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 15764 + .species = SPECIES_ILLUMISE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15766 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 15765 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15767 + MOVE_SHOCK_WAVE, + MOVE_QUICK_ATTACK, + MOVE_CHARM, + }, + }, + { +#line 15771 + .species = SPECIES_VOLBEAT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15773 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 15772 + .lvl = 17, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15774 + MOVE_SHOCK_WAVE, + MOVE_QUICK_ATTACK, + MOVE_CONFUSE_RAY, + }, + }, + }, + }, +#line 15778 [TRAINER_DARIUS] = { +#line 15779 + .trainerName = _("DARIUS"), +#line 15780 .trainerClass = TRAINER_CLASS_BIRD_KEEPER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_COOL, +#line 15781 .trainerPic = TRAINER_PIC_BIRD_KEEPER, - .trainerName = _("DARIUS"), - .items = {}, + .encounterMusic_gender = +#line 15783 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 15784 .doubleBattle = FALSE, +#line 15785 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Darius), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15787 + .species = SPECIES_TROPIUS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15789 + .iv = TRAINER_PARTY_IVS(24, 24, 24, 24, 24, 24), +#line 15788 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15791 [TRAINER_STEVEN] = { +#line 15792 + .trainerName = _("STEVEN"), +#line 15793 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15794 .trainerPic = TRAINER_PIC_STEVEN, - .trainerName = _("STEVEN"), - .items = {ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 15796 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15797 + .items = { ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE, ITEM_FULL_RESTORE }, +#line 15798 + .doubleBattle = FALSE, +#line 15799 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Steven), - }, - + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 15801 + .species = SPECIES_SKARMORY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15803 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15802 + .lvl = 77, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15804 + MOVE_TOXIC, + MOVE_AERIAL_ACE, + MOVE_SPIKES, + MOVE_STEEL_WING, + }, + }, + { +#line 15809 + .species = SPECIES_CLAYDOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15811 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15810 + .lvl = 75, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15812 + MOVE_REFLECT, + MOVE_LIGHT_SCREEN, + MOVE_ANCIENT_POWER, + MOVE_EARTHQUAKE, + }, + }, + { +#line 15817 + .species = SPECIES_AGGRON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15819 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15818 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15820 + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_SOLAR_BEAM, + MOVE_DRAGON_CLAW, + }, + }, + { +#line 15825 + .species = SPECIES_CRADILY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15827 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15826 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15828 + MOVE_GIGA_DRAIN, + MOVE_ANCIENT_POWER, + MOVE_INGRAIN, + MOVE_CONFUSE_RAY, + }, + }, + { +#line 15833 + .species = SPECIES_ARMALDO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15835 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15834 + .lvl = 76, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15836 + MOVE_WATER_PULSE, + MOVE_ANCIENT_POWER, + MOVE_AERIAL_ACE, + MOVE_SLASH, + }, + }, + { +#line 15841 + .species = SPECIES_METAGROSS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15841 + .heldItem = ITEM_SITRUS_BERRY, +#line 15843 + .iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31), +#line 15842 + .lvl = 78, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + .moves = { +#line 15844 + MOVE_EARTHQUAKE, + MOVE_PSYCHIC, + MOVE_METEOR_MASH, + MOVE_SHADOW_BALL, + }, + }, + }, + }, +#line 15849 [TRAINER_ANABEL] = { +#line 15850 + .trainerName = _("ANABEL"), +#line 15851 .trainerClass = TRAINER_CLASS_SALON_MAIDEN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15852 .trainerPic = TRAINER_PIC_SALON_MAIDEN_ANABEL, - .trainerName = _("ANABEL"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 15853 +F_TRAINER_FEMALE | +#line 15854 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15855 + .doubleBattle = FALSE, +#line 15856 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Anabel), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15858 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15860 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15859 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15862 [TRAINER_TUCKER] = { +#line 15863 + .trainerName = _("TUCKER"), +#line 15864 .trainerClass = TRAINER_CLASS_DOME_ACE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15865 .trainerPic = TRAINER_PIC_DOME_ACE_TUCKER, - .trainerName = _("TUCKER"), - .items = {}, + .encounterMusic_gender = +#line 15867 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15868 .doubleBattle = FALSE, +#line 15869 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Tucker), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15871 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15873 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15872 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15875 [TRAINER_SPENSER] = { +#line 15876 + .trainerName = _("SPENSER"), +#line 15877 .trainerClass = TRAINER_CLASS_PALACE_MAVEN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15878 .trainerPic = TRAINER_PIC_PALACE_MAVEN_SPENSER, - .trainerName = _("SPENSER"), - .items = {}, + .encounterMusic_gender = +#line 15880 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15881 .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Spenser), - }, - +#line 15882 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15884 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15886 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15885 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15888 [TRAINER_GRETA] = { +#line 15889 + .trainerName = _("GRETA"), +#line 15890 .trainerClass = TRAINER_CLASS_ARENA_TYCOON, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15891 .trainerPic = TRAINER_PIC_ARENA_TYCOON_GRETA, - .trainerName = _("GRETA"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 15892 +F_TRAINER_FEMALE | +#line 15893 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15894 + .doubleBattle = FALSE, +#line 15895 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Greta), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15897 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15899 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15898 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15901 [TRAINER_NOLAND] = { +#line 15902 + .trainerName = _("NOLAND"), +#line 15903 .trainerClass = TRAINER_CLASS_FACTORY_HEAD, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15904 .trainerPic = TRAINER_PIC_FACTORY_HEAD_NOLAND, - .trainerName = _("NOLAND"), - .items = {}, + .encounterMusic_gender = +#line 15906 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15907 .doubleBattle = FALSE, +#line 15908 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Noland), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15910 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15912 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15911 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15914 [TRAINER_LUCY] = { +#line 15915 + .trainerName = _("LUCY"), +#line 15916 .trainerClass = TRAINER_CLASS_PIKE_QUEEN, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15917 .trainerPic = TRAINER_PIC_PIKE_QUEEN_LUCY, - .trainerName = _("LUCY"), - .items = {}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 15918 +F_TRAINER_FEMALE | +#line 15919 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15920 + .doubleBattle = FALSE, +#line 15921 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Lucy), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15923 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15925 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15924 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15927 [TRAINER_BRANDON] = { +#line 15928 + .trainerName = _("BRANDON"), +#line 15929 .trainerClass = TRAINER_CLASS_PYRAMID_KING, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15930 .trainerPic = TRAINER_PIC_PYRAMID_KING_BRANDON, - .trainerName = _("BRANDON"), - .items = {}, + .encounterMusic_gender = +#line 15932 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 15933 .doubleBattle = FALSE, +#line 15934 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Brandon), - }, - + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 15936 + .species = SPECIES_BELDUM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15938 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 15937 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15940 [TRAINER_ANDRES_2] = { +#line 15941 + .trainerName = _("ANDRES"), +#line 15942 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15943 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("ANDRES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres2), - }, - + .encounterMusic_gender = +#line 15945 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15946 + .doubleBattle = FALSE, +#line 15947 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 15949 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15951 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 15950 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15953 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15955 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 15954 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15957 [TRAINER_ANDRES_3] = { +#line 15958 + .trainerName = _("ANDRES"), +#line 15959 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15960 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("ANDRES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres3), - }, - + .encounterMusic_gender = +#line 15962 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15963 + .doubleBattle = FALSE, +#line 15964 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15966 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15968 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15967 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15970 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15972 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15971 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15974 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15976 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 15975 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15978 [TRAINER_ANDRES_4] = { +#line 15979 + .trainerName = _("ANDRES"), +#line 15980 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15981 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("ANDRES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres4), - }, - + .encounterMusic_gender = +#line 15983 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 15984 + .doubleBattle = FALSE, +#line 15985 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 15987 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15989 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15988 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15991 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15993 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15992 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 15995 + .species = SPECIES_SANDSHREW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 15997 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 15996 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 15999 [TRAINER_ANDRES_5] = { +#line 16000 + .trainerName = _("ANDRES"), +#line 16001 .trainerClass = TRAINER_CLASS_RUIN_MANIAC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16002 .trainerPic = TRAINER_PIC_RUIN_MANIAC, - .trainerName = _("ANDRES"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Andres5), - }, - + .encounterMusic_gender = +#line 16004 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16005 + .doubleBattle = FALSE, +#line 16006 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16008 + .species = SPECIES_NOSEPASS, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16010 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16009 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16012 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16014 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16013 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16016 + .species = SPECIES_SANDSLASH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16018 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16017 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16020 [TRAINER_CORY_2] = { +#line 16021 + .trainerName = _("CORY"), +#line 16022 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16023 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("CORY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory2), - }, - + .encounterMusic_gender = +#line 16025 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16026 + .doubleBattle = FALSE, +#line 16027 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16029 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16031 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16030 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16033 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16035 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16034 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16037 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16039 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16038 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16041 [TRAINER_CORY_3] = { +#line 16042 + .trainerName = _("CORY"), +#line 16043 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16044 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("CORY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory3), - }, - + .encounterMusic_gender = +#line 16046 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16047 + .doubleBattle = FALSE, +#line 16048 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16050 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16052 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16051 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16054 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16056 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16055 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16058 + .species = SPECIES_TENTACOOL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16060 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16059 + .lvl = 32, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16062 [TRAINER_CORY_4] = { +#line 16063 + .trainerName = _("CORY"), +#line 16064 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16065 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("CORY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory4), - }, - + .encounterMusic_gender = +#line 16067 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16068 + .doubleBattle = FALSE, +#line 16069 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16071 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16073 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16072 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16075 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16077 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16076 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16079 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16081 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16080 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16083 [TRAINER_CORY_5] = { +#line 16084 + .trainerName = _("CORY"), +#line 16085 .trainerClass = TRAINER_CLASS_SAILOR, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16086 .trainerPic = TRAINER_PIC_SAILOR, - .trainerName = _("CORY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Cory5), - }, - + .encounterMusic_gender = +#line 16088 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16089 + .doubleBattle = FALSE, +#line 16090 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16092 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16094 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16093 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16096 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16098 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16097 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16100 + .species = SPECIES_TENTACRUEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16102 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16101 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16104 [TRAINER_PABLO_2] = { +#line 16105 + .trainerName = _("PABLO"), +#line 16106 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16107 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("PABLO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo2), - }, - + .encounterMusic_gender = +#line 16109 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16110 + .doubleBattle = FALSE, +#line 16111 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16113 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16115 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16114 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16117 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16119 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16118 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16121 [TRAINER_PABLO_3] = { +#line 16122 + .trainerName = _("PABLO"), +#line 16123 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16124 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("PABLO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo3), - }, - + .encounterMusic_gender = +#line 16126 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16127 + .doubleBattle = FALSE, +#line 16128 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16130 + .species = SPECIES_WINGULL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16132 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16131 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16134 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16136 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16135 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16138 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16140 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16139 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16142 [TRAINER_PABLO_4] = { +#line 16143 + .trainerName = _("PABLO"), +#line 16144 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16145 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("PABLO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo4), - }, - + .encounterMusic_gender = +#line 16147 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16148 + .doubleBattle = FALSE, +#line 16149 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16151 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16153 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16152 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16155 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16157 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16156 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16159 + .species = SPECIES_STARYU, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16161 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16160 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16163 [TRAINER_PABLO_5] = { +#line 16164 + .trainerName = _("PABLO"), +#line 16165 .trainerClass = TRAINER_CLASS_TRIATHLETE, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16166 .trainerPic = TRAINER_PIC_SWIMMING_TRIATHLETE_M, - .trainerName = _("PABLO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Pablo5), - }, - + .encounterMusic_gender = +#line 16168 + TRAINER_ENCOUNTER_MUSIC_SWIMMER, +#line 16169 + .doubleBattle = FALSE, +#line 16170 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16172 + .species = SPECIES_PELIPPER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16174 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16173 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16176 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16178 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16177 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16180 + .species = SPECIES_STARMIE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16182 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16181 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16184 [TRAINER_KOJI_2] = { +#line 16185 + .trainerName = _("KOJI"), +#line 16186 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16187 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji2), - }, - + .encounterMusic_gender = +#line 16189 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16190 + .doubleBattle = FALSE, +#line 16191 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16193 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16195 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16194 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16197 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16199 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16198 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16201 [TRAINER_KOJI_3] = { +#line 16202 + .trainerName = _("KOJI"), +#line 16203 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16204 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji3), - }, - + .encounterMusic_gender = +#line 16206 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16207 + .doubleBattle = FALSE, +#line 16208 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16210 + .species = SPECIES_MAKUHITA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16212 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16211 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16214 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16216 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16215 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16218 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16220 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16219 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16222 [TRAINER_KOJI_4] = { +#line 16223 + .trainerName = _("KOJI"), +#line 16224 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16225 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji4), - }, - + .encounterMusic_gender = +#line 16227 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16228 + .doubleBattle = FALSE, +#line 16229 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16231 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16233 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16232 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16235 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16237 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16236 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16239 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16241 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16240 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16243 [TRAINER_KOJI_5] = { +#line 16244 + .trainerName = _("KOJI"), +#line 16245 .trainerClass = TRAINER_CLASS_BLACK_BELT, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16246 .trainerPic = TRAINER_PIC_BLACK_BELT, - .trainerName = _("KOJI"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Koji5), - }, - + .encounterMusic_gender = +#line 16248 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16249 + .doubleBattle = FALSE, +#line 16250 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16252 + .species = SPECIES_HARIYAMA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16254 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16253 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16256 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16258 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16257 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16260 + .species = SPECIES_MACHAMP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16262 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16261 + .lvl = 43, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16264 [TRAINER_CRISTIN_2] = { +#line 16265 + .trainerName = _("CRISTIN"), +#line 16266 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16267 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 16268 +F_TRAINER_FEMALE | +#line 16269 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16270 + .items = { ITEM_HYPER_POTION }, +#line 16271 + .doubleBattle = FALSE, +#line 16272 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin2), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16274 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16276 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 16275 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16278 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16280 + .iv = TRAINER_PARTY_IVS(13, 13, 13, 13, 13, 13), +#line 16279 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16282 [TRAINER_CRISTIN_3] = { +#line 16283 + .trainerName = _("CRISTIN"), +#line 16284 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16285 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 16286 +F_TRAINER_FEMALE | +#line 16287 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16288 + .items = { ITEM_HYPER_POTION }, +#line 16289 + .doubleBattle = FALSE, +#line 16290 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin3), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16292 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16294 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16293 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16296 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16298 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16297 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16300 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16302 + .iv = TRAINER_PARTY_IVS(14, 14, 14, 14, 14, 14), +#line 16301 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16304 [TRAINER_CRISTIN_4] = { +#line 16305 + .trainerName = _("CRISTIN"), +#line 16306 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16307 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 16308 +F_TRAINER_FEMALE | +#line 16309 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16310 + .items = { ITEM_HYPER_POTION }, +#line 16311 + .doubleBattle = FALSE, +#line 16312 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin4), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16314 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16316 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 16315 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16318 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16320 + .iv = TRAINER_PARTY_IVS(15, 15, 15, 15, 15, 15), +#line 16319 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16322 + .species = SPECIES_VIGOROTH, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16324 + .iv = TRAINER_PARTY_IVS(12, 12, 12, 12, 12, 12), +#line 16323 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16326 [TRAINER_CRISTIN_5] = { +#line 16327 + .trainerName = _("CRISTIN"), +#line 16328 .trainerClass = TRAINER_CLASS_COOLTRAINER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16329 .trainerPic = TRAINER_PIC_COOLTRAINER_F, - .trainerName = _("CRISTIN"), - .items = {ITEM_HYPER_POTION, ITEM_NONE, ITEM_NONE, ITEM_NONE}, - .doubleBattle = FALSE, + .encounterMusic_gender = +#line 16330 +F_TRAINER_FEMALE | +#line 16331 + TRAINER_ENCOUNTER_MUSIC_COOL, +#line 16332 + .items = { ITEM_HYPER_POTION }, +#line 16333 + .doubleBattle = FALSE, +#line 16334 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Cristin5), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16336 + .species = SPECIES_SPINDA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16338 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16337 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16340 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16342 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16341 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16344 + .species = SPECIES_SLAKING, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16346 + .iv = TRAINER_PARTY_IVS(17, 17, 17, 17, 17, 17), +#line 16345 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16348 [TRAINER_FERNANDO_2] = { +#line 16349 + .trainerName = _("FERNANDO"), +#line 16350 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16351 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FERNANDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando2), - }, - + .encounterMusic_gender = +#line 16353 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16354 + .doubleBattle = FALSE, +#line 16355 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16357 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16359 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16358 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16361 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16363 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16362 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16365 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16367 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16366 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16369 [TRAINER_FERNANDO_3] = { +#line 16370 + .trainerName = _("FERNANDO"), +#line 16371 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16372 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FERNANDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando3), - }, - + .encounterMusic_gender = +#line 16374 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16375 + .doubleBattle = FALSE, +#line 16376 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16378 + .species = SPECIES_ELECTRIKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16380 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16379 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16382 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16384 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16383 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16386 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16388 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16387 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16390 [TRAINER_FERNANDO_4] = { +#line 16391 + .trainerName = _("FERNANDO"), +#line 16392 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16393 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FERNANDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando4), - }, - + .encounterMusic_gender = +#line 16395 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16396 + .doubleBattle = FALSE, +#line 16397 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16399 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16401 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16400 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16403 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16405 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16404 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16407 + .species = SPECIES_LOUDRED, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16409 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16408 + .lvl = 39, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16411 [TRAINER_FERNANDO_5] = { +#line 16412 + .trainerName = _("FERNANDO"), +#line 16413 .trainerClass = TRAINER_CLASS_GUITARIST, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16414 .trainerPic = TRAINER_PIC_GUITARIST, - .trainerName = _("FERNANDO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Fernando5), - }, - + .encounterMusic_gender = +#line 16416 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16417 + .doubleBattle = FALSE, +#line 16418 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16420 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16422 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16421 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16424 + .species = SPECIES_MANECTRIC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16426 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16425 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16428 + .species = SPECIES_EXPLOUD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16430 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16429 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16432 [TRAINER_SAWYER_2] = { +#line 16433 + .trainerName = _("SAWYER"), +#line 16434 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16435 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("SAWYER"), - .items = {}, + .encounterMusic_gender = +#line 16437 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16438 .doubleBattle = FALSE, +#line 16439 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer2), - }, - + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16441 + .species = SPECIES_GEODUDE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16443 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16442 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16445 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16447 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16446 + .lvl = 26, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16449 [TRAINER_SAWYER_3] = { +#line 16450 + .trainerName = _("SAWYER"), +#line 16451 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16452 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("SAWYER"), - .items = {}, + .encounterMusic_gender = +#line 16454 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16455 .doubleBattle = FALSE, +#line 16456 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer3), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16458 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16460 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16459 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16462 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16464 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16463 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16466 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16468 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16467 + .lvl = 28, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16470 [TRAINER_SAWYER_4] = { +#line 16471 + .trainerName = _("SAWYER"), +#line 16472 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16473 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("SAWYER"), - .items = {}, + .encounterMusic_gender = +#line 16475 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16476 .doubleBattle = FALSE, +#line 16477 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer4), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16479 + .species = SPECIES_MACHOP, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16481 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16480 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16483 + .species = SPECIES_NUMEL, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16485 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16484 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16487 + .species = SPECIES_GRAVELER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16489 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16488 + .lvl = 30, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16491 [TRAINER_SAWYER_5] = { +#line 16492 + .trainerName = _("SAWYER"), +#line 16493 .trainerClass = TRAINER_CLASS_HIKER, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16494 .trainerPic = TRAINER_PIC_HIKER, - .trainerName = _("SAWYER"), - .items = {}, + .encounterMusic_gender = +#line 16496 + TRAINER_ENCOUNTER_MUSIC_HIKER, +#line 16497 .doubleBattle = FALSE, +#line 16498 .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY, - .party = TRAINER_PARTY(sParty_Sawyer5), - }, - + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16500 + .species = SPECIES_MACHOKE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16502 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16501 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16504 + .species = SPECIES_CAMERUPT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16506 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16505 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16508 + .species = SPECIES_GOLEM, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16510 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16509 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16512 [TRAINER_GABRIELLE_2] = { +#line 16513 + .trainerName = _("GABRIELLE"), +#line 16514 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16515 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("GABRIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle2), - }, - + .encounterMusic_gender = +#line 16516 +F_TRAINER_FEMALE | +#line 16517 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16518 + .doubleBattle = FALSE, +#line 16519 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16521 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16523 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16522 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16525 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16527 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16526 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16529 + .species = SPECIES_ZIGZAGOON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16531 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16530 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16533 + .species = SPECIES_LOTAD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16535 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16534 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16537 + .species = SPECIES_SEEDOT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16539 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16538 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16541 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16543 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16542 + .lvl = 31, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16545 [TRAINER_GABRIELLE_3] = { +#line 16546 + .trainerName = _("GABRIELLE"), +#line 16547 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16548 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("GABRIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle3), - }, - + .encounterMusic_gender = +#line 16549 +F_TRAINER_FEMALE | +#line 16550 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16551 + .doubleBattle = FALSE, +#line 16552 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16554 + .species = SPECIES_SKITTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16556 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16555 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16558 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16560 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16559 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16562 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16564 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16563 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16566 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16568 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16567 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16570 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16572 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16571 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16574 + .species = SPECIES_TAILLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16576 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16575 + .lvl = 33, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16578 [TRAINER_GABRIELLE_4] = { +#line 16579 + .trainerName = _("GABRIELLE"), +#line 16580 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16581 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("GABRIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle4), - }, - + .encounterMusic_gender = +#line 16582 +F_TRAINER_FEMALE | +#line 16583 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16584 + .doubleBattle = FALSE, +#line 16585 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16587 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16589 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16588 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16591 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16593 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16592 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16595 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16597 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16596 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16599 + .species = SPECIES_LOMBRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16601 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16600 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16603 + .species = SPECIES_NUZLEAF, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16605 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16604 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16607 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16609 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16608 + .lvl = 35, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16611 [TRAINER_GABRIELLE_5] = { +#line 16612 + .trainerName = _("GABRIELLE"), +#line 16613 .trainerClass = TRAINER_CLASS_PKMN_BREEDER, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16614 .trainerPic = TRAINER_PIC_POKEMON_BREEDER_F, - .trainerName = _("GABRIELLE"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Gabrielle5), - }, - + .encounterMusic_gender = +#line 16615 +F_TRAINER_FEMALE | +#line 16616 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16617 + .doubleBattle = FALSE, +#line 16618 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 6, + .party = (const struct TrainerMon[]) + { + { +#line 16620 + .species = SPECIES_DELCATTY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16622 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16621 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16624 + .species = SPECIES_MIGHTYENA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16626 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16625 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16628 + .species = SPECIES_LINOONE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16630 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16629 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16632 + .species = SPECIES_LUDICOLO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16634 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16633 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16636 + .species = SPECIES_SHIFTRY, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16638 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16637 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16640 + .species = SPECIES_SWELLOW, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16642 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16641 + .lvl = 37, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16644 [TRAINER_THALIA_2] = { +#line 16645 + .trainerName = _("THALIA"), +#line 16646 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16647 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("THALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia2), - }, - + .encounterMusic_gender = +#line 16648 +F_TRAINER_FEMALE | +#line 16649 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16650 + .doubleBattle = FALSE, +#line 16651 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16653 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16655 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16654 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16657 + .species = SPECIES_HORSEA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16659 + .iv = TRAINER_PARTY_IVS(1, 1, 1, 1, 1, 1), +#line 16658 + .lvl = 34, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16661 [TRAINER_THALIA_3] = { +#line 16662 + .trainerName = _("THALIA"), +#line 16663 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16664 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("THALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia3), - }, - + .encounterMusic_gender = +#line 16665 +F_TRAINER_FEMALE | +#line 16666 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16667 + .doubleBattle = FALSE, +#line 16668 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16670 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16672 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16671 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16674 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16676 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16675 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16678 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16680 + .iv = TRAINER_PARTY_IVS(2, 2, 2, 2, 2, 2), +#line 16679 + .lvl = 36, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16682 [TRAINER_THALIA_4] = { +#line 16683 + .trainerName = _("THALIA"), +#line 16684 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16685 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("THALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia4), - }, - + .encounterMusic_gender = +#line 16686 +F_TRAINER_FEMALE | +#line 16687 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16688 + .doubleBattle = FALSE, +#line 16689 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16691 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16693 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16692 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16695 + .species = SPECIES_WAILMER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16697 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16696 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16699 + .species = SPECIES_SEADRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16701 + .iv = TRAINER_PARTY_IVS(3, 3, 3, 3, 3, 3), +#line 16700 + .lvl = 38, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16703 [TRAINER_THALIA_5] = { +#line 16704 + .trainerName = _("THALIA"), +#line 16705 .trainerClass = TRAINER_CLASS_BEAUTY, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16706 .trainerPic = TRAINER_PIC_BEAUTY, - .trainerName = _("THALIA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = AI_FLAG_CHECK_BAD_MOVE, - .party = TRAINER_PARTY(sParty_Thalia5), - }, - + .encounterMusic_gender = +#line 16707 +F_TRAINER_FEMALE | +#line 16708 + TRAINER_ENCOUNTER_MUSIC_FEMALE, +#line 16709 + .doubleBattle = FALSE, +#line 16710 + .aiFlags = AI_FLAG_CHECK_BAD_MOVE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 16712 + .species = SPECIES_LUVDISC, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16714 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16713 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16716 + .species = SPECIES_WAILORD, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16718 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16717 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16720 + .species = SPECIES_KINGDRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16722 + .iv = TRAINER_PARTY_IVS(4, 4, 4, 4, 4, 4), +#line 16721 + .lvl = 40, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16724 [TRAINER_MARIELA] = { +#line 16725 + .trainerName = _("MARIELA"), +#line 16726 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16727 .trainerPic = TRAINER_PIC_PSYCHIC_F, - .trainerName = _("MARIELA"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Mariela), - }, - + .encounterMusic_gender = +#line 16728 +F_TRAINER_FEMALE | +#line 16729 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16730 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16732 + .species = SPECIES_CHIMECHO, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16734 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16733 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16736 [TRAINER_ALVARO] = { +#line 16737 + .trainerName = _("ALVARO"), +#line 16738 .trainerClass = TRAINER_CLASS_PSYCHIC, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16739 .trainerPic = TRAINER_PIC_PSYCHIC_M, - .trainerName = _("ALVARO"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Alvaro), - }, - + .encounterMusic_gender = +#line 16741 + TRAINER_ENCOUNTER_MUSIC_INTENSE, +#line 16742 + .doubleBattle = FALSE, + .partySize = 2, + .party = (const struct TrainerMon[]) + { + { +#line 16744 + .species = SPECIES_BANETTE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16746 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16745 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 16748 + .species = SPECIES_KADABRA, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16750 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16749 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16752 [TRAINER_EVERETT] = { +#line 16753 + .trainerName = _("EVERETT"), +#line 16754 .trainerClass = TRAINER_CLASS_GENTLEMAN, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_RICH, +#line 16755 .trainerPic = TRAINER_PIC_GENTLEMAN, - .trainerName = _("EVERETT"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Everett), - }, - + .encounterMusic_gender = +#line 16757 + TRAINER_ENCOUNTER_MUSIC_RICH, +#line 16758 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16760 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16762 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16761 + .lvl = 41, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16764 [TRAINER_RED] = { +#line 16765 + .trainerName = _("RED"), +#line 16766 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16767 .trainerPic = TRAINER_PIC_RED, - .trainerName = _("RED"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Red), - }, - + .encounterMusic_gender = +#line 16769 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16770 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16772 + .species = SPECIES_CHARMANDER, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16774 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16773 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16776 [TRAINER_LEAF] = { +#line 16777 + .trainerName = _("LEAF"), +#line 16778 .trainerClass = TRAINER_CLASS_RIVAL, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16779 .trainerPic = TRAINER_PIC_LEAF, - .trainerName = _("LEAF"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_Leaf), - }, - + .encounterMusic_gender = +#line 16780 +F_TRAINER_FEMALE | +#line 16781 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16782 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16784 + .species = SPECIES_BULBASAUR, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16786 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16785 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16788 [TRAINER_BRENDAN_PLACEHOLDER] = { +#line 16789 + .trainerName = _("BRENDAN"), +#line 16790 .trainerClass = TRAINER_CLASS_RS_PROTAG, - .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16791 .trainerPic = TRAINER_PIC_RS_BRENDAN, - .trainerName = _("BRENDAN"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_BrendanLinkPlaceholder), - }, - + .encounterMusic_gender = +#line 16793 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16794 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16796 + .species = SPECIES_GROUDON, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16798 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16797 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, +#line 16800 [TRAINER_MAY_PLACEHOLDER] = { +#line 16801 + .trainerName = _("MAY"), +#line 16802 .trainerClass = TRAINER_CLASS_RS_PROTAG, - .encounterMusic_gender = F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16803 .trainerPic = TRAINER_PIC_RS_MAY, - .trainerName = _("MAY"), - .items = {}, - .doubleBattle = FALSE, - .aiFlags = 0, - .party = TRAINER_PARTY(sParty_MayLinkPlaceholder), + .encounterMusic_gender = +#line 16804 +F_TRAINER_FEMALE | +#line 16805 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 16806 + .doubleBattle = FALSE, + .partySize = 1, + .party = (const struct TrainerMon[]) + { + { +#line 16808 + .species = SPECIES_KYOGRE, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 16810 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 16809 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, }, -}; diff --git a/src/data/trainers.party b/src/data/trainers.party new file mode 100644 index 000000000000..c5d2626b3d52 --- /dev/null +++ b/src/data/trainers.party @@ -0,0 +1,16875 @@ +/* +Trainers and their parties defined with Competetive Syntax. +Compatible with Pokemon Showdown exports. +https://github.com/smogon/pokemon-showdown/blob/master/sim/TEAMS.md + +A trainer specification starts with "=== TRAINER_XXXX ===" +and includes everything until the next line that starts with "===" +or the file ends. +A blank line is required between the trainer and their Pokemon +and between their Pokemon. +TRAINER_XXXX is how the trainer is referred to within code. + +Fields with description and/or example of usage +Required fields for trainers: + - Name + - Pic +Optional (but still recommended) fields for trainers: + - Class (if not specified, PkMn Trainer will be used) + - Gender (Male/Female, affects random gender weights of party if not specified) + - Music + - Items (Some Item / Another Item / Third Item) + (Can also be specified with ITEM_SOME_ITEM) + - Double Battle (Yes/No, defaults to No) + - AI (Ai Flag / Another Flag / Third Flag / ... + see "constants/battle_ai.h" for all flags) + - Mugshot (enable Mugshots during battle transition + set to one of Purple, Green, Pink, Blue or Yellow) + - Starting Status (see include/constants/battle.h for values) + +Pokemon are then specified using the Showdown Export format. +If a field is not specified, it will use it's default value. + +Required fields for Pokemon: + - Species (Either as SPECIES_ABRA or Abra) + This line also specifies Gender, Nickname and Held item. + Alfred (Abra) (M) @ Eviolite + Roberta (SPECIES_ABRA) (F) @ ITEM_CHOICE_SPECS + Both lines are valid. Gender (M) or (F) must use a capital letter. + Nickname length is limited to 10 characters using standard letters. + With narrow font it's increased to 12. Longer strings will be silently shortened. + +Optional fields for Pokemon: + - Level (Number between 1 and 100, defaults to 100) + - Ability (Ability Name or ABILITY_ABILITY_NAME) + - IVs (0 HP / 1 Atk / 2 Def / 3 SpA / 4 SpD / 5 Spe, defaults to all 31) + (Order does not matter) + - EVs (252 HP / 128 Spe / 48 Def, defaults to all 0, is not capped at 512 total) + (Order does not matter) + - Ball (Poke Ball or ITEM_POKE_BALL, defaults to Poke Ball + - Happiness (Number between 1 and 255) + - Nature (Rash or NATURE_RASH, defaults to Hardy) + - Shiny (Yes/No, defaults to No) + - Dynamax Level (Number between 0 and 10, default 10, also sets "shouldDynamax" to True) + - Gigantamax (Yes/No, sets to Gigantamax factor) + (doesn't do anything to Pokemon without a Gigantamax form, also sets "shouldDynamax" to True) + - Tera Type (Set to a Type, either Fire or TYPE_FIRE, also sets "shouldTerastal" to True) +Moves are defined with a - (dash) followed by a single space, then the move name. +Either "- Tackle" or "- MOVE_TACKLE" works. One move per line. +Moves have to be the last lines of a Pokemon. +If no moves are specified, the Pokemon will use the last 4 moves it learns +through levelup at its level. + +Default IVs and Level can be changed in the "main" function of tools/trainerproc/main.c + +This file is processed with a custom preprocessor. +*/ + +/* +Comments can be added as C comment blocks +// cannot be used as comments +*/ + +/*Comments can also be on a single line*/ + + +=== TRAINER_NONE === +Name: +Class: Pkmn Trainer 1 +Pic: Hiker +Gender: Male +Music: Male +Double Battle: No + +=== TRAINER_SAWYER_1 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Geodude +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GABRIELLE_1 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seedot +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_PETALBURG_WOODS === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARCEL === +Name: MARCEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shiftry +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ALBERTO === +Name: ALBERTO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ED === +Name: ED +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seviper +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DECLAN === +Name: DECLAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_RUSTURF_TUNNEL === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MUSEUM_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MUSEUM_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_1 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_2 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_3 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_6 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FREDRICK === +Name: FREDRICK +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Makuhita +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MATT === +Name: MATT +Class: Aqua Admin +Pic: Aqua Admin M +Gender: Male +Music: Aqua +Items: Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mightyena +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Golbat +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ZANDER === +Name: ZANDER +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHELLY_WEATHER_INSTITUTE === +Name: SHELLY +Class: Aqua Admin +Pic: Aqua Admin F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Carvanha +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Mightyena +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SHELLY_SEAFLOOR_CAVERN === +Name: SHELLY +Class: Aqua Admin +Pic: Aqua Admin F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Sharpedo +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mightyena +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ARCHIE === +Name: ARCHIE +Class: Aqua Leader +Pic: Aqua Leader Archie +Gender: Male +Music: Aqua +Items: Super Potion / Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mightyena +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Sharpedo +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_LEAH === +Name: LEAH +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAISY === +Name: DAISY +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROSE_1 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FELIX === +Name: FELIX +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Psychic + +Claydol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Skill Swap +- Earthquake + +=== TRAINER_VIOLET === +Name: VIOLET +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gloom +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROSE_2 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Roselia +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ROSE_3 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Roselia +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ROSE_4 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Roselia +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ROSE_5 === +Name: ROSE +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Gloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Roselia +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DUSTY_1 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 23 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_CHIP === +Name: CHIP +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Psybeam +- Self Destruct +- Sandstorm +- Ancient Power + +Sandshrew +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +Sandslash +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_FOSTER === +Name: FOSTER +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 25 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +Sandslash +Level: 25 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_2 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 27 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_3 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 30 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_4 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 33 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_DUSTY_5 === +Name: DUSTY +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 36 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe +- Dig +- Slash +- Sand Attack +- Poison Sting + +=== TRAINER_GABBY_AND_TY_1 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magnemite +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Whismur +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_GABBY_AND_TY_2 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magnemite +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Loudred +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_GABBY_AND_TY_3 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 30 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Loudred +Level: 30 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_GABBY_AND_TY_4 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +Loudred +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_GABBY_AND_TY_5 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 36 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +Loudred +Level: 36 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +=== TRAINER_GABBY_AND_TY_6 === +Name: GABBY & TY +Class: Interviewer +Pic: Interviewer +Gender: Male +Music: Interviewer +Double Battle: Yes +AI: Check Bad Move + +Magneton +Level: 39 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Sonic Boom +- Thunder Wave +- Metal Sound +- Thunderbolt + +Exploud +Level: 39 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Astonish +- Stomp +- Supersonic +- Hyper Voice + +=== TRAINER_LOLA_1 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azurill +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Azurill +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_AUSTINA === +Name: AUSTINA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GWEN === +Name: GWEN +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LOLA_2 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_LOLA_3 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Marill +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_LOLA_4 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Marill +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_LOLA_5 === +Name: LOLA +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Azumarill +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_RICKY_1 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 13 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Sand Attack +- Headbutt +- Tail Whip +- Surf + +=== TRAINER_SIMON === +Name: SIMON +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Azurill +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHARLIE === +Name: CHARLIE +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RICKY_2 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_3 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_4 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RICKY_5 === +Name: RICKY +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Sand Attack +- Pin Missile +- Tail Whip +- Surf + +=== TRAINER_RANDALL === +Name: RANDALL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Swellow +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Quick Attack +- Agility +- Wing Attack + +=== TRAINER_PARKER === +Name: PARKER +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Spinda +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Dizzy Punch +- Focus Punch + +=== TRAINER_GEORGE === +Name: GEORGE +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slakoth @ Sitrus Berry +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Slack Off +- Counter +- Shadow Ball + +=== TRAINER_BERKE === +Name: BERKE +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Vigoroth +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Energy +- Slash + +=== TRAINER_BRAXTON === +Name: BRAXTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Swellow +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Focus Energy +- Quick Attack +- Wing Attack +- Endeavor + +Trapinch +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bite +- Dig +- Feint Attack +- Sand Tomb + +Wailmer +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Rollout +- Whirlpool +- Astonish +- Water Pulse + +Magneton +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunderbolt +- Supersonic +- Thunder Wave +- Sonic Boom + +Shiftry +Level: 28 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Giga Drain +- Feint Attack +- Double Team +- Swagger + +=== TRAINER_VINCENT === +Name: VINCENT +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Sableye +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Medicham +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sharpedo +Level: 44 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LEROY === +Name: LEROY +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mawile +Level: 46 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Starmie +Level: 46 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILTON_1 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Electrike +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailmer +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Makuhita +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_EDGAR === +Name: EDGAR +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Cacturne +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Pelipper +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ALBERT === +Name: ALBERT +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Magneton +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Muk +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SAMUEL === +Name: SAMUEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Swellow +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mawile +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Kadabra +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_VITO === +Name: VITO +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Dodrio +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Kadabra +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Electrode +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shiftry +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_OWEN === +Name: OWEN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Kecleon +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Graveler +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailord +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILTON_2 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Electrike +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Wailmer +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Makuhita +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_WILTON_3 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Wailmer +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Makuhita +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_WILTON_4 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Wailmer +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Makuhita +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_WILTON_5 === +Name: WILTON +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Wailmer +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Hariyama +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_WARREN === +Name: WARREN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Graveler +Level: 33 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ludicolo +Level: 33 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MARY === +Name: MARY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Delcatty +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Feint Attack +- Shock Wave + +=== TRAINER_ALEXIA === +Name: ALEXIA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wigglytuff +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Defense Curl +- Double Edge +- Shadow Ball + +=== TRAINER_JODY === +Name: JODY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Zangoose +Level: 26 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Slash + +=== TRAINER_WENDY === +Name: WENDY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Mawile +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Baton Pass +- Feint Attack +- Fake Tears +- Bite + +Roselia +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Mega Drain +- Magical Leaf +- Grass Whistle +- Leech Seed + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Fly +- Water Gun +- Mist +- Protect + +=== TRAINER_KEIRA === +Name: KEIRA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Lairon +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Manectric +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BROOKE_1 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wingull +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Numel +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Roselia +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JENNIFER === +Name: JENNIFER +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Sableye +Level: 30 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_HOPE === +Name: HOPE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Roselia +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SHANNON === +Name: SHANNON +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Claydol +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MICHELLE === +Name: MICHELLE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Torkoal +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Medicham +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ludicolo +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CAROLINE === +Name: CAROLINE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Skarmory +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sableye +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JULIE === +Name: JULIE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Sandslash +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Ninetales +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Tropius +Level: 42 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BROOKE_2 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wingull +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Numel +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Roselia +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_BROOKE_3 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Numel +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Roselia +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_BROOKE_4 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Numel +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Roselia +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_BROOKE_5 === +Name: BROOKE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Camerupt +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Roselia +Level: 34 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_PATRICIA === +Name: PATRICIA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Banette +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lunatone +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KINDRA === +Name: KINDRA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shuppet +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TAMMY === +Name: TAMMY +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shuppet +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VALERIE_1 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Sableye +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TASHA === +Name: TASHA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Shuppet +Level: 32 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_VALERIE_2 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Sableye +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Spoink +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_VALERIE_3 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sableye +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_VALERIE_4 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sableye +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_VALERIE_5 === +Name: VALERIE +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Duskull +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sableye +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Grumpig +Level: 42 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CINDY_1 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAPHNE === +Name: DAPHNE +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Luvdisc @ Nugget +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Sweet Kiss +- Flail +- Water Pulse + +Luvdisc @ Nugget +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Safeguard +- Take Down +- Water Pulse + +=== TRAINER_GRUNT_SPACE_CENTER_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Mightyena +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CINDY_2 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Tail Whip + +=== TRAINER_BRIANNA === +Name: BRIANNA +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Seaking @ Nugget +Level: 40 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_NAOMI === +Name: NAOMI +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Roselia @ Nugget +Level: 45 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CINDY_3 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CINDY_4 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CINDY_5 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CINDY_6 === +Name: CINDY +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Fury Swipes +- Mud Sport +- Odor Sleuth +- Sand Attack + +=== TRAINER_MELISSA === +Name: MELISSA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Marill +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHEILA === +Name: SHEILA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHIRLEY === +Name: SHIRLEY +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JESSICA_1 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_CONNIE === +Name: CONNIE +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRIDGET === +Name: BRIDGET +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 40 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_OLIVIA === +Name: OLIVIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Clamperl +Level: 35 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Iron Defense +- Whirlpool +- Rain Dance +- Water Pulse + +Corphish +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Taunt +- Crabhammer +- Water Pulse + +Lombre +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Uproar +- Fury Swipes +- Fake Out +- Water Pulse + +=== TRAINER_TIFFANY === +Name: TIFFANY +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Sharpedo +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JESSICA_2 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_3 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_4 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_JESSICA_5 === +Name: JESSICA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 44 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Bind +- Lick +- Fury Swipes +- Feint Attack + +Seviper +Level: 44 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Tail +- Screech +- Glare +- Crunch + +=== TRAINER_WINSTON_1 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MOLLIE === +Name: MOLLIE +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Whiscash +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Meditite +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_GARRET === +Name: GARRET +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Azumarill @ Nugget +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_2 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_3 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_4 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WINSTON_5 === +Name: WINSTON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Linoone @ Nugget +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Fury Swipes +- Mud Sport +- Odor Sleuth +- Sand Attack + +=== TRAINER_STEVE_1 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aron +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_THALIA_1 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Horsea +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARK === +Name: MARK +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Rhyhorn +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_CHIMNEY_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_STEVE_2 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_STEVE_3 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Rhyhorn +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_STEVE_4 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lairon +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Rhyhorn +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_STEVE_5 === +Name: STEVE +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aggron +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Rhydon +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_LUIS === +Name: LUIS +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DOMINIK === +Name: DOMINIK +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DOUGLAS === +Name: DOUGLAS +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DARRIN === +Name: DARRIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TONY_1 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JEROME === +Name: JEROME +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MATTHEW === +Name: MATTHEW +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAVID === +Name: DAVID +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SPENCER === +Name: SPENCER +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROLAND === +Name: ROLAND +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLEN === +Name: NOLEN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_STAN === +Name: STAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BARRY === +Name: BARRY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEAN === +Name: DEAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RODNEY === +Name: RODNEY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RICHARD === +Name: RICHARD +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HERMAN === +Name: HERMAN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SANTIAGO === +Name: SANTIAGO +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GILBERT === +Name: GILBERT +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FRANKLIN === +Name: FRANKLIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sealeo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KEVIN === +Name: KEVIN +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACK === +Name: JACK +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DUDLEY === +Name: DUDLEY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHAD === +Name: CHAD +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TONY_2 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TONY_3 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_TONY_4 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sharpedo +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_TONY_5 === +Name: TONY +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sharpedo +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_TAKAO === +Name: TAKAO +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 13 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_HITOSHI === +Name: HITOSHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 32 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Machoke +Level: 32 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_KIYO === +Name: KIYO +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KOICHI === +Name: KOICHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 28 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_NOB_1 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 19 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_NOB_2 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 27 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_NOB_3 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Machoke +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_NOB_4 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Machoke +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Machoke +Level: 31 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_NOB_5 === +Name: NOB +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machoke +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machoke +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Machamp @ Black Belt +Level: 33 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_YUJI === +Name: YUJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Machoke +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_DAISUKE === +Name: DAISUKE +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machop +Level: 19 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ATSUSHI === +Name: ATSUSHI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KIRK === +Name: KIRK +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Quick Attack +- Thunder Wave +- Spark +- Leer + +Voltorb +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Charge +- Shock Wave +- Screech + +=== TRAINER_GRUNT_AQUA_HIDEOUT_7 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_AQUA_HIDEOUT_8 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHAWN === +Name: SHAWN +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Magnemite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_FERNANDO_1 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Loudred +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DALTON_1 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Whismur +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DALTON_2 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Whismur +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Magnemite +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DALTON_3 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Loudred +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Magnemite +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DALTON_4 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Magneton +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DALTON_5 === +Name: DALTON +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Exploud +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Magneton +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_COLE === +Name: COLE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JEFF === +Name: JEFF +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 22 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 22 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_AXLE === +Name: AXLE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JACE === +Name: JACE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KEEGAN === +Name: KEEGAN +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 23 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_BERNIE_1 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BERNIE_2 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_BERNIE_3 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Pelipper +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_BERNIE_4 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Pelipper +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_BERNIE_5 === +Name: BERNIE +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magcargo +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Pelipper +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DREW === +Name: DREW +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Dig +- Sand Attack +- Poison Sting +- Slash + +=== TRAINER_BEAU === +Name: BEAU +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +Sandshrew +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Sting +- Sand Attack +- Scratch +- Dig + +Baltoy +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +=== TRAINER_LARRY === +Name: LARRY +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nuzleaf +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHANE === +Name: SHANE +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JUSTIN === +Name: JUSTIN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kecleon +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ETHAN_1 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AUTUMN === +Name: AUTUMN +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRAVIS === +Name: TRAVIS +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ETHAN_2 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Taillow +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ETHAN_3 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swellow +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ETHAN_4 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ETHAN_5 === +Name: ETHAN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_BRENT === +Name: BRENT +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 26 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_DONALD === +Name: DONALD +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Silcoon +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Beautifly +Level: 24 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_TAYLOR === +Name: TAYLOR +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Cascoon +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Dustox +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_JEFFREY_1 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Surskit +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEREK === +Name: DEREK +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 16 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Beautifly +Level: 16 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_JEFFREY_2 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Surskit +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JEFFREY_3 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Surskit +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Masquerain +Level: 34 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JEFFREY_4 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Wurmple +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Surskit +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Masquerain +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JEFFREY_5 === +Name: JEFFREY +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Dustox +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Surskit +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Masquerain @ Silver Powder +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Beautifly +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_EDWARD === +Name: EDWARD +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Abra +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hidden Power + +=== TRAINER_PRESTON === +Name: PRESTON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_VIRGIL === +Name: VIRGIL +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BLAKE === +Name: BLAKE +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WILLIAM === +Name: WILLIAM +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ralts +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kirlia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSHUA === +Name: JOSHUA +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Solrock +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAMERON_1 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Solrock +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAMERON_2 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 33 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Solrock +Level: 33 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CAMERON_3 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Solrock +Level: 38 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CAMERON_4 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Solrock +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CAMERON_5 === +Name: CAMERON +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Solrock +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Alakazam +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JACLYN === +Name: JACLYN +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Abra +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hidden Power + +=== TRAINER_HANNAH === +Name: HANNAH +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_SAMANTHA === +Name: SAMANTHA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Xatu +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAURA === +Name: MAURA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KAYLA === +Name: KAYLA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Natu +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kadabra +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALEXIS === +Name: ALEXIS +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACKI_1 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lunatone +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACKI_2 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Lunatone +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JACKI_3 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Lunatone +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JACKI_4 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Lunatone +Level: 40 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JACKI_5 === +Name: JACKI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Lunatone +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Alakazam +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_WALTER_1 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MICAH === +Name: MICAH +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Manectric +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_THOMAS === +Name: THOMAS +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALTER_2 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_WALTER_3 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Manectric +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Quick Attack +- Spark +- Odor Sleuth +- Roar + +=== TRAINER_WALTER_4 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Quick Attack +- Spark +- Odor Sleuth + +=== TRAINER_WALTER_5 === +Name: WALTER +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Linoone +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Headbutt +- Sand Attack +- Odor Sleuth +- Fury Swipes + +Golduck +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Fury Swipes +- Disable +- Confusion +- Psych Up + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Quick Attack +- Spark +- Odor Sleuth +- Roar + +=== TRAINER_SIDNEY === +Name: SIDNEY +Class: Elite Four +Pic: Elite Four Sidney +Gender: Male +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability / Setup First Turn +Mugshot: Purple + +Mightyena +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Roar +- Double Edge +- Sand Attack +- Crunch + +Shiftry +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Torment +- Double Team +- Swagger +- Extrasensory + +Cacturne +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Leech Seed +- Feint Attack +- Needle Arm +- Cotton Spore + +Crawdaunt +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Surf +- Swords Dance +- Strength +- Facade + +Absol @ Sitrus Berry +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rock Slide +- Swords Dance +- Slash + +=== TRAINER_PHOEBE === +Name: PHOEBE +Class: Elite Four +Pic: Elite Four Phoebe +Gender: Female +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability +Mugshot: Green + +Dusclops +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Punch +- Confuse Ray +- Curse +- Protect + +Banette +Level: 49 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Grudge +- Will O Wisp +- Feint Attack + +Sableye +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Double Team +- Night Shade +- Feint Attack + +Banette +Level: 49 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Psychic +- Thunderbolt +- Facade + +Dusclops @ Sitrus Berry +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Shadow Ball +- Ice Beam +- Rock Slide +- Earthquake + +=== TRAINER_GLACIA === +Name: GLACIA +Class: Elite Four +Pic: Elite Four Glacia +Gender: Female +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability +Mugshot: Pink + +Sealeo +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Encore +- Body Slam +- Hail +- Ice Ball + +Glalie +Level: 50 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Light Screen +- Crunch +- Icy Wind +- Ice Beam + +Sealeo +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Attract +- Double Edge +- Hail +- Blizzard + +Glalie +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Shadow Ball +- Explosion +- Hail +- Ice Beam + +Walrein @ Sitrus Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Body Slam +- Ice Beam +- Sheer Cold + +=== TRAINER_DRAKE === +Name: DRAKE +Class: Elite Four +Pic: Elite Four Drake +Gender: Male +Music: Elite Four +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability +Mugshot: Blue + +Shelgon +Level: 52 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Rock Tomb +- Dragon Claw +- Protect +- Double Edge + +Altaria +Level: 54 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Edge +- Dragon Breath +- Dragon Dance +- Aerial Ace + +Kingdra +Level: 53 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Smokescreen +- Dragon Dance +- Surf +- Body Slam + +Flygon +Level: 53 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Flamethrower +- Crunch +- Dragon Breath +- Earthquake + +Salamence @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Dragon Claw +- Rock Slide +- Crunch + +=== TRAINER_ROXANNE_1 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Potion / Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Geodude +Level: 12 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle +- Defense Curl +- Rock Throw +- Rock Tomb + +Geodude +Level: 12 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle +- Defense Curl +- Rock Throw +- Rock Tomb + +Nosepass @ Oran Berry +Level: 15 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Block +- Harden +- Tackle +- Rock Tomb + +=== TRAINER_BRAWLY_1 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Super Potion / Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Machop +Level: 16 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Karate Chop +- Low Kick +- Seismic Toss +- Bulk Up + +Meditite +Level: 16 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Focus Punch +- Light Screen +- Reflect +- Bulk Up + +Makuhita @ Sitrus Berry +Level: 19 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Arm Thrust +- Vital Throw +- Reversal +- Bulk Up + +=== TRAINER_WATTSON_1 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Super Potion / Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Voltorb +Level: 20 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Rollout +- Spark +- Self Destruct +- Shock Wave + +Electrike +Level: 20 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Shock Wave +- Leer +- Quick Attack +- Howl + +Magneton +Level: 22 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Supersonic +- Shock Wave +- Thunder Wave +- Sonic Boom + +Manectric @ Sitrus Berry +Level: 24 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Quick Attack +- Thunder Wave +- Shock Wave +- Howl + +=== TRAINER_FLANNERY_1 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Numel +Level: 24 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Overheat +- Take Down +- Magnitude +- Sunny Day + +Slugma +Level: 24 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Overheat +- Smog +- Light Screen +- Sunny Day + +Camerupt +Level: 26 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Overheat +- Tackle +- Sunny Day +- Attract + +Torkoal @ White Herb +Level: 29 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Overheat +- Sunny Day +- Body Slam +- Attract + +=== TRAINER_NORMAN_1 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Spinda +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Teeter Dance +- Psybeam +- Facade +- Encore + +Vigoroth +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Slash +- Facade +- Encore +- Feint Attack + +Linoone +Level: 29 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Slash +- Belly Drum +- Facade +- Headbutt + +Slaking @ Sitrus Berry +Level: 31 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Counter +- Yawn +- Facade +- Feint Attack + +=== TRAINER_WINONA_1 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability / Risky + +Swablu +Level: 29 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Perish Song +- Mirror Move +- Safeguard +- Aerial Ace + +Tropius +Level: 29 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Synthesis + +Pelipper +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Water Gun +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 31 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Sand Attack +- Fury Attack +- Steel Wing +- Aerial Ace + +Altaria @ Oran Berry +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Dragon Breath +- Dragon Dance +- Aerial Ace + +=== TRAINER_TATE_AND_LIZA_1 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Hyper Potion / Hyper Potion / Hyper Potion / Hyper Potion +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Claydol +Level: 41 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Earthquake +- Ancient Power +- Psychic +- Light Screen + +Xatu +Level: 41 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Psychic +- Sunny Day +- Confuse Ray +- Calm Mind + +Lunatone @ Sitrus Berry +Level: 42 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Light Screen +- Psychic +- Hypnosis +- Calm Mind + +Solrock @ Sitrus Berry +Level: 42 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_JUAN_1 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Hyper Potion / Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Luvdisc +Level: 41 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Water Pulse +- Attract +- Sweet Kiss +- Flail + +Whiscash +Level: 41 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Rain Dance +- Water Pulse +- Amnesia +- Earthquake + +Sealeo +Level: 43 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Encore +- Body Slam +- Aurora Beam +- Water Pulse + +Crawdaunt +Level: 43 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Water Pulse +- Crabhammer +- Taunt +- Leer + +Kingdra @ Chesto Berry +Level: 46 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JERRY_1 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 9 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TED === +Name: TED +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 17 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PAUL === +Name: PAUL +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Numel +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Oddish +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 15 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JERRY_2 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Meditite +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JERRY_3 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Meditite +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JERRY_4 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Medicham +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JERRY_5 === +Name: JERRY +Class: School Kid +Pic: School Kid M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Kirlia +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Banette +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Medicham +Level: 34 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_KAREN_1 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 9 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GEORGIA === +Name: GEORGIA +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 16 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Beautifly +Level: 16 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KAREN_2 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Whismur +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KAREN_3 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KAREN_4 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Loudred +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_KAREN_5 === +Name: KAREN +Class: School Kid +Pic: School Kid F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Exploud +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_KATE_AND_JOY === +Name: KATE & JOY +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Spinda +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Hypnosis +- Psybeam +- Dizzy Punch +- Teeter Dance + +Slaking +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Focus Punch +- Yawn +- Slack Off +- Feint Attack + +=== TRAINER_ANNA_AND_MEG_1 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_2 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_3 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Zigzagoon +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_4 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Linoone +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Makuhita +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_ANNA_AND_MEG_5 === +Name: ANNA & MEG +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Linoone +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Growl +- Tail Whip +- Headbutt +- Odor Sleuth + +Hariyama +Level: 38 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Tackle +- Focus Energy +- Arm Thrust + +=== TRAINER_VICTOR === +Name: VICTOR +Class: Winstrate +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Taillow @ Oran Berry +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Zigzagoon @ Oran Berry +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_MIGUEL_1 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_COLTON === +Name: COLTON +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 40 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Skitty @ Oran Berry +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +Delcatty @ Oran Berry +Level: 42 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Assist +- Charm +- Feint Attack +- Heal Bell + +=== TRAINER_MIGUEL_2 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_3 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Skitty @ Oran Berry +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_4 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Delcatty @ Oran Berry +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIGUEL_5 === +Name: MIGUEL +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Delcatty @ Sitrus Berry +Level: 38 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VICTORIA === +Name: VICTORIA +Class: Winstrate +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move / Try To Faint + +Roselia @ Oran Berry +Level: 17 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_VANESSA === +Name: VANESSA +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Pikachu @ Oran Berry +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BETHANY === +Name: BETHANY +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Azurill @ Oran Berry +Level: 35 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marill @ Oran Berry +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Azumarill @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ISABEL_1 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABEL_2 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Minun @ Oran Berry +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISABEL_3 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Minun @ Oran Berry +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISABEL_4 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Oran Berry +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Minun @ Oran Berry +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISABEL_5 === +Name: ISABEL +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Plusle @ Sitrus Berry +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Minun @ Sitrus Berry +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_TIMOTHY_1 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Hariyama +Level: 27 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_TIMOTHY_2 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Hariyama +Level: 33 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Arm Thrust +- Knock Off +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_3 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Hariyama +Level: 36 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Arm Thrust +- Knock Off +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_4 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Hariyama +Level: 39 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Arm Thrust +- Belly Drum +- Sand Attack +- Dig + +=== TRAINER_TIMOTHY_5 === +Name: TIMOTHY +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Hariyama +Level: 42 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Arm Thrust +- Belly Drum +- Sand Attack +- Dig + +=== TRAINER_VICKY === +Name: VICKY +Class: Winstrate +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Meditite +Level: 18 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- High Jump Kick +- Meditate +- Confusion +- Detect + +=== TRAINER_SHELBY_1 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Meditite +Level: 21 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +Makuhita +Level: 21 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_SHELBY_2 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Meditite +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe + +Makuhita +Level: 30 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe + +=== TRAINER_SHELBY_3 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 33 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe + +Hariyama +Level: 33 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe + +=== TRAINER_SHELBY_4 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 36 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe + +Hariyama +Level: 36 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe + +=== TRAINER_SHELBY_5 === +Name: SHELBY +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 39 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +Hariyama +Level: 39 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +=== TRAINER_CALVIN_1 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BILLY === +Name: BILLY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seedot +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSH === +Name: JOSH +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 10 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Tackle + +=== TRAINER_TOMMY === +Name: TOMMY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Geodude +Level: 8 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_JOEY === +Name: JOEY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BEN === +Name: BEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 17 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Headbutt +- Sand Attack +- Growl +- Thunderbolt + +Gulpin +Level: 17 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Amnesia +- Sludge +- Yawn +- Pound + +=== TRAINER_QUINCY === +Name: QUINCY +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slaking +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Attract +- Ice Beam +- Thunderbolt +- Flamethrower + +Dusclops +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Skill Swap +- Protect +- Will O Wisp +- Toxic + +=== TRAINER_KATELYNN === +Name: KATELYNN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Gardevoir +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Skill Swap +- Psychic +- Thunderbolt +- Calm Mind + +Slaking +Level: 43 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Earthquake +- Shadow Ball +- Aerial Ace +- Brick Break + +=== TRAINER_JAYLEN === +Name: JAYLEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Trapinch +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DILLON === +Name: DILLON +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Aron +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CALVIN_2 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CALVIN_3 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CALVIN_4 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 29 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CALVIN_5 === +Name: CALVIN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 32 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_EDDIE === +Name: EDDIE +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALLEN === +Name: ALLEN +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TIMMY === +Name: TIMMY +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Aron +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALLACE === +Name: WALLACE +Class: Champion +Pic: Champion Wallace +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability +Mugshot: Yellow + +Wailord +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Spout +- Double Edge +- Blizzard + +Tentacruel +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Toxic +- Hydro Pump +- Sludge Bomb +- Ice Beam + +Ludicolo +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Giga Drain +- Surf +- Leech Seed +- Double Team + +Whiscash +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Surf +- Amnesia +- Hyper Beam + +Gyarados +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Dragon Dance +- Earthquake +- Hyper Beam +- Surf + +Milotic @ Sitrus Berry +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Recover +- Surf +- Ice Beam +- Toxic + +=== TRAINER_ANDREW === +Name: ANDREW +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_IVAN === +Name: IVAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLAUDE === +Name: CLAUDE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Barboach +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ELLIOT_1 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 7 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NED === +Name: NED +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 11 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DALE === +Name: DALE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLAN === +Name: NOLAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Barboach +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BARNY === +Name: BARNY +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WADE === +Name: WADE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CARTER === +Name: CARTER +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacruel +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ELLIOT_2 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gyarados +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gyarados +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ELLIOT_3 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Carvanha +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 26 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gyarados +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ELLIOT_4 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Gyarados +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Carvanha +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacruel +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gyarados +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ELLIOT_5 === +Name: ELLIOT +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint + +Gyarados +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sharpedo +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Gyarados +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_RONALD === +Name: RONALD +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JACOB === +Name: JACOB +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 6 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Voltorb +Level: 6 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Magnemite +Level: 14 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_ANTHONY === +Name: ANTHONY +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magnemite +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENJAMIN_1 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENJAMIN_2 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_BENJAMIN_3 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_BENJAMIN_4 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_BENJAMIN_5 === +Name: BENJAMIN +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ABIGAIL_1 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JASMINE === +Name: JASMINE +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 14 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Magnemite +Level: 14 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Voltorb +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ABIGAIL_2 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ABIGAIL_3 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ABIGAIL_4 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ABIGAIL_5 === +Name: ABIGAIL +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magneton +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DYLAN_1 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DYLAN_2 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DYLAN_3 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DYLAN_4 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DYLAN_5 === +Name: DYLAN +Class: Triathlete +Pic: Running Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_MARIA_1 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARIA_2 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 28 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_MARIA_3 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 31 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_MARIA_4 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_MARIA_5 === +Name: MARIA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Dodrio +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CAMDEN === +Name: CAMDEN +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEMETRIUS === +Name: DEMETRIUS +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISAIAH_1 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PABLO_1 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHASE === +Name: CHASE +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 34 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_ISAIAH_2 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 39 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISAIAH_3 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 42 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISAIAH_4 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 45 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISAIAH_5 === +Name: ISAIAH +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 48 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ISOBEL === +Name: ISOBEL +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DONNY === +Name: DONNY +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 34 +IVs: 19 HP / 19 Atk / 19 Def / 19 SpA / 19 SpD / 19 Spe + +=== TRAINER_TALIA === +Name: TALIA +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KATELYN_1 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALLISON === +Name: ALLISON +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Staryu +Level: 33 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe + +=== TRAINER_KATELYN_2 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 39 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KATELYN_3 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 42 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KATELYN_4 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 45 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KATELYN_5 === +Name: KATELYN +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Starmie +Level: 48 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_NICOLAS_1 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Altaria +Level: 37 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_NICOLAS_2 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 41 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Altaria +Level: 41 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_NICOLAS_3 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 44 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Altaria +Level: 44 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_NICOLAS_4 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Bagon +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Altaria +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Altaria +Level: 46 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_NICOLAS_5 === +Name: NICOLAS +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Altaria +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Shelgon @ Dragon Fang +Level: 49 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_AARON === +Name: AARON +Class: Dragon Tamer +Pic: Dragon Tamer +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Bagon +Level: 34 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Dragon Breath +- Headbutt +- Focus Energy +- Ember + +=== TRAINER_PERRY === +Name: PERRY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HUGH === +Name: HUGH +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tropius +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PHIL === +Name: PHIL +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JARED === +Name: JARED +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Skarmory +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Tropius +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_HUMBERTO === +Name: HUMBERTO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 30 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe + +=== TRAINER_PRESLEY === +Name: PRESLEY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Tropius +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWARDO === +Name: EDWARDO +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_COLIN === +Name: COLIN +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Natu +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBERT_1 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swablu +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BENNY === +Name: BENNY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Xatu +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHESTER === +Name: CHESTER +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swellow +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBERT_2 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 32 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swablu +Level: 32 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ROBERT_3 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Altaria +Level: 35 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ROBERT_4 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Altaria +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ROBERT_5 === +Name: ROBERT +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Altaria +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Xatu +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ALEX === +Name: ALEX +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Natu +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Swellow +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BECK === +Name: BECK +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Tropius +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_YASU === +Name: YASU +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Ninjask +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TAKASHI === +Name: TAKASHI +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Ninjask +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANNE === +Name: DIANNE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No + +Claydol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Skill Swap +- Earthquake + +Lanturn +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Thunderbolt +- Earthquake + +=== TRAINER_JANI === +Name: JANI +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAO_1 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Smog +- Self Destruct + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Smog +- Self Destruct + +Koffing +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +=== TRAINER_LUNG === +Name: LUNG +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ninjask +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAO_2 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_3 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_4 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Tackle +- Sludge + +=== TRAINER_LAO_5 === +Name: LAO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Koffing +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Poison Gas +- Tackle +- Sludge +- Self Destruct + +Weezing @ Smoke Ball +Level: 35 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Tackle +- Sludge + +=== TRAINER_JOCELYN === +Name: JOCELYN +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_LAURA === +Name: LAURA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_CYNDY_1 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 18 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Makuhita +Level: 18 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CORA === +Name: CORA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_PAULA === +Name: PAULA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CYNDY_2 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Makuhita +Level: 26 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_CYNDY_3 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Makuhita +Level: 29 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_CYNDY_4 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Medicham +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Hariyama +Level: 32 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_CYNDY_5 === +Name: CYNDY +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Medicham +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Hariyama +Level: 35 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_MADELINE_1 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Ember +- Tackle +- Magnitude +- Sunny Day + +=== TRAINER_CLARISSA === +Name: CLARISSA +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANGELICA === +Name: ANGELICA +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Castform +Level: 30 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe +- Rain Dance +- Weather Ball +- Thunder +- Water Pulse + +=== TRAINER_MADELINE_2 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe +- Ember +- Tackle +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_3 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Numel +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe +- Ember +- Take Down +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_4 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Leech Seed +- Mega Drain +- Grass Whistle +- Sunny Day + +Numel +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Flamethrower +- Take Down +- Magnitude +- Sunny Day + +=== TRAINER_MADELINE_5 === +Name: MADELINE +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Leech Seed +- Giga Drain +- Solar Beam +- Sunny Day + +Camerupt +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Flamethrower +- Take Down +- Earthquake +- Sunny Day + +=== TRAINER_BEVERLY === +Name: BEVERLY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_IMANI === +Name: IMANI +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KYLA === +Name: KYLA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DENISE === +Name: DENISE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BETH === +Name: BETH +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TARA === +Name: TARA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MISSY === +Name: MISSY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALICE === +Name: ALICE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_1 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRACE === +Name: GRACE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TANYA === +Name: TANYA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHARON === +Name: SHARON +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NIKKI === +Name: NIKKI +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDA === +Name: BRENDA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KATIE === +Name: KATIE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SUSIE === +Name: SUSIE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KARA === +Name: KARA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DANA === +Name: DANA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Azumarill +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SIENNA === +Name: SIENNA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEBRA === +Name: DEBRA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LINDA === +Name: LINDA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Horsea +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seadra +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KAYLEE === +Name: KAYLEE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Lanturn +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAUREL === +Name: LAUREL +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CARLEE === +Name: CARLEE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Seaking +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_2 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 38 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_3 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_4 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JENNY_5 === +Name: JENNY +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Starmie +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HEIDI === +Name: HEIDI +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Dig +- Sand Attack +- Poison Sting +- Slash + +Baltoy +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rapid Spin +- Mud Slap +- Psybeam +- Rock Tomb + +=== TRAINER_BECKY === +Name: BECKY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sand Attack +- Poison Sting +- Slash +- Dig + +Marill +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Rollout +- Bubble Beam +- Tail Whip +- Defense Curl + +=== TRAINER_CAROL === +Name: CAROL +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NANCY === +Name: NANCY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARTHA === +Name: MARTHA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swablu +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANA_1 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Oddish +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swablu +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CEDRIC === +Name: CEDRIC +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Destiny Bond +- Safeguard +- Counter +- Mirror Coat + +=== TRAINER_IRENE === +Name: IRENE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DIANA_2 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gloom +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swablu +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_DIANA_3 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Gloom +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swablu +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_DIANA_4 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Gloom +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swablu +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_DIANA_5 === +Name: DIANA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Breloom +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Vileplume +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Altaria +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_AMY_AND_LIV_1 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AMY_AND_LIV_2 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Minun +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GINA_AND_MIA_1 === +Name: GINA & MIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Seedot +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MIU_AND_YUKI === +Name: MIU & YUKI +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Beautifly +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Dustox +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AMY_AND_LIV_3 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Minun +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GINA_AND_MIA_2 === +Name: GINA & MIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Duskull +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Night Shade +- Disable + +Shroomish +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Absorb +- Leech Seed + +=== TRAINER_AMY_AND_LIV_4 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Minun +Level: 30 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_AMY_AND_LIV_5 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Spark +- Charge +- Fake Tears +- Helping Hand + +Minun +Level: 33 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe +- Spark +- Charge +- Charm +- Helping Hand + +=== TRAINER_AMY_AND_LIV_6 === +Name: AMY & LIV +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Plusle +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Thunder +- Charge +- Fake Tears +- Helping Hand + +Minun +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe +- Thunder +- Charge +- Charm +- Helping Hand + +=== TRAINER_HUEY === +Name: HUEY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machop +Level: 12 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_EDMOND === +Name: EDMOND +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERNEST_1 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DWAYNE === +Name: DWAYNE +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_PHILLIP === +Name: PHILLIP +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 44 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEONARD === +Name: LEONARD +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Pelipper +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DUNCAN === +Name: DUNCAN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machoke +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERNEST_2 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machoke +Level: 36 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ERNEST_3 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ERNEST_4 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacool +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 42 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ERNEST_5 === +Name: ERNEST +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machoke +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 45 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_ELI === +Name: ELI +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_ANNIKA === +Name: ANNIKA +Class: Pokefan +Pic: Pokefan F +Gender: Female +Music: Twins +Double Battle: No +AI: Check Bad Move + +Feebas @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flail +- Water Pulse +- Return +- Attract + +Feebas @ Oran Berry +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flail +- Water Pulse +- Return +- Attract + +=== TRAINER_JAZMYN === +Name: JAZMYN +Class: Cooltrainer 2 +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Absol +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JONAS === +Name: JONAS +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Koffing +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Toxic +- Thunder +- Self Destruct +- Sludge Bomb + +=== TRAINER_KAYLEY === +Name: KAYLEY +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Castform +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sunny Day +- Weather Ball +- Flamethrower +- Solar Beam + +=== TRAINER_AURON === +Name: AURON +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machamp +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KELVIN === +Name: KELVIN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Spheal +Level: 33 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MARLEY === +Name: MARLEY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 34 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Roar +- Thunder Wave +- Thunderbolt + +=== TRAINER_REYNA === +Name: REYNA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 33 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Hariyama +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_HUDSON === +Name: HUDSON +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CONOR === +Name: CONOR +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Chinchou +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Hariyama +Level: 33 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_EDWIN_1 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HECTOR === +Name: HECTOR +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Zangoose +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Seviper +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MOSSDEEP === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Camerupt +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Mightyena +Level: 38 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Golbat +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_EDWIN_2 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_3 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_4 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EDWIN_5 === +Name: EDWIN +Class: Collector +Pic: Collector +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Ludicolo +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shiftry +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WALLY_VR_1 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Altaria +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 41 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 45 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_BRENDAN_ROUTE_103_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Treecko +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Grovyle +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Grovyle +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BRENDAN_ROUTE_103_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Torchic +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Combusken +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Combusken +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_BRENDAN_ROUTE_103_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mudkip +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_ROUTE_110_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Marshtomp +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_BRENDAN_ROUTE_119_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marshtomp +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Treecko +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Grovyle +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Grovyle +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Torchic +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Wingull +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Combusken +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Combusken +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAY_ROUTE_103_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mudkip +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_ROUTE_110_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lombre +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Slugma +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Marshtomp +Level: 20 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_ROUTE_119_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lombre +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Slugma +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Marshtomp +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_ISAAC_1 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Whismur +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Taillow +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAVIS === +Name: DAVIS +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pinsir +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MITCHELL === +Name: MITCHELL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lunatone +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Explosion +- Reflect +- Light Screen +- Psychic + +Solrock +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Explosion +- Reflect +- Light Screen +- Shadow Ball + +=== TRAINER_ISAAC_2 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Linoone +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Aron +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Mightyena +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Swellow +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Makuhita +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ISAAC_3 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Linoone +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Aron +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Swellow +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Hariyama +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ISAAC_4 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Aron +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Hariyama +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ISAAC_5 === +Name: ISAAC +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Loudred +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Lairon +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Swellow +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Hariyama +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_LYDIA_1 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skitty +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Goldeen +Level: 11 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HALLE === +Name: HALLE +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Sableye +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Absol +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GARRISON === +Name: GARRISON +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandslash +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LYDIA_2 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Roselia +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Skitty +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Goldeen +Level: 22 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_LYDIA_3 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Breloom +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Marill +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Roselia +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Delcatty +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Goldeen +Level: 25 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_LYDIA_4 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Breloom +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Marill +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Roselia +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Delcatty +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Goldeen +Level: 28 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_LYDIA_5 === +Name: LYDIA +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Breloom +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Azumarill +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Roselia +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Delcatty +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Seaking +Level: 31 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JACKSON_1 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Breloom +Level: 27 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_LORENZO === +Name: LORENZO +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Seedot +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nuzleaf +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SEBASTIAN === +Name: SEBASTIAN +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Cacturne +Level: 39 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JACKSON_2 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Breloom +Level: 31 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +=== TRAINER_JACKSON_3 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Breloom +Level: 34 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +=== TRAINER_JACKSON_4 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Breloom +Level: 37 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_JACKSON_5 === +Name: JACKSON +Class: Pkmn Ranger +Pic: Pokemon Ranger M +Gender: Male +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Kecleon +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +Breloom +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +=== TRAINER_CATHERINE_1 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Gloom +Level: 26 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Roselia +Level: 26 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JENNA === +Name: JENNA +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Lotad +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Lombre +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nuzleaf +Level: 28 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_SOPHIA === +Name: SOPHIA +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Swablu +Level: 38 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Roselia +Level: 38 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_CATHERINE_2 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Gloom +Level: 30 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +Roselia +Level: 30 +IVs: 7 HP / 7 Atk / 7 Def / 7 SpA / 7 SpD / 7 Spe + +=== TRAINER_CATHERINE_3 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Gloom +Level: 33 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +Roselia +Level: 33 +IVs: 8 HP / 8 Atk / 8 Def / 8 SpA / 8 SpD / 8 Spe + +=== TRAINER_CATHERINE_4 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Gloom +Level: 36 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Roselia +Level: 36 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_CATHERINE_5 === +Name: CATHERINE +Class: Pkmn Ranger +Pic: Pokemon Ranger F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Bellossom +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +Roselia +Level: 39 +IVs: 10 HP / 10 Atk / 10 Def / 10 SpA / 10 SpD / 10 Spe + +=== TRAINER_JULIO === +Name: JULIO +Class: Triathlete +Pic: Cycling Triathlete M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 21 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SEAFLOOR_CAVERN_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt M +Gender: Male +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Golbat +Level: 35 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_GRUNT_UNUSED === +Name: GRUNT +Class: Team Magma +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_PYRE_4 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_JAGGED_PASS === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Numel +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MARC === +Name: MARC +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Geodude +Level: 8 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +=== TRAINER_BRENDEN === +Name: BRENDEN +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Machop +Level: 13 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LILITH === +Name: LILITH +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 13 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_CRISTIAN === +Name: CRISTIAN +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 13 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_SYLVIA === +Name: SYLVIA +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_LEONARDO === +Name: LEONARDO +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ATHENA === +Name: ATHENA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder +- Thunder Wave +- Quick Attack + +Linoone +Level: 32 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Surf +- Thief + +=== TRAINER_HARRISON === +Name: HARRISON +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacruel +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MT_CHIMNEY_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLARENCE === +Name: CLARENCE +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Sharpedo +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TERRY === +Name: TERRY +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 37 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NATE === +Name: NATE +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Spoink +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KATHLEEN === +Name: KATHLEEN +Class: Hex Maniac +Pic: Hex Maniac +Gender: Female +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 36 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CLIFFORD === +Name: CLIFFORD +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Girafarig +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NICHOLAS === +Name: NICHOLAS +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Wobbuffet +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_3 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_4 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_5 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_6 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_SPACE_CENTER_7 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MACEY === +Name: MACEY +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Natu +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_RUSTBORO_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Torchic +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_BRENDAN_RUSTBORO_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Treecko +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_PAXTON === +Name: PAXTON +Class: Expert +Pic: Expert M +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Swellow +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Breloom +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABELLA === +Name: ISABELLA +Class: Triathlete +Pic: Swimming Triathlete F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_WEATHER_INST_5 === +Name: GRUNT +Class: Team Aqua +Pic: Aqua Grunt F +Gender: Female +Music: Aqua +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MT_CHIMNEY === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Numel +Level: 18 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Poochyena +Level: 20 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Numel +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Zubat +Level: 22 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JONATHAN === +Name: JONATHAN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Kecleon +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Loudred +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_RUSTBORO_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Slugma +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mudkip +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAY_RUSTBORO_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Setup First Turn + +Wingull +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Treecko +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAXIE_MAGMA_HIDEOUT === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Items: Super Potion / Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mightyena +Level: 37 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 38 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 39 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_MAXIE_MT_CHIMNEY === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Items: Super Potion / Super Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mightyena +Level: 24 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Zubat +Level: 24 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 25 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_TIANA === +Name: TIANA +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HALEY_1 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JANICE === +Name: JANICE +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Marill +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_VIVI === +Name: VIVI +Class: Winstrate +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Marill +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Shroomish +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Numel +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_HALEY_2 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_HALEY_3 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Breloom +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_HALEY_4 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Breloom +Level: 32 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_HALEY_5 === +Name: HALEY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Lombre +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Breloom +Level: 34 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_SALLY === +Name: SALLY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Oddish +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROBIN === +Name: ROBIN +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Shroomish +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDREA === +Name: ANDREA +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 40 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CRISSY === +Name: CRISSY +Class: Lass +Pic: Lass +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Wailmer +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RICK === +Name: RICK +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 4 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LYLE === +Name: LYLE +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wurmple +Level: 3 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSE === +Name: JOSE +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wurmple +Level: 8 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Nincada +Level: 8 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_DOUG === +Name: DOUG +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nincada +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Ninjask +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GREG === +Name: GREG +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Volbeat +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Illumise +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KENT === +Name: KENT +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAMES_1 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Nincada +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nincada +Level: 6 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAMES_2 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 27 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_JAMES_3 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Ninjask +Level: 29 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_JAMES_4 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Dustox +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Ninjask +Level: 31 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_JAMES_5 === +Name: JAMES +Class: Bug Catcher +Pic: Bug Catcher +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Surskit +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ninjask +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Dustox +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ninjask +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_BRICE === +Name: BRICE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRENT_1 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LENNY === +Name: LENNY +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCAS_1 === +Name: LUCAS +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALAN === +Name: ALAN +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nosepass +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Graveler +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CLARK === +Name: CLARK +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ERIC === +Name: ERIC +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Baltoy +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCAS_2 === +Name: LUCAS +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Splash +- Water Gun + +=== TRAINER_MIKE_1 === +Name: MIKE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Growl + +Poochyena +Level: 10 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Bite +- Scary Face + +=== TRAINER_MIKE_2 === +Name: MIKE +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 16 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TRENT_2 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Geodude +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Graveler +Level: 24 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_TRENT_3 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Geodude +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 27 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_TRENT_4 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_TRENT_5 === +Name: TRENT +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Graveler +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Golem +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_DEZ_AND_LUKE === +Name: DEZ & LUKE +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Delcatty +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Manectric +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEA_AND_JED === +Name: LEA & JED +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Luvdisc +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIRA_AND_DAN_1 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Illumise +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIRA_AND_DAN_2 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Illumise +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KIRA_AND_DAN_3 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Illumise +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KIRA_AND_DAN_4 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Illumise +Level: 36 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KIRA_AND_DAN_5 === +Name: KIRA & DAN +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Volbeat +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Illumise +Level: 39 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_JOHANNA === +Name: JOHANNA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GERALD === +Name: GERALD +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Kecleon +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Flamethrower +- Fury Swipes +- Feint Attack +- Bind + +=== TRAINER_VIVIAN === +Name: VIVIAN +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bide +- Detect +- Confusion +- Thunder Punch + +Meditite +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder Punch +- Detect +- Confusion +- Meditate + +=== TRAINER_DANIELLE === +Name: DANIELLE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 23 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Bide +- Detect +- Confusion +- Fire Punch + +=== TRAINER_HIDEO === +Name: HIDEO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Self Destruct +- Sludge +- Smokescreen + +Koffing +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Poison Gas +- Sludge +- Smokescreen + +=== TRAINER_KEIGO === +Name: KEIGO +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Koffing +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Poison Gas +- Self Destruct +- Sludge +- Smokescreen + +Ninjask +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sand Attack +- Double Team +- Fury Cutter +- Swords Dance + +=== TRAINER_RILEY === +Name: RILEY +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint + +Nincada +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Leech Life +- Fury Swipes +- Mind Reader +- Dig + +Koffing +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Tackle +- Self Destruct +- Sludge +- Smokescreen + +=== TRAINER_FLINT === +Name: FLINT +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Xatu +Level: 29 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_ASHLEY === +Name: ASHLEY +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Swablu +Level: 27 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_WALLY_MAUVILLE === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Ralts +Level: 16 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_WALLY_VR_2 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Altaria +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 46 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 48 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_3 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Altaria +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 49 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 47 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 51 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_4 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Altaria +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 52 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 50 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 54 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_WALLY_VR_5 === +Name: WALLY +Class: Rival +Pic: Wally +Gender: Male +Music: Male +Items: Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Altaria +Level: 56 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Aerial Ace +- Safeguard +- Dragon Breath +- Dragon Dance + +Delcatty +Level: 55 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Sing +- Assist +- Charm +- Feint Attack + +Roselia +Level: 56 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Magical Leaf +- Leech Seed +- Giga Drain +- Toxic + +Magneton +Level: 53 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe +- Supersonic +- Thunderbolt +- Tri Attack +- Screech + +Gardevoir +Level: 57 +IVs: 30 HP / 30 Atk / 30 Def / 30 SpA / 30 SpD / 30 Spe +- Double Team +- Calm Mind +- Psychic +- Future Sight + +=== TRAINER_BRENDAN_LILYCOVE_MUDKIP === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Grovyle +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_BRENDAN_LILYCOVE_TREECKO === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Combusken +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_BRENDAN_LILYCOVE_TORCHIC === +Name: BRENDAN +Class: Rival +Pic: Brendan +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Marshtomp +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_MUDKIP === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Grovyle +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Pelipper +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Combusken +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_MAY_LILYCOVE_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 31 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Ludicolo +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Slugma +Level: 32 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Marshtomp +Level: 34 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_JONAH === +Name: JONAH +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 30 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HENRY === +Name: HENRY +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Carvanha +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacruel +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ROGER === +Name: ROGER +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Magikarp +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gyarados +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALEXA === +Name: ALEXA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Gloom +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Azumarill +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RUBEN === +Name: RUBEN +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Shiftry +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Nosepass +Level: 34 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_KOJI_1 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WAYNE === +Name: WAYNE +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 31 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wailmer +Level: 36 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AIDAN === +Name: AIDAN +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Swellow +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skarmory +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_REED === +Name: REED +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Spheal +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TISHA === +Name: TISHA +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Chinchou +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TORI_AND_TIA === +Name: TORI & TIA +Class: Twins +Pic: Twins +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Spinda +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spinda +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KIM_AND_IRIS === +Name: KIM & IRIS +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Swablu +Level: 32 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Sing +- Fury Attack +- Safeguard +- Aerial Ace + +Numel +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Flamethrower +- Take Down +- Rest +- Earthquake + +=== TRAINER_TYRA_AND_IVY === +Name: TYRA & IVY +Class: Sr And Jr +Pic: Sr And Jr +Gender: Male +Music: Twins +Double Battle: Yes +AI: Check Bad Move + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Growth +- Stun Spore +- Mega Drain +- Leech Seed + +Graveler +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Defense Curl +- Rollout +- Mud Sport +- Rock Throw + +=== TRAINER_MEL_AND_PAUL === +Name: MEL & PAUL +Class: Young Couple +Pic: Young Couple +Gender: Male +Music: Girl +Double Battle: Yes +AI: Check Bad Move + +Dustox +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Psybeam +- Toxic +- Protect + +Beautifly +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe +- Gust +- Mega Drain +- Attract +- Stun Spore + +=== TRAINER_JOHN_AND_JAY_1 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 39 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 39 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_2 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 43 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 43 +IVs: 25 HP / 25 Atk / 25 Def / 25 SpA / 25 SpD / 25 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_3 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 46 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 46 +IVs: 26 HP / 26 Atk / 26 Def / 26 SpA / 26 SpD / 26 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_4 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Setup First Turn + +Medicham +Level: 49 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 49 +IVs: 27 HP / 27 Atk / 27 Def / 27 SpA / 27 SpD / 27 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_JOHN_AND_JAY_5 === +Name: JOHN & JAY +Class: Old Couple +Pic: Old Couple +Gender: Male +Music: Intense +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Medicham +Level: 52 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Psychic +- Fire Punch +- Psych Up +- Protect + +Hariyama +Level: 52 +IVs: 29 HP / 29 Atk / 29 Def / 29 SpA / 29 SpD / 29 Spe +- Focus Punch +- Rock Tomb +- Rest +- Belly Drum + +=== TRAINER_RELI_AND_IAN === +Name: RELI & IAN +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Azumarill +Level: 35 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wingull +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_1 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Chinchou +Level: 34 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_2 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Chinchou +Level: 42 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 40 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_3 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 45 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 43 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_4 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 48 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 46 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LILA_AND_ROY_5 === +Name: LILA & ROY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Lanturn +Level: 51 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sharpedo +Level: 49 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LISA_AND_RAY === +Name: LISA & RAY +Class: Sis And Bro +Pic: Sis And Bro +Gender: Male +Music: Swimmer +Double Battle: Yes +AI: Check Bad Move + +Goldeen +Level: 27 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHRIS === +Name: CHRIS +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 20 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Feebas +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Carvanha +Level: 23 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAWSON === +Name: DAWSON +Class: Rich Boy +Pic: Rich Boy +Gender: Male +Music: Rich +Double Battle: No +AI: Check Bad Move + +Zigzagoon @ Nugget +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Poochyena +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SARAH === +Name: SARAH +Class: Lady +Pic: Lady +Gender: Female +Music: Female +Items: Full Restore +Double Battle: No +AI: Check Bad Move + +Lotad +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zigzagoon @ Nugget +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DARIAN === +Name: DARIAN +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Magikarp +Level: 9 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HAILEY === +Name: HAILEY +Class: Tuber F +Pic: Tuber F +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 13 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHANDLER === +Name: CHANDLER +Class: Tuber M +Pic: Tuber M +Gender: Male +Music: Girl +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 12 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KALEB === +Name: KALEB +Class: Pokefan +Pic: Pokefan M +Gender: Male +Music: Twins +Double Battle: No +AI: Check Bad Move + +Minun @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Plusle @ Oran Berry +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOSEPH === +Name: JOSEPH +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Voltorb +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALYSSA === +Name: ALYSSA +Class: Triathlete +Pic: Cycling Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Magnemite +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARCOS === +Name: MARCOS +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Voltorb +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_RHETT === +Name: RHETT +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 15 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_TYRON === +Name: TYRON +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CELINA === +Name: CELINA +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BIANCA === +Name: BIANCA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HAYDEN === +Name: HAYDEN +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SOPHIE === +Name: SOPHIE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_COBY === +Name: COBY +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Swellow +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LAWRENCE === +Name: LAWRENCE +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sandshrew +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_WYATT === +Name: WYATT +Class: Pokemaniac +Pic: Pokemaniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Aron +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANGELINA === +Name: ANGELINA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Lombre +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Marill +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KAI === +Name: KAI +Class: Fisherman +Pic: Fisherman +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Barboach +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CHARLOTTE === +Name: CHARLOTTE +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Nuzleaf +Level: 19 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEANDRE === +Name: DEANDRE +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Zigzagoon +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Aron +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Electrike +Level: 14 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_1 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_2 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_3 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_4 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Zubat +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_5 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_6 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_7 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_8 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_9 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_10 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_11 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_12 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_13 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt M +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Zubat +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_14 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Mightyena +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_15 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRUNT_MAGMA_HIDEOUT_16 === +Name: GRUNT +Class: Team Magma +Pic: Magma Grunt F +Gender: Female +Music: Magma +Double Battle: No +AI: Check Bad Move + +Baltoy +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TABITHA_MAGMA_HIDEOUT === +Name: TABITHA +Class: Magma Admin +Pic: Magma Admin +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move + +Numel +Level: 26 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Mightyena +Level: 28 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Zubat +Level: 30 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +Camerupt +Level: 33 +IVs: 9 HP / 9 Atk / 9 Def / 9 SpA / 9 SpD / 9 Spe + +=== TRAINER_DARCY === +Name: DARCY +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Pelipper +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Camerupt +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAXIE_MOSSDEEP === +Name: MAXIE +Class: Magma Leader +Pic: Magma Leader Maxie +Gender: Male +Music: Magma +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Mightyena +Level: 42 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Crobat +Level: 43 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +Camerupt +Level: 44 +IVs: 18 HP / 18 Atk / 18 Def / 18 SpA / 18 SpD / 18 Spe + +=== TRAINER_PETE === +Name: PETE +Class: Swimmer M +Pic: Swimmer M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Tentacool +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ISABELLE === +Name: ISABELLE +Class: Swimmer F +Pic: Swimmer F +Gender: Female +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Marill +Level: 15 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDRES_1 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Sandshrew +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_JOSUE === +Name: JOSUE +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Wingull +Level: 25 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_CAMRON === +Name: CAMRON +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CORY_1 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Machop +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Tentacool +Level: 24 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CAROLINA === +Name: CAROLINA +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Swellow +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +Manectric +Level: 24 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ELIJAH === +Name: ELIJAH +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move + +Skarmory +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Skarmory +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CELIA === +Name: CELIA +Class: Picnicker +Pic: Picnicker +Gender: Female +Music: Girl +Double Battle: No +AI: Check Bad Move + +Marill +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lombre +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRYAN === +Name: BRYAN +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Sandslash +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDEN === +Name: BRANDEN +Class: Camper +Pic: Camper +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Taillow +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Nuzleaf +Level: 22 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRYANT === +Name: BRYANT +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Numel +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Slugma +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SHAYLA === +Name: SHAYLA +Class: Aroma Lady +Pic: Aroma Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Roselia +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_KYRA === +Name: KYRA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Dodrio +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JAIDEN === +Name: JAIDEN +Class: Ninja Boy +Pic: Ninja Boy +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Ninjask +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Gulpin +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALIX === +Name: ALIX +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Kadabra +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kirlia +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_HELENE === +Name: HELENE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MARLENE === +Name: MARLENE +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Spoink +Level: 18 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DEVAN === +Name: DEVAN +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Geodude +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_JOHNSON === +Name: JOHNSON +Class: Youngster +Pic: Youngster +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Shroomish +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Lotad +Level: 8 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MELINA === +Name: MELINA +Class: Triathlete +Pic: Running Triathlete F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Doduo +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDI === +Name: BRANDI +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Ralts +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_AISHA === +Name: AISHA +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 17 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAKAYLA === +Name: MAKAYLA +Class: Expert +Pic: Expert F +Gender: Female +Music: Intense +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Roselia +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Medicham +Level: 33 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_FABIAN === +Name: FABIAN +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_DAYTON === +Name: DAYTON +Class: Kindler +Pic: Kindler +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Slugma +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Numel +Level: 25 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RACHEL === +Name: RACHEL +Class: Parasol Lady +Pic: Parasol Lady +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Goldeen +Level: 26 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEONEL === +Name: LEONEL +Class: Cooltrainer +Pic: Cooltrainer M +Gender: Male +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Manectric +Level: 30 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Thunder +- Quick Attack +- Thunder Wave + +=== TRAINER_CALLIE === +Name: CALLIE +Class: Battle Girl +Pic: Battle Girl +Gender: Female +Music: Intense +Double Battle: No +AI: Check Bad Move + +Meditite +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Makuhita +Level: 28 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_CALE === +Name: CALE +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move + +Dustox +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Beautifly +Level: 29 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MYLES === +Name: MYLES +Class: Pkmn Breeder +Pic: Pokemon Breeder M +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Wingull +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tropius +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Zigzagoon +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Numel +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PAT === +Name: PAT +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Poochyena +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Shroomish +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Marill +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Sandshrew +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Gulpin +Level: 25 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CRISTIN_1 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Loudred +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +Vigoroth +Level: 29 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_MAY_RUSTBORO_TREECKO === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Lotad +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Torchic +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_MAY_RUSTBORO_TORCHIC === +Name: MAY +Class: Rival +Pic: May +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Torkoal +Level: 13 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mudkip +Level: 15 +IVs: 6 HP / 6 Atk / 6 Def / 6 SpA / 6 SpD / 6 Spe + +=== TRAINER_ROXANNE_2 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Golem +Level: 32 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Magnitude +- Explosion + +Kabuto @ Sitrus Berry +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_3 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Omanyte +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Golem +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Magnitude +- Explosion + +Kabutops @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_4 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Omastar +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Golem +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Rollout +- Earthquake +- Explosion + +Kabutops @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Onix +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_ROXANNE_5 === +Name: ROXANNE +Class: Leader +Pic: Leader Roxanne +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Aerodactyl +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rock Slide +- Hyper Beam +- Supersonic +- Protect + +Golem +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Rollout +- Earthquake +- Explosion + +Omastar +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Ice Beam +- Rock Slide +- Surf + +Kabutops @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swords Dance +- Ice Beam +- Surf +- Rock Slide + +Steelix +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Iron Tail +- Explosion +- Roar +- Rock Slide + +Nosepass @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Double Team +- Explosion +- Protect +- Rock Slide + +=== TRAINER_BRAWLY_2 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Machamp @ Sitrus Berry +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Meditite +Level: 33 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Light Screen +- Reflect +- Focus Punch + +Hitmontop +Level: 35 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 37 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_3 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Machamp @ Sitrus Berry +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Light Screen +- Reflect +- Focus Punch + +Hitmontop +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_4 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Hitmonchan +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Uppercut +- Protect +- Fire Punch +- Ice Punch + +Machamp @ Sitrus Berry +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Karate Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Light Screen +- Reflect +- Psychic + +Hitmontop +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_BRAWLY_5 === +Name: BRAWLY +Class: Leader +Pic: Leader Brawly +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Hitmonlee +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Mega Kick +- Focus Punch +- Earthquake +- Bulk Up + +Hitmonchan +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Uppercut +- Protect +- Fire Punch +- Ice Punch + +Machamp @ Sitrus Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Cross Chop +- Rock Slide +- Focus Punch +- Bulk Up + +Medicham +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Focus Punch +- Light Screen +- Reflect +- Psychic + +Hitmontop +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Pursuit +- Counter +- Protect +- Triple Kick + +Hariyama @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Focus Punch +- Belly Drum +- Earthquake + +=== TRAINER_WATTSON_2 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Mareep +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_3 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Pikachu +Level: 39 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Shock Wave + +Flaaffy +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_4 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Raichu +Level: 44 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Protect + +Ampharos +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_WATTSON_5 === +Name: WATTSON +Class: Leader +Pic: Leader Wattson +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Electabuzz +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Swift +- Focus Punch +- Thunder Punch +- Light Screen + +Raichu +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Slam +- Rain Dance +- Protect + +Ampharos +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Protect +- Thunder Wave +- Light Screen + +Electrode +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rollout +- Thunder +- Explosion +- Rain Dance + +Magneton @ Sitrus Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Supersonic +- Protect +- Thunder +- Rain Dance + +Manectric @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Bite +- Thunder Wave +- Thunder +- Protect + +=== TRAINER_FLANNERY_2 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Magcargo @ White Herb +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Ponyta +Level: 36 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_3 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Growlithe +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Roar +- Sunny Day + +Magcargo @ White Herb +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Ponyta +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_4 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Houndour +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Roar +- Solar Beam +- Taunt +- Sunny Day + +Growlithe +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Sunny Day +- Roar + +Magcargo @ White Herb +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Rapidash +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_FLANNERY_5 === +Name: FLANNERY +Class: Leader +Pic: Leader Flannery +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Arcanine +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Helping Hand +- Flamethrower +- Sunny Day +- Roar + +Magcargo @ White Herb +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Attract +- Light Screen +- Rock Slide + +Houndoom +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Roar +- Solar Beam +- Taunt +- Sunny Day + +Rapidash +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Flamethrower +- Attract +- Solar Beam +- Bounce + +Camerupt @ White Herb +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Earthquake +- Attract + +Torkoal @ White Herb +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Overheat +- Sunny Day +- Explosion +- Attract + +=== TRAINER_NORMAN_2 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Chansey +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Slaking @ Sitrus Berry +Level: 42 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Spinda +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_3 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Slaking @ Sitrus Berry +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Chansey +Level: 47 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Spinda +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_4 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Slaking @ Sitrus Berry +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Blissey +Level: 52 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Light Screen +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Spinda +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_NORMAN_5 === +Name: NORMAN +Class: Leader +Pic: Leader Norman +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Slaking @ Sitrus Berry +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Blizzard +- Shadow Ball +- Double Edge +- Fire Blast + +Blissey +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Protect +- Sing +- Skill Swap +- Focus Punch + +Kangaskhan +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Fake Out +- Dizzy Punch +- Endure +- Reversal + +Tauros +Level: 57 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Take Down +- Protect +- Fire Blast +- Earthquake + +Spinda +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Teeter Dance +- Skill Swap +- Facade +- Hypnosis + +Slaking @ Sitrus Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Flamethrower +- Thunderbolt +- Shadow Ball + +=== TRAINER_WINONA_2 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability / Risky + +Dratini @ Sitrus Berry +Level: 40 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Tropius +Level: 38 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Pelipper +Level: 41 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_3 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability / Risky + +Hoothoot +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 43 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Dragonair @ Sitrus Berry +Level: 45 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Pelipper +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_4 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability / Risky + +Noctowl +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Dragonair @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder Wave +- Thunderbolt +- Protect +- Ice Beam + +Pelipper +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Skarmory +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Aerial Ace +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_WINONA_5 === +Name: WINONA +Class: Leader +Pic: Leader Winona +Gender: Female +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability / Risky + +Noctowl +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Psychic +- Reflect +- Dream Eater + +Tropius +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Aerial Ace +- Solar Beam +- Earthquake + +Pelipper +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Surf +- Supersonic +- Protect +- Aerial Ace + +Dragonite @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hyper Beam +- Thunderbolt +- Earthquake +- Ice Beam + +Skarmory +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Whirlwind +- Spikes +- Steel Wing +- Aerial Ace + +Altaria @ Chesto Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sky Attack +- Rest +- Dragon Dance +- Earthquake + +=== TRAINER_TATE_AND_LIZA_2 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Slowpoke +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Claydol +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Ancient Power +- Psychic +- Light Screen + +Xatu @ Chesto Berry +Level: 49 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_3 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Drowzee +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Slowpoke +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Claydol +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Xatu @ Chesto Berry +Level: 54 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 55 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_4 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Hypno +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Claydol +Level: 59 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Slowpoke +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Xatu @ Chesto Berry +Level: 59 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 60 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_TATE_AND_LIZA_5 === +Name: TATE&LIZA +Class: Leader +Pic: Leader Tate And Liza +Gender: Male +Music: Female +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Hypno +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Dream Eater +- Headbutt +- Protect + +Claydol +Level: 64 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Explosion +- Psychic +- Light Screen + +Slowking +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Yawn +- Psychic +- Calm Mind +- Protect + +Xatu @ Chesto Berry +Level: 64 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Psychic +- Rest +- Confuse Ray +- Calm Mind + +Lunatone @ Chesto Berry +Level: 65 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Rest +- Calm Mind + +Solrock @ Sitrus Berry +Level: 65 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Sunny Day +- Solar Beam +- Psychic +- Flamethrower + +=== TRAINER_JUAN_2 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Poliwag +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Whiscash +Level: 46 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Walrein +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 48 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Crabhammer +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_3 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Poliwhirl +Level: 50 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Whiscash +Level: 51 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Walrein +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 53 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_4 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Lapras +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hydro Pump +- Perish Song +- Ice Beam +- Confuse Ray + +Whiscash +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Poliwhirl +Level: 56 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Protect +- Hydro Pump + +Walrein +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Ice Beam + +Crawdaunt @ Chesto Berry +Level: 58 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_JUAN_5 === +Name: JUAN +Class: Leader +Pic: Leader Juan +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore +Double Battle: Yes +AI: Check Bad Move / Try To Faint / Check Viability + +Lapras +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hydro Pump +- Perish Song +- Ice Beam +- Confuse Ray + +Whiscash +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rain Dance +- Water Pulse +- Double Team +- Fissure + +Politoed +Level: 61 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Hypnosis +- Rain Dance +- Hydro Pump +- Perish Song + +Walrein +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Body Slam +- Protect +- Sheer Cold + +Crawdaunt @ Chesto Berry +Level: 63 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Rest +- Guillotine +- Taunt +- Double Team + +Kingdra @ Chesto Berry +Level: 66 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Double Team +- Ice Beam +- Rest + +=== TRAINER_ANGELO === +Name: ANGELO +Class: Bug Maniac +Pic: Bug Maniac +Gender: Male +Music: Suspicious +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Illumise +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Shock Wave +- Quick Attack +- Charm + +Volbeat +Level: 17 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe +- Shock Wave +- Quick Attack +- Confuse Ray + +=== TRAINER_DARIUS === +Name: DARIUS +Class: Bird Keeper +Pic: Bird Keeper +Gender: Male +Music: Cool +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Tropius +Level: 30 +IVs: 24 HP / 24 Atk / 24 Def / 24 SpA / 24 SpD / 24 Spe + +=== TRAINER_STEVEN === +Name: STEVEN +Class: Rival +Pic: Steven +Gender: Male +Music: Male +Items: Full Restore / Full Restore / Full Restore / Full Restore +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Skarmory +Level: 77 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Toxic +- Aerial Ace +- Spikes +- Steel Wing + +Claydol +Level: 75 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Reflect +- Light Screen +- Ancient Power +- Earthquake + +Aggron +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Thunder +- Earthquake +- Solar Beam +- Dragon Claw + +Cradily +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Giga Drain +- Ancient Power +- Ingrain +- Confuse Ray + +Armaldo +Level: 76 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Water Pulse +- Ancient Power +- Aerial Ace +- Slash + +Metagross @ Sitrus Berry +Level: 78 +IVs: 31 HP / 31 Atk / 31 Def / 31 SpA / 31 SpD / 31 Spe +- Earthquake +- Psychic +- Meteor Mash +- Shadow Ball + +=== TRAINER_ANABEL === +Name: ANABEL +Class: Salon Maiden +Pic: Salon Maiden Anabel +Gender: Female +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_TUCKER === +Name: TUCKER +Class: Dome Ace +Pic: Dome Ace Tucker +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_SPENSER === +Name: SPENSER +Class: Palace Maven +Pic: Palace Maven Spenser +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_GRETA === +Name: GRETA +Class: Arena Tycoon +Pic: Arena Tycoon Greta +Gender: Female +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_NOLAND === +Name: NOLAND +Class: Factory Head +Pic: Factory Head Noland +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LUCY === +Name: LUCY +Class: Pike Queen +Pic: Pike Queen Lucy +Gender: Female +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRANDON === +Name: BRANDON +Class: Pyramid King +Pic: Pyramid King Brandon +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Beldum +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ANDRES_2 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Sandshrew +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Sandshrew +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_ANDRES_3 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sandshrew +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Sandshrew +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_ANDRES_4 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sandshrew +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Sandshrew +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_ANDRES_5 === +Name: ANDRES +Class: Ruin Maniac +Pic: Ruin Maniac +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move + +Nosepass +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Sandslash +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CORY_2 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machop +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Tentacool +Level: 30 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_CORY_3 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machop +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Tentacool +Level: 32 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_CORY_4 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machop +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Tentacruel +Level: 34 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_CORY_5 === +Name: CORY +Class: Sailor +Pic: Sailor +Gender: Male +Music: Male +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machoke +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Tentacruel +Level: 36 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_PABLO_2 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Staryu +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Staryu +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_PABLO_3 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Wingull +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Staryu +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Staryu +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_PABLO_4 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Staryu +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Staryu +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_PABLO_5 === +Name: PABLO +Class: Triathlete +Pic: Swimming Triathlete M +Gender: Male +Music: Swimmer +Double Battle: No +AI: Check Bad Move + +Pelipper +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Starmie +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Starmie +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_KOJI_2 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Machoke +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Machoke +Level: 37 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_KOJI_3 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Makuhita +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Machoke +Level: 39 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_KOJI_4 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Machoke +Level: 41 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_KOJI_5 === +Name: KOJI +Class: Black Belt +Pic: Black Belt +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Hariyama +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machamp +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Machamp +Level: 43 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_CRISTIN_2 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Loudred +Level: 35 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +Vigoroth +Level: 35 +IVs: 13 HP / 13 Atk / 13 Def / 13 SpA / 13 SpD / 13 Spe + +=== TRAINER_CRISTIN_3 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Spinda +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Loudred +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +Vigoroth +Level: 37 +IVs: 14 HP / 14 Atk / 14 Def / 14 SpA / 14 SpD / 14 Spe + +=== TRAINER_CRISTIN_4 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Spinda +Level: 39 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Loudred +Level: 39 +IVs: 15 HP / 15 Atk / 15 Def / 15 SpA / 15 SpD / 15 Spe + +Vigoroth +Level: 39 +IVs: 12 HP / 12 Atk / 12 Def / 12 SpA / 12 SpD / 12 Spe + +=== TRAINER_CRISTIN_5 === +Name: CRISTIN +Class: Cooltrainer +Pic: Cooltrainer F +Gender: Female +Music: Cool +Items: Hyper Potion +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Spinda +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Exploud +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +Slaking +Level: 41 +IVs: 17 HP / 17 Atk / 17 Def / 17 SpA / 17 SpD / 17 Spe + +=== TRAINER_FERNANDO_2 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Electrike +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Loudred +Level: 35 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_FERNANDO_3 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Electrike +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Manectric +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Loudred +Level: 37 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_FERNANDO_4 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Manectric +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Loudred +Level: 39 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_FERNANDO_5 === +Name: FERNANDO +Class: Guitarist +Pic: Guitarist +Gender: Male +Music: Intense +Double Battle: No +AI: Check Bad Move + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Manectric +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Exploud +Level: 41 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_SAWYER_2 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Geodude +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Numel +Level: 26 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_SAWYER_3 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Machop +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Numel +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Graveler +Level: 28 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_SAWYER_4 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Machop +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Numel +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Graveler +Level: 30 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_SAWYER_5 === +Name: SAWYER +Class: Hiker +Pic: Hiker +Gender: Male +Music: Hiker +Double Battle: No +AI: Check Bad Move / Try To Faint / Check Viability + +Machoke +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Camerupt +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Golem +Level: 33 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_GABRIELLE_2 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Mightyena +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Zigzagoon +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Lotad +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Seedot +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Taillow +Level: 31 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_GABRIELLE_3 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Skitty +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Mightyena +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Linoone +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Lombre +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Nuzleaf +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Taillow +Level: 33 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_GABRIELLE_4 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Delcatty +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Mightyena +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Linoone +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Lombre +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Nuzleaf +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Swellow +Level: 35 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_GABRIELLE_5 === +Name: GABRIELLE +Class: Pkmn Breeder +Pic: Pokemon Breeder F +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Delcatty +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Mightyena +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Linoone +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Ludicolo +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Shiftry +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Swellow +Level: 37 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_THALIA_2 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Wailmer +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +Horsea +Level: 34 +IVs: 1 HP / 1 Atk / 1 Def / 1 SpA / 1 SpD / 1 Spe + +=== TRAINER_THALIA_3 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Wailmer +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +Seadra +Level: 36 +IVs: 2 HP / 2 Atk / 2 Def / 2 SpA / 2 SpD / 2 Spe + +=== TRAINER_THALIA_4 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Wailmer +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +Seadra +Level: 38 +IVs: 3 HP / 3 Atk / 3 Def / 3 SpA / 3 SpD / 3 Spe + +=== TRAINER_THALIA_5 === +Name: THALIA +Class: Beauty +Pic: Beauty +Gender: Female +Music: Female +Double Battle: No +AI: Check Bad Move + +Luvdisc +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Wailord +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +Kingdra +Level: 40 +IVs: 4 HP / 4 Atk / 4 Def / 4 SpA / 4 SpD / 4 Spe + +=== TRAINER_MARIELA === +Name: MARIELA +Class: Psychic +Pic: Psychic F +Gender: Female +Music: Intense +Double Battle: No + +Chimecho +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_ALVARO === +Name: ALVARO +Class: Psychic +Pic: Psychic M +Gender: Male +Music: Intense +Double Battle: No + +Banette +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Kadabra +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_EVERETT === +Name: EVERETT +Class: Gentleman +Pic: Gentleman +Gender: Male +Music: Rich +Double Battle: No + +Wobbuffet +Level: 41 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_RED === +Name: RED +Class: Rival +Pic: Red +Gender: Male +Music: Male +Double Battle: No + +Charmander +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_LEAF === +Name: LEAF +Class: Rival +Pic: Leaf +Gender: Female +Music: Male +Double Battle: No + +Bulbasaur +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_BRENDAN_PLACEHOLDER === +Name: BRENDAN +Class: RS Protag +Pic: RS Brendan +Gender: Male +Music: Male +Double Battle: No + +Groudon +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +=== TRAINER_MAY_PLACEHOLDER === +Name: MAY +Class: RS Protag +Pic: RS May +Gender: Female +Music: Male +Double Battle: No + +Kyogre +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe diff --git a/src/data/types_info.h b/src/data/types_info.h new file mode 100644 index 000000000000..f9bd233ca6c4 --- /dev/null +++ b/src/data/types_info.h @@ -0,0 +1,423 @@ +#include "constants/battle.h" +#include "constants/pokemon.h" + +#define X UQ_4_12 +#define ______ X(1.0) // Regular effectiveness. + +// Type matchup updates. Attacker Defender +#define STL_RS (B_UPDATED_TYPE_MATCHUPS >= GEN_6 ? X(1.0) : X(0.5)) // Ghost/Dark -> Steel +#define PSN_RS (B_UPDATED_TYPE_MATCHUPS >= GEN_2 ? X(0.5) : X(2.0)) // Bug -> Poison +#define BUG_RS (B_UPDATED_TYPE_MATCHUPS >= GEN_2 ? X(1.0) : X(2.0)) // Poison -> Bug +#define PSY_RS (B_UPDATED_TYPE_MATCHUPS >= GEN_2 ? X(2.0) : X(0.0)) // Ghost -> Psychic +#define FIR_RS (B_UPDATED_TYPE_MATCHUPS >= GEN_2 ? X(0.5) : X(1.0)) // Ice -> Fire + +const uq4_12_t gTypeEffectivenessTable[NUMBER_OF_MON_TYPES][NUMBER_OF_MON_TYPES] = +{// Defender --> + // Attacker None Normal Fighting Flying Poison Ground Rock Bug Ghost Steel Mystery Fire Water Grass Electric Psychic Ice Dragon Dark Fairy Stellar + [TYPE_NONE] = {______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______}, + [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), BUG_RS, 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), PSN_RS, ______, ______, ______, X(0.5), X(0.5), ______, X(0.5), ______, X(2.0), ______, X(2.0), ______, ______, X(2.0), X(0.5), ______}, + [TYPE_GHOST] = {______, X(0.0), ______, ______, ______, ______, ______, ______, X(2.0), STL_RS, ______, ______, ______, ______, ______, PSY_RS, ______, ______, X(0.5), ______, ______}, + [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), ______, FIR_RS, X(0.5), X(2.0), ______, ______, X(0.5), X(2.0), ______, ______, ______}, + [TYPE_DRAGON] = {______, ______, ______, ______, ______, ______, ______, ______, ______, X(0.5), ______, ______, ______, ______, ______, ______, ______, X(2.0), ______, X(0.0), ______}, + [TYPE_DARK] = {______, ______, X(0.5), ______, ______, ______, ______, ______, X(2.0), STL_RS, ______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), X(0.5), ______}, + [TYPE_FAIRY] = {______, ______, X(2.0), ______, X(0.5), ______, ______, ______, ______, X(0.5), ______, X(0.5), ______, ______, ______, ______, ______, X(2.0), X(2.0), ______, ______}, + [TYPE_STELLAR] = {______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______}, +}; + +#undef ______ +#undef X + +#if B_EXPANDED_TYPE_NAMES == TRUE +#define HANDLE_EXPANDED_TYPE_NAME(_name, ...) _(DEFAULT(_name, __VA_ARGS__)) +#else +#define HANDLE_EXPANDED_TYPE_NAME(_name, ...) _(_name) +#endif + +// .generic is large enough that the text for TYPE_ELECTRIC will exceed TEXT_BUFF_ARRAY_COUNT. +// In this array there's commented-out data such as references to type-resist berries that would otherwise would go unused. +// However, we figured this information would be useful for users that want to add their own types as a reminder of +// what data would they need to add in order to have their new types be fully fledged like official types. +const struct TypeInfo gTypesInfo[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NONE] = + { + .name = _("None"), + .generic = _("a move"), + .palette = 15, // Uses TYPE_MYSTERY's icon + .teraTypeRGBValue = RGB_WHITE, + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_NormalTMHM, + }, + [TYPE_NORMAL] = + { + .name = _("Normal"), + .generic = _("a NORMAL move"), + .palette = 13, + .zMove = MOVE_BREAKNECK_BLITZ, + .maxMove = MOVE_MAX_STRIKE, + .teraTypeRGBValue = RGB_WHITE, // custom + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_NormalTMHM, + //.enhanceItem = ITEM_SILK_SCARF, + //.berry = ITEM_CHILAN_BERRY, + //.gem = ITEM_NORMAL_GEM, + //.zCrystal = ITEM_NORMALIUM_Z, + //.teraShard = ITEM_NORMAL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_NORMAL, + }, + [TYPE_FIGHTING] = + { + .name = HANDLE_EXPANDED_TYPE_NAME("Fight", "Fighting"), + .generic = _("a FIGHTING move"), + .palette = 13, + .zMove = MOVE_ALL_OUT_PUMMELING, + .maxMove = MOVE_MAX_KNUCKLE, + .teraTypeRGBValue = RGB(26, 8, 14), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_FightingTMHM, + //.enhanceItem = ITEM_BLACK_BELT, + //.berry = ITEM_CHOPLE_BERRY, + //.gem = ITEM_FIGHTING_GEM, + //.zCrystal = ITEM_FIGHTINIUM_Z, + //.plate = ITEM_FIST_PLATE, + //.memory = ITEM_FIGHTING_MEMORY, + //.teraShard = ITEM_FIGHTING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIGHTING, + }, + [TYPE_FLYING] = + { + .name = _("Flying"), + .generic = _("a FLYING move"), + .palette = 14, + .zMove = MOVE_SUPERSONIC_SKYSTRIKE, + .maxMove = MOVE_MAX_AIRSTREAM, + .teraTypeRGBValue = RGB(31, 26, 7), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_FlyingTMHM, + //.enhanceItem = ITEM_SHARP_BEAK, + //.berry = ITEM_COBA_BERRY, + //.gem = ITEM_FLYING_GEM, + //.zCrystal = ITEM_FLYINIUM_Z, + //.plate = ITEM_SKY_PLATE, + //.memory = ITEM_FLYING_MEMORY, + //.teraShard = ITEM_FLYING_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FLYING, + }, + [TYPE_POISON] = + { + .name = _("Poison"), + .generic = _("a POISON move"), + .palette = 14, + .zMove = MOVE_ACID_DOWNPOUR, + .maxMove = MOVE_MAX_OOZE, + .teraTypeRGBValue = RGB(26, 10, 25), // custom + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_PoisonTMHM, + //.enhanceItem = ITEM_POISON_BARB, + //.berry = ITEM_KEBIA_BERRY, + //.gem = ITEM_POISON_GEM, + //.zCrystal = ITEM_POISONIUM_Z, + //.plate = ITEM_TOXIC_PLATE, + //.memory = ITEM_POISON_MEMORY, + //.teraShard = ITEM_POISON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_POISON, + }, + [TYPE_GROUND] = + { + .name = _("Ground"), + .generic = _("a GROUND move"), + .palette = 13, + .zMove = MOVE_TECTONIC_RAGE, + .maxMove = MOVE_MAX_QUAKE, + .teraTypeRGBValue = RGB(25, 23, 18), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_GroundTMHM, + //.enhanceItem = ITEM_SOFT_SAND, + //.berry = ITEM_SHUCA_BERRY, + //.gem = ITEM_GROUND_GEM, + //.zCrystal = ITEM_GROUNDIUM_Z, + //.plate = ITEM_EARTH_PLATE, + //.memory = ITEM_GROUND_MEMORY, + //.teraShard = ITEM_GROUND_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GROUND, + }, + [TYPE_ROCK] = + { + .name = _("Rock"), + .generic = _("a ROCK move"), + .palette = 13, + .zMove = MOVE_CONTINENTAL_CRUSH, + .maxMove = MOVE_MAX_ROCKFALL, + .teraTypeRGBValue = RGB(18, 16, 8), // custom + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_RockTMHM, + //.enhanceItem = ITEM_HARD_STONE, + //.berry = ITEM_CHARTI_BERRY, + //.gem = ITEM_ROCK_GEM, + //.zCrystal = ITEM_ROCKIUM_Z, + //.plate = ITEM_STONE_PLATE, + //.memory = ITEM_ROCK_MEMORY, + //.teraShard = ITEM_ROCK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ROCK, + }, + [TYPE_BUG] = + { + .name = _("Bug"), + .generic = _("a BUG move"), + .palette = 15, + .zMove = MOVE_SAVAGE_SPIN_OUT, + .maxMove = MOVE_MAX_FLUTTERBY, + .teraTypeRGBValue = RGB(18, 24, 6), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_BugTMHM, + //.enhanceItem = ITEM_SILVER_POWDER, + //.berry = ITEM_TANGA_BERRY, + //.gem = ITEM_BUG_GEM, + //.zCrystal = ITEM_BUGINIUM_Z, + //.plate = ITEM_INSECT_PLATE, + //.memory = ITEM_BUG_MEMORY, + //.teraShard = ITEM_BUG_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_BUG, + }, + [TYPE_GHOST] = + { + .name = _("Ghost"), + .generic = _("a GHOST move"), + .palette = 14, + .zMove = MOVE_NEVER_ENDING_NIGHTMARE, + .maxMove = MOVE_MAX_PHANTASM, + .teraTypeRGBValue = RGB(12, 10, 16), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_GhostTMHM, + //.enhanceItem = ITEM_SPELL_TAG, + //.berry = ITEM_KASIB_BERRY, + //.gem = ITEM_GHOST_GEM, + //.zCrystal = ITEM_GHOSTIUM_Z, + //.plate = ITEM_SPOOKY_PLATE, + //.memory = ITEM_GHOST_MEMORY, + //.teraShard = ITEM_GHOST_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GHOST, + }, + [TYPE_STEEL] = + { + .name = _("Steel"), + .generic = _("a STEEL move"), + .palette = 13, + .zMove = MOVE_CORKSCREW_CRASH, + .maxMove = MOVE_MAX_STEELSPIKE, + .teraTypeRGBValue = RGB(19, 19, 20), + .damageCategory = DAMAGE_CATEGORY_PHYSICAL, + .paletteTMHM = gItemIconPalette_SteelTMHM, + //.enhanceItem = ITEM_METAL_COAT, + //.berry = ITEM_BABIRI_BERRY, + //.gem = ITEM_STEEL_GEM, + //.zCrystal = ITEM_STEELIUM_Z, + //.plate = ITEM_IRON_PLATE, + //.memory = ITEM_STEEL_MEMORY, + //.teraShard = ITEM_STEEL_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_STEEL, + }, + [TYPE_MYSTERY] = + { + .name = _("???"), + .generic = _("a ??? move"), + .palette = 15, + .teraTypeRGBValue = RGB_WHITE, + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + }, + [TYPE_FIRE] = + { + .name = _("Fire"), + .generic = _("a FIRE move"), + .palette = 13, + .zMove = MOVE_INFERNO_OVERDRIVE, + .maxMove = MOVE_MAX_FLARE, + .teraTypeRGBValue = RGB(31, 20, 11), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_FireTMHM, + //.enhanceItem = ITEM_CHARCOAL, + //.berry = ITEM_OCCA_BERRY, + //.gem = ITEM_FIRE_GEM, + //.zCrystal = ITEM_FIRIUM_Z, + //.plate = ITEM_FLAME_PLATE, + //.memory = ITEM_FIRE_MEMORY, + //.teraShard = ITEM_FIRE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FIRE, + }, + [TYPE_WATER] = + { + .name = _("Water"), + .generic = _("a WATER move"), + .palette = 14, + .zMove = MOVE_HYDRO_VORTEX, + .maxMove = MOVE_MAX_GEYSER, + .teraTypeRGBValue = RGB(10, 18, 27), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_WaterTMHM, + //.enhanceItem = ITEM_MYSTIC_WATER, + //.berry = ITEM_PASSHO_BERRY, + //.gem = ITEM_WATER_GEM, + //.zCrystal = ITEM_WATERIUM_Z, + //.plate = ITEM_SPLASH_PLATE, + //.memory = ITEM_WATER_MEMORY, + //.teraShard = ITEM_WATER_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_WATER, + }, + [TYPE_GRASS] = + { + .name = _("Grass"), + .generic = _("a GRASS move"), + .palette = 15, + .zMove = MOVE_BLOOM_DOOM, + .maxMove = MOVE_MAX_OVERGROWTH, + .teraTypeRGBValue = RGB(12, 24, 11), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_GrassTMHM, + //.enhanceItem = ITEM_MIRACLE_SEED, + //.berry = ITEM_RINDO_BERRY, + //.gem = ITEM_GRASS_GEM, + //.zCrystal = ITEM_GRASSIUM_Z, + //.plate = ITEM_MEADOW_PLATE, + //.memory = ITEM_GRASS_MEMORY, + //.teraShard = ITEM_GRASS_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_GRASS, + }, + [TYPE_ELECTRIC] = + { + .name = HANDLE_EXPANDED_TYPE_NAME("Electr", "Electric"), + .generic = _("an ELECTRIC move"), + .palette = 13, + .zMove = MOVE_GIGAVOLT_HAVOC, + .maxMove = MOVE_MAX_LIGHTNING, + .teraTypeRGBValue = RGB(30, 26, 7), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_ElectricTMHM, + //.enhanceItem = ITEM_MAGNET, + //.berry = ITEM_WACAN_BERRY, + //.gem = ITEM_ELECTRIC_GEM, + //.zCrystal = ITEM_ELECTRIUM_Z, + //.plate = ITEM_ZAP_PLATE, + //.memory = ITEM_ELECTRIC_MEMORY, + //.teraShard = ITEM_ELECTRIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ELECTRIC, + }, + [TYPE_PSYCHIC] = + { + .name = HANDLE_EXPANDED_TYPE_NAME("Psychc", "Psychic"), + .generic = _("a PSYCHIC move"), + .palette = 14, + .zMove = MOVE_SHATTERED_PSYCHE, + .maxMove = MOVE_MAX_MINDSTORM, + .teraTypeRGBValue = RGB(31, 14, 15), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_PsychicTMHM, + //.enhanceItem = ITEM_TWISTED_SPOON, + //.berry = ITEM_PAYAPA_BERRY, + //.gem = ITEM_PSYCHIC_GEM, + //.zCrystal = ITEM_PSYCHIUM_Z, + //.plate = ITEM_MIND_PLATE, + //.memory = ITEM_PSYCHIC_MEMORY, + //.teraShard = ITEM_PSYCHIC_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_PSYCHIC, + }, + [TYPE_ICE] = + { + .name = _("Ice"), + .generic = _("an ICE move"), + .palette = 14, + .zMove = MOVE_SUBZERO_SLAMMER, + .maxMove = MOVE_MAX_HAILSTORM, + .teraTypeRGBValue = RGB(14, 26, 25), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_IceTMHM, + //.enhanceItem = ITEM_NEVER_MELT_ICE, + //.berry = ITEM_YACHE_BERRY, + //.gem = ITEM_ICE_GEM, + //.zCrystal = ITEM_ICIUM_Z, + //.plate = ITEM_ICICLE_PLATE, + //.memory = ITEM_ICE_MEMORY, + //.teraShard = ITEM_ICE_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_ICE, + }, + [TYPE_DRAGON] = + { + .name = _("Dragon"), + .generic = _("a DRAGON move"), + .palette = 15, + .zMove = MOVE_DEVASTATING_DRAKE, + .maxMove = MOVE_MAX_WYRMWIND, + .teraTypeRGBValue = RGB(10, 18, 27), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_DragonTMHM, + //.enhanceItem = ITEM_DRAGON_FANG, + //.berry = ITEM_HABAN_BERRY, + //.gem = ITEM_DRAGON_GEM, + //.zCrystal = ITEM_DRAGONIUM_Z, + //.plate = ITEM_DRACO_PLATE, + //.memory = ITEM_DRAGON_MEMORY, + //.teraShard = ITEM_DRAGON_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DRAGON, + }, + [TYPE_DARK] = + { + .name = _("Dark"), + .generic = _("a DARK move"), + .palette = 13, + .zMove = MOVE_BLACK_HOLE_ECLIPSE, + .maxMove = MOVE_MAX_DARKNESS, + .teraTypeRGBValue = RGB(6, 5, 8), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_DarkTMHM, + //.enhanceItem = ITEM_BLACK_GLASSES, + //.berry = ITEM_COLBUR_BERRY, + //.gem = ITEM_DARK_GEM, + //.zCrystal = ITEM_DARKINIUM_Z, + //.plate = ITEM_DREAD_PLATE, + //.memory = ITEM_DARK_MEMORY, + //.teraShard = ITEM_DARK_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_DARK, + }, + [TYPE_FAIRY] = + { + .name = _("Fairy"), + .generic = _("a FAIRY move"), + .palette = 14, + .zMove = MOVE_TWINKLE_TACKLE, + .maxMove = MOVE_MAX_STARFALL, + .teraTypeRGBValue = RGB(31, 15, 21), + .damageCategory = DAMAGE_CATEGORY_SPECIAL, + .paletteTMHM = gItemIconPalette_FairyTMHM, + //.enhanceItem = ITEM_FAIRY_FEATHER, + //.berry = ITEM_ROSELI_BERRY, + //.gem = ITEM_FAIRY_GEM, + //.zCrystal = ITEM_FAIRIUM_Z, + //.plate = ITEM_PIXIE_PLATE, + //.memory = ITEM_FAIRY_MEMORY, + //.teraShard = ITEM_FAIRY_TERA_SHARD, + //.arceusForm = SPECIES_ARCEUS_FAIRY, + }, + [TYPE_STELLAR] = + { + .name = HANDLE_EXPANDED_TYPE_NAME("Stellr", "Stellar"), + .generic = _("a STELLAR move"), + .palette = 15, + .zMove = MOVE_BREAKNECK_BLITZ, + .maxMove = MOVE_MAX_STRIKE, + .teraTypeRGBValue = RGB(10, 18, 27), + .paletteTMHM = gItemIconPalette_NormalTMHM, // failsafe + // .teraShard = ITEM_STELLAR_TERA_SHARD, + }, +}; diff --git a/src/daycare.c b/src/daycare.c index c13037421ad6..e13f993c3f10 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -43,8 +43,6 @@ EWRAM_DATA static u16 sHatchedEggFinalMoves[MAX_MON_MOVES] = {0}; EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0}; EWRAM_DATA static u16 sHatchedEggMotherMoves[MAX_MON_MOVES] = {0}; -#include "data/pokemon/egg_moves.h" - static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = { .bg = 0, @@ -115,11 +113,11 @@ static const u8 *const sCompatibilityMessages[] = static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese) -u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest) +u8 *GetMonNicknameVanilla(struct Pokemon *mon, u8 *dest) { u8 nickname[POKEMON_NAME_BUFFER_SIZE]; GetMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy_Nickname(dest, nickname); + return StringCopyN(dest, nickname, VANILLA_POKEMON_NAME_LENGTH); } u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest) @@ -253,7 +251,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar u8 mailId; StringCopy(daycareMon->mail.otName, gSaveBlock2Ptr->playerName); - GetMonNickname2(mon, daycareMon->mail.monName); + GetMonNicknameVanilla(mon, daycareMon->mail.monName); StripExtCtrlCodes(daycareMon->mail.monName); daycareMon->mail.gameLanguage = GAME_LANGUAGE; daycareMon->mail.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE); @@ -453,7 +451,7 @@ static void ClearDaycareMonMail(struct DaycareMail *mail) for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) mail->otName[i] = 0; - for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) + for (i = 0; i < VANILLA_POKEMON_NAME_LENGTH + 1; i++) mail->monName[i] = 0; ClearMail(&mail->message); @@ -776,29 +774,18 @@ static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struc // the given array. static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) { - u16 eggMoveIdx; u16 numEggMoves; u16 species; - u16 i; + u32 i; + const u16 *eggMoveLearnset; numEggMoves = 0; - eggMoveIdx = 0; species = GetMonData(pokemon, MON_DATA_SPECIES); - for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++) - { - if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) - { - eggMoveIdx = i + 1; - break; - } - } + eggMoveLearnset = GetSpeciesEggMoves(species); - for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + for (i = 0; eggMoveLearnset[i] != MOVE_UNAVAILABLE; i++) { - if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) - break; - - eggMoves[i] = gEggMoves[eggMoveIdx + i]; + eggMoves[i] = eggMoveLearnset[i]; numEggMoves++; } @@ -807,30 +794,16 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) u8 GetEggMovesBySpecies(u16 species, u16 *eggMoves) { - u16 eggMoveIdx; u16 numEggMoves; - u16 i; + const u16 *eggMoveLearnset; + u32 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; - } - } + eggMoveLearnset = GetSpeciesEggMoves(species); - for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + for (i = 0; eggMoveLearnset[i] != MOVE_UNAVAILABLE; 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]; + eggMoves[i] = eggMoveLearnset[i]; numEggMoves++; } @@ -839,26 +812,15 @@ u8 GetEggMovesBySpecies(u16 species, u16 *eggMoves) 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; - } - } + u32 i; + const u16 *eggMoveLearnset = GetSpeciesEggMoves(species); - for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + for (i = 0; eggMoveLearnset[i] != MOVE_UNAVAILABLE; i++) { - if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) - return FALSE; - - if (move == gEggMoves[eggMoveIdx + i]) + if (eggMoveLearnset[i] == move) return TRUE; } + return FALSE; } @@ -1188,7 +1150,7 @@ static bool8 TryProduceOrHatchEgg(struct DayCare *daycare) } // Try to hatch Egg - if (++daycare->stepCounter == 255) + if (++daycare->stepCounter == ((P_EGG_CYCLE_LENGTH >= GEN_8) ? 127 : 255)) { u32 eggCycles; u8 toSub = GetEggCyclesToSubtract(); @@ -1369,7 +1331,9 @@ u8 GetDaycareCompatibilityScore(struct DayCare *daycare) static u8 GetDaycareCompatibilityScoreFromSave(void) { - return GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare); + // Changed to also store result for scripts + gSpecialVar_Result = GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare); + return gSpecialVar_Result; } void SetDaycareCompatibilityString(void) diff --git a/src/debug.c b/src/debug.c index ba06cd522ee4..f4b6f68840ea 100644 --- a/src/debug.c +++ b/src/debug.c @@ -99,6 +99,7 @@ enum UtilDebugMenu DEBUG_UTIL_MENU_ITEM_CHEAT, DEBUG_UTIL_MENU_ITEM_EXPANSION_VER, DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS, + DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS, }; enum GivePCBagDebugMenu @@ -374,6 +375,7 @@ static void DebugAction_Util_Player_Id(u8 taskId); static void DebugAction_Util_CheatStart(u8 taskId); static void DebugAction_Util_ExpansionVersion(u8 taskId); static void DebugAction_Util_BerryFunctions(u8 taskId); +static void DebugAction_Util_CheckEWRAMCounters(u8 taskId); static void DebugAction_OpenPCBagFillMenu(u8 taskId); static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId); @@ -476,6 +478,7 @@ extern const u8 Debug_CheckSaveBlock[]; extern const u8 Debug_CheckROMSpace[]; extern const u8 Debug_BoxFilledMessage[]; extern const u8 Debug_ShowExpansionVersion[]; +extern const u8 Debug_EventScript_EWRAMCounters[]; extern const u8 Debug_BerryPestsDisabled[]; extern const u8 Debug_BerryWeedsDisabled[]; @@ -532,6 +535,7 @@ 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"); static const u8 sDebugText_Util_BerryFunctions[] = _("Berry Functions…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_EWRAMCounters[] = _("EWRAM Counters…{CLEAR_TO 110}{RIGHT_ARROW}"); // PC/Bag Menu static const u8 sDebugText_PCBag_Fill[] = _("Fill…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_PCBag_Fill_Pc_Fast[] = _("Fill PC Boxes Fast"); @@ -720,6 +724,7 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [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}, [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = {sDebugText_Util_BerryFunctions, DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS}, + [DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS] = {sDebugText_Util_EWRAMCounters, DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS}, }; static const struct ListMenuItem sDebugMenu_Items_PCBag[] = @@ -889,6 +894,7 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = DebugAction_Util_ExpansionVersion, [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = DebugAction_Util_BerryFunctions, + [DEBUG_UTIL_MENU_ITEM_EWRAM_COUNTERS] = DebugAction_Util_CheckEWRAMCounters, }; static void (*const sDebugMenu_Actions_PCBag[])(u8) = @@ -1344,36 +1350,16 @@ static void Debug_InitDebugBattleData(void) sDebugBattleData->aiFlags[i] = FALSE; } -static void Debug_RefreshListMenu(u8 taskId) +static void Debug_GenerateListMenuNames(u32 totalItems) { - u16 i; const u8 sColor_Red[] = _("{COLOR RED}"); const u8 sColor_Green[] = _("{COLOR GREEN}"); - u8 totalItems = 0, flagResult = 0; + u32 i, flagResult = 0; u8 const *name = NULL; - if (sDebugMenuListData->listId == 0) - { - gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_FlagsVars; - totalItems = gMultiuseListMenuTemplate.totalItems; - } - else if (sDebugMenuListData->listId == 1 && sDebugBattleData->submenu <= 1) - { - gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_Battle_1; - totalItems = gMultiuseListMenuTemplate.totalItems; - } - else if (sDebugMenuListData->listId == 1 && sDebugBattleData->submenu > 1) - { - gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_Battle_2; - totalItems = 7; - } - - // Failsafe to prevent memory corruption - totalItems = min(totalItems, DEBUG_MAX_MENU_ITEMS); // Copy item names for all entries but the last (which is Cancel) - for(i = 0; i < totalItems; i++) + for (i = 0; i < totalItems; i++) { - if (sDebugMenuListData->listId == 1 && sDebugBattleData->submenu > 1) { u16 species; @@ -1429,6 +1415,31 @@ static void Debug_RefreshListMenu(u8 taskId) sDebugMenuListData->listItems[i].name = &sDebugMenuListData->itemNames[i][0]; sDebugMenuListData->listItems[i].id = i; } +} + +static void Debug_RefreshListMenu(u8 taskId) +{ + u8 totalItems = 0; + + if (sDebugMenuListData->listId == 0) + { + gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_FlagsVars; + totalItems = gMultiuseListMenuTemplate.totalItems; + } + else if (sDebugMenuListData->listId == 1 && sDebugBattleData->submenu <= 1) + { + gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_Battle_1; + totalItems = gMultiuseListMenuTemplate.totalItems; + } + else if (sDebugMenuListData->listId == 1 && sDebugBattleData->submenu > 1) + { + gMultiuseListMenuTemplate = sDebugMenu_ListTemplate_Battle_2; + totalItems = 7; + } + + // Failsafe to prevent memory corruption + totalItems = min(totalItems, DEBUG_MAX_MENU_ITEMS); + Debug_GenerateListMenuNames(totalItems); // Set list menu data gMultiuseListMenuTemplate.items = sDebugMenuListData->listItems; @@ -1595,7 +1606,8 @@ static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId) else { func(taskId); - Debug_RedrawListMenu(taskId); + Debug_GenerateListMenuNames(gMultiuseListMenuTemplate.totalItems); + RedrawListMenu(gTasks[taskId].tMenuTaskId); } // Remove TRUE/FALSE window for functions that haven't been assigned flags @@ -3361,7 +3373,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) 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]); + StringCopy(gStringVar1, gNaturesInfo[0].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); @@ -3397,7 +3409,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) 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].tInput]); + StringCopy(gStringVar1, gNaturesInfo[gTasks[taskId].tInput].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } @@ -4096,7 +4108,7 @@ static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffini StringCopy(speciesName, GetSpeciesName(species)); SetBoxMonData(&boxMon, MON_DATA_NICKNAME, &speciesName); SetBoxMonData(&boxMon, MON_DATA_SPECIES, &species); - GiveBoxMonInitialMoveset_Fast(&boxMon); + GiveBoxMonInitialMoveset(&boxMon); gPokemonStoragePtr->boxes[boxId][boxPosition] = boxMon; } } @@ -5107,4 +5119,15 @@ static void DebugAction_Party_ClearParty(u8 taskId) Debug_DestroyMenu_Full(taskId); } +void CheckEWRAMCounters(struct ScriptContext *ctx) +{ + ConvertIntToDecimalStringN(gStringVar1, gFollowerSteps, STR_CONV_MODE_LEFT_ALIGN, 5); + ConvertIntToDecimalStringN(gStringVar2, gChainFishingDexNavStreak, STR_CONV_MODE_LEFT_ALIGN, 5); +} + +static void DebugAction_Util_CheckEWRAMCounters(u8 taskId) +{ + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_EWRAMCounters); +} + #endif //DEBUG_OVERWORLD_MENU == TRUE diff --git a/src/decompress.c b/src/decompress.c index e08af5790d18..30337f5a8dc3 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -3,7 +3,7 @@ #include "data.h" #include "decompress.h" #include "pokemon.h" -#include "pokemon_debug.h" +#include "pokemon_sprite_visualizer.h" #include "text.h" EWRAM_DATA ALIGNED(4) u8 gDecompressionBuffer[0x4000] = {0}; @@ -18,6 +18,28 @@ void LZDecompressVram(const u32 *src, void *dest) LZ77UnCompVram(src, dest); } +// Checks if `ptr` is likely LZ77 data +// Checks word-alignment, min/max size, and header byte +// Returns uncompressed size if true, 0 otherwise +u32 IsLZ77Data(const void *ptr, u32 minSize, u32 maxSize) +{ + const u8 *data = ptr; + u32 size; + // Compressed data must be word aligned + if (((u32)ptr) & 3) + return 0; + // Check LZ77 header byte + // See https://problemkaputt.de/gbatek.htm#biosdecompressionfunctions + if (data[0] != 0x10) + return 0; + + // Read 24-bit uncompressed size + size = data[1] | (data[2] << 8) | (data[3] << 16); + if (size >= minSize && size <= maxSize) + return size; + return 0; +} + u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src) { struct SpriteSheet dest; @@ -29,6 +51,26 @@ u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src) return LoadSpriteSheet(&dest); } +// This can be used for either compressed or uncompressed sprite sheets +u16 LoadCompressedSpriteSheetByTemplate(const struct SpriteTemplate *template, s32 offset) +{ + struct SpriteTemplate myTemplate; + struct SpriteFrameImage myImage; + u32 size; + + // Check for LZ77 header and read uncompressed size, or fallback if not compressed (zero size) + if ((size = IsLZ77Data(template->images->data, TILE_SIZE_4BPP, sizeof(gDecompressionBuffer))) == 0) + return LoadSpriteSheetByTemplate(template, 0, offset); + + LZ77UnCompWram(template->images->data, gDecompressionBuffer); + myImage.data = gDecompressionBuffer; + myImage.size = size + offset; + myTemplate.images = &myImage; + myTemplate.tileTag = template->tileTag; + + return LoadSpriteSheetByTemplate(&myTemplate, 0, offset); +} + void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer) { struct SpriteSheet dest; diff --git a/src/decoration.c b/src/decoration.c index 18d6e2e680cd..d450ad7dfba0 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1370,6 +1370,7 @@ static void Task_PlaceDecoration(u8 taskId) } break; case 1: + RemoveFollowingPokemon(); gPaletteFade.bufferTransferDisabled = TRUE; ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorationItems[gCurDecorationIndex]); SetUpDecorationShape(taskId); @@ -1625,6 +1626,17 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) } break; } + + // If sprite(like), check if there is an available object event slot for it + if (decoration->permission == DECORPERM_SPRITE) + { + for (i = 0; i < NUM_DECORATION_FLAGS; i++) + { + if (FlagGet(FLAG_DECORATION_1 + i) == TRUE) + return TRUE; + } + return FALSE; + } return TRUE; } @@ -2327,6 +2339,7 @@ static void Task_ContinuePuttingAwayDecorations(u8 taskId) } break; case 1: + RemoveFollowingPokemon(); SetUpPuttingAwayDecorationPlayerAvatar(); FadeInFromBlack(); tState = 2; diff --git a/src/digit_obj_util.c b/src/digit_obj_util.c index f68f0446c3d4..f66dc80cb709 100644 --- a/src/digit_obj_util.c +++ b/src/digit_obj_util.c @@ -4,6 +4,7 @@ #include "decompress.h" #include "main.h" #include "battle_main.h" +#include "sprite.h" struct DigitPrinter { @@ -44,29 +45,6 @@ static bool32 SharesPalWithAnyActive(u32 id); // ewram static EWRAM_DATA struct DigitPrinterAlloc *sOamWork = {0}; -// const rom data -static const u8 sTilesPerImage[4][4] = -{ - [ST_OAM_SQUARE] = { - [ST_OAM_SIZE_0] = 0x01, // SPRITE_SIZE_8x8 - [ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_16x16 - [ST_OAM_SIZE_2] = 0x10, // SPRITE_SIZE_32x32 - [ST_OAM_SIZE_3] = 0x40 // SPRITE_SIZE_64x64 - }, - [ST_OAM_H_RECTANGLE] = { - [ST_OAM_SIZE_0] = 0x02, // SPRITE_SIZE_16x8 - [ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_32x8 - [ST_OAM_SIZE_2] = 0x08, // SPRITE_SIZE_32x16 - [ST_OAM_SIZE_3] = 0x20 // SPRITE_SIZE_64x32 - }, - [ST_OAM_V_RECTANGLE] = { - [ST_OAM_SIZE_0] = 0x02, // SPRITE_SIZE_8x16 - [ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_8x32 - [ST_OAM_SIZE_2] = 0x08, // SPRITE_SIZE_16x32 - [ST_OAM_SIZE_3] = 0x20 // SPRITE_SIZE_32x64 - } -}; - // code bool32 DigitObjUtil_Init(u32 count) { @@ -446,5 +424,5 @@ static bool32 SharesPalWithAnyActive(u32 id) u8 GetTilesPerImage(u32 shape, u32 size) { - return sTilesPerImage[shape][size]; + return 1 << GetSpanPerImage(shape, size); } diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 40f2d29278e7..88f2b329e9c6 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -36,6 +36,7 @@ #include "data.h" #include "battle.h" // to get rid of later #include "constants/rgb.h" +#include "party_menu.h" #define GFXTAG_EGG 12345 #define GFXTAG_EGG_SHARD 23456 @@ -377,7 +378,7 @@ static void AddHatchedMonToParty(u8 id) GetSetPokedexFlag(species, FLAG_SET_SEEN); GetSetPokedexFlag(species, FLAG_SET_CAUGHT); - GetMonNickname2(mon, gStringVar1); + GetMonNickname(mon, gStringVar1); // A met level of 0 is interpreted on the summary screen as "hatched at" metLevel = 0; @@ -650,7 +651,7 @@ static void CB2_EggHatch(void) break; case 5: // "{mon} hatched from egg" message/fanfare - GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar1); + GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, TEXT_SKIP_DRAW); PlayFanfare(MUS_EVOLVED); @@ -668,7 +669,7 @@ static void CB2_EggHatch(void) break; case 8: // Ready the nickname prompt - GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar1); + GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_NicknameHatchPrompt); EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 2, 1); sEggHatchData->state++; @@ -687,7 +688,7 @@ static void CB2_EggHatch(void) switch (Menu_ProcessInputNoWrapClearOnChoose()) { case 0: // Yes - GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar3); + GetMonNickname(&gPlayerParty[sEggHatchData->eggPartyId], gStringVar3); species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_SPECIES); gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyId]); personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_PERSONALITY, 0); diff --git a/src/event_data.c b/src/event_data.c index 5fbe1bd3aa57..33cb02027bd1 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -196,7 +196,7 @@ bool8 VarSet(u16 id, u16 value) return TRUE; } -u8 VarGetObjectEventGraphicsId(u8 id) +u16 VarGetObjectEventGraphicsId(u8 id) { return VarGet(VAR_OBJ_GFX_ID_0 + id); } diff --git a/src/event_object_lock.c b/src/event_object_lock.c index 29575111fbba..3215c61f2c7a 100644 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -151,6 +151,7 @@ static void Task_FreezeObjectAndPlayer(u8 taskId) void FreezeForApproachingTrainers(void) { u8 trainerObjectId1, trainerObjectId2, taskId; + struct ObjectEvent *followerObj = GetFollowerObject(); trainerObjectId1 = GetChosenApproachingTrainerObjectEventId(0); if (gNoOfApproachingTrainers == 2) @@ -188,6 +189,8 @@ void FreezeForApproachingTrainers(void) gTasks[taskId].tObjectFrozen = TRUE; } } + if (followerObj) // Unfreeze follower so it can move behind player + UnfreezeObjectEvent(followerObj); } bool8 IsFreezeObjectAndPlayerFinished(void) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 10d427e517fb..5a6eb28fc3d1 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1,9 +1,13 @@ #include "global.h" #include "malloc.h" +#include "battle_anim.h" #include "battle_pyramid.h" +#include "battle_util.h" #include "berry.h" +#include "data.h" #include "debug.h" #include "decoration.h" +#include "decompress.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -12,24 +16,42 @@ #include "field_effect.h" #include "field_effect_helpers.h" #include "field_player_avatar.h" +#include "field_weather.h" #include "fieldmap.h" +#include "follower_helper.h" +#include "gpu_regs.h" +#include "graphics.h" #include "mauville_old_man.h" #include "metatile_behavior.h" #include "overworld.h" #include "palette.h" +#include "pokemon.h" +#include "pokeball.h" #include "random.h" +#include "region_map.h" +#include "script.h" +#include "sound.h" #include "sprite.h" #include "task.h" #include "trainer_see.h" #include "trainer_hill.h" #include "util.h" +#include "wild_encounter.h" #include "constants/event_object_movement.h" +#include "constants/abilities.h" +#include "constants/battle.h" #include "constants/event_objects.h" #include "constants/field_effects.h" #include "constants/items.h" +#include "constants/map_types.h" #include "constants/mauville_old_man.h" +#include "constants/rgb.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" +#include "constants/species.h" #include "constants/trainer_types.h" #include "constants/union_room.h" +#include "constants/weather.h" // this file was known as evobjmv.c in Game Freak's original source @@ -47,6 +69,13 @@ enum { JUMP_DISTANCE_FAR, }; +// Used for storing conditional emotes +struct SpecialEmote +{ + u16 index; + u8 emotion; +}; + // Sprite data used throughout #define sObjEventId data[0] #define sTypeFuncId data[1] // Index into corresponding gMovementTypeFuncs_* table @@ -115,7 +144,10 @@ static void InitObjectPriorityByElevation(struct Sprite *, u8); static void ObjectEventUpdateSubpriority(struct ObjectEvent *, struct Sprite *); static void DoTracksGroundEffect_None(struct ObjectEvent *, struct Sprite *, u8); static void DoTracksGroundEffect_Footprints(struct ObjectEvent *, struct Sprite *, u8); +static void DoTracksGroundEffect_FootprintsB(struct ObjectEvent*, struct Sprite*, u8); +static void DoTracksGroundEffect_FootprintsC(struct ObjectEvent*, struct Sprite*, u8); static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *, struct Sprite *, u8); +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent*, struct Sprite*, u8); static void DoRippleFieldEffect(struct ObjectEvent *, struct Sprite *); static void DoGroundEffects_OnSpawn(struct ObjectEvent *, struct Sprite *); static void DoGroundEffects_OnBeginStep(struct ObjectEvent *, struct Sprite *); @@ -135,25 +167,26 @@ static void UpdateObjectEventVisibility(struct ObjectEvent *, struct Sprite *); static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *, struct SpriteTemplate *, const struct SubspriteTable **); static void GetObjectEventMovingCameraOffset(s16 *, s16 *); static const struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8); -static void LoadObjectEventPalette(u16); static void RemoveObjectEventIfOutsideView(struct ObjectEvent *); static void SpawnObjectEventOnReturnToField(u8, s16, s16); static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8); +static u8 UpdateSpritePalette(const struct SpritePalette *spritePalette, struct Sprite *sprite); static void ResetObjectEventFldEffData(struct ObjectEvent *); static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *); static u8 FindObjectEventPaletteIndexByTag(u16); -static void _PatchObjectPalette(u16, u8); static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *, u8); static void SpriteCB_CameraObject(struct Sprite *); static void CameraObject_Init(struct Sprite *); static void CameraObject_UpdateMove(struct Sprite *); static void CameraObject_UpdateFrozen(struct Sprite *); static const struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8, const struct ObjectEventTemplate *, u8); -static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *); static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8); static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8); static void InitSpriteForFigure8Anim(struct Sprite *); static bool8 AnimateSpriteInFigure8(struct Sprite *); +u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2); +static void FollowerSetGraphics(struct ObjectEvent *, u16, u8, bool8); +static void ObjectEventSetGraphics(struct ObjectEvent *, const struct ObjectEventGraphicsInfo *); static void SpriteCB_VirtualObject(struct Sprite *); static void DoShadowFieldEffect(struct ObjectEvent *); static void SetJumpSpriteData(struct Sprite *, u8, u8, u8); @@ -163,9 +196,14 @@ static u8 DoJumpSpriteMovement(struct Sprite *); static u8 DoJumpSpecialSpriteMovement(struct Sprite *); static void CreateLevitateMovementTask(struct ObjectEvent *); static void DestroyLevitateMovementTask(u8); +static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny); +static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny); +static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u16 species, u8 form); static bool8 NpcTakeStep(struct Sprite *); static bool8 IsElevationMismatchAt(u8, s16, s16); static bool8 AreElevationsCompatible(u8, u8); +static u16 PackGraphicsId(const struct ObjectEventTemplate *template); +static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphicsId, u16 movementType, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables); static const struct SpriteFrameImage sPicTable_PechaBerryTree[]; @@ -292,6 +330,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) = [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT] = MovementType_WalkSlowlyInPlace, [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = MovementType_WalkSlowlyInPlace, + [MOVEMENT_TYPE_FOLLOW_PLAYER] = MovementType_FollowPlayer, }; static const bool8 sMovementTypeHasRange[NUM_MOVEMENT_TYPES] = { @@ -422,44 +461,6 @@ const u8 gInitialMovementTypeFacingDirections[] = { [MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST, }; -#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100 -#define OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION 0x1101 -#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102 -#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103 -#define OBJ_EVENT_PAL_TAG_NPC_2 0x1104 -#define OBJ_EVENT_PAL_TAG_NPC_3 0x1105 -#define OBJ_EVENT_PAL_TAG_NPC_4 0x1106 -#define OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION 0x1107 -#define OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION 0x1108 -#define OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION 0x1109 -#define OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION 0x110A -#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP 0x110B -#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION 0x110C -#define OBJ_EVENT_PAL_TAG_TRUCK 0x110D -#define OBJ_EVENT_PAL_TAG_VIGOROTH 0x110E -#define OBJ_EVENT_PAL_TAG_ZIGZAGOON 0x110F -#define OBJ_EVENT_PAL_TAG_MAY 0x1110 -#define OBJ_EVENT_PAL_TAG_MAY_REFLECTION 0x1111 -#define OBJ_EVENT_PAL_TAG_MOVING_BOX 0x1112 -#define OBJ_EVENT_PAL_TAG_CABLE_CAR 0x1113 -#define OBJ_EVENT_PAL_TAG_SSTIDAL 0x1114 -#define OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER 0x1115 -#define OBJ_EVENT_PAL_TAG_KYOGRE 0x1116 -#define OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION 0x1117 -#define OBJ_EVENT_PAL_TAG_GROUDON 0x1118 -#define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119 -#define OBJ_EVENT_PAL_TAG_UNUSED 0x111A -#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B -#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C -#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D -#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E -#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F -#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120 -#define OBJ_EVENT_PAL_TAG_LUGIA 0x1121 -#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122 -#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123 -#define OBJ_EVENT_PAL_TAG_NONE 0x11FF - #include "data/object_events/object_event_graphics_info_pointers.h" #include "data/field_effects/field_effect_object_template_pointers.h" #include "data/object_events/object_event_pic_tables.h" @@ -467,6 +468,7 @@ const u8 gInitialMovementTypeFacingDirections[] = { #include "data/object_events/base_oam.h" #include "data/object_events/object_event_subsprites.h" #include "data/object_events/object_event_graphics_info.h" +#include "data/object_events/object_event_graphics_info_followers.h" static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1}, @@ -504,6 +506,40 @@ static const struct SpritePalette sObjectEventSpritePalettes[] = { {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA}, {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN}, {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY}, +#if OW_FOLLOWERS_POKEBALLS + {gObjectEventPal_MasterBall, OBJ_EVENT_PAL_TAG_BALL_MASTER}, + {gObjectEventPal_UltraBall, OBJ_EVENT_PAL_TAG_BALL_ULTRA}, + {gObjectEventPal_GreatBall, OBJ_EVENT_PAL_TAG_BALL_GREAT}, + {gObjectEventPal_SafariBall, OBJ_EVENT_PAL_TAG_BALL_SAFARI}, + {gObjectEventPal_NetBall, OBJ_EVENT_PAL_TAG_BALL_NET}, + {gObjectEventPal_DiveBall, OBJ_EVENT_PAL_TAG_BALL_DIVE}, + {gObjectEventPal_NestBall, OBJ_EVENT_PAL_TAG_BALL_NEST}, + {gObjectEventPal_RepeatBall, OBJ_EVENT_PAL_TAG_BALL_REPEAT}, + {gObjectEventPal_TimerBall, OBJ_EVENT_PAL_TAG_BALL_TIMER}, + {gObjectEventPal_LuxuryBall, OBJ_EVENT_PAL_TAG_BALL_LUXURY}, + {gObjectEventPal_PremierBall, OBJ_EVENT_PAL_TAG_BALL_PREMIER}, + {gObjectEventPal_DuskBall, OBJ_EVENT_PAL_TAG_BALL_DUSK}, + {gObjectEventPal_HealBall, OBJ_EVENT_PAL_TAG_BALL_HEAL}, + {gObjectEventPal_QuickBall, OBJ_EVENT_PAL_TAG_BALL_QUICK}, + {gObjectEventPal_CherishBall, OBJ_EVENT_PAL_TAG_BALL_CHERISH}, + {gObjectEventPal_ParkBall, OBJ_EVENT_PAL_TAG_BALL_PARK}, + {gObjectEventPal_FastBall, OBJ_EVENT_PAL_TAG_BALL_FAST}, + {gObjectEventPal_LevelBall, OBJ_EVENT_PAL_TAG_BALL_LEVEL}, + {gObjectEventPal_LureBall, OBJ_EVENT_PAL_TAG_BALL_LURE}, + {gObjectEventPal_HeavyBall, OBJ_EVENT_PAL_TAG_BALL_HEAVY}, + {gObjectEventPal_LoveBall, OBJ_EVENT_PAL_TAG_BALL_LOVE}, + {gObjectEventPal_FriendBall, OBJ_EVENT_PAL_TAG_BALL_FRIEND}, + {gObjectEventPal_MoonBall, OBJ_EVENT_PAL_TAG_BALL_MOON}, + {gObjectEventPal_SportBall, OBJ_EVENT_PAL_TAG_BALL_SPORT}, + {gObjectEventPal_DreamBall, OBJ_EVENT_PAL_TAG_BALL_DREAM}, + {gObjectEventPal_BeastBall, OBJ_EVENT_PAL_TAG_BALL_BEAST}, + // Gen VIII + #ifdef ITEM_STRANGE_BALL + {gObjectEventPal_StrangeBall, OBJ_EVENT_PAL_TAG_BALL_STRANGE}, + #endif //ITEM_STRANGE_BALL +#endif //OW_FOLLOWERS_POKEBALLS + {gObjectEventPal_Substitute, OBJ_EVENT_PAL_TAG_SUBSTITUTE}, + {gObjectEventPaletteEmotes, OBJ_EVENT_PAL_TAG_EMOTES}, #ifdef BUGFIX {NULL, OBJ_EVENT_PAL_TAG_NONE}, #else @@ -1223,7 +1259,7 @@ u8 GetFirstInactiveObjectEventId(void) u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId) { - if (localId < OBJ_EVENT_ID_PLAYER) + if (localId < OBJ_EVENT_ID_FOLLOWER) return GetObjectEventIdByLocalIdAndMapInternal(localId, mapNum, mapGroupId); return GetObjectEventIdByLocalId(localId); @@ -1289,7 +1325,15 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem y = template->y + MAP_OFFSET; objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; - objectEvent->graphicsId = template->graphicsId; + objectEvent->graphicsId = PackGraphicsId(template); + SetObjectEventDynamicGraphicsId(objectEvent); + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE) + { + if (template->script && template->script[0] == 0x7d) + objectEvent->shiny = T1_READ_16(&template->script[2]) >> 15; + else if (template->trainerRange_berryTreeId) + objectEvent->shiny = VarGet(template->trainerRange_berryTreeId) >> 5; + } objectEvent->movementType = template->movementType; objectEvent->localId = template->localId; objectEvent->mapNum = mapNum; @@ -1309,7 +1353,6 @@ static u8 InitObjectEventStateFromTemplate(const struct ObjectEventTemplate *tem objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId; objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType]; SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection); - SetObjectEventDynamicGraphicsId(objectEvent); if (sMovementTypeHasRange[objectEvent->movementType]) { if (objectEvent->rangeX == 0) @@ -1374,6 +1417,8 @@ static void RemoveObjectEvent(struct ObjectEvent *objectEvent) { objectEvent->active = FALSE; RemoveObjectEventInternal(objectEvent); + // zero potential species info + objectEvent->graphicsId = objectEvent->shiny = 0; } void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) @@ -1391,7 +1436,25 @@ static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent) struct SpriteFrameImage image; image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size; gSprites[objectEvent->spriteId].images = ℑ - DestroySprite(&gSprites[objectEvent->spriteId]); + // It's possible that this function is called while the sprite pointed to `== sDummySprite`, i.e during map resume; + // In this case, don't free the palette as `paletteNum` is likely blank dummy data + if (!gSprites[objectEvent->spriteId].inUse && + !gSprites[objectEvent->spriteId].oam.paletteNum && + gSprites[objectEvent->spriteId].callback == SpriteCallbackDummy) + { + DestroySprite(&gSprites[objectEvent->spriteId]); + } + else + { + u32 paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum; + u16 tileStart; + if (OW_GFX_COMPRESS) + tileStart = gSprites[objectEvent->spriteId].sheetTileStart; + DestroySprite(&gSprites[objectEvent->spriteId]); + FieldEffectFreePaletteIfUnused(paletteNum); + if (OW_GFX_COMPRESS && tileStart) + FieldEffectFreeTilesIfUnused(tileStart); + } } void RemoveAllObjectEventsExceptPlayer(void) @@ -1405,10 +1468,117 @@ void RemoveAllObjectEventsExceptPlayer(void) } } +// Free a sprite's current tiles and reallocate with a new size +// Used when changing to a gfx info with a larger size +static s16 ReallocSpriteTiles(struct Sprite *sprite, u32 byteSize) +{ + s16 i; + bool32 wasVisible = sprite->invisible; + sprite->invisible = TRUE; + + i = CopySprite(sprite, sprite->x, sprite->y, 0xFF); + if (i < MAX_SPRITES) + { + DestroySprite(&gSprites[i]); + i = AllocSpriteTiles(byteSize / TILE_SIZE_4BPP); + if (i >= 0) + { + // Fill the allocated area with zeroes + // To avoid visual glitches if the frame hasn't been copied yet + CpuFastFill16(0, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * i, byteSize); + sprite->oam.tileNum = i; + } + } + else + { + i = -1; + } + + sprite->invisible = wasVisible; + return i; +} + +u16 LoadSheetGraphicsInfo(const struct ObjectEventGraphicsInfo *info, u16 uuid, struct Sprite *sprite) +{ + u16 tag = info->tileTag; + if (tag != TAG_NONE || info->compressed) + { + // sheet-based gfx + u32 sheetSpan = GetSpanPerImage(info->oam->shape, info->oam->size); + u16 oldTiles = 0; + u16 tileStart; + bool32 oldInvisible; + if (tag == TAG_NONE) + tag = COMP_OW_TILE_TAG_BASE + uuid; + + if (sprite) + { + oldInvisible = sprite->invisible; + oldTiles = sprite->sheetTileStart; + sprite->sheetTileStart = 0; // mark unused + // Note: If sprite was not allocated to use a sheet, + // the tiles assigned to it will leak here, + // as its tileNum will be repointed to the new tileStart + // TODO: Unload static tiles! + } + + tileStart = GetSpriteTileStartByTag(tag); + // sheet not loaded; unload any old tiles and load it + if (tileStart == TAG_NONE) + { + struct SpriteFrameImage image = {.size = info->size, .data = info->images->data}; + struct SpriteTemplate template = {.tileTag = tag, .images = &image}; + // Load, then free, in order to avoid displaying garbage data + // before sprite's `sheetTileStart` is repointed + tileStart = LoadCompressedSpriteSheetByTemplate(&template, TILE_SIZE_4BPP << sheetSpan); + if (oldTiles) { + FieldEffectFreeTilesIfUnused(oldTiles); + // We weren't able to load the sheet; + // retry (after having freed), and set sprite to invisible until done + if (tileStart <= 0) { + if (sprite) + sprite->invisible = TRUE; + tileStart = LoadCompressedSpriteSheetByTemplate(&template, TILE_SIZE_4BPP << sheetSpan); + } + } + // sheet loaded; unload any *other* sheet for sprite + } + else if (oldTiles && oldTiles != tileStart) + { + FieldEffectFreeTilesIfUnused(oldTiles); + } + + if (sprite) + { + sprite->sheetTileStart = tileStart; + sprite->sheetSpan = sheetSpan; + sprite->usingSheet = TRUE; + sprite->invisible = oldInvisible; + } + // Going from sheet -> !sheet, reset tile number + // (sheet stays loaded) + // Note: It's possible to load a non-sheet gfx + // larger than the allocated prefix space, + // in which case we would have to realloc + // TODO: Realloc usingSheet -> !usingSheet larger gfx + } + else if (sprite && sprite->usingSheet) + { + sprite->oam.tileNum = sprite->sheetTileStart; + sprite->usingSheet = FALSE; + + } + else if (sprite && !sprite->sheetTileStart && sprite->oam.size != info->oam->size) + { + // Not usingSheet and info size differs; realloc tiles + ReallocSpriteTiles(sprite, info->images->size); + } + return tag; +} + static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 spriteId; - u8 paletteSlot; u8 objectEventId; struct Sprite *sprite; struct ObjectEvent *objectEvent; @@ -1420,25 +1590,21 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven objectEvent = &gObjectEvents[objectEventId]; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteSlot); - } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } + if (spriteTemplate->paletteTag != TAG_NONE && spriteTemplate->paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) + LoadObjectEventPalette(spriteTemplate->paletteTag); if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE) objectEvent->invisible = TRUE; - *(u16 *)&spriteTemplate->paletteTag = TAG_NONE; + if (OW_GFX_COMPRESS) + spriteTemplate->tileTag = LoadSheetGraphicsInfo(graphicsInfo, objectEvent->graphicsId, NULL); + + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_MON_BASE + SPECIES_SHINY_TAG) + { + objectEvent->shiny = TRUE; + objectEvent->graphicsId -= SPECIES_SHINY_TAG; + } + spriteId = CreateSprite(spriteTemplate, 0, 0, 0); if (spriteId == MAX_SPRITES) { @@ -1447,12 +1613,16 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven } sprite = &gSprites[spriteId]; + // Use palette from species palette table + if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + sprite->oam.paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + if (OW_GFX_COMPRESS && sprite->usingSheet) + sprite->sheetSpan = GetSpanPerImage(sprite->oam.shape, sprite->oam.size); GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->x, &sprite->y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->x += 8; sprite->y += 16 + sprite->centerToCornerVecY; - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = spriteId; @@ -1465,16 +1635,40 @@ static u8 TrySetupObjectEventSprite(const struct ObjectEventTemplate *objectEven return objectEventId; } +// Pack pokemon form info into a graphicsId, from a template's script +static u16 PackGraphicsId(const struct ObjectEventTemplate *template) +{ + u16 graphicsId = template->graphicsId; + u32 form = 0; + // set form based on template's script, + // if first command is bufferspeciesname + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) + { + if (template->script && template->script[0] == 0x7d) + { + form = T1_READ_16(&template->script[2]); + form = (form >> 10) & 0x1F; + } + else if (template->trainerRange_berryTreeId) + { + form = template->trainerRange_berryTreeId & 0x1F; + } + graphicsId |= form << OBJ_EVENT_GFX_SPECIES_BITS; + } + return graphicsId; +} + static u8 TrySpawnObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, u8 mapNum, u8 mapGroup, s16 cameraX, s16 cameraY) { u8 objectEventId; + u16 graphicsId = PackGraphicsId(objectEventTemplate); struct SpriteTemplate spriteTemplate; struct SpriteFrameImage spriteFrameImage; const struct ObjectEventGraphicsInfo *graphicsInfo; const struct SubspriteTable *subspriteTables = NULL; - graphicsInfo = GetObjectEventGraphicsInfo(objectEventTemplate->graphicsId); - MakeSpriteTemplateFromObjectEventTemplate(objectEventTemplate, &spriteTemplate, &subspriteTables); + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(graphicsId, objectEventTemplate->movementType, &spriteTemplate, &subspriteTables); spriteFrameImage.size = graphicsInfo->size; spriteTemplate.images = &spriteFrameImage; objectEventId = TrySetupObjectEventSprite(objectEventTemplate, &spriteTemplate, mapNum, mapGroup, cameraX, cameraY); @@ -1497,7 +1691,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate) return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY); } -u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) +u8 SpawnSpecialObjectEventParameterized(u16 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation) { struct ObjectEventTemplate objectEventTemplate; @@ -1549,30 +1743,65 @@ static void CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(u16 graphics CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, sMovementTypeCallbacks[movementType], spriteTemplate, subspriteTables); } -static void MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) +static void UNUSED MakeSpriteTemplateFromObjectEventTemplate(const struct ObjectEventTemplate *objectEventTemplate, struct SpriteTemplate *spriteTemplate, const struct SubspriteTable **subspriteTables) { CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables); } +// Loads information from graphicsId, with shininess separate +// also can write palette tag to the template +static u8 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, bool8 shiny, struct SpriteTemplate *template) +{ + u16 species = ((graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE); + u8 form = (graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS); + u8 paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + if (template) + template->paletteTag = species; + return paletteNum; +} + // Used to create a sprite using a graphicsId associated with object events. u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { struct SpriteTemplate *spriteTemplate; const struct SubspriteTable *subspriteTables; + const struct ObjectEventGraphicsInfo *graphicsInfo; struct Sprite *sprite; u8 spriteId; + bool32 isShiny = graphicsId >= SPECIES_SHINY_TAG + OBJ_EVENT_GFX_MON_BASE; + + if (isShiny) + graphicsId -= SPECIES_SHINY_TAG; spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); - if (spriteTemplate->paletteTag != TAG_NONE) + + if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + { + u32 paletteNum = LoadDynamicFollowerPaletteFromGraphicsId(graphicsId, isShiny, spriteTemplate); + spriteTemplate->paletteTag = GetSpritePaletteTagByPaletteNum(paletteNum); + } + else if (spriteTemplate->paletteTag != TAG_NONE) + { LoadObjectEventPalette(spriteTemplate->paletteTag); + } + if (OW_GFX_COMPRESS) + { + graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + // Checking only for compressed here so as not to mess with decorations + if (graphicsInfo->compressed) + spriteTemplate->tileTag = LoadSheetGraphicsInfo(graphicsInfo, graphicsId, NULL); + } spriteId = CreateSprite(spriteTemplate, x, y, subpriority); + Free(spriteTemplate); if (spriteId != MAX_SPRITES && subspriteTables != NULL) { sprite = &gSprites[spriteId]; + if (OW_GFX_COMPRESS && graphicsInfo->compressed) + sprite->sheetSpan = GetSpanPerImage(sprite->oam.shape, sprite->oam.size); SetSubspriteTables(sprite, subspriteTables); sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; } @@ -1587,7 +1816,7 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), // A unique id is given as an argument and stored in the sprite data to allow referring back to the same virtual object. // They can be turned (and, in the case of the Union Room, animated teleporting in and out) but do not have movement types // or any of the other data normally associated with object events. -u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) +u8 CreateVirtualObject(u16 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevation, u8 direction) { u8 spriteId; struct Sprite *sprite; @@ -1597,10 +1826,12 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, SpriteCB_VirtualObject, &spriteTemplate, &subspriteTables); - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; x += MAP_OFFSET; y += MAP_OFFSET; SetSpritePosToOffsetMapCoords(&x, &y, 8, 16); + if (spriteTemplate.paletteTag != TAG_NONE) + LoadObjectEventPalette(spriteTemplate.paletteTag); + spriteId = CreateSpriteAtEnd(&spriteTemplate, x, y, 0); if (spriteId != MAX_SPRITES) { @@ -1608,17 +1839,10 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); sprite->y += sprite->centerToCornerVecY; - sprite->oam.paletteNum = graphicsInfo->paletteSlot; - if (sprite->oam.paletteNum >= 16) - sprite->oam.paletteNum -= 16; sprite->coordOffsetEnabled = TRUE; sprite->sVirtualObjId = virtualObjId; sprite->sVirtualObjElev = elevation; - if (graphicsInfo->paletteSlot == PALSLOT_NPC_SPECIAL) - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - else if (graphicsInfo->paletteSlot >= 16) - _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0); if (subspriteTables != NULL) { @@ -1632,6 +1856,601 @@ u8 CreateVirtualObject(u8 graphicsId, u8 virtualObjId, s16 x, s16 y, u8 elevatio return spriteId; } +// Return address of first conscious party mon or NULL +struct Pokemon *GetFirstLiveMon(void) +{ + u32 i; + for (i = 0; i < PARTY_SIZE; i++) + { + if (gPlayerParty[i].hp > 0 && !(gPlayerParty[i].box.isEgg || gPlayerParty[i].box.isBadEgg)) + return &gPlayerParty[i]; + } + return NULL; +} + +// Return follower ObjectEvent or NULL +struct ObjectEvent *GetFollowerObject(void) +{ + u32 i; + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && gObjectEvents[i].active) + return &gObjectEvents[i]; + } + return NULL; +} + +// Return graphicsInfo for a pokemon species & form +static const struct ObjectEventGraphicsInfo *SpeciesToGraphicsInfo(u16 species, u8 form) +{ + const struct ObjectEventGraphicsInfo *graphicsInfo = NULL; +#if OW_POKEMON_OBJECT_EVENTS + switch (species) + { + case SPECIES_UNOWN: // Letters >A are defined as species >= NUM_SPECIES, so are not contiguous with A + form %= NUM_UNOWN_FORMS; + graphicsInfo = &gSpeciesInfo[form ? SPECIES_UNOWN_B + form - 1 : species].overworldData; + break; + default: + graphicsInfo = &gSpeciesInfo[species].overworldData; + break; + } + // Try to avoid OOB or undefined access + if ((graphicsInfo->tileTag == 0 && species < NUM_SPECIES) || (graphicsInfo->tileTag != TAG_NONE && species >= NUM_SPECIES)) + { + if (OW_SUBSTITUTE_PLACEHOLDER) + return &gSpeciesInfo[SPECIES_NONE].overworldData; + return NULL; + } +#endif // OW_POKEMON_OBJECT_EVENTS + return graphicsInfo; +} + +// Find, or load, the palette for the specified pokemon info +static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) +{ + u32 paletteNum; + // Use standalone palette, unless entry is OOB or NULL (fallback to front-sprite-based) +#if OW_POKEMON_OBJECT_EVENTS == TRUE && OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + if ((shiny && gSpeciesInfo[species].overworldPalette) + || (!shiny && gSpeciesInfo[species].overworldShinyPalette)) + { + struct SpritePalette spritePalette; + u16 palTag = shiny ? (species + SPECIES_SHINY_TAG + OBJ_EVENT_PAL_TAG_DYNAMIC) : (species + OBJ_EVENT_PAL_TAG_DYNAMIC); + // palette already loaded + if ((paletteNum = IndexOfSpritePaletteTag(palTag)) < 16) + return paletteNum; + spritePalette.tag = palTag; + if (shiny) + spritePalette.data = gSpeciesInfo[species].overworldShinyPalette; + else + spritePalette.data = gSpeciesInfo[species].overworldPalette; + + // Check if pal data must be decompressed + if (IsLZ77Data(spritePalette.data, PLTT_SIZE_4BPP, PLTT_SIZE_4BPP)) + { + // IsLZ77Data guarantees word-alignment, so casting this is safe + LZ77UnCompWram((u32*)spritePalette.data, gDecompressionBuffer); + spritePalette.data = (void*)gDecompressionBuffer; + } + paletteNum = LoadSpritePalette(&spritePalette); + } + else +#endif //OW_POKEMON_OBJECT_EVENTS == TRUE && OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE + { + // Note that the shiny palette tag is `species + SPECIES_SHINY_TAG`, which must be increased with more pokemon + // so that palette tags do not overlap + const u32 *palette = GetMonSpritePalFromSpecies(species, shiny, FALSE); //ETODO + // palette already loaded + if ((paletteNum = IndexOfSpritePaletteTag(species)) < 16) + return paletteNum; + // Use matching front sprite's normal/shiny palettes + // Load compressed palette + LoadCompressedSpritePaletteWithTag(palette, species); + paletteNum = IndexOfSpritePaletteTag(species); // Tag is always present + } + + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + UpdateSpritePaletteWithWeather(paletteNum); + return paletteNum; +} + +// Set graphics & sprite for a follower object event by species & shininess. +static void FollowerSetGraphics(struct ObjectEvent *objEvent, u16 species, u8 form, bool8 shiny) +{ + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + ObjectEventSetGraphics(objEvent, graphicsInfo); + objEvent->graphicsId = (OBJ_EVENT_GFX_MON_BASE + species) & OBJ_EVENT_GFX_SPECIES_MASK; + objEvent->graphicsId |= form << OBJ_EVENT_GFX_SPECIES_BITS; + objEvent->shiny = shiny; + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) // Use palette from species palette table + { + struct Sprite *sprite = &gSprites[objEvent->spriteId]; + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + } + else if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + { + UpdateSpritePaletteWithWeather(gSprites[objEvent->spriteId].oam.paletteNum); + } +} + +// Like FollowerSetGraphics, but does not recenter sprite on a metatile +// Intended to be used for mid-movement form changes, etc. +static void RefreshFollowerGraphics(struct ObjectEvent *objEvent) +{ + u32 species = OW_SPECIES(objEvent); + u32 form = OW_FORM(objEvent); + u32 shiny = objEvent->shiny; + const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form); + struct Sprite *sprite = &gSprites[objEvent->spriteId]; + u32 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + + if (graphicsInfo->oam->size != sprite->oam.size) + { + if (OW_LARGE_OW_SUPPORT && !OW_GFX_COMPRESS) + ReallocSpriteTiles(sprite, graphicsInfo->images->size); + // Add difference in Y vectors + sprite->y += -(graphicsInfo->height >> 1) - sprite->centerToCornerVecY; + } + + if (OW_GFX_COMPRESS) + LoadSheetGraphicsInfo(graphicsInfo, objEvent->graphicsId, sprite); + + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = graphicsInfo->images; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + objEvent->inanimate = graphicsInfo->inanimate; + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + + if (graphicsInfo->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + { + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + sprite->oam.paletteNum = LoadDynamicFollowerPalette(species, form, shiny); + } + else if (i != 0xFF) + { + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); + } +} + +static u16 GetOverworldCastformSpecies(void) +{ + switch (GetCurrentWeather()) + { + case WEATHER_SUNNY_CLOUDS: + case WEATHER_DROUGHT: + return SPECIES_CASTFORM_SUNNY; + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + return SPECIES_CASTFORM_RAINY; + case WEATHER_SNOW: + return SPECIES_CASTFORM_SNOWY; + } + return SPECIES_CASTFORM_NORMAL; +} + +static bool8 GetMonInfo(struct Pokemon *mon, u16 *species, u8 *form, u8 *shiny) +{ + *form = 0; // default + if (!mon) + { + *species = SPECIES_NONE; + *form = 0; + *shiny = 0; + return FALSE; + } + *species = GetMonData(mon, MON_DATA_SPECIES); + *shiny = IsMonShiny(mon); + switch (*species) + { + case SPECIES_UNOWN: + *form = GET_UNOWN_LETTER(mon->box.personality); + break; + case SPECIES_CASTFORM: // form is based on overworld weather + *species = GetOverworldCastformSpecies(); + break; + } + return TRUE; +} + +// Retrieve graphic information about the following pokemon, if any +static bool8 GetFollowerInfo(u16 *species, u8 *form, u8 *shiny) +{ + return GetMonInfo(GetFirstLiveMon(), species, form, shiny); +} + +// Update following pokemon if any +void UpdateFollowingPokemon(void) +{ + struct ObjectEvent *objEvent = GetFollowerObject(); + struct Sprite *sprite; + u16 species; + bool8 shiny; + u8 form; + // Don't spawn follower if: + // 1. GetFollowerInfo returns FALSE + // 2. Map is indoors and gfx is larger than 32x32 + // 3. flag is set + if (OW_POKEMON_OBJECT_EVENTS == FALSE + || OW_FOLLOWERS_ENABLED == FALSE + || !GetFollowerInfo(&species, &form, &shiny) + || SpeciesToGraphicsInfo(species, form) == NULL + || (gMapHeader.mapType == MAP_TYPE_INDOOR && SpeciesToGraphicsInfo(species, form)->oam->size > ST_OAM_SIZE_2) + || FlagGet(FLAG_TEMP_HIDE_FOLLOWER)) + { + RemoveFollowingPokemon(); + return; + } + + if (objEvent == NULL) + { + // Spawn follower + u32 objId = gPlayerAvatar.objectEventId; + struct ObjectEventTemplate template = + { + .localId = OBJ_EVENT_ID_FOLLOWER, + .graphicsId = OBJ_EVENT_GFX_MON_BASE + species, + .flagId = 0, + .x = gSaveBlock1Ptr->pos.x, + .y = gSaveBlock1Ptr->pos.y, + // If player active, copy player elevation + .elevation = gObjectEvents[objId].active ? gObjectEvents[objId].currentElevation : 3, + .movementType = MOVEMENT_TYPE_FOLLOW_PLAYER, + // store form info in template + .trainerRange_berryTreeId = (form & 0x1F) | (shiny << 5), + }; + if ((objId = SpawnSpecialObjectEvent(&template)) >= OBJECT_EVENTS_COUNT) + return; + objEvent = &gObjectEvents[objId]; + objEvent->invisible = TRUE; + } + sprite = &gSprites[objEvent->spriteId]; + // Follower appearance changed; move to player and set invisible + if (species != OW_SPECIES(objEvent) || shiny != objEvent->shiny || form != OW_FORM(objEvent)) + { + MoveObjectEventToMapCoords(objEvent, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + FollowerSetGraphics(objEvent, species, form, shiny); + objEvent->invisible = TRUE; + } + sprite->data[6] = 0; // set animation data +} + +// Remove follower object. Idempotent. +void RemoveFollowingPokemon(void) +{ + struct ObjectEvent *objectEvent = GetFollowerObject(); + if (objectEvent == NULL) + return; + RemoveObjectEvent(objectEvent); +} + +// Determine whether follower *should* be visible +static bool32 IsFollowerVisible(void) +{ + return !(TestPlayerAvatarFlags(FOLLOWER_INVISIBLE_FLAGS) + || MetatileBehavior_IsSurfableWaterOrUnderwater(gObjectEvents[gPlayerAvatar.objectEventId].previousMetatileBehavior) + || MetatileBehavior_IsForcedMovementTile(gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior)); +} + +static bool8 SpeciesHasType(u16 species, u8 type) +{ + return gSpeciesInfo[species].types[0] == type || gSpeciesInfo[species].types[1] == type; +} + +// Display an emote above an object event +// Note that this is not a movement action +static void ObjectEventEmote(struct ObjectEvent *objEvent, u8 emotion) +{ + emotion %= FOLLOWER_EMOTION_LENGTH; + ObjectEventGetLocalIdAndMap(objEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + gFieldEffectArguments[7] = emotion; + FieldEffectStart(FLDEFF_EMOTE); +} + +// Find and return direction of metatile behavior within distance +static u32 FindMetatileBehaviorWithinRange(s32 x, s32 y, u32 mb, u8 distance) +{ + s32 i; + + for (i = y + 1; i <= y + distance; i++) + { + if (MapGridGetMetatileBehaviorAt(x, i) == mb) + return DIR_SOUTH; + } + + for (i = y - 1; i >= y - distance; i--) + { + if (MapGridGetMetatileBehaviorAt(x, i) == mb) + return DIR_NORTH; + } + + for (i = x + 1; i <= x + distance; i++) + { + if (MapGridGetMetatileBehaviorAt(i, y) == mb) + return DIR_EAST; + } + + for (i = x - 1; i >= x - distance; i--) + { + if (MapGridGetMetatileBehaviorAt(i, y) == mb) + return DIR_WEST; + } + + return DIR_NONE; +} + +// Check a single follower message condition +bool32 CheckMsgCondition(const struct MsgCondition *cond, struct Pokemon *mon, u32 species, struct ObjectEvent *obj) +{ + u32 multi; + if (species == SPECIES_NONE) + species = GetMonData(mon, MON_DATA_SPECIES); + + switch (cond->type) + { + case MSG_COND_SPECIES: + return (cond->data.raw == species); + case MSG_COND_TYPE: + multi = (SpeciesHasType(species, cond->data.bytes[0]) || + SpeciesHasType(species, cond->data.bytes[1])); + // if bytes[2] nonzero, + // invert; check that mon has *neither* type! + if (cond->data.bytes[2] != 0) + return !multi; + else + return multi; + break; + case MSG_COND_STATUS: + return (cond->data.raw & mon->status); + case MSG_COND_MAPSEC: + return (cond->data.raw == gMapHeader.regionMapSectionId); + case MSG_COND_MAP: + return (gSaveBlock1Ptr->location.mapGroup == cond->data.bytes[0] && + gSaveBlock1Ptr->location.mapNum == cond->data.bytes[1]); + case MSG_COND_ON_MB: + return (obj->currentMetatileBehavior == cond->data.bytes[0] || + obj->currentMetatileBehavior == cond->data.bytes[1]); + case MSG_COND_WEATHER: + multi = GetCurrentWeather(); + return (multi == cond->data.bytes[0] || multi == cond->data.bytes[1]); + case MSG_COND_MUSIC: + return (cond->data.raw == GetCurrentMapMusic()); + // Added on `lighting` branch + // case MSG_COND_TIME_OF_DAY: + // break; + case MSG_COND_NEAR_MB: + multi = FindMetatileBehaviorWithinRange(obj->currentCoords.x, + obj->currentCoords.y, + cond->data.bytes[0], + cond->data.bytes[1]); + if (multi) + gSpecialVar_Result = multi; + return multi; + case MSG_COND_NONE: + // fallthrough + default: + return TRUE; + } +} + +// Check if follower info can be displayed in the current situation; +// i.e, if all its conditions match +bool32 CheckMsgInfo(const struct FollowerMsgInfoExtended *info, struct Pokemon *mon, u32 species, struct ObjectEvent *obj) +{ + u32 i; + + if (info->orFlag) + { + // any condition matches + for (i = 0; i < ARRAY_COUNT(info->conditions) && info->conditions[i].type; i++) + { + if (CheckMsgCondition(&info->conditions[i], mon, species, obj)) + return TRUE; + } + return FALSE; + } + else + { + // all conditions must match + for (i = 0; i < ARRAY_COUNT(info->conditions) && info->conditions[i].type; i++) + { + if (!CheckMsgCondition(&info->conditions[i], mon, species, obj)) + return FALSE; + } + return TRUE; + } +} + +// Call an applicable follower message script +void GetFollowerAction(struct ScriptContext *ctx) // Essentially a big switch for follower messages +{ + u32 species; + s32 multi; + struct SpecialEmote condEmotes[16] = {0}; + u32 condCount = 0; + u32 emotion; + struct ObjectEvent *objEvent = GetFollowerObject(); + struct Pokemon *mon = GetFirstLiveMon(); + u8 emotion_weight[FOLLOWER_EMOTION_LENGTH] = + { + [FOLLOWER_EMOTION_HAPPY] = 10, + [FOLLOWER_EMOTION_NEUTRAL] = 15, + [FOLLOWER_EMOTION_SAD] = 5, + [FOLLOWER_EMOTION_UPSET] = 15, + [FOLLOWER_EMOTION_ANGRY] = 15, + [FOLLOWER_EMOTION_PENSIVE] = 15, + [FOLLOWER_EMOTION_LOVE] = 0, + [FOLLOWER_EMOTION_SURPRISE] = 10, + [FOLLOWER_EMOTION_CURIOUS] = 10, + [FOLLOWER_EMOTION_MUSIC] = 15, + [FOLLOWER_EMOTION_POISONED] = 0, + }; + u32 i, j; + bool32 pickedCondition = FALSE; + if (mon == NULL) // failsafe + { + ScriptCall(ctx, EventScript_FollowerLovesYou); + return; + } + // Set the script to the very end; we'll be calling another script dynamically + ScriptJump(ctx, EventScript_FollowerEnd); + species = GetMonData(mon, MON_DATA_SPECIES); + multi = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (multi > 80) + { + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; + emotion_weight[FOLLOWER_EMOTION_UPSET] = 5; + emotion_weight[FOLLOWER_EMOTION_ANGRY] = 5; + emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; + emotion_weight[FOLLOWER_EMOTION_MUSIC] = 20; + } + if (multi > 170) + { + emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; + emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; + } + // Special C-based conditions follower + // Weather-related + if (GetCurrentWeather() == WEATHER_SUNNY_CLOUDS) + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_HAPPY, .index = 31}; + // Health & status-related + multi = SAFE_DIV(mon->hp * 100, mon->maxHP); + if (multi < 20) + { + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_SAD, .index = 4}; + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_SAD, .index = 5}; + } + if (multi < 50 || mon->status & STATUS1_PARALYSIS) + { + emotion_weight[FOLLOWER_EMOTION_SAD] = 30; + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_SAD, .index = 6}; + } + // Gym type advantage/disadvantage + if (GetCurrentMapMusic() == MUS_GYM || GetCurrentMapMusic() == MUS_RG_GYM) + { + switch (gMapHeader.regionMapSectionId) + { + case MAPSEC_RUSTBORO_CITY: + case MAPSEC_PEWTER_CITY: + multi = TYPE_ROCK; + break; + case MAPSEC_DEWFORD_TOWN: + multi = TYPE_FIGHTING; + break; + case MAPSEC_MAUVILLE_CITY: + case MAPSEC_VERMILION_CITY: + multi = TYPE_ELECTRIC; + break; + case MAPSEC_LAVARIDGE_TOWN: + case MAPSEC_CINNABAR_ISLAND: + multi = TYPE_FIRE; + break; + case MAPSEC_PETALBURG_CITY: + multi = TYPE_NORMAL; + break; + case MAPSEC_FORTREE_CITY: + multi = TYPE_FLYING; + break; + case MAPSEC_MOSSDEEP_CITY: + case MAPSEC_SAFFRON_CITY: + multi = TYPE_PSYCHIC; + break; + case MAPSEC_SOOTOPOLIS_CITY: + case MAPSEC_CERULEAN_CITY: + multi = TYPE_WATER; + break; + case MAPSEC_CELADON_CITY: + multi = TYPE_GRASS; + break; + case MAPSEC_FUCHSIA_CITY: + multi = TYPE_POISON; + break; + case MAPSEC_VIRIDIAN_CITY: + multi = TYPE_GROUND; + break; + default: + multi = NUMBER_OF_MON_TYPES; + } + if (multi < NUMBER_OF_MON_TYPES) + { + multi = GetTypeEffectiveness(mon, multi); + if (multi <= UQ_4_12(0.5)) + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_HAPPY, .index = 32}; + else if (multi >= UQ_4_12(2.0)) + condEmotes[condCount++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_SAD, .index = 7}; + } + } + + emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); + if ((mon->status & STATUS1_PSN_ANY) && GetMonAbility(mon) != ABILITY_POISON_HEAL) + emotion = FOLLOWER_EMOTION_POISONED; + + // end special conditions + + // roll for basic/unconditional message + multi = Random() % gFollowerBasicMessages[emotion].length; + // (50% chance) Select special condition using reservoir sampling + for (i = (Random() & 1) ? condCount : 0, j = 1; i < condCount; i++) + { + if (condEmotes[i].emotion == emotion && (Random() < 0x10000 / (j++))) // Replace each item with 1/j chance + multi = condEmotes[i].index; + } + // (50% chance) Match *scripted* conditional messages, from follower_helper.c + for (i = (Random() & 1) ? COND_MSG_COUNT : 0, j = 1; i < COND_MSG_COUNT; i++) + { + const struct FollowerMsgInfoExtended *info = &gFollowerConditionalMessages[i]; + if (!CheckMsgInfo(info, mon, species, objEvent)) + continue; + + // replace choice with weight/j chance + if (Random() < (0x10000 / (j++)) * (info->weight ? info->weight : 1)) + { + multi = i; + pickedCondition = TRUE; + } + } + // condition message was chosen + if (pickedCondition) + { + emotion = gFollowerConditionalMessages[multi].emotion; + ObjectEventEmote(objEvent, emotion); + ctx->data[0] = (u32) gFollowerConditionalMessages[multi].text; + // text choices are spread across array; pick a random one + if (gFollowerConditionalMessages[multi].textSpread) + { + for (i = 0; i < 4; i++) + { + if (!((u32*)gFollowerConditionalMessages[multi].text)[i]) + break; + } + ctx->data[0] = i ? ((u32*)gFollowerConditionalMessages[multi].text)[Random() % i] : 0; + } + ScriptCall(ctx, gFollowerConditionalMessages[multi].script ? gFollowerConditionalMessages[multi].script : gFollowerBasicMessages[emotion].script); + return; + } + // otherwise, a basic or C-based message was picked + ObjectEventEmote(objEvent, emotion); + ctx->data[0] = (u32) gFollowerBasicMessages[emotion].messages[multi].text; // Load message text + ScriptCall(ctx, gFollowerBasicMessages[emotion].messages[multi].script ? + gFollowerBasicMessages[emotion].messages[multi].script : + gFollowerBasicMessages[emotion].script); +} + void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) { u8 i; @@ -1680,7 +2499,9 @@ void RemoveObjectEventsOutsideView(void) { struct ObjectEvent *objectEvent = &gObjectEvents[i]; - if (objectEvent->active && !objectEvent->isPlayer) + // Followers should not go OOB, or their sprites may be freed early during a cross-map scripting event, + // such as Wally's Ralts catch sequence + if (objectEvent->active && !objectEvent->isPlayer && objectEvent->localId != OBJ_EVENT_ID_FOLLOWER) RemoveObjectEventIfOutsideView(objectEvent); } } @@ -1704,7 +2525,7 @@ static void RemoveObjectEventIfOutsideView(struct ObjectEvent *objectEvent) void SpawnObjectEventsOnReturnToField(s16 x, s16 y) { - u8 i; + u32 i; ClearPlayerAvatarInfo(); for (i = 0; i < OBJECT_EVENTS_COUNT; i++) @@ -1717,8 +2538,7 @@ void SpawnObjectEventsOnReturnToField(s16 x, s16 y) static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) { - u8 i; - u8 paletteSlot; + u32 i; struct Sprite *sprite; struct ObjectEvent *objectEvent; struct SpriteTemplate spriteTemplate; @@ -1735,31 +2555,23 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) objectEvent = &gObjectEvents[objectEventId]; subspriteTables = NULL; graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - spriteFrameImage.size = graphicsInfo->size; CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables); + spriteFrameImage.size = graphicsInfo->size; spriteTemplate.images = &spriteFrameImage; - - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } - *(u16 *)&spriteTemplate.paletteTag = TAG_NONE; + if (OW_GFX_COMPRESS) + spriteTemplate.tileTag = LoadSheetGraphicsInfo(graphicsInfo, objectEvent->graphicsId, NULL); + if (spriteTemplate.paletteTag != TAG_NONE && spriteTemplate.paletteTag != OBJ_EVENT_PAL_TAG_DYNAMIC) + LoadObjectEventPalette(spriteTemplate.paletteTag); i = CreateSprite(&spriteTemplate, 0, 0, 0); if (i != MAX_SPRITES) { sprite = &gSprites[i]; + // Use palette from species palette table + if (spriteTemplate.paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) + sprite->oam.paletteNum = LoadDynamicFollowerPalette(OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + if (OW_GFX_COMPRESS && sprite->usingSheet) + sprite->sheetSpan = GetSpanPerImage(sprite->oam.shape, sprite->oam.size); GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); @@ -1774,7 +2586,6 @@ static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y) if (subspriteTables != NULL) SetSubspriteTables(sprite, subspriteTables); - sprite->oam.paletteNum = paletteSlot; sprite->coordOffsetEnabled = TRUE; sprite->sObjEventId = objectEventId; objectEvent->spriteId = i; @@ -1807,36 +2618,47 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE); } -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) +// Update sprite's palette, freeing old palette if necessary +static u8 UpdateSpritePalette(const struct SpritePalette *spritePalette, struct Sprite *sprite) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *sprite; - u8 paletteSlot; + // Free palette if otherwise unused + sprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); + sprite->inUse = TRUE; + return sprite->oam.paletteNum = LoadSpritePalette(spritePalette); +} + +// Find and update based on template's paletteTag +u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *template, struct Sprite *sprite) +{ + u8 i = FindObjectEventPaletteIndexByTag(template->paletteTag); + if (i == 0xFF) + return i; + return UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); +} + +// Set graphics *by info* +static void ObjectEventSetGraphics(struct ObjectEvent *objectEvent, const struct ObjectEventGraphicsInfo *graphicsInfo) +{ + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + u32 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + if (i != 0xFF) + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); + + // If gfx size changes, we need to reallocate tiles + if (OW_LARGE_OW_SUPPORT && !OW_GFX_COMPRESS && graphicsInfo->oam->size != sprite->oam.size) + ReallocSpriteTiles(sprite, graphicsInfo->images->size); + + #if OW_GFX_COMPRESS + LoadSheetGraphicsInfo(graphicsInfo, objectEvent->graphicsId, sprite); + #endif - graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); - sprite = &gSprites[objectEvent->spriteId]; - paletteSlot = graphicsInfo->paletteSlot; - if (paletteSlot == PALSLOT_PLAYER) - { - PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot == PALSLOT_NPC_SPECIAL) - { - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot); - } - else if (paletteSlot >= 16) - { - paletteSlot -= 16; - _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot); - } sprite->oam.shape = graphicsInfo->oam->shape; sprite->oam.size = graphicsInfo->oam->size; sprite->images = graphicsInfo->images; sprite->anims = graphicsInfo->anims; sprite->subspriteTables = graphicsInfo->subspriteTables; - sprite->oam.paletteNum = paletteSlot; objectEvent->inanimate = graphicsInfo->inanimate; - objectEvent->graphicsId = graphicsId; SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); @@ -1846,7 +2668,14 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId) CameraObjectReset(); } -void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 graphicsId) +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId) +{ + objectEvent->graphicsId = graphicsId; + ObjectEventSetGraphics(objectEvent, GetObjectEventGraphicsInfo(graphicsId)); + objectEvent->graphicsId = graphicsId; +} + +void ObjectEventSetGraphicsIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u16 graphicsId) { u8 objectEventId; @@ -1877,6 +2706,28 @@ void PlayerObjectTurn(struct PlayerAvatar *playerAvatar, u8 direction) ObjectEventTurn(&gObjectEvents[playerAvatar->objectEventId], direction); } +static void SetBerryTreeGraphicsById(struct ObjectEvent *objectEvent, u8 berryId, u8 berryStage) +{ + const u16 graphicsId = gBerryTreeObjectEventGraphicsIdTable[berryStage]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + UpdateSpritePalette(&sObjectEventSpritePalettes[gBerryTreePaletteSlotTablePointers[berryId][berryStage]-2], sprite); + sprite->oam.shape = graphicsInfo->oam->shape; + sprite->oam.size = graphicsInfo->oam->size; + sprite->images = gBerryTreePicTablePointers[berryId]; + sprite->anims = graphicsInfo->anims; + sprite->subspriteTables = graphicsInfo->subspriteTables; + objectEvent->inanimate = graphicsInfo->inanimate; + objectEvent->graphicsId = graphicsId; + SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y); + sprite->centerToCornerVecX = -(graphicsInfo->width >> 1); + sprite->centerToCornerVecY = -(graphicsInfo->height >> 1); + sprite->x += 8; + sprite->y += 16 + sprite->centerToCornerVecY; + if (objectEvent->trackedByCamera) + CameraObjectReset(); +} + static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u8 berryStage; @@ -1894,26 +2745,35 @@ static void SetBerryTreeGraphics(struct ObjectEvent *objectEvent, struct Sprite if (berryId > ITEM_TO_BERRY(LAST_BERRY_INDEX)) berryId = 0; - ObjectEventSetGraphicsId(objectEvent, gBerryTreeObjectEventGraphicsIdTable[berryStage]); - sprite->images = gBerryTreePicTablePointers[berryId]; - sprite->oam.paletteNum = gBerryTreePaletteSlotTablePointers[berryId][berryStage]; + SetBerryTreeGraphicsById(objectEvent, berryId, berryStage); StartSpriteAnim(sprite, berryStage); } } -const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) +const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u16 graphicsId) { - u8 bard; + u32 form = 0; - if (graphicsId >= OBJ_EVENT_GFX_VARS) + if (graphicsId >= OBJ_EVENT_GFX_VARS && graphicsId <= OBJ_EVENT_GFX_VAR_F) graphicsId = VarGetObjectEventGraphicsId(graphicsId - OBJ_EVENT_GFX_VARS); + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE + SPECIES_SHINY_TAG) + graphicsId -= SPECIES_SHINY_TAG; + // graphicsId may contain mon form info + if (graphicsId > OBJ_EVENT_GFX_SPECIES_MASK) + { + form = graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS; + graphicsId = graphicsId & OBJ_EVENT_GFX_SPECIES_MASK; + } + if (graphicsId == OBJ_EVENT_GFX_BARD) { - bard = GetCurrentMauvilleOldMan(); - return gMauvilleOldManGraphicsInfoPointers[bard]; + return gMauvilleOldManGraphicsInfoPointers[GetCurrentMauvilleOldMan()]; } + if (graphicsId >= OBJ_EVENT_GFX_MON_BASE) + return SpeciesToGraphicsInfo(graphicsId - OBJ_EVENT_GFX_MON_BASE, form); + if (graphicsId >= NUM_OBJ_EVENT_GFX) graphicsId = OBJ_EVENT_GFX_NINJA_BOY; @@ -1922,7 +2782,7 @@ const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId) static void SetObjectEventDynamicGraphicsId(struct ObjectEvent *objectEvent) { - if (objectEvent->graphicsId >= OBJ_EVENT_GFX_VARS) + if (objectEvent->graphicsId >= OBJ_EVENT_GFX_VARS && objectEvent->graphicsId <= OBJ_EVENT_GFX_VAR_F) objectEvent->graphicsId = VarGetObjectEventGraphicsId(objectEvent->graphicsId - OBJ_EVENT_GFX_VARS); } @@ -2001,17 +2861,28 @@ void FreeAndReserveObjectSpritePalettes(void) gReservedSpritePaletteCount = OBJ_PALSLOT_COUNT; } -static void LoadObjectEventPalette(u16 paletteTag) +u8 LoadObjectEventPalette(u16 paletteTag) { u16 i = FindObjectEventPaletteIndexByTag(paletteTag); + if (i == 0xFF) + return i; + return LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); +} -// FindObjectEventPaletteIndexByTag returns 0xFF on failure, not OBJ_EVENT_PAL_TAG_NONE. -#ifdef BUGFIX - if (i != 0xFF) -#else - if (i != OBJ_EVENT_PAL_TAG_NONE) -#endif - LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); +u8 LoadPlayerObjectEventPalette(u8 gender) +{ + u16 paletteTag; + switch (gender) + { + default: + case MALE: + paletteTag = OBJ_EVENT_PAL_TAG_BRENDAN; + break; + case FEMALE: + paletteTag = OBJ_EVENT_PAL_TAG_MAY; + break; + } + return LoadObjectEventPalette(paletteTag); } static void UNUSED LoadObjectEventPaletteSet(u16 *paletteTags) @@ -2024,10 +2895,11 @@ static void UNUSED LoadObjectEventPaletteSet(u16 *paletteTags) static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette) { - if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF) - return 0xFF; - - return LoadSpritePalette(spritePalette); + u8 paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); + if (paletteNum != 0xFF) // don't load twice; return + return paletteNum; + paletteNum = LoadSpritePalette(spritePalette); + return paletteNum; } void PatchObjectPalette(u16 paletteTag, u8 paletteSlot) @@ -2091,11 +2963,6 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot) } } -static void _PatchObjectPalette(u16 tag, u8 slot) -{ - PatchObjectPalette(tag, slot); -} - static void UNUSED IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) { objectEvent->previousCoords.x = objectEvent->currentCoords.x; @@ -2362,6 +3229,8 @@ void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction) static const u8 *GetObjectEventScriptPointerByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { + if (localId == OBJ_EVENT_ID_FOLLOWER) + return EventScript_Follower; return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->script; } @@ -4155,74 +5024,474 @@ bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Spri return TRUE; } -bool8 MovementType_CopyPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 MovementType_CopyPlayer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == MOVEMENT_ACTION_NONE || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) + return FALSE; + + return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); +} + +bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + objectEvent->singleMovementActive = FALSE; + sprite->sTypeFuncId = 1; + } + return FALSE; +} + +bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + return FALSE; +} + +bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection))); + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_WalkNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + if (ObjectEventIsFarawayIslandMew(objectEvent)) + { + direction = GetMewMoveDirection(); + if (direction == DIR_NONE) + { + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; + } + } + else + { + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + } + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_WalkFast(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFasterMovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetSlideMovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction)); + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpMovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +{ + u32 direction; + s16 x; + s16 y; + + direction = playerDirection; + direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + MoveCoordsInDirection(direction, &x, &y, 2, 2); + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + + if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) + ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); + + objectEvent->singleMovementActive = TRUE; + sprite->sTypeFuncId = 2; + return TRUE; +} + +static bool32 EndFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + if (!sprite) + return FALSE; + SetGpuReg(REG_OFFSET_MOSAIC, 0); + if (!sprite->data[7]) + return FALSE; + sprite->oam.mosaic = FALSE; + sprite->data[7] = 0; + return FALSE; +} + +static bool32 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u32 multi; + if (GET_BASE_SPECIES_ID(OW_SPECIES(objectEvent)) == SPECIES_CASTFORM + && OW_SPECIES(objectEvent) != (multi = GetOverworldCastformSpecies())) + { + sprite->data[7] = TRANSFORM_TYPE_WEATHER << 8; + return TRUE; + } + else if ((Random() & 0xFFFF) < 18 && GetLocalWildMon(FALSE) + && (OW_SPECIES(objectEvent) == SPECIES_MEW || OW_SPECIES(objectEvent) == SPECIES_DITTO)) + { + sprite->data[7] = TRANSFORM_TYPE_RANDOM_WILD << 8; + PlaySE(SE_M_MINIMIZE); + return TRUE; + } + return FALSE; +} + +static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u8 type = sprite->data[7] >> 8; + u8 frames = sprite->data[7] & 0xFF; + u8 stretch; + u32 multi; + if (!type) + return TryStartFollowerTransformEffect(objectEvent, sprite); + sprite->oam.mosaic = TRUE; + if (frames < 8) + stretch = frames >> 1; + else if (frames < 16) + stretch = (16 - frames) >> 1; + else + return EndFollowerTransformEffect(objectEvent, sprite); + + if (frames == 8) + { + switch (type) + { + case TRANSFORM_TYPE_PERMANENT: + RefreshFollowerGraphics(objectEvent); + break; + case TRANSFORM_TYPE_WEATHER: + multi = objectEvent->graphicsId; + objectEvent->graphicsId = GetOverworldCastformSpecies(); + if (!objectEvent->graphicsId) + { + objectEvent->graphicsId = multi; + break; + } + objectEvent->graphicsId += OBJ_EVENT_GFX_MON_BASE; + RefreshFollowerGraphics(objectEvent); + break; + case TRANSFORM_TYPE_RANDOM_WILD: + multi = objectEvent->graphicsId; + objectEvent->graphicsId = GetLocalWildMon(FALSE); + if (!objectEvent->graphicsId) + { + objectEvent->graphicsId = multi; + break; + } + objectEvent->graphicsId += OBJ_EVENT_GFX_MON_BASE; + RefreshFollowerGraphics(objectEvent); + objectEvent->graphicsId = multi; + break; + } + } + + SetGpuReg(REG_OFFSET_MOSAIC, (stretch << 12) | (stretch << 8)); + frames++; + sprite->data[7] = (sprite->data[7] & 0xFF00) | frames; + return TRUE; +} + +movement_type_def(MovementType_FollowPlayer, gMovementTypeFuncs_FollowPlayer) + +bool8 MovementType_FollowPlayer_Shadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ClearObjectEventMovement(objectEvent, sprite); + if (!IsFollowerVisible()) + { + // Shadow player's position + objectEvent->invisible = TRUE; + MoveObjectEventToMapCoords(objectEvent, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning + return FALSE; + } + // Move follower to player, in case we end up in the shadowing state for only 1 frame + // This way the player cannot talk to the invisible follower before it appears + if (objectEvent->invisible) + { + MoveObjectEventToMapCoords(objectEvent, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x, + gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y); + objectEvent->triggerGroundEffectsOnMove = FALSE; // Stop endless reflection spawning + } + sprite->sTypeFuncId = 1; // Enter active state; if the player moves the follower will appear + return TRUE; +} + +bool8 MovementType_FollowPlayer_Active(struct ObjectEvent *objectEvent, struct Sprite *sprite) { - if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == MOVEMENT_ACTION_NONE || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) - return FALSE; - - return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); + if (!IsFollowerVisible()) + { + if (objectEvent->invisible) + { + // Return to shadowing state + sprite->sTypeFuncId = 0; + return FALSE; + } + // Animate entering pokeball + ClearObjectEventMovement(objectEvent, sprite); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_ENTER_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->sTypeFuncId = 2; // movement action sets state to 0 + return TRUE; + } + return gFollowPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), NULL); } -bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +bool8 MovementType_FollowPlayer_Moving(struct ObjectEvent *objectEvent, struct Sprite *sprite) { + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE + // Copied from ObjectEventExecSingleMovementAction + if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite)) + { + objectEvent->movementActionId = MOVEMENT_ACTION_NONE; + sprite->sActionFuncId = 0; + #else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) { - objectEvent->singleMovementActive = FALSE; - sprite->sTypeFuncId = 1; + #endif + objectEvent->singleMovementActive = 0; + if (sprite->sTypeFuncId) // restore nonzero state + sprite->sTypeFuncId = 1; + } + else if (objectEvent->movementActionId < MOVEMENT_ACTION_EXIT_POKEBALL) + { + UpdateFollowerTransformEffect(objectEvent, sprite); + if (OW_FOLLOWERS_BOBBING == TRUE && (sprite->data[5] & 7) == 2) + sprite->y2 ^= -1; } return FALSE; } -bool8 CopyablePlayerMovement_None(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_Idle(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { + if (!objectEvent->singleMovementActive) + { + // walk in place + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection)); + sprite->sTypeFuncId = 1; + objectEvent->singleMovementActive = 1; + return TRUE; + } + else if (ObjectEventExecSingleMovementAction(objectEvent, sprite)) + { + // finish movement action + objectEvent->singleMovementActive = 0; + } + else if (OW_FOLLOWERS_BOBBING == TRUE && (sprite->data[3] & 7) == 2) + { + sprite->y2 ^= -1; + } + UpdateFollowerTransformEffect(objectEvent, sprite); return FALSE; } -bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) -{ - ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection))); - objectEvent->singleMovementActive = TRUE; - sprite->sTypeFuncId = 2; - return TRUE; -} - -bool8 CopyablePlayerMovement_WalkNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_Step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; s16 y; + s16 targetX; + s16 targetY; + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE + u32 playerAction = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId; + #endif + + targetX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x; + targetY = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y; + x = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x; + y = gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y; + + if ((x == targetX && y == targetY) || !IsFollowerVisible()) // don't move on player collision or if not visible + return FALSE; - direction = playerDirection; - if (ObjectEventIsFarawayIslandMew(objectEvent)) + x = objectEvent->currentCoords.x; + y = objectEvent->currentCoords.y; + ClearObjectEventMovement(objectEvent, sprite); + + if (objectEvent->invisible) { - direction = GetMewMoveDirection(); - if (direction == DIR_NONE) + // Animate exiting pokeball + // Player is jumping, but follower is invisible + if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) { - direction = playerDirection; - direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); - ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); - ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; - sprite->sTypeFuncId = 2; - return TRUE; + sprite->sTypeFuncId = 0; // return to shadowing state + return FALSE; } + MoveObjectEventToMapCoords(objectEvent, targetX, targetY); + ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_EXIT_POKEBALL); + objectEvent->singleMovementActive = 1; + sprite->sTypeFuncId = 2; + if (OW_FOLLOWERS_BOBBING == TRUE) + sprite->y2 = 0; + return TRUE; } - else + else if (x == targetX && y == targetY) { - direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); + // don't move if already in the player's last position + return FALSE; } - ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); - ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); - - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) - ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; + // Follow player + direction = GetDirectionToFace(x, y, targetX, targetY); + MoveCoords(direction, &x, &y); + #ifdef MB_SIDEWAYS_STAIRS_RIGHT_SIDE // https://github.com/ghoulslash/pokeemerald/tree/sideways_stairs + GetCollisionAtCoords(objectEvent, x, y, direction); // Sets directionOverwrite for stairs + if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) + { + // InitJumpRegular will set the proper speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + { + // Set follow speed according to player's speed + if (playerAction >= MOVEMENT_ACTION_RUN_DOWN_SLOW && playerAction <= MOVEMENT_ACTION_RUN_RIGHT_SLOW) + objectEvent->movementActionId = GetWalkNormalMovementAction(direction); + else + objectEvent->movementActionId = GetWalkFastMovementAction(direction); + } + else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + } + else + { + if (playerAction >= MOVEMENT_ACTION_WALK_SLOW_DOWN && playerAction <= MOVEMENT_ACTION_WALK_SLOW_RIGHT) + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + } + else + { + objectEvent->movementActionId = GetWalkNormalMovementAction(direction); + if (OW_FOLLOWERS_BOBBING == TRUE) + sprite->y2 = -1; + } + } + sprite->sActionFuncId = 0; + #else + if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE) + { + // InitJumpRegular will set the proper speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); + } + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + { + // Set follow speed according to player's speed + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); + } + else if (PlayerGetCopyableMovement() == COPY_MOVE_JUMP2) + { + // If *player* jumps, make step take twice as long + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkSlowMovementAction(direction)); + } + else + { + ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(direction)); + if (OW_FOLLOWERS_BOBBING == TRUE) + sprite->y2 = -1; + } + #endif + objectEvent->singleMovementActive = 1; sprite->sTypeFuncId = 2; return TRUE; } -bool8 CopyablePlayerMovement_WalkFast(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; @@ -4232,16 +5501,14 @@ bool8 CopyablePlayerMovement_WalkFast(struct ObjectEvent *objectEvent, struct Sp direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastMovementAction(direction)); - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; sprite->sTypeFuncId = 2; return TRUE; } -bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; @@ -4251,16 +5518,14 @@ bool8 CopyablePlayerMovement_WalkFaster(struct ObjectEvent *objectEvent, struct direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFasterMovementAction(direction)); - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; sprite->sTypeFuncId = 2; return TRUE; } -bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; @@ -4270,16 +5535,14 @@ bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprit direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetSlideMovementAction(direction)); - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; sprite->sTypeFuncId = 2; return TRUE; } -bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; @@ -4291,7 +5554,7 @@ bool8 CopyablePlayerMovement_JumpInPlace(struct ObjectEvent *objectEvent, struct return TRUE; } -bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; @@ -4301,31 +5564,24 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); ObjectEventMoveDestCoords(objectEvent, direction, &x, &y); ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpMovementAction(direction)); - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; sprite->sTypeFuncId = 2; return TRUE; } -bool8 CopyablePlayerMovement_Jump2(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) +bool8 FollowablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 playerDirection, bool8 tileCallback(u8)) { u32 direction; s16 x; s16 y; direction = playerDirection; - direction = GetCopyDirection(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction); x = objectEvent->currentCoords.x; y = objectEvent->currentCoords.y; MoveCoordsInDirection(direction, &x, &y, 2, 2); ObjectEventSetSingleMovement(objectEvent, sprite, GetJump2MovementAction(direction)); - - if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y)))) - ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction)); - objectEvent->singleMovementActive = TRUE; sprite->sTypeFuncId = 2; return TRUE; @@ -4473,7 +5729,7 @@ bool8 MovementType_Invisible_Step2(struct ObjectEvent *objectEvent, struct Sprit return FALSE; } -static void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite) +void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite) { objectEvent->singleMovementActive = FALSE; objectEvent->heldMovementActive = FALSE; @@ -4623,6 +5879,41 @@ u8 GetDirectionToFace(s16 x, s16 y, s16 targetX, s16 targetY) return DIR_SOUTH; } +// Uses the above, but script accessible, and uses localIds +void GetDirectionToFaceScript(struct ScriptContext *ctx) +{ + u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + u8 sourceId = GetObjectEventIdByLocalId(ScriptReadByte(ctx)); + u8 targetId = GetObjectEventIdByLocalId(ScriptReadByte(ctx)); + if (var == NULL) + return; + if (sourceId >= OBJECT_EVENTS_COUNT || targetId >= OBJECT_EVENTS_COUNT) + *var = DIR_NONE; + else + *var = GetDirectionToFace(gObjectEvents[sourceId].currentCoords.x, + gObjectEvents[sourceId].currentCoords.y, + gObjectEvents[targetId].currentCoords.x, + gObjectEvents[targetId].currentCoords.y); +} + +// Whether following pokemon is also the user of the field move +// Intended to be called before the field effect itself +void IsFollowerFieldMoveUser(struct ScriptContext *ctx) +{ + u16 *var = GetVarPointer(ScriptReadHalfword(ctx)); + u16 userIndex = gFieldEffectArguments[0]; // field move user index + struct Pokemon *follower = GetFirstLiveMon(); + struct ObjectEvent *obj = GetFollowerObject(); + if (var == NULL) + return; + *var = FALSE; + if (follower && obj && !obj->invisible) + { + u16 followIndex = ((u32)follower - (u32)gPlayerParty) / sizeof(struct Pokemon); + *var = userIndex == followIndex; + } +} + void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType) { objectEvent->movementType = movementType; @@ -4722,10 +6013,13 @@ static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *objectEvent, s16 u8 i; struct ObjectEvent *curObject; + if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER) + return FALSE; // follower cannot collide with other objects, but they can collide with it + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { curObject = &gObjectEvents[i]; - if (curObject->active && curObject != objectEvent) + if (curObject->active && (curObject->movementType != MOVEMENT_TYPE_FOLLOW_PLAYER || objectEvent != &gObjectEvents[gPlayerAvatar.objectEventId]) && curObject != objectEvent) { if ((curObject->currentCoords.x == x && curObject->currentCoords.y == y) || (curObject->previousCoords.x == x && curObject->previousCoords.y == y)) { @@ -5418,6 +6712,8 @@ enum { JUMP_TYPE_HIGH, JUMP_TYPE_LOW, JUMP_TYPE_NORMAL, + JUMP_TYPE_FAST, + JUMP_TYPE_FASTER, }; static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 distance, u8 type) @@ -5441,6 +6737,13 @@ static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 static void InitJumpRegular(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 distance, u8 type) { + // For follower only, match the anim duration of the player's movement, whether dashing, walking or jumping + if (objectEvent->localId == OBJ_EVENT_ID_FOLLOWER + && type == JUMP_TYPE_HIGH + && distance == JUMP_DISTANCE_FAR + // In some areas (i.e Meteor Falls), the player can jump as the follower jumps, so preserve type in this case + && PlayerGetCopyableMovement() != COPY_MOVE_JUMP2) + type = TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) ? JUMP_TYPE_FASTER : JUMP_TYPE_FAST; InitJump(objectEvent, sprite, direction, distance, type); SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection)); DoShadowFieldEffect(objectEvent); @@ -5731,6 +7034,211 @@ bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite); } +// Update sprite with a palette filled with a solid color +static u8 LoadFillColorPalette(u16 color, u16 paletteTag, struct Sprite *sprite) +{ + u16 paletteData[16]; + struct SpritePalette dynamicPalette = {.tag = paletteTag, .data = paletteData}; + CpuFill16(color, paletteData, PLTT_SIZE_4BPP); + return UpdateSpritePalette(&dynamicPalette, sprite); +} + +static void ObjectEventSetPokeballGfx(struct ObjectEvent *objEvent) +{ + #if OW_FOLLOWERS_POKEBALLS + u32 ball = BALL_POKE; + if (objEvent->localId == OBJ_EVENT_ID_FOLLOWER) + { + struct Pokemon *mon = GetFirstLiveMon(); + if (mon) + ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); + } + + if (ball != BALL_POKE && ball < POKEBALL_COUNT) + { + const struct ObjectEventGraphicsInfo *info = &gPokeballGraphics[ball]; + if (info->tileTag == TAG_NONE) + { + ObjectEventSetGraphics(objEvent, info); + return; + } + } + #endif //OW_FOLLOWERS_POKEBALLS + ObjectEventSetGraphicsId(objEvent, OBJ_EVENT_GFX_POKE_BALL); +} + +#define sDuration data[3] +#define sSpeedFlip data[6] + +bool8 MovementAction_ExitPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u32 direction = gObjectEvents[gPlayerAvatar.objectEventId].facingDirection; + u16 graphicsId = objectEvent->graphicsId; + objectEvent->invisible = FALSE; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH)) + { + // If player is dashing, the pokemon must come out faster + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetJumpSpecialDirectionAnimNum(direction)); + sprite->sDuration = 8; + sprite->sSpeedFlip = 0; // fast speed + } + else + { + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFastestAnimNum(direction)); + sprite->sDuration = 16; + sprite->sSpeedFlip = 1; // normal speed + } + // If mon's right-facing sprite is h-flipped, we need to use a different affine anim + if (direction == DIR_EAST && sprite->anims[ANIM_STD_FACE_EAST]->frame.hFlip) + sprite->sSpeedFlip |= 1 << 4; + ObjectEventSetPokeballGfx(objectEvent); + objectEvent->graphicsId = graphicsId; + objectEvent->inanimate = FALSE; + return MovementAction_ExitPokeball_Step1(objectEvent, sprite); +} + +static const union AffineAnimCmd sAffineAnim_PokeballExit[] = +{ + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballExitEast[] = // sprite is h-flipped when east +{ + AFFINEANIMCMD_FRAME(0xFFC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnter[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xC0, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x40, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_PokeballEnterEast[] = // sprtie is h-flipped when east +{ + AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF40, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFF80, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFC0, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sAffineAnims_PokeballFollower[] = +{ + sAffineAnim_PokeballExit, + sAffineAnim_PokeballExitEast, + sAffineAnim_PokeballEnter, + sAffineAnim_PokeballEnterEast, +}; + +bool8 MovementAction_ExitPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + // for different speeds, anim steps occur on different frame #s + u32 animStepFrame = (sprite->sSpeedFlip & 1) ? 7 : 3; // 0 -> 3, 1 -> 7 + if (--sprite->sDuration == 0) + { + sprite->sActionFuncId = 2; + sprite->animCmdIndex = 0; + sprite->animPaused = TRUE; + return TRUE; + } + // Set graphics, palette, and affine animation + else if (sprite->sDuration == animStepFrame) + { + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite); + // Initialize affine animation + sprite->affineAnims = sAffineAnims_PokeballFollower; + if (OW_LARGE_OW_SUPPORT && !IS_POW_OF_TWO(-sprite->centerToCornerVecX)) + return FALSE; + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, sprite->sSpeedFlip >> 4); + // Restore original palette & disable affine + } + else if (sprite->sDuration == (animStepFrame >> 1)) + { + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + } + return FALSE; +} + +bool8 MovementAction_EnterPokeball_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u32 direction = objectEvent->facingDirection; + StartSpriteAnimInDirection(objectEvent, sprite, direction, GetMoveDirectionFasterAnimNum(direction)); + sprite->sDuration = 16; + // If mon's right-facing sprite is h-flipped, we need to use a different affine anim + if (direction == DIR_EAST && sprite->anims[ANIM_STD_FACE_EAST]->frame.hFlip) + sprite->sSpeedFlip = 3; + else + sprite->sSpeedFlip = 2; + EndFollowerTransformEffect(objectEvent, sprite); + return MovementAction_EnterPokeball_Step1(objectEvent, sprite); +} + +bool8 MovementAction_EnterPokeball_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u16 graphicsId = objectEvent->graphicsId; + if (--sprite->sDuration == 0) + { + sprite->sActionFuncId = 2; + return FALSE; + } + else if (sprite->sDuration == 11) + { + // Set palette to white & start affine + LoadFillColorPalette(RGB_WHITE, OBJ_EVENT_PAL_TAG_WHITE, sprite); + sprite->subspriteTableNum = 0; + // Only do affine if sprite width is power of 2 + // (effect looks weird on sprites composed of subsprites like 48x48, etc) + if (OW_LARGE_OW_SUPPORT && !IS_POW_OF_TWO(-sprite->centerToCornerVecX)) + return FALSE; + sprite->affineAnims = sAffineAnims_PokeballFollower; + sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; + InitSpriteAffineAnim(sprite); + StartSpriteAffineAnim(sprite, sprite->sSpeedFlip); + } + else if (sprite->sDuration == 7) + { + // Free white palette and change to pokeball, disable affine + sprite->affineAnimEnded = TRUE; + FreeSpriteOamMatrix(sprite); + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + ObjectEventSetPokeballGfx(objectEvent); + objectEvent->graphicsId = graphicsId; + objectEvent->inanimate = FALSE; + } + return FALSE; +} + +bool8 MovementAction_EnterPokeball_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + FollowerSetGraphics(objectEvent, OW_SPECIES(objectEvent), OW_FORM(objectEvent), objectEvent->shiny); + objectEvent->invisible = TRUE; + sprite->sTypeFuncId = 0; + sprite->sSpeedFlip = 0; + sprite->animPaused = TRUE; + return TRUE; +} + +#undef sDuration +#undef sSpeedFlip + bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32); @@ -6483,6 +7991,7 @@ bool8 MovementAction_EmoteExclamationMark_Step0(struct ObjectEvent *objectEvent, bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) { ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + gFieldEffectArguments[7] = -1; FieldEffectStart(FLDEFF_QUESTION_MARK_ICON); sprite->sActionFuncId = 1; return TRUE; @@ -7735,7 +9244,17 @@ static void UpdateObjectEventElevationAndPriority(struct ObjectEvent *objEvent, if (objEvent->fixedPriority) return; - ObjectEventUpdateElevation(objEvent); + ObjectEventUpdateElevation(objEvent, sprite); + if (objEvent->localId == OBJ_EVENT_ID_FOLLOWER) + { + // keep subspriteMode synced with player's + // so that it disappears under bridges when they do + if (OW_LARGE_OW_SUPPORT) + sprite->subspriteMode |= gSprites[gPlayerAvatar.spriteId].subspriteMode & SUBSPRITES_IGNORE_PRIORITY; + // if transitioning between elevations, use the player's elevation + if (!objEvent->currentElevation) + objEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + } sprite->subspriteTableNum = sElevationToSubspriteTableNum[objEvent->previousElevation]; sprite->oam.priority = sElevationToPriority[objEvent->previousElevation]; @@ -7752,13 +9271,20 @@ u8 ElevationToPriority(u8 elevation) return sElevationToPriority[elevation]; } -void ObjectEventUpdateElevation(struct ObjectEvent *objEvent) +// Returns current elevation, or 15 for bridges +void ObjectEventUpdateElevation(struct ObjectEvent *objEvent, struct Sprite *sprite) { u8 curElevation = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y); u8 prevElevation = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y); if (curElevation == 15 || prevElevation == 15) + { + // Ignore subsprite priorities under bridges + // so all subsprites will display below it + if (OW_LARGE_OW_SUPPORT) + sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; return; + } objEvent->currentElevation = curElevation; @@ -7781,6 +9307,10 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp if (objEvent->fixedPriority) return; + // If transitioning between elevations, use the player's elevation + if (!objEvent->currentElevation && objEvent->localId == OBJ_EVENT_ID_FOLLOWER) + objEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + SetObjectSubpriorityByElevation(objEvent->previousElevation, sprite, 1); } @@ -7866,18 +9396,21 @@ static void (*const sGroundEffectTracksFuncs[])(struct ObjectEvent *objEvent, st [TRACKS_NONE] = DoTracksGroundEffect_None, [TRACKS_FOOT] = DoTracksGroundEffect_Footprints, [TRACKS_BIKE_TIRE] = DoTracksGroundEffect_BikeTireTracks, + [TRACKS_SLITHER] = DoTracksGroundEffect_SlitherTracks, + [TRACKS_SPOT] = DoTracksGroundEffect_FootprintsC, + [TRACKS_BUG] = DoTracksGroundEffect_FootprintsB, }; void GroundEffect_SandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, FALSE); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, FALSE); } void GroundEffect_DeepSandTracks(struct ObjectEvent *objEvent, struct Sprite *sprite) { const struct ObjectEventGraphicsInfo *info = GetObjectEventGraphicsInfo(objEvent->graphicsId); - sGroundEffectTracksFuncs[info->tracks](objEvent, sprite, TRUE); + sGroundEffectTracksFuncs[objEvent->invisible ? TRACKS_NONE : info->tracks](objEvent, sprite, TRUE); } static void DoTracksGroundEffect_None(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) @@ -7900,6 +9433,40 @@ static void DoTracksGroundEffect_Footprints(struct ObjectEvent *objEvent, struct FieldEffectStart(sandFootprints_FieldEffectData[isDeepSand]); } +static void DoTracksGroundEffect_FootprintsB(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsA_FieldEffectData[2] = { + FLDEFF_TRACKS_SPOT, + FLDEFF_TRACKS_SPOT + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(otherFootprintsA_FieldEffectData[isDeepSand]); +} + +static void DoTracksGroundEffect_FootprintsC(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) +{ + // First half-word is a Field Effect script id. (gFieldEffectScriptPointers) + u16 otherFootprintsB_FieldEffectData[2] = { + FLDEFF_TRACKS_BUG, + FLDEFF_TRACKS_BUG + }; + + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = objEvent->facingDirection; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(otherFootprintsB_FieldEffectData[isDeepSand]); +} + static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, bool8 isDeepSand) { // Specifies which bike track shape to show next. @@ -7927,6 +9494,34 @@ static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, st } } +static void DoTracksGroundEffect_SlitherTracks(struct ObjectEvent *objEvent, struct Sprite *sprite, u8 a) +{ + // Specifies which bike track shape to show next. + // For example, when the bike turns from up to right, it will show + // a track that curves to the right. + // Each 4-byte row corresponds to the initial direction of the bike, and + // each byte in that row is for the next direction of the bike in the order + // of down, up, left, right. + static const u8 slitherTracks_Transitions[4][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) + { + gFieldEffectArguments[0] = objEvent->previousCoords.x; + gFieldEffectArguments[1] = objEvent->previousCoords.y; + gFieldEffectArguments[2] = 149; + gFieldEffectArguments[3] = 2; + gFieldEffectArguments[4] = + slitherTracks_Transitions[objEvent->previousMovementDirection][objEvent->facingDirection - 5]; + gFieldEffectArguments[5] = objEvent->previousMetatileBehavior; + FieldEffectStart(FLDEFF_TRACKS_SLITHER); + } +} + void GroundEffect_Ripple(struct ObjectEvent *objEvent, struct Sprite *sprite) { DoRippleFieldEffect(objEvent, sprite); @@ -8084,6 +9679,8 @@ static void DoGroundEffects_OnSpawn(struct ObjectEvent *objEvent, struct Sprite #endif { flags = 0; + if (OW_LARGE_OW_SUPPORT && !sprite->oam.affineMode) + sprite->subspriteMode = SUBSPRITES_ON; UpdateObjectEventElevationAndPriority(objEvent, sprite); GetAllGroundEffectFlags_OnSpawn(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); @@ -8104,6 +9701,8 @@ static void DoGroundEffects_OnBeginStep(struct ObjectEvent *objEvent, struct Spr #endif { flags = 0; + if (OW_LARGE_OW_SUPPORT && !sprite->oam.affineMode) + sprite->subspriteMode = SUBSPRITES_ON; UpdateObjectEventElevationAndPriority(objEvent, sprite); GetAllGroundEffectFlags_OnBeginStep(objEvent, &flags); SetObjectEventSpriteOamTableForLongGrass(objEvent, sprite); @@ -8459,12 +10058,14 @@ static void SetJumpSpriteData(struct Sprite *sprite, u8 direction, u8 distance, static u8 DoJumpSpriteMovement(struct Sprite *sprite) { - s16 distanceToTime[] = { + s16 distanceToTime[] = + { [JUMP_DISTANCE_IN_PLACE] = 16, [JUMP_DISTANCE_NORMAL] = 16, [JUMP_DISTANCE_FAR] = 32, }; - u8 distanceToShift[] = { + u8 distanceToShift[] = + { [JUMP_DISTANCE_IN_PLACE] = 0, [JUMP_DISTANCE_NORMAL] = 0, [JUMP_DISTANCE_FAR] = 1, @@ -8474,7 +10075,22 @@ static u8 DoJumpSpriteMovement(struct Sprite *sprite) if (sprite->sDistance != JUMP_DISTANCE_IN_PLACE) Step1(sprite, sprite->sDirection); - sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], sprite->sJumpType); + if (sprite->sJumpType == JUMP_TYPE_FASTER) + { + Step3(sprite, sprite->sDirection); + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], JUMP_TYPE_NORMAL); + sprite->sTimer += 3; + } + else if (sprite->sJumpType == JUMP_TYPE_FAST) + { + Step1(sprite, sprite->sDirection); + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], JUMP_TYPE_NORMAL); + sprite->sTimer++; + } + else + { + sprite->y2 = GetJumpY(sprite->sTimer >> distanceToShift[sprite->sDistance], sprite->sJumpType); + } sprite->sTimer++; @@ -8626,7 +10242,7 @@ void TurnVirtualObject(u8 virtualObjId, u8 direction) StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(direction)); } -void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) +void SetVirtualObjectGraphics(u8 virtualObjId, u16 graphicsId) { int spriteId = GetVirtualObjectSpriteId(virtualObjId); @@ -8635,10 +10251,12 @@ void SetVirtualObjectGraphics(u8 virtualObjId, u8 graphicsId) struct Sprite *sprite = &gSprites[spriteId]; const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId); u16 tileNum = sprite->oam.tileNum; + u8 i = FindObjectEventPaletteIndexByTag(graphicsInfo->paletteTag); + if (i != 0xFF) + UpdateSpritePalette(&sObjectEventSpritePalettes[i], sprite); sprite->oam = *graphicsInfo->oam; sprite->oam.tileNum = tileNum; - sprite->oam.paletteNum = graphicsInfo->paletteSlot; sprite->images = graphicsInfo->images; if (graphicsInfo->subspriteTables == NULL) @@ -8993,3 +10611,26 @@ bool8 MovementAction_EmoteDoubleExclamationMark_Step0(struct ObjectEvent *object sprite->sActionFuncId = 1; return TRUE; } + +// Get gfx data from daycare pokemon and store it in vars +void GetDaycareGraphics(struct ScriptContext *ctx) +{ + u16 varGfx[] = {ScriptReadHalfword(ctx), ScriptReadHalfword(ctx)}; + u16 varForm[] = {ScriptReadHalfword(ctx), ScriptReadHalfword(ctx)}; + u16 specGfx; + u8 form; + u8 shiny; + s32 i; + for (i = 0; i < 2; i++) + { + GetMonInfo((struct Pokemon *) &gSaveBlock1Ptr->daycare.mons[i].mon, &specGfx, &form, &shiny); + if (specGfx == SPECIES_NONE) + break; + // Assemble gfx ID like FollowerSetGraphics + specGfx = (OBJ_EVENT_GFX_MON_BASE + specGfx) & OBJ_EVENT_GFX_SPECIES_MASK; + specGfx |= form << OBJ_EVENT_GFX_SPECIES_BITS; + VarSet(varGfx[i], specGfx); + VarSet(varForm[i], form | (shiny << 5)); + } + gSpecialVar_Result = i; +} diff --git a/src/evolution_scene.c b/src/evolution_scene.c index c5d7e56f0bf6..98879430cb37 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -769,11 +769,13 @@ static void Task_EvolutionScene(u8 taskId) case EVOSTATE_SET_MON_EVOLVED: if (IsCryFinished()) { + u32 zero = 0; StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); BattlePutTextOnWindow(gStringVar4, B_WIN_MSG); PlayBGM(MUS_EVOLVED); gTasks[taskId].tState++; SetMonData(mon, MON_DATA_SPECIES, (void *)(&gTasks[taskId].tPostEvoSpecies)); + SetMonData(mon, MON_DATA_EVOLUTION_TRACKER, &zero); CalculateMonStats(mon); EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN); @@ -1188,11 +1190,13 @@ static void Task_TradeEvolutionScene(u8 taskId) case T_EVOSTATE_SET_MON_EVOLVED: if (IsCryFinished()) { + u32 zero = 0; StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); DrawTextOnTradeWindow(0, gStringVar4, 1); PlayFanfare(MUS_EVOLVED); gTasks[taskId].tState++; SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskId].tPostEvoSpecies)); + SetMonData(mon, MON_DATA_EVOLUTION_TRACKER, &zero); CalculateMonStats(mon); EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN); diff --git a/src/fake_rtc.c b/src/fake_rtc.c new file mode 100644 index 000000000000..f3f3b74c3960 --- /dev/null +++ b/src/fake_rtc.c @@ -0,0 +1,104 @@ +#include "global.h" +#include "string_util.h" +#include "strings.h" +#include "text.h" +#include "rtc.h" +#include "fake_rtc.h" +#include "event_data.h" + +struct Time *FakeRtc_GetCurrentTime(void) +{ +#if OW_USE_FAKE_RTC + return &gSaveBlock3Ptr->fakeRTC; +#else + return NULL; +#endif +} + +void FakeRtc_GetRawInfo(struct SiiRtcInfo *rtc) +{ + struct Time* time = FakeRtc_GetCurrentTime(); + rtc->second = time->seconds; + rtc->minute = time->minutes; + rtc->hour = time->hours; + rtc->day = time->days; +} + +void FakeRtc_TickTimeForward(void) +{ + if (!OW_USE_FAKE_RTC) + return; + + if (FlagGet(OW_FLAG_PAUSE_TIME)) + return; + + FakeRtc_AdvanceTimeBy(0, 0, FakeRtc_GetSecondsRatio()); +} + +void FakeRtc_AdvanceTimeBy(u32 hours, u32 minutes, u32 seconds) +{ + struct Time* time = FakeRtc_GetCurrentTime(); + seconds += time->seconds; + minutes += time->minutes; + hours += time->hours; + + while(seconds >= SECONDS_PER_MINUTE) + { + minutes++; + seconds -= SECONDS_PER_MINUTE; + } + + while(minutes >= MINUTES_PER_HOUR) + { + hours++; + minutes -= MINUTES_PER_HOUR; + } + + while(hours >= HOURS_PER_DAY) + { + time->days++; + hours -= HOURS_PER_DAY; + } + + time->seconds = seconds; + time->minutes = minutes; + time->hours = hours; +} + +void FakeRtc_ManuallySetTime(u32 hour, u32 minute, u32 second) +{ + struct Time diff, target; + RtcCalcLocalTime(); + + target.hours = hour; + target.minutes = minute; + target.seconds = second; + target.days = gLocalTime.days; + + CalcTimeDifference(&diff, &gLocalTime, &target); + FakeRtc_AdvanceTimeBy(diff.hours, diff.minutes, diff.seconds); +} + +u32 FakeRtc_GetSecondsRatio(void) +{ + return (OW_ALTERED_TIME_RATIO == GEN_8_PLA) ? 60 : + (OW_ALTERED_TIME_RATIO == GEN_9) ? 20 : + 1; +} + +STATIC_ASSERT((OW_FLAG_PAUSE_TIME == 0 || OW_USE_FAKE_RTC == TRUE), FakeRtcMustBeTrueToPauseTime); + +void Script_PauseFakeRtc(void) +{ + FlagSet(OW_FLAG_PAUSE_TIME); +} + +void Script_ResumeFakeRtc(void) +{ + FlagClear(OW_FLAG_PAUSE_TIME); +} + +void Script_ToggleFakeRtc(void) +{ + FlagToggle(OW_FLAG_PAUSE_TIME); +} diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index d5c252415df9..582617d555a1 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -69,6 +69,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *, u16); static bool8 TryStartMiscWalkingScripts(u16); static bool8 TryStartStepCountScript(u16); static void UpdateFriendshipStepCounter(void); +static void UpdateFollowerStepCounter(void); #if OW_POISON_DAMAGE < GEN_5 static bool8 UpdatePoisonStepCounter(void); #endif // OW_POISON_DAMAGE @@ -565,6 +566,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) IncrementRematchStepCounter(); UpdateFriendshipStepCounter(); UpdateFarawayIslandStepCounter(); + UpdateFollowerStepCounter(); if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED_MOVE) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior)) { @@ -658,6 +660,12 @@ static void UpdateFriendshipStepCounter(void) } } +static void UpdateFollowerStepCounter(void) +{ + if (gPlayerPartyCount > 0 && gFollowerSteps < (u16)-1) + gFollowerSteps++; +} + void ClearPoisonStepCounter(void) { VarSet(VAR_POISON_STEP_COUNTER, 0); @@ -908,6 +916,16 @@ static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 e return WARP_ID_NONE; } +static bool32 ShouldTriggerScriptRun(const struct CoordEvent *coordEvent) +{ + u16 *varPtr = GetVarPointer(coordEvent->trigger); + // Treat non Vars as flags + if (varPtr == NULL) + return (FlagGet(coordEvent->trigger) == coordEvent->index); + else + return (*varPtr == coordEvent->index); +} + static const u8 *TryRunCoordEventScript(const struct CoordEvent *coordEvent) { if (coordEvent != NULL) @@ -922,7 +940,7 @@ static const u8 *TryRunCoordEventScript(const struct CoordEvent *coordEvent) RunScriptImmediately(coordEvent->script); return NULL; } - if (VarGet(coordEvent->trigger) == (u8)coordEvent->index) + if (ShouldTriggerScriptRun(coordEvent)) return coordEvent->script; } return NULL; diff --git a/src/field_effect.c b/src/field_effect.c index dcfbd5707840..898f19c291fe 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -20,6 +20,7 @@ #include "palette.h" #include "party_menu.h" #include "pokemon.h" +#include "pokemon_storage_system.h" #include "script.h" #include "sound.h" #include "sprite.h" @@ -28,6 +29,7 @@ #include "trig.h" #include "util.h" #include "constants/field_effects.h" +#include "constants/event_objects.h" #include "constants/event_object_movement.h" #include "constants/metatile_behaviors.h" #include "constants/rgb.h" @@ -68,7 +70,6 @@ static void PokeballGlowEffect_WaitForSound(struct Sprite *); static void PokeballGlowEffect_Idle(struct Sprite *); static void SpriteCB_PokeballGlow(struct Sprite *); -static void FieldCallback_UseFly(void); static void Task_UseFly(u8); static void FieldCallback_FlyIntoMap(void); static void Task_FlyIntoMap(u8); @@ -939,12 +940,14 @@ u8 CreateMonSprite_FieldMove(u16 species, bool8 isShiny, u32 personality, s16 x, void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId) { + u8 paletteNum = sprite->oam.paletteNum; ResetPreservedPalettesInWeather(); if (sprite->oam.affineMode != ST_OAM_AFFINE_OFF) { FreeOamMatrix(sprite->oam.matrixNum); } - FreeAndDestroyMonPicSprite(spriteId); + FreeAndDestroyMonPicSpriteNoPalette(spriteId); + FieldEffectFreePaletteIfUnused(paletteNum); // Clear palette only if unused, in case follower is using it } // r, g, b are between 0 and 16 @@ -1013,10 +1016,10 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) bool8 FldEff_PokecenterHeal(void) { - u8 nPokemon; + u32 nPokemon; struct Task *task; - nPokemon = CalculatePlayerPartyCount(); + nPokemon = (OW_IGNORE_EGGS_ON_HEAL <= GEN_3) ? CalculatePlayerPartyCount() : CountPartyNonEggMons(); task = &gTasks[CreateTask(Task_PokecenterHeal, 0xff)]; task->tNumMons = nPokemon; task->tFirstBallX = 93; @@ -1345,7 +1348,7 @@ void ReturnToFieldFromFlyMapSelect(void) gFieldCallback = FieldCallback_UseFly; } -static void FieldCallback_UseFly(void) +void FieldCallback_UseFly(void) { FadeInFromBlack(); CreateTask(Task_UseFly, 0); @@ -1562,6 +1565,15 @@ static bool8 FallWarpEffect_End(struct Task *task) #define tState data[0] #define tGoingUp data[1] +static void HideFollowerForFieldEffect(void) +{ + struct ObjectEvent *followerObj = GetFollowerObject(); + if (!followerObj || followerObj->invisible) + return; + ClearObjectEventMovement(followerObj, &gSprites[followerObj->spriteId]); + ObjectEventSetHeldMovement(followerObj, MOVEMENT_ACTION_ENTER_POKEBALL); +} + void StartEscalatorWarp(u8 metatileBehavior, u8 priority) { u8 taskId; @@ -1585,6 +1597,7 @@ static bool8 EscalatorWarpOut_Init(struct Task *task) FreezeObjectEvents(); CameraObjectFreeze(); StartEscalator(task->tGoingUp); + HideFollowerForFieldEffect(); // Hide follower before warping task->tState++; return FALSE; } @@ -1967,6 +1980,8 @@ static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEven objectEvent->fixedPriority = 1; task->data[1] = 1; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return TRUE; } @@ -2158,6 +2173,8 @@ static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent gPlayerAvatar.preventStep = TRUE; objectEvent->fixedPriority = 1; task->data[0]++; + if (objectEvent->localId == OBJ_EVENT_ID_PLAYER) // Hide follower before warping + HideFollowerForFieldEffect(); return FALSE; } @@ -2243,6 +2260,7 @@ void StartEscapeRopeFieldEffect(void) { LockPlayerFieldControls(); FreezeObjectEvents(); + HideFollowerForFieldEffect(); // hide follower before warping CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -3007,6 +3025,8 @@ static void SurfFieldEffect_Init(struct Task *task) { LockPlayerFieldControls(); FreezeObjectEvents(); + // Put follower into pokeball before using Surf + HideFollowerForFieldEffect(); gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); PlayerGetDestCoords(&task->tDestX, &task->tDestY); @@ -3057,13 +3077,15 @@ static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task) static void SurfFieldEffect_End(struct Task *task) { - struct ObjectEvent *objectEvent; - objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct ObjectEvent *followerObject = GetFollowerObject(); if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { gPlayerAvatar.preventStep = FALSE; gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE; ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection)); + if (followerObject) + ObjectEventClearHeldMovementIfFinished(followerObject); SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON); UnfreezeObjectEvents(); UnlockPlayerFieldControls(); @@ -3119,7 +3141,7 @@ u8 FldEff_NPCFlyOut(void) u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1); struct Sprite *sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = 0; + sprite->oam.paletteNum = LoadPlayerObjectEventPalette(gSaveBlock2Ptr->playerGender); sprite->oam.priority = 1; sprite->callback = SpriteCB_NPCFlyOut; sprite->data[1] = gFieldEffectArguments[0]; @@ -3301,7 +3323,7 @@ static u8 CreateFlyBirdSprite(void) struct Sprite *sprite; spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0xff, 0xb4, 0x1); sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = 0; + sprite->oam.paletteNum = LoadPlayerObjectEventPalette(gSaveBlock2Ptr->playerGender); sprite->oam.priority = 1; sprite->callback = SpriteCB_FlyBirdLeaveBall; return spriteId; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index ac4dac3ecb0f..1991892a5088 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -7,18 +7,27 @@ #include "fieldmap.h" #include "gpu_regs.h" #include "metatile_behavior.h" +#include "palette.h" #include "sound.h" #include "sprite.h" #include "trig.h" +#include "constants/event_objects.h" #include "constants/field_effects.h" +#include "constants/rgb.h" #include "constants/songs.h" #define OBJ_EVENT_PAL_TAG_NONE 0x11FF // duplicate of define in event_object_movement.c +#define PAL_TAG_REFLECTION_OFFSET 0x2000 // reflection tag value is paletteTag + 0x2000 +#define PAL_RAW_REFLECTION_OFFSET 0x4000 // raw reflection tag is paletteNum + 0x4000 +#define HIGH_BRIDGE_PAL_TAG 0x4010 +// Build a unique tag for reflection's palette based on based tag, or paletteNum +#define REFLECTION_PAL_TAG(tag, num) ((tag) == TAG_NONE ? (num) + PAL_RAW_REFLECTION_OFFSET : (tag) + PAL_TAG_REFLECTION_OFFSET) static void UpdateObjectReflectionSprite(struct Sprite *); static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite); -static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, u8); -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, u8); +static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, struct Sprite *sprite); +static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, struct Sprite *); + static void UpdateGrassFieldEffectSubpriority(struct Sprite *, u8, u8); static void FadeFootprintsTireTracks_Step0(struct Sprite *); static void FadeFootprintsTireTracks_Step1(struct Sprite *); @@ -31,6 +40,7 @@ static void SynchroniseSurfPosition(struct ObjectEvent *, struct Sprite *); static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *); static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); +u32 FldEff_Shadow(void); // Data used by all the field effects that share UpdateJumpImpactEffect #define sJumpElevation data[0] @@ -44,6 +54,14 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8); #define sReflectionVerticalOffset data[2] #define sIsStillReflection data[7] +void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + gFieldEffectArguments[0] = objectEvent->localId; + gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum; + gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup; + FldEff_Shadow(); +} + void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 stillReflection) { struct Sprite *reflectionSprite; @@ -51,14 +69,14 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 152)]; reflectionSprite->callback = UpdateObjectReflectionSprite; reflectionSprite->oam.priority = 3; - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum]; reflectionSprite->usingSheet = TRUE; reflectionSprite->anims = gDummySpriteAnimTable; StartSpriteAnim(reflectionSprite, 0); reflectionSprite->affineAnims = gDummySpriteAffineAnimTable; reflectionSprite->affineAnimBeginning = TRUE; - reflectionSprite->subspriteMode = SUBSPRITES_OFF; - reflectionSprite->sReflectionObjEventId = sprite->data[0]; + reflectionSprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY; + reflectionSprite->subspriteTableNum = 0; + reflectionSprite->sReflectionObjEventId = sprite->sReflectionObjEventId; reflectionSprite->sReflectionObjEventLocalId = objectEvent->localId; reflectionSprite->sIsStillReflection = stillReflection; LoadObjectReflectionPalette(objectEvent, reflectionSprite); @@ -81,84 +99,162 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct [BRIDGE_TYPE_POND_HIGH - 1] = 44 }; reflectionSprite->sReflectionVerticalOffset = 0; - if (!GetObjectEventGraphicsInfo(objectEvent->graphicsId)->disableReflectionPaletteLoad - && ((bridgeType = MetatileBehavior_GetBridgeType(objectEvent->previousMetatileBehavior)) - || (bridgeType = MetatileBehavior_GetBridgeType(objectEvent->currentMetatileBehavior)))) + if ((bridgeType = MetatileBehavior_GetBridgeType(objectEvent->previousMetatileBehavior)) + || (bridgeType = MetatileBehavior_GetBridgeType(objectEvent->currentMetatileBehavior))) { reflectionSprite->sReflectionVerticalOffset = bridgeReflectionVerticalOffsets[bridgeType - 1]; - LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadObjectHighBridgeReflectionPalette(objectEvent, reflectionSprite); } else { - LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite->oam.paletteNum); + LoadObjectRegularReflectionPalette(objectEvent, reflectionSprite); } } -static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) +// Apply a blue tint effect to a palette +static void ApplyPondFilter(u8 paletteNum, u16 *dest) { - const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) + u32 i, r, g, b; + // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u16 *src = gPlttBufferUnfaded + OBJ_PLTT_ID(paletteNum); + *dest++ = *src++; // copy transparency + for (i = 0; i < 16 - 1; i++) { - if (graphicsInfo->paletteSlot == PALSLOT_PLAYER) - LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - else if (graphicsInfo->paletteSlot == PALSLOT_NPC_SPECIAL) - LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex); - else - PatchObjectPalette(GetObjectPaletteTag(paletteIndex), paletteIndex); - UpdateSpritePaletteWithWeather(paletteIndex); + r = GET_R(src[i]); + g = GET_G(src[i]); + b = GET_B(src[i]); + b += 10; + if (b > 31) + b = 31; + *dest++ = RGB2(r, g, b); } } -// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color. -// This is so the sprite blends in with the dark water metatile underneath the bridge. -static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum) +// Apply a ice tint effect to a palette +static void ApplyIceFilter(u8 paletteNum, u16 *dest) { - const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) + u32 i, r, g, b; + // CpuCopy16(gPlttBufferUnfaded + 0x100 + paletteNum * 16, dest, 32); + u16 *src = gPlttBufferUnfaded + OBJ_PLTT_ID(paletteNum); + *dest++ = *src++; // copy transparency + for (i = 0; i < 16 - 1; i++) { - PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); + r = GET_R(src[i]); + r -= 5; + if (r > 31) + r = 0; + g = GET_G(src[i]); + g += 3; + if (g > 31) + g = 31; + b = GET_B(src[i]); + b += 16; + if (b > 31) + b = 31; + *dest++ = RGB2(r, g, b); + } +} + +static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + const struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; + u16 baseTag = GetSpritePaletteTagByPaletteNum(mainSprite->oam.paletteNum); + u16 paletteTag = REFLECTION_PAL_TAG(baseTag, mainSprite->oam.paletteNum); + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum <= 16) + { + // Load filtered palette + u16 filteredData[16]; + struct SpritePalette filteredPal = {.tag = paletteTag, .data = filteredData}; + if (sprite->sIsStillReflection == FALSE) + ApplyPondFilter(mainSprite->oam.paletteNum, filteredData); + else + ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); + paletteNum = LoadSpritePalette(&filteredPal); UpdateSpritePaletteWithWeather(paletteNum); } + sprite->oam.paletteNum = paletteNum; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; +} + +// When walking on a bridge high above water (Route 120), the reflection is a solid dark blue color. +// This is so the sprite blends in with the dark water metatile underneath the bridge. +static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + u16 blueData[16]; + struct SpritePalette bluePalette = {.tag = HIGH_BRIDGE_PAL_TAG, .data = blueData}; + CpuFill16(0x55C9, blueData, PLTT_SIZE_4BPP); + sprite->oam.paletteNum = LoadSpritePalette(&bluePalette); + UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); } static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; + if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId) { reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + return; } - else + + // Only filter palette if not using the high bridge blue palette + // This is basically a copy of LoadObjectRegularReflectionPalette + if (IndexOfSpritePaletteTag(HIGH_BRIDGE_PAL_TAG) != reflectionSprite->oam.paletteNum) { - reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[mainSprite->oam.paletteNum]; - reflectionSprite->oam.shape = mainSprite->oam.shape; - reflectionSprite->oam.size = mainSprite->oam.size; - reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP; - reflectionSprite->oam.tileNum = mainSprite->oam.tileNum; - reflectionSprite->subspriteTables = mainSprite->subspriteTables; - reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum; - reflectionSprite->invisible = mainSprite->invisible; - reflectionSprite->x = mainSprite->x; - reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset; - reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; - reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; - reflectionSprite->x2 = mainSprite->x2; - reflectionSprite->y2 = -mainSprite->y2; - reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled; - - if (objectEvent->hideReflection == TRUE) - reflectionSprite->invisible = TRUE; - - if (reflectionSprite->sIsStillReflection == FALSE) + u16 baseTag = GetSpritePaletteTagByPaletteNum(mainSprite->oam.paletteNum); + u16 paletteTag = REFLECTION_PAL_TAG(baseTag, mainSprite->oam.paletteNum); + u8 paletteNum = IndexOfSpritePaletteTag(paletteTag); + if (paletteNum >= 16) { - // Sets the reflection sprite's rot/scale matrix to the appropriate - // matrix based on whether or not the main sprite is horizontally flipped. - // If the sprite is facing to the east, then it is flipped, and its matrixNum is 8. - reflectionSprite->oam.matrixNum = 0; - if (mainSprite->oam.matrixNum & ST_OAM_HFLIP) - reflectionSprite->oam.matrixNum = 1; + // Build filtered palette + u16 filteredData[16]; + struct SpritePalette filteredPal = {.tag = paletteTag, .data = filteredData}; + // Free palette if unused + reflectionSprite->inUse = FALSE; + FieldEffectFreePaletteIfUnused(reflectionSprite->oam.paletteNum); + reflectionSprite->inUse = TRUE; + if (reflectionSprite->sIsStillReflection == FALSE) + ApplyPondFilter(mainSprite->oam.paletteNum, filteredData); + else + ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); + paletteNum = LoadSpritePalette(&filteredPal); + UpdateSpritePaletteWithWeather(paletteNum); } + reflectionSprite->oam.paletteNum = paletteNum; + } + reflectionSprite->oam.shape = mainSprite->oam.shape; + reflectionSprite->oam.size = mainSprite->oam.size; + reflectionSprite->oam.matrixNum = mainSprite->oam.matrixNum | ST_OAM_VFLIP; + reflectionSprite->oam.tileNum = mainSprite->oam.tileNum; + reflectionSprite->subspriteTables = mainSprite->subspriteTables; + reflectionSprite->invisible = mainSprite->invisible; + reflectionSprite->x = mainSprite->x; + // sReflectionVerticalOffset is only set for high bridges + reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset; + reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX; + reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY; + reflectionSprite->x2 = mainSprite->x2; + reflectionSprite->y2 = -mainSprite->y2; + reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled; + + if (objectEvent->hideReflection == TRUE) + reflectionSprite->invisible = TRUE; + + // Support "virtual" sprites which can't be rotated via affines + if (reflectionSprite->subspriteTables[0].subsprites) + { + reflectionSprite->oam.affineMode = ST_OAM_AFFINE_OFF; + return; + } + if (reflectionSprite->sIsStillReflection == FALSE) + { + // Sets the reflection sprite's rot/scale matrix to the correct + // water reflection matrix based on the main sprite's facing direction. + // If the sprite is facing east, then it's flipped, and its matrixNum is 1. + reflectionSprite->oam.matrixNum = (mainSprite->oam.matrixNum & ST_OAM_HFLIP) ? 1 : 0; } } @@ -178,6 +274,8 @@ u8 CreateWarpArrowSprite(void) if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; + // Can use either gender's palette, so try to use the one that should be loaded + sprite->oam.paletteNum = LoadPlayerObjectEventPalette(gSaveBlock2Ptr->playerGender); sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -232,16 +330,34 @@ const u16 gShadowVerticalOffsets[] = { u32 FldEff_Shadow(void) { - 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); + u8 objectEventId; + const struct ObjectEventGraphicsInfo *graphicsInfo; + u8 spriteId; + u8 i; + for (i = 0; i < MAX_SPRITES; i++) + { + // Return early if a shadow sprite already exists + if (gSprites[i].data[0] == gFieldEffectArguments[0] && gSprites[i].callback == UpdateShadowFieldEffect) + return 0; + } + objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + if (graphicsInfo->shadowSize == SHADOW_SIZE_NONE) // don't create a shadow at all + return 0; + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); if (spriteId != MAX_SPRITES) { + // SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12)); + gSprites[spriteId].oam.objMode = 1; // BLEND gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].sLocalId = gFieldEffectArguments[0]; gSprites[spriteId].sMapNum = gFieldEffectArguments[1]; gSprites[spriteId].sMapGroup = gFieldEffectArguments[2]; + #if OW_LARGE_OW_SUPPORT + gSprites[spriteId].sYOffset = gShadowVerticalOffsets[graphicsInfo->shadowSize]; + #else gSprites[spriteId].sYOffset = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; + #endif } return 0; } @@ -260,13 +376,17 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; sprite->x = linkedSprite->x; + #if OW_LARGE_OW_SUPPORT + // Read 'live' size from linked sprite + sprite->y = linkedSprite->y - linkedSprite->centerToCornerVecY - sprite->sYOffset; + #else sprite->y = linkedSprite->y + sprite->sYOffset; + #endif + sprite->invisible = linkedSprite->invisible; if (!objectEvent->active || !objectEvent->hasShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) - || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior) - || MetatileBehavior_IsReflective(objectEvent->currentMetatileBehavior) - || MetatileBehavior_IsReflective(objectEvent->previousMetatileBehavior)) + || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->previousMetatileBehavior)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } @@ -585,6 +705,42 @@ u32 FldEff_DeepSandFootprints(void) return spriteId; } +u32 FldEff_TracksBug(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_BUG], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_BUG; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + +u32 FldEff_TracksSpot(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SPOT], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SPOT; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return 0; +} + u32 FldEff_BikeTireTracks(void) { u8 spriteId; @@ -602,6 +758,24 @@ u32 FldEff_BikeTireTracks(void) return spriteId; } +u32 FldEff_TracksSlither(void) +{ + u8 spriteId; + struct Sprite *sprite; + + SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TRACKS_SLITHER], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gFieldEffectArguments[3]; + sprite->data[7] = FLDEFF_TRACKS_SLITHER; + StartSpriteAnim(sprite, gFieldEffectArguments[4]); + } + return spriteId; +} + void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = { FadeFootprintsTireTracks_Step0, FadeFootprintsTireTracks_Step1 @@ -1006,8 +1180,9 @@ u32 FldEff_SurfBlob(void) { struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->oam.paletteNum = 0; sprite->sPlayerObjId = gFieldEffectArguments[2]; + // Can use either gender's palette, so try to use the one that should be loaded + sprite->oam.paletteNum = LoadPlayerObjectEventPalette(gSaveBlock2Ptr->playerGender); sprite->sVelocity = -1; sprite->sPrevX = -1; sprite->sPrevY = -1; @@ -1296,7 +1471,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void) struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->oam.paletteNum = 5; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], sprite); sprite->sWaitFldEff = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; @@ -1338,8 +1513,8 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[fldEffObj], sprite); sprite->coordOffsetEnabled ++; - sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; sprite->sLocalId = gFieldEffectArguments[0]; sprite->sMapNum = gFieldEffectArguments[1]; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 50438863afb8..0b30a1d7bb47 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -122,23 +122,37 @@ static void Task_StopSurfingInit(u8); static void Task_WaitStopSurfing(u8); static void Task_Fishing(u8); -static u8 Fishing_Init(struct Task *); -static u8 Fishing_GetRodOut(struct Task *); -static u8 Fishing_WaitBeforeDots(struct Task *); -static u8 Fishing_InitDots(struct Task *); -static u8 Fishing_ShowDots(struct Task *); -static u8 Fishing_CheckForBite(struct Task *); -static u8 Fishing_GotBite(struct Task *); -static u8 Fishing_WaitForA(struct Task *); -static u8 Fishing_CheckMoreDots(struct Task *); -static u8 Fishing_MonOnHook(struct Task *); -static u8 Fishing_StartEncounter(struct Task *); -static u8 Fishing_NotEvenNibble(struct Task *); -static u8 Fishing_GotAway(struct Task *); -static u8 Fishing_NoMon(struct Task *); -static u8 Fishing_PutRodAway(struct Task *); -static u8 Fishing_EndNoMon(struct Task *); +static bool32 Fishing_Init(struct Task *); +static bool32 Fishing_GetRodOut(struct Task *); +static bool32 Fishing_WaitBeforeDots(struct Task *); +static bool32 Fishing_InitDots(struct Task *); +static bool32 Fishing_ShowDots(struct Task *); +static bool32 Fishing_CheckForBite(struct Task *); +static bool32 Fishing_GotBite(struct Task *); +static bool32 Fishing_ChangeMinigame(struct Task *); +static bool32 Fishing_WaitForA(struct Task *); +static bool32 Fishing_APressNoMinigame(struct Task *); +static bool32 Fishing_CheckMoreDots(struct Task *); +static bool32 Fishing_MonOnHook(struct Task *); +static bool32 Fishing_StartEncounter(struct Task *); +static bool32 Fishing_NotEvenNibble(struct Task *); +static bool32 Fishing_GotAway(struct Task *); +static bool32 Fishing_NoMon(struct Task *); +static bool32 Fishing_PutRodAway(struct Task *); +static bool32 Fishing_EndNoMon(struct Task *); static void AlignFishingAnimationFrames(void); +static bool32 DoesFishingMinigameAllowCancel(void); +static bool32 Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(void); +static bool32 Fishing_RollForBite(bool32); +static u32 CalculateFishingBiteOdds(bool32); +static u32 CalculateFishingProximityBoost(u32 odds); +static void GetCoordinatesAroundBobber(s16[], s16[][AXIS_COUNT], u32); +static u32 CountQualifyingTiles(s16[][AXIS_COUNT], s16 player[], u8 facingDirection, struct ObjectEvent *objectEvent, bool32 isTileLand[]); +static bool32 CheckTileQualification(s16 tile[], s16 player[], u32 facingDirection, struct ObjectEvent* objectEvent, bool32 isTileLand[], u32 direction); +static u32 CountLandTiles(bool32 isTileLand[]); +static bool32 IsPlayerHere(s16, s16, s16, s16); +static bool32 IsMetatileBlocking(s16, s16, u32); +static bool32 IsMetatileLand(s16, s16, u32); static u8 TrySpinPlayerForWarp(struct ObjectEvent *, s16 *); @@ -1214,50 +1228,32 @@ void StopPlayerAvatar(void) } } -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sRivalAvatarGfxIds[state][gender]; } -u8 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) +u16 GetPlayerAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender) { return sPlayerAvatarGfxIds[state][gender]; } -u8 GetFRLGAvatarGraphicsIdByGender(u8 gender) +u16 GetFRLGAvatarGraphicsIdByGender(u8 gender) { return sFRLGAvatarGfxIds[gender]; } -u8 GetRSAvatarGraphicsIdByGender(u8 gender) +u16 GetRSAvatarGraphicsIdByGender(u8 gender) { return sRSAvatarGfxIds[gender]; } -u8 GetPlayerAvatarGraphicsIdByStateId(u8 state) +u16 GetPlayerAvatarGraphicsIdByStateId(u8 state) { return GetPlayerAvatarGraphicsIdByStateIdAndGender(state, gPlayerAvatar.gender); } -u8 unref_GetRivalAvatarGenderByGraphicsId(u8 gfxId) -{ - switch (gfxId) - { - case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL: - case OBJ_EVENT_GFX_RIVAL_MAY_MACH_BIKE: - case OBJ_EVENT_GFX_RIVAL_MAY_ACRO_BIKE: - case OBJ_EVENT_GFX_RIVAL_MAY_SURFING: - case OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE: - case OBJ_EVENT_GFX_MAY_UNDERWATER: - case OBJ_EVENT_GFX_MAY_FISHING: - case OBJ_EVENT_GFX_MAY_WATERING: - return FEMALE; - default: - return MALE; - } -} - -u8 GetPlayerAvatarGenderByGraphicsId(u8 gfxId) +u8 GetPlayerAvatarGenderByGraphicsId(u16 gfxId) { switch (gfxId) { @@ -1326,7 +1322,7 @@ void SetPlayerAvatarStateMask(u8 flags) gPlayerAvatar.flags |= flags; } -static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) +static u8 GetPlayerAvatarStateTransitionByGraphicsId(u16 graphicsId, u8 gender) { u8 i; @@ -1338,7 +1334,7 @@ static u8 GetPlayerAvatarStateTransitionByGraphicsId(u8 graphicsId, u8 gender) return PLAYER_AVATAR_FLAG_ON_FOOT; } -u8 GetPlayerAvatarGraphicsIdByCurrentState(void) +u16 GetPlayerAvatarGraphicsIdByCurrentState(void) { u8 i; u8 flags = gPlayerAvatar.flags; @@ -1351,7 +1347,7 @@ u8 GetPlayerAvatarGraphicsIdByCurrentState(void) return 0; } -void SetPlayerAvatarExtraStateTransition(u8 graphicsId, u8 transitionFlag) +void SetPlayerAvatarExtraStateTransition(u16 graphicsId, u8 transitionFlag) { u8 stateFlag = GetPlayerAvatarStateTransitionByGraphicsId(graphicsId, gPlayerAvatar.gender); @@ -1682,32 +1678,52 @@ static void Task_WaitStopSurfing(u8 taskId) #define tPlayerGfxId data[14] #define tFishingRod data[15] -// Some states are jumped to directly, labeled below -#define FISHING_START_ROUND 3 -#define FISHING_GOT_BITE 6 -#define FISHING_ON_HOOK 9 -#define FISHING_NO_BITE 11 -#define FISHING_GOT_AWAY 12 -#define FISHING_SHOW_RESULT 13 - -static bool8 (*const sFishingStateFuncs[])(struct Task *) = -{ - Fishing_Init, - Fishing_GetRodOut, - Fishing_WaitBeforeDots, - Fishing_InitDots, // FISHING_START_ROUND - Fishing_ShowDots, - Fishing_CheckForBite, - Fishing_GotBite, // FISHING_GOT_BITE - Fishing_WaitForA, - Fishing_CheckMoreDots, - Fishing_MonOnHook, // FISHING_ON_HOOK - Fishing_StartEncounter, - Fishing_NotEvenNibble, // FISHING_NO_BITE - Fishing_GotAway, // FISHING_GOT_AWAY - Fishing_NoMon, // FISHING_SHOW_RESULT - Fishing_PutRodAway, - Fishing_EndNoMon, +#define FISHING_PROXIMITY_BOOST 4 +#define FISHING_STICKY_BOOST 36 +#define FISHING_DEFAULT_ODDS 50 + +enum +{ + FISHING_INIT, + FISHING_GET_ROD_OUT, + FISHING_WAIT_BEFORE_DOTS, + FISHING_INIT_DOTS, + FISHING_SHOW_DOTS, + FISHING_CHECK_FOR_BITE, + FISHING_GOT_BITE, + FISHING_CHANGE_MINIGAME, + FISHING_WAIT_FOR_A, + FISHING_A_PRESS_NO_MINIGAME, + FISHING_CHECK_MORE_DOTS, + FISHING_MON_ON_HOOK, + FISHING_START_ENCOUNTER, + FISHING_NOT_EVEN_NIBBLE, + FISHING_GOT_AWAY, + FISHING_NO_MON, + FISHING_PUT_ROD_AWAY, + FISHING_END_NO_MON, +}; + +static bool32 (*const sFishingStateFuncs[])(struct Task *) = +{ + [FISHING_INIT] = Fishing_Init, + [FISHING_GET_ROD_OUT] = Fishing_GetRodOut, + [FISHING_WAIT_BEFORE_DOTS] = Fishing_WaitBeforeDots, + [FISHING_INIT_DOTS] = Fishing_InitDots, + [FISHING_SHOW_DOTS] = Fishing_ShowDots, + [FISHING_CHECK_FOR_BITE] = Fishing_CheckForBite, + [FISHING_GOT_BITE] = Fishing_GotBite, + [FISHING_CHANGE_MINIGAME] = Fishing_ChangeMinigame, + [FISHING_WAIT_FOR_A] = Fishing_WaitForA, + [FISHING_A_PRESS_NO_MINIGAME] = Fishing_APressNoMinigame, + [FISHING_CHECK_MORE_DOTS] = Fishing_CheckMoreDots, + [FISHING_MON_ON_HOOK] = Fishing_MonOnHook, + [FISHING_START_ENCOUNTER] = Fishing_StartEncounter, + [FISHING_NOT_EVEN_NIBBLE] = Fishing_NotEvenNibble, + [FISHING_GOT_AWAY] = Fishing_GotAway, + [FISHING_NO_MON] = Fishing_NoMon, + [FISHING_PUT_ROD_AWAY] = Fishing_PutRodAway, + [FISHING_END_NO_MON] = Fishing_EndNoMon, }; void StartFishing(u8 rod) @@ -1724,15 +1740,15 @@ static void Task_Fishing(u8 taskId) ; } -static bool8 Fishing_Init(struct Task *task) +static bool32 Fishing_Init(struct Task *task) { LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; - task->tStep++; + task->tStep = FISHING_GET_ROD_OUT; return FALSE; } -static bool8 Fishing_GetRodOut(struct Task *task) +static bool32 Fishing_GetRodOut(struct Task *task) { struct ObjectEvent *playerObjEvent; const s16 minRounds1[] = { @@ -1753,27 +1769,27 @@ static bool8 Fishing_GetRodOut(struct Task *task) ObjectEventClearHeldMovementIfActive(playerObjEvent); playerObjEvent->enableAnim = TRUE; SetPlayerAvatarFishing(playerObjEvent->facingDirection); - task->tStep++; + task->tStep = FISHING_WAIT_BEFORE_DOTS; return FALSE; } -static bool8 Fishing_WaitBeforeDots(struct Task *task) +static bool32 Fishing_WaitBeforeDots(struct Task *task) { AlignFishingAnimationFrames(); // Wait one second task->tFrameCounter++; if (task->tFrameCounter >= 60) - task->tStep++; + task->tStep = FISHING_INIT_DOTS; return FALSE; } -static bool8 Fishing_InitDots(struct Task *task) +static bool32 Fishing_InitDots(struct Task *task) { u32 randVal; LoadMessageBoxAndFrameGfx(0, TRUE); - task->tStep++; + task->tStep = FISHING_SHOW_DOTS; task->tFrameCounter = 0; task->tNumDots = 0; randVal = Random(); @@ -1786,7 +1802,7 @@ static bool8 Fishing_InitDots(struct Task *task) return TRUE; } -static bool8 Fishing_ShowDots(struct Task *task) +static bool32 Fishing_ShowDots(struct Task *task) { const u8 dot[] = _("·"); @@ -1794,7 +1810,10 @@ static bool8 Fishing_ShowDots(struct Task *task) task->tFrameCounter++; if (JOY_NEW(A_BUTTON)) { - task->tStep = FISHING_NO_BITE; + if (!DoesFishingMinigameAllowCancel()) + return FALSE; + + task->tStep = FISHING_NOT_EVEN_NIBBLE; if (task->tRoundsPlayed != 0) task->tStep = FISHING_GOT_AWAY; return TRUE; @@ -1806,9 +1825,9 @@ static bool8 Fishing_ShowDots(struct Task *task) task->tFrameCounter = 0; if (task->tNumDots >= task->tDotsRequired) { - task->tStep++; + task->tStep = FISHING_CHECK_FOR_BITE; if (task->tRoundsPlayed != 0) - task->tStep++; + task->tStep = FISHING_GOT_BITE; task->tRoundsPlayed++; } else @@ -1821,55 +1840,64 @@ static bool8 Fishing_ShowDots(struct Task *task) } } -static bool8 Fishing_CheckForBite(struct Task *task) +static bool32 Fishing_CheckForBite(struct Task *task) { - bool8 bite; + bool32 bite, firstMonHasSuctionOrSticky; AlignFishingAnimationFrames(); - task->tStep++; + task->tStep = FISHING_GOT_BITE; bite = FALSE; if (!DoesCurrentMapHaveFishingMons()) { - task->tStep = FISHING_NO_BITE; + task->tStep = FISHING_NOT_EVEN_NIBBLE; + return TRUE; } - else - { - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) - { - u16 ability = GetMonAbility(&gPlayerParty[0]); - if (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD) - { - if (Random() % 100 > 14) - bite = TRUE; - } - } - if (!bite) - { - if (Random() & 1) - task->tStep = FISHING_NO_BITE; - else - bite = TRUE; - } + firstMonHasSuctionOrSticky = Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(); + + if(firstMonHasSuctionOrSticky) + bite = Fishing_RollForBite(firstMonHasSuctionOrSticky); + + if (!bite) + bite = Fishing_RollForBite(FALSE); + + if (!bite) + task->tStep = FISHING_NOT_EVEN_NIBBLE; + + if (bite) + StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection())); - if (bite == TRUE) - StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection())); - } return TRUE; } -static bool8 Fishing_GotBite(struct Task *task) +static bool32 Fishing_GotBite(struct Task *task) { AlignFishingAnimationFrames(); AddTextPrinterParameterized(0, FONT_NORMAL, gText_OhABite, 0, 17, 0, NULL); - task->tStep++; + task->tStep = FISHING_CHANGE_MINIGAME; task->tFrameCounter = 0; return FALSE; } +static bool32 Fishing_ChangeMinigame(struct Task *task) +{ + switch (I_FISHING_MINIGAME) + { + case GEN_1: + case GEN_2: + task->tStep = FISHING_A_PRESS_NO_MINIGAME; + break; + case GEN_3: + default: + task->tStep = FISHING_WAIT_FOR_A; + break; + } + return TRUE; +} + // We have a bite. Now, wait for the player to press A, or the timer to expire. -static bool8 Fishing_WaitForA(struct Task *task) +static bool32 Fishing_WaitForA(struct Task *task) { const s16 reelTimeouts[3] = { [OLD_ROD] = 36, @@ -1882,12 +1910,20 @@ static bool8 Fishing_WaitForA(struct Task *task) if (task->tFrameCounter >= reelTimeouts[task->tFishingRod]) task->tStep = FISHING_GOT_AWAY; else if (JOY_NEW(A_BUTTON)) - task->tStep++; + task->tStep = FISHING_CHECK_MORE_DOTS; + return FALSE; +} + +static bool32 Fishing_APressNoMinigame(struct Task *task) +{ + AlignFishingAnimationFrames(); + if (JOY_NEW(A_BUTTON)) + task->tStep = FISHING_MON_ON_HOOK; return FALSE; } // Determine if we're going to play the dot game again -static bool8 Fishing_CheckMoreDots(struct Task *task) +static bool32 Fishing_CheckMoreDots(struct Task *task) { const s16 moreDotsChance[][2] = { @@ -1897,10 +1933,10 @@ static bool8 Fishing_CheckMoreDots(struct Task *task) }; AlignFishingAnimationFrames(); - task->tStep++; + task->tStep = FISHING_MON_ON_HOOK; if (task->tRoundsPlayed < task->tMinRoundsRequired) { - task->tStep = FISHING_START_ROUND; + task->tStep = FISHING_INIT_DOTS; } else if (task->tRoundsPlayed < 2) { @@ -1908,22 +1944,22 @@ static bool8 Fishing_CheckMoreDots(struct Task *task) s16 probability = Random() % 100; if (moreDotsChance[task->tFishingRod][task->tRoundsPlayed] > probability) - task->tStep = FISHING_START_ROUND; + task->tStep = FISHING_INIT_DOTS; } return FALSE; } -static bool8 Fishing_MonOnHook(struct Task *task) +static bool32 Fishing_MonOnHook(struct Task *task) { AlignFishingAnimationFrames(); FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_PokemonOnHook, 1, 0, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - task->tStep++; + task->tStep = FISHING_START_ENCOUNTER; task->tFrameCounter = 0; return FALSE; } -static bool8 Fishing_StartEncounter(struct Task *task) +static bool32 Fishing_StartEncounter(struct Task *task) { if (task->tFrameCounter == 0) AlignFishingAnimationFrames(); @@ -1959,34 +1995,36 @@ static bool8 Fishing_StartEncounter(struct Task *task) return FALSE; } -static bool8 Fishing_NotEvenNibble(struct Task *task) +static bool32 Fishing_NotEvenNibble(struct Task *task) { + gChainFishingDexNavStreak = 0; AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_NotEvenANibble, 1, 0, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - task->tStep = FISHING_SHOW_RESULT; + task->tStep = FISHING_NO_MON; return TRUE; } -static bool8 Fishing_GotAway(struct Task *task) +static bool32 Fishing_GotAway(struct Task *task) { + gChainFishingDexNavStreak = 0; AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, FONT_NORMAL, gText_ItGotAway, 1, 0, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - task->tStep++; + task->tStep = FISHING_NO_MON; return TRUE; } -static bool8 Fishing_NoMon(struct Task *task) +static bool32 Fishing_NoMon(struct Task *task) { AlignFishingAnimationFrames(); - task->tStep++; + task->tStep = FISHING_PUT_ROD_AWAY; return FALSE; } -static bool8 Fishing_PutRodAway(struct Task *task) +static bool32 Fishing_PutRodAway(struct Task *task) { AlignFishingAnimationFrames(); if (gSprites[gPlayerAvatar.spriteId].animEnded) @@ -1999,12 +2037,12 @@ static bool8 Fishing_PutRodAway(struct Task *task) SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, FALSE, 0); gSprites[gPlayerAvatar.spriteId].x2 = 0; gSprites[gPlayerAvatar.spriteId].y2 = 0; - task->tStep++; + task->tStep = FISHING_END_NO_MON; } return FALSE; } -static bool8 Fishing_EndNoMon(struct Task *task) +static bool32 Fishing_EndNoMon(struct Task *task) { RunTextPrinters(); if (!IsTextPrinterActive(0)) @@ -2019,6 +2057,168 @@ static bool8 Fishing_EndNoMon(struct Task *task) return FALSE; } +static bool32 DoesFishingMinigameAllowCancel(void) +{ + switch(I_FISHING_MINIGAME) + { + case GEN_1: + case GEN_2: + return FALSE; + case GEN_3: + default: + return TRUE; + } +} + +static bool32 Fishing_DoesFirstMonInPartyHaveSuctionCupsOrStickyHold(void) +{ + u32 ability; + + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + return FALSE; + + ability = GetMonAbility(&gPlayerParty[0]); + + return (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD); +} + +static bool32 Fishing_RollForBite(bool32 isStickyHold) +{ + return ((Random() % 100) > CalculateFishingBiteOdds(isStickyHold)); +} + +static u32 CalculateFishingBiteOdds(bool32 isStickyHold) +{ + u32 odds = FISHING_DEFAULT_ODDS; + + if (isStickyHold) + odds -= FISHING_STICKY_BOOST; + + odds -= CalculateFishingProximityBoost(odds); + return odds; +} + +static u32 CalculateFishingProximityBoost(u32 odds) +{ + s16 player[AXIS_COUNT], bobber[AXIS_COUNT]; + s16 surroundingTile[CARDINAL_DIRECTION_COUNT][AXIS_COUNT] = {{0, 0}}; + bool32 isTileLand[CARDINAL_DIRECTION_COUNT] = {FALSE}; + u32 facingDirection, numQualifyingTile = 0; + struct ObjectEvent *objectEvent; + + if (!I_FISHING_PROXIMITY) + return 0; + + objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + + player[AXIS_X] = objectEvent->currentCoords.x; + player[AXIS_Y] = objectEvent->currentCoords.y; + bobber[AXIS_X] = objectEvent->currentCoords.x; + bobber[AXIS_Y] = objectEvent->currentCoords.y; + + facingDirection = GetPlayerFacingDirection(); + MoveCoords(facingDirection, &bobber[AXIS_X], &bobber[AXIS_Y]); + + GetCoordinatesAroundBobber(bobber, surroundingTile, facingDirection); + numQualifyingTile = CountQualifyingTiles(surroundingTile, player, facingDirection, objectEvent, isTileLand); + + numQualifyingTile += CountLandTiles(isTileLand); + + return (numQualifyingTile == 3) ? odds : (numQualifyingTile * FISHING_PROXIMITY_BOOST); +} + +static void GetCoordinatesAroundBobber(s16 bobber[], s16 surroundingTile[][AXIS_COUNT], u32 facingDirection) +{ + u32 direction; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + { + surroundingTile[direction][AXIS_X] = bobber[AXIS_X]; + surroundingTile[direction][AXIS_Y] = bobber[AXIS_Y]; + MoveCoords(direction, &surroundingTile[direction][AXIS_X], &surroundingTile[direction][AXIS_Y]); + } +} + +static u32 CountQualifyingTiles(s16 surroundingTile[][AXIS_COUNT], s16 player[], u8 facingDirection, struct ObjectEvent *objectEvent, bool32 isTileLand[]) +{ + u32 numQualifyingTile = 0; + s16 tile[AXIS_COUNT]; + u8 direction = DIR_SOUTH; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + { + tile[AXIS_X] = surroundingTile[direction][AXIS_X]; + tile[AXIS_Y] = surroundingTile[direction][AXIS_Y]; + + if (!CheckTileQualification(tile, player, facingDirection, objectEvent, isTileLand, direction)) + continue; + + numQualifyingTile++; + } + return numQualifyingTile; +} + +static bool32 CheckTileQualification(s16 tile[], s16 player[], u32 facingDirection, struct ObjectEvent* objectEvent, bool32 isTileLand[], u32 direction) +{ + u32 collison = GetCollisionAtCoords(objectEvent, tile[AXIS_X], tile[AXIS_Y], facingDirection); + + if (IsPlayerHere(tile[AXIS_X], tile[AXIS_Y], player[AXIS_X], player[AXIS_Y])) + return FALSE; + else if (IsMetatileBlocking(tile[AXIS_X], tile[AXIS_Y], collison)) + return TRUE; + else if (MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(tile[AXIS_X], tile[AXIS_Y]))) + return FALSE; + else if (IsMetatileLand(tile[AXIS_X], tile[AXIS_Y], collison)) + isTileLand[direction] = TRUE; + + return FALSE; +} + +static u32 CountLandTiles(bool32 isTileLand[]) +{ + u32 direction, numQualifyingTile = 0; + + for (direction = DIR_SOUTH; direction < CARDINAL_DIRECTION_COUNT; direction++) + if (isTileLand[direction]) + numQualifyingTile++; + + return (numQualifyingTile < 2) ? 0 : numQualifyingTile; +} + +static bool32 IsPlayerHere(s16 x, s16 y, s16 playerX, s16 playerY) +{ + return ((x == playerX) && (y == playerY)); +} + +static bool32 IsMetatileBlocking(s16 x, s16 y, u32 collison) +{ + switch(collison) + { + case COLLISION_NONE: + case COLLISION_STOP_SURFING: + case COLLISION_ELEVATION_MISMATCH: + return FALSE; + default: + return TRUE; + case COLLISION_OBJECT_EVENT: + return (gObjectEvents[GetObjectEventIdByXY(x,y)].inanimate); + } + return TRUE; +} + +static bool32 IsMetatileLand(s16 x, s16 y, u32 collison) +{ + switch(collison) + { + case COLLISION_NONE: + case COLLISION_STOP_SURFING: + case COLLISION_ELEVATION_MISMATCH: + return TRUE; + default: + return FALSE; + } +} + #undef tStep #undef tFrameCounter #undef tFishingRod diff --git a/src/field_poison.c b/src/field_poison.c index fcbce0b0b257..655bd9ec023c 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -3,6 +3,7 @@ #include "battle_pike.h" #include "battle_pyramid.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_message_box.h" #include "field_poison.h" #include "fldeff_misc.h" @@ -100,6 +101,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) else { gSpecialVar_Result = FLDPSN_NO_WHITEOUT; + UpdateFollowingPokemon(); } ScriptContext_Enable(); DestroyTask(taskId); diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 616444116cee..9338fe183d17 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -679,6 +679,7 @@ static void Task_DoDoorWarp(u8 taskId) struct Task *task = &gTasks[taskId]; s16 *x = &task->data[2]; s16 *y = &task->data[3]; + struct ObjectEvent *followerObject = GetFollowerObject(); switch (task->tState) { @@ -686,6 +687,12 @@ static void Task_DoDoorWarp(u8 taskId) FreezeObjectEvents(); PlayerGetDestCoords(x, y); PlaySE(GetDoorSoundEffect(*x, *y - 1)); + if (followerObject) + { + // Put follower into pokeball + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); + ObjectEventSetHeldMovement(followerObject, MOVEMENT_ACTION_ENTER_POKEBALL); + } task->data[1] = FieldAnimateDoorOpen(*x, *y - 1); task->tState = 1; break; @@ -1162,6 +1169,9 @@ static void Task_OrbEffect(u8 taskId) tState = 4; break; case 4: + // If the caller script is delayed after starting the orb effect, a `waitstate` might be reached *after* + // we enable the ScriptContext in case 2; enabling it here as well avoids softlocks in this scenario + ScriptContext_Enable(); if (--tShakeDelay == 0) { s32 panning; diff --git a/src/field_specials.c b/src/field_specials.c index 1005d06bf26b..b44c8327aad8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -103,7 +103,7 @@ void SetPlayerGotFirstFans(void); u16 GetNumFansOfPlayerInTrainerFanClub(void); static void RecordCyclingRoadResults(u32, u8); -static void LoadLinkPartnerObjectEventSpritePalette(u8, u8, u8); +static void LoadLinkPartnerObjectEventSpritePalette(u16, u8, u8); static void Task_PetalburgGymSlideOpenRoomDoors(u8); static void PetalburgGymSetDoorMetatiles(u8, u16); static void Task_PCTurnOnEffect(u8); @@ -580,7 +580,7 @@ void SpawnLinkPartnerObjectEvent(void) } } -static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) +static void LoadLinkPartnerObjectEventSpritePalette(u16 graphicsId, u8 localEventId, u8 paletteNum) { u8 adjustedPaletteNum; // Note: This temp var is necessary; paletteNum += 6 doesn't match. @@ -2792,41 +2792,13 @@ void SetBattleTowerLinkPlayerGfx(void) void ShowNatureGirlMessage(void) { - static const u8 *const sNatureGirlMessages[NUM_NATURES] = { - [NATURE_HARDY] = BattleFrontier_Lounge5_Text_NatureGirlHardy, - [NATURE_LONELY] = BattleFrontier_Lounge5_Text_NatureGirlLonely, - [NATURE_BRAVE] = BattleFrontier_Lounge5_Text_NatureGirlBrave, - [NATURE_ADAMANT] = BattleFrontier_Lounge5_Text_NatureGirlAdamant, - [NATURE_NAUGHTY] = BattleFrontier_Lounge5_Text_NatureGirlNaughty, - [NATURE_BOLD] = BattleFrontier_Lounge5_Text_NatureGirlBold, - [NATURE_DOCILE] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, - [NATURE_RELAXED] = BattleFrontier_Lounge5_Text_NatureGirlRelaxed, - [NATURE_IMPISH] = BattleFrontier_Lounge5_Text_NatureGirlImpish, - [NATURE_LAX] = BattleFrontier_Lounge5_Text_NatureGirlLax, - [NATURE_TIMID] = BattleFrontier_Lounge5_Text_NatureGirlTimid, - [NATURE_HASTY] = BattleFrontier_Lounge5_Text_NatureGirlHasty, - [NATURE_SERIOUS] = BattleFrontier_Lounge5_Text_NatureGirlSerious, - [NATURE_JOLLY] = BattleFrontier_Lounge5_Text_NatureGirlJolly, - [NATURE_NAIVE] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, - [NATURE_MODEST] = BattleFrontier_Lounge5_Text_NatureGirlModest, - [NATURE_MILD] = BattleFrontier_Lounge5_Text_NatureGirlMild, - [NATURE_QUIET] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, - [NATURE_BASHFUL] = BattleFrontier_Lounge5_Text_NatureGirlBashful, - [NATURE_RASH] = BattleFrontier_Lounge5_Text_NatureGirlRash, - [NATURE_CALM] = BattleFrontier_Lounge5_Text_NatureGirlCalm, - [NATURE_GENTLE] = BattleFrontier_Lounge5_Text_NatureGirlGentle, - [NATURE_SASSY] = BattleFrontier_Lounge5_Text_NatureGirlSassy, - [NATURE_CAREFUL] = BattleFrontier_Lounge5_Text_NatureGirlCareful, - [NATURE_QUIRKY] = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, - }; - u8 nature; if (gSpecialVar_0x8004 >= PARTY_SIZE) gSpecialVar_0x8004 = 0; nature = GetNature(&gPlayerParty[gSpecialVar_0x8004]); - ShowFieldMessage(sNatureGirlMessages[nature]); + ShowFieldMessage(gNaturesInfo[nature].natureGirlMessage); } void UpdateFrontierGambler(u16 daysSince) @@ -3064,7 +3036,8 @@ static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) case SCROLL_MULTI_BF_EXCHANGE_CORNER_DECOR_VENDOR_2: case SCROLL_MULTI_BF_EXCHANGE_CORNER_VITAMIN_VENDOR: case SCROLL_MULTI_BF_EXCHANGE_CORNER_HOLD_ITEM_VENDOR: - DestroySpriteAndFreeResources(&gSprites[sScrollableMultichoice_ItemSpriteId]); + // This makes sure deleting the icon will not clear palettes in use by object events + FieldEffectFreeGraphicsResources(&gSprites[sScrollableMultichoice_ItemSpriteId]); break; } sScrollableMultichoice_ItemSpriteId = MAX_SPRITES; @@ -3205,7 +3178,6 @@ void ScrollableMultichoice_ClosePersistentMenu(void) #undef tTaskId #define DEOXYS_ROCK_LEVELS 11 -#define ROCK_PAL_ID 10 void DoDeoxysRockInteraction(void) { @@ -3284,9 +3256,8 @@ static void Task_DeoxysRockInteraction(u8 taskId) static void ChangeDeoxysRockLevel(u8 rockLevel) { - u8 objectEventId; - LoadPalette(&sDeoxysRockPalettes[rockLevel], OBJ_PLTT_ID(ROCK_PAL_ID), PLTT_SIZEOF(4)); - TryGetObjectEventIdByLocalIdAndMap(LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId); + u8 paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE); + LoadPalette(&sDeoxysRockPalettes[rockLevel], OBJ_PLTT_ID(paletteNum), PLTT_SIZEOF(4)); if (rockLevel == 0) PlaySE(SE_M_CONFUSE_RAY); // Failure sound @@ -3332,10 +3303,13 @@ void IncrementBirthIslandRockStepCount(void) } } +// called before fade-in void SetDeoxysRockPalette(void) { - LoadPalette(&sDeoxysRockPalettes[(u8)VarGet(VAR_DEOXYS_ROCK_LEVEL)], OBJ_PLTT_ID(ROCK_PAL_ID), PLTT_SIZEOF(4)); - BlendPalettes(1 << (ROCK_PAL_ID + 16), 16, 0); + u32 paletteNum = IndexOfSpritePaletteTag(OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE); + LoadPalette(&sDeoxysRockPalettes[(u8)VarGet(VAR_DEOXYS_ROCK_LEVEL)], OBJ_PLTT_ID(paletteNum), PLTT_SIZEOF(4)); + // Set faded to all black, weather blending handled during fade-in + CpuFill16(0, &gPlttBufferFaded[OBJ_PLTT_ID(paletteNum)], 32); } void SetPCBoxToSendMon(u8 boxId) diff --git a/src/field_weather.c b/src/field_weather.c index 118db10bed6e..3c9f642faf02 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -134,15 +134,15 @@ static const u8 ALIGNED(2) sBasePaletteColorMapTypes[32] = // sprite palettes COLOR_MAP_CONTRAST, COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, - COLOR_MAP_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, - COLOR_MAP_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, + COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, COLOR_MAP_DARK_CONTRAST, @@ -251,6 +251,7 @@ static void Task_WeatherMain(u8 taskId) static void None_Init(void) { + Weather_SetBlendCoeffs(8, 12); // Indoor shadows gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 0; } @@ -1104,3 +1105,11 @@ void ResetPreservedPalettesInWeather(void) { sPaletteColorMapTypes = sBasePaletteColorMapTypes; } + +bool32 IsWeatherAlphaBlend(void) +{ + return (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL + || gWeatherPtr->currWeather == WEATHER_FOG_DIAGONAL + || gWeatherPtr->currWeather == WEATHER_UNDERWATER_BUBBLES + || gWeatherPtr->currWeather == WEATHER_UNDERWATER); +} diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 2cf8f6fb7871..cf31e862c3c7 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -154,6 +154,7 @@ void Sunny_InitVars(void) { gWeatherPtr->targetColorMapIndex = 0; gWeatherPtr->colorMapStepDelay = 20; + Weather_SetBlendCoeffs(8, 12); } void Sunny_InitAll(void) @@ -2604,5 +2605,3 @@ static void UpdateRainCounter(u8 newWeather, u8 oldWeather) && (newWeather == WEATHER_RAIN || newWeather == WEATHER_RAIN_THUNDERSTORM)) IncrementGameStat(GAME_STAT_GOT_RAINED_ON); } - - diff --git a/src/fieldmap.c b/src/fieldmap.c index 5e8ffec4aa84..30daae49ca03 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -16,6 +16,7 @@ #include "tv.h" #include "constants/rgb.h" #include "constants/metatile_behaviors.h" +#include "wild_encounter.h" struct ConnectionFlags { diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index 513cd13e762e..d3e6982f2950 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -1024,7 +1024,7 @@ void DoSecretBaseGlitterMatSparkle(void) { gSprites[spriteId].coordOffsetEnabled = TRUE; gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].oam.paletteNum = 5; + UpdateSpritePaletteByTemplate(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], &gSprites[spriteId]); gSprites[spriteId].callback = SpriteCB_GlitterMatSparkle; gSprites[spriteId].data[0] = 0; } diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 27689b02e303..39f64adb877b 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -27,7 +27,7 @@ static void Task_DoFieldMove_RunFunc(u8 taskId); static void FieldCallback_RockSmash(void); static void FieldMove_RockSmash(void); -bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId) +bool8 CheckObjectGraphicsInFrontOfPlayer(u16 graphicsId) { u8 objEventId; @@ -61,9 +61,11 @@ static void Task_DoFieldMove_Init(u8 taskId) if (!ObjectEventIsMovementOverridden(&gObjectEvents[objEventId]) || ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId])) { - if (gMapHeader.mapType == MAP_TYPE_UNDERWATER) + if (gMapHeader.mapType == MAP_TYPE_UNDERWATER || gFieldEffectArguments[3]) { - // Skip field move pose underwater + // Skip field move pose underwater, or if arg3 is nonzero + if (gFieldEffectArguments[3]) + gFieldEffectArguments[3] = 0; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); gTasks[taskId].func = Task_DoFieldMove_WaitForMon; } diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 3f087e5dab22..c17dc9360b81 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -14,7 +14,7 @@ bool8 SetUpFieldMove_Teleport(void) { if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { - gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; + gFieldCallback2 = FieldCallback_PrepareFadeInForTeleport; gPostMenuFieldCallback = FieldCallback_Teleport; return TRUE; } diff --git a/src/follower_helper.c b/src/follower_helper.c new file mode 100644 index 000000000000..24de61a3fd7d --- /dev/null +++ b/src/follower_helper.c @@ -0,0 +1,369 @@ +#include "global.h" +#include "data.h" +#include "event_scripts.h" +#include "follower_helper.h" +#include "constants/battle.h" +#include "constants/followers.h" +#include "constants/metatile_behaviors.h" +#include "constants/pokemon.h" +#include "constants/region_map_sections.h" +#include "constants/songs.h" +#include "constants/weather.h" + +#define TYPE_NOT_TYPE1 NUMBER_OF_MON_TYPES + +// difficult conditional messages follow +static const u8 sCondMsg00[] = _("{STR_VAR_1} danced happily."); +static const u8 sCondMsg01[] = _("{STR_VAR_1} danced beautifully."); +static const u8* const sCelebiTexts[] = {sCondMsg00, sCondMsg01, NULL}; +static const u8 sCondMsg02[] = _("{STR_VAR_1} emitted fire and shouted."); +static const u8 sCondMsg03[] = _("{STR_VAR_1} is vigorously producing\nfire!"); +static const u8 sCondMsg04[] = _("{STR_VAR_1} spat fire!"); +static const u8 sCondMsg05[] = _("{STR_VAR_1} is vigorously breathing\nfire!"); +static const u8* const sFireTexts[] = {sCondMsg02, sCondMsg03, sCondMsg04, sCondMsg05, NULL}; +static const u8 sCondMsg06[] = _("{STR_VAR_1} is staring straight at\nthe POKéMON LEAGUE."); +static const u8 sCondMsg07[] = _("Your POKéMON is staring intently at\nthe mountain peak."); +static const u8 sCondMsg08[] = _("Sniff sniff, something smells good!"); +static const u8 sCondMsg09[] = _("Your POKéMON is surveying the\nshelves restlessly."); +static const u8 sCondMsg10[] = _("{STR_VAR_1} is staring intently at\nthe shelves."); +static const u8* const sShopTexts[] = {sCondMsg09, sCondMsg10, NULL}; +static const u8 sCondMsg11[] = _("{STR_VAR_1} focused with a sharp\ngaze!"); +static const u8 sCondMsg12[] = _("{STR_VAR_1} seems very interested in\nthe bicycles."); +static const u8 sCondMsg13[] = _("{STR_VAR_1} seems to want to touch\nthe machines!"); +static const u8 sCondMsg14[] = _("{STR_VAR_1} is swaying with the\nboat!"); +static const u8 sCondMsg15[] = _("{STR_VAR_1} is dancing along with\nthe rolling of the ship."); +static const u8 sCondMsg16[] = _("{STR_VAR_1} doesn't want to get off\nthe boat yet!"); +static const u8* const sBoatTexts[] = {sCondMsg14, sCondMsg15, sCondMsg16, NULL}; +static const u8 sCondMsg17[] = _("{STR_VAR_1} is listening to the\nsound of the machines."); +static const u8* const sMachineTexts[] = {sCondMsg13, sCondMsg17, NULL}; +static const u8 sCondMsg18[] = _("Waah! your POKéMON suddenly splashed\nwater!"); +static const u8 sCondMsg19[] = _("Your POKéMON is blowing sand in the\nair!"); +static const u8 sCondMsg20[] = _("{STR_VAR_1} is playing around,\nplucking bits of grass."); +static const u8 sCondMsg21[] = _("Your POKéMON is happily looking at\nyour footprints!"); +static const u8 sCondMsg22[] = _("{STR_VAR_1} is feeling nervous and a\ntouch claustrophobic."); +static const u8 sCondMsg23[] = _("{STR_VAR_1} is cautious about the\nconfined area!"); +static const u8* const sElevatorTexts[] = {sCondMsg22, sCondMsg23, NULL}; +static const u8 sCondMsg24[] = _("A cold wind suddenly blew by!"); +static const u8 sCondMsg25[] = _("Your POKéMON almost slipped and fell\nover!"); +static const u8 sCondMsg26[] = _("Your POKéMON seems surprised to\ntouch ice."); +static const u8* const sColdTexts[] = {sCondMsg24, sCondMsg25, sCondMsg26, NULL}; +static const u8 sCondMsg27[] = _("Your POKéMON has a flower petal on\nits face!"); +static const u8 sCondMsg28[] = _("{STR_VAR_1} is growling softly."); +static const u8 sCondMsg29[] = _("{STR_VAR_1} is trembling with fear."); +static const u8 sCondMsg30[] = _("{STR_VAR_1} seems somehow sad…"); +static const u8* const sFearTexts[] = {sCondMsg29, sCondMsg30, NULL}; +static const u8 sCondMsg31[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."); +static const u8 sCondMsg32[] = _("{STR_VAR_1} seems very cold."); +static const u8 sCondMsg33[] = _("{STR_VAR_1} is staring at the sea."); +static const u8 sCondMsg34[] = _("Your pokemon is staring intently at\nthe sea!"); +static const u8 sCondMsg35[] = _("{STR_VAR_1} is looking at the\nsurging sea."); +static const u8* const sSeaTexts[] = {sCondMsg33, sCondMsg34, sCondMsg35, NULL}; +static const u8 sCondMsg36[] = _("{STR_VAR_1} is listening to the\nsound of the waterfall."); +static const u8 sCondMsg37[] = _("{STR_VAR_1} seems to be happy about\nthe rain!"); +static const u8 sCondMsg38[] = _("{STR_VAR_1} is staring at its\nreflection in the water."); +static const u8 sCondMsg39[] = _("{STR_VAR_1} seems to relax as it\nhears the sound of rustling leaves…"); +static const u8 sCondMsg40[] = _("{STR_VAR_1} is gnawing at the ice."); +static const u8 sCondMsg41[] = _("{STR_VAR_1} is touching the ice."); +static const u8* const sIceTexts[] = {sCondMsg26, sCondMsg40, sCondMsg41, NULL}; +static const u8 sCondMsg42[] = _("{STR_VAR_1}'s burn looks painful!"); + +// See the struct definition in follower_helper.h for more info +const struct FollowerMsgInfoExtended gFollowerConditionalMessages[COND_MSG_COUNT] = +{ + [COND_MSG_CELEBI] = + { + .text = (u8*)sCelebiTexts, + .textSpread = 1, + .script = EventScript_FollowerDance, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .conditions = + { + MATCH_SPECIES(SPECIES_CELEBI), + }, + }, + [COND_MSG_FIRE] = + { + .text = (u8*)sFireTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .conditions = + { + MATCH_TYPES(TYPE_FIRE, TYPE_FIRE), + }, + }, + [COND_MSG_EVER_GRANDE] = + { + .text = sCondMsg06, + .script = EventScript_FollowerFaceUp, + .emotion = FOLLOWER_EMOTION_HAPPY, + .conditions = + { + MATCH_MAP(EVER_GRANDE_CITY), + }, + }, + [COND_MSG_ROUTE_112] = + { + .text = sCondMsg07, + .emotion = FOLLOWER_EMOTION_HAPPY, + .conditions = + { + MATCH_MAP(ROUTE112), + }, + }, + [COND_MSG_DAY_CARE] = + { + .text = sCondMsg08, + .script = EventScript_FollowerNostalgia, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .conditions = + { + MATCH_MAP(ROUTE117_POKEMON_DAY_CARE) + }, + }, + [COND_MSG_MART] = + { + .text = (u8*)sShopTexts, + .textSpread = 1, + .script = EventScript_FollowerLookAround, + .emotion = FOLLOWER_EMOTION_NEUTRAL, + .conditions = + { + MATCH_MUSIC(MUS_POKE_MART) + }, + }, + [COND_MSG_VICTORY_ROAD] = + { + .text = sCondMsg11, + .emotion = FOLLOWER_EMOTION_PENSIVE, + .conditions = + { + MATCH_MUSIC(MUS_VICTORY_ROAD) + }, + }, + [COND_MSG_BIKE_SHOP] = + { + .text = sCondMsg12, + .emotion = FOLLOWER_EMOTION_PENSIVE, + .conditions = + { + MATCH_MAP(MAUVILLE_CITY_BIKE_SHOP) + }, + }, + [COND_MSG_MACHINES] = + { + .text = (u8*)sMachineTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_MUSIC, + .orFlag = 1, // match any of these maps + .conditions = + { + MATCH_MAP(NEW_MAUVILLE_INSIDE), + MATCH_MAP(SLATEPORT_CITY_STERNS_SHIPYARD_1F), + MATCH_MAP(SLATEPORT_CITY_STERNS_SHIPYARD_2F), + }, + }, + [COND_MSG_SAILING] = + { + .text = (u8*)sBoatTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_MUSIC, + .script = EventScript_FollowerLookAround, + .conditions = + { + MATCH_MUSIC(MUS_SAILING), + }, + }, + [COND_MSG_PUDDLE] = + { + .text = sCondMsg18, + .script = EventScript_FollowerHopping, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_ON_MB(MB_SHALLOW_WATER, MB_PUDDLE), + }, + }, + [COND_MSG_SAND] = + { + .text = sCondMsg19, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_ON_MB(MB_SAND, MB_DEEP_SAND), + }, + }, + [COND_MSG_GRASS] = + { + .text = sCondMsg20, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_ON_MB(MB_TALL_GRASS, MB_LONG_GRASS), + }, + }, + [COND_MSG_FOOTPRINTS] = + { + .text = sCondMsg21, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_ON_MB(MB_SAND, MB_FOOTPRINTS), + }, + }, + [COND_MSG_ELEVATOR] = + { + .text = (u8*)sElevatorTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_SURPRISE, + .conditions = + { + MATCH_MAP(LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR), + }, + }, + [COND_MSG_ICE_ROOM] = + { + .text = (u8*)sColdTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_SURPRISE, + .conditions = + { + MATCH_MAP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM), + }, + }, + [COND_MSG_ROUTE_117] = + { + .text = sCondMsg27, + .emotion = FOLLOWER_EMOTION_SURPRISE, + .conditions = + { + MATCH_MAP(ROUTE117), + }, + }, + [COND_MSG_DRAGON_GROWL] = + { + .text = sCondMsg28, + .emotion = FOLLOWER_EMOTION_UPSET, + .conditions = + { + MATCH_TYPES(TYPE_DRAGON, TYPE_DRAGON), + MATCH_MAPSEC(MAPSEC_SKY_PILLAR), + }, + }, + [COND_MSG_FEAR] = + { + .text = (u8*)sFearTexts, + .textSpread = 1, + .emotion = FOLLOWER_EMOTION_UPSET, + .conditions = + { + MATCH_NOT_TYPES(TYPE_GHOST, TYPE_GHOST), + MATCH_MAPSEC(MAPSEC_MT_PYRE), + MATCH_MUSIC(MUS_MT_PYRE), + }, + }, + [COND_MSG_FIRE_RAIN] = + { + .text = sCondMsg31, + .emotion = FOLLOWER_EMOTION_UPSET, + .conditions = + { + MATCH_TYPES(TYPE_FIRE, TYPE_FIRE), + MATCH_WEATHER(WEATHER_RAIN, WEATHER_RAIN_THUNDERSTORM), + }, + }, + [COND_MSG_FROZEN] = + { + .text = sCondMsg32, + .emotion = FOLLOWER_EMOTION_UPSET, + .conditions = + { + MATCH_STATUS(STATUS1_FREEZE), + }, + }, + [COND_MSG_SEASIDE] = + { + .text = (u8*)sSeaTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_NEAR_MB(MB_OCEAN_WATER, 5), + }, + }, + [COND_MSG_WATERFALL] = + { + .text = sCondMsg36, + .script = EventScript_FollowerFaceResult, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_NEAR_MB(MB_WATERFALL, 5), + }, + }, + [COND_MSG_RAIN] = + { + .text = sCondMsg37, + .emotion = FOLLOWER_EMOTION_MUSIC, + .conditions = + { + MATCH_NOT_TYPES(TYPE_FIRE, TYPE_FIRE), + MATCH_WEATHER(WEATHER_RAIN, WEATHER_RAIN_THUNDERSTORM) + } + }, + [COND_MSG_REFLECTION] = + { + .text = sCondMsg38, + .script = EventScript_FollowerFaceResult, + .emotion = FOLLOWER_EMOTION_PENSIVE, + .conditions = + { + MATCH_NEAR_MB(MB_POND_WATER, 1), + }, + }, + [COND_MSG_LEAVES] = + { + .text = sCondMsg39, + .emotion = FOLLOWER_EMOTION_PENSIVE, + .conditions = + { + MATCH_MAPSEC(MAPSEC_PETALBURG_WOODS), + }, + }, + [COND_MSG_ICE] = + { + .text = (u8*)sIceTexts, + .textSpread = 1, + .script = EventScript_FollowerFaceResult, + .emotion = FOLLOWER_EMOTION_PENSIVE, + .conditions = + { + MATCH_NEAR_MB(MB_ICE, 1), + }, + }, + [COND_MSG_BURN] = + { + .text = sCondMsg42, + .emotion = FOLLOWER_EMOTION_SAD, + .conditions = + { + MATCH_STATUS(STATUS1_BURN), + }, + }, +}; + +// Pool of "unconditional" follower messages +const struct FollowerMessagePool gFollowerBasicMessages[FOLLOWER_EMOTION_LENGTH] = +{ + [FOLLOWER_EMOTION_HAPPY] = {gFollowerHappyMessages, EventScript_FollowerGeneric, FOLLOWER_HAPPY_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_NEUTRAL] = {gFollowerNeutralMessages, EventScript_FollowerGeneric, FOLLOWER_NEUTRAL_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_SAD] = {gFollowerSadMessages, EventScript_FollowerGeneric, FOLLOWER_SAD_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_UPSET] = {gFollowerUpsetMessages, EventScript_FollowerGeneric, FOLLOWER_UPSET_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_ANGRY] = {gFollowerAngryMessages, EventScript_FollowerGeneric, FOLLOWER_ANGRY_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_PENSIVE] = {gFollowerPensiveMessages, EventScript_FollowerGeneric, FOLLOWER_PENSIVE_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_LOVE] = {gFollowerLoveMessages, EventScript_FollowerGeneric, FOLLOWER_LOVE_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, FOLLOWER_SURPRISE_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, FOLLOWER_CURIOUS_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_MUSIC] = {gFollowerMusicMessages, EventScript_FollowerGeneric, FOLLOWER_MUSIC_MESSAGE_COUNT}, + [FOLLOWER_EMOTION_POISONED] = {gFollowerPoisonedMessages, EventScript_FollowerGeneric, FOLLOWER_POISONED_MESSAGE_COUNT}, +}; diff --git a/src/fonts.c b/src/fonts.c index 381fd795e962..6bd2d35e83d0 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -180,6 +180,114 @@ ALIGNED(4) const u8 gFontNormalLatinGlyphWidths[] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, }; +ALIGNED(4) const u16 gFontNarrowerLatinGlyphs[] = INCBIN_U16("graphics/fonts/narrower.latfont"); +ALIGNED(4) const u8 gFontNarrowerLatinGlyphWidths[] = { + 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, + 8, 4, 4, 4, 5, 5, 4, 4, 3, 4, 4, 4, 4, 4, 4, 3, + 4, 4, 4, 4, 4, 6, 4, 4, 4, 5, 4, 5, 8, 6, 6, 3, + 3, 3, 3, 3, 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, 3, 3, + 5, 5, 4, 8, 8, 8, 7, 8, 8, 4, 4, 6, 4, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, + 3, 3, 3, 3, 3, 3, 3, 5, 3, 7, 7, 7, 7, 0, 0, 3, + 4, 5, 6, 7, 4, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, + 5, 5, 5, 3, 3, 5, 5, 6, 3, 6, 6, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, + 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, + 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, + 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 10, 10, 10, 10, 8, 8, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 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, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, +}; + +ALIGNED(4) const u16 gFontSmallNarrowerLatinGlyphs[] = INCBIN_U16("graphics/fonts/small_narrower.latfont"); +ALIGNED(4) const u8 gFontSmallNarrowerLatinGlyphWidths[] = { + 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, + 5, 4, 4, 4, 5, 4, 4, 4, 3, 4, 4, 4, 4, 4, 3, 3, + 4, 4, 4, 4, 4, 6, 4, 4, 4, 5, 4, 4, 7, 5, 6, 3, + 3, 3, 3, 3, 8, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 5, 4, 3, 7, 7, 7, 8, 8, 8, 8, 4, 5, 4, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 4, + 3, 3, 3, 3, 3, 3, 3, 5, 3, 8, 8, 8, 8, 0, 0, 3, + 4, 5, 6, 7, 4, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 3, 4, 4, + 5, 5, 5, 3, 3, 5, 5, 5, 4, 5, 5, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 3, 4, + 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 7, + 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 8, 8, 8, 8, 8, 7, 8, 7, 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, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 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, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, +}; + +ALIGNED(4) const u16 gFontShortNarrowLatinGlyphs[] = INCBIN_U16("graphics/fonts/short_narrow.latfont"); +ALIGNED(4) const u8 gFontShortNarrowLatinGlyphWidths[] = { + 3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 4, 4, 5, 5, 5, + 8, 5, 5, 5, 5, 6, 5, 5, 3, 5, 5, 5, 5, 5, 4, 3, + 4, 4, 5, 5, 5, 8, 5, 5, 5, 5, 6, 6, 9, 6, 6, 3, + 3, 3, 3, 3, 10, 8, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 6, 6, 6, 8, 8, 8, 8, 8, 8, 4, 6, 8, 5, 5, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 6, + 3, 3, 3, 3, 3, 3, 3, 6, 3, 12, 12, 12, 12, 0, 0, 3, + 4, 5, 6, 7, 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, 3, + 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, + 6, 6, 6, 3, 3, 6, 6, 8, 5, 9, 6, 5, 5, 5, 5, 5, + 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, + 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, + 4, 6, 5, 5, 5, 5, 5, 5, 4, 5, 5, 6, 4, 5, 5, 8, + 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 12, 12, 12, 12, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 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, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, +}; + ALIGNED(4) const u16 gFontSmallJapaneseGlyphs[] = INCBIN_U16("graphics/fonts/small.hwjpnfont"); ALIGNED(4) const u16 gFontNormalJapaneseGlyphs[] = INCBIN_U16("graphics/fonts/normal.hwjpnfont"); diff --git a/src/frontier_util.c b/src/frontier_util.c index cdc82a5293c0..ca8c76a0fdf7 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -623,20 +623,6 @@ static const u8 sFrontierBrainObjEventGfx[NUM_FRONTIER_FACILITIES][2] = [FRONTIER_FACILITY_PYRAMID] = {OBJ_EVENT_GFX_BRANDON, FALSE}, }; -const u16 gFrontierBannedSpecies[] = -{ - 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] = { [RANKING_HALL_TOWER_SINGLES] = {gText_BattleTower2, gText_FacilitySingle}, @@ -1899,26 +1885,20 @@ static void CheckBattleTypeFlag(void) #define SPECIES_PER_LINE 3 -static u8 AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) +static void AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + if (numBannedMonsCaught == count) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else if (numBannedMonsCaught > count) + StringAppend(gStringVar1, gText_CommaSpace); + if ((count % SPECIES_PER_LINE) == 0) { - count++; - if (numBannedMonsCaught == count) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else if (numBannedMonsCaught > count) - StringAppend(gStringVar1, gText_CommaSpace); - if ((count % SPECIES_PER_LINE) == 0) - { - if (count == SPECIES_PER_LINE) - StringAppend(gStringVar1, gText_NewLine); - else - StringAppend(gStringVar1, gText_LineBreak); - } - StringAppend(gStringVar1, GetSpeciesName(species)); + if (count == SPECIES_PER_LINE) + StringAppend(gStringVar1, gText_NewLine); + else + StringAppend(gStringVar1, gText_LineBreak); } - - return count; + StringAppend(gStringVar1, GetSpeciesName(species)); } static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count) @@ -1927,12 +1907,7 @@ 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] != GET_BASE_SPECIES_ID(species); i++) - ; - - if (gFrontierBannedSpecies[i] != 0xFFFF) + if (gSpeciesInfo[species].isFrontierBanned) return; if (lvlMode == FRONTIER_LVL_50 && monLevel > FRONTIER_MAX_LEVEL_50) return; @@ -2018,28 +1993,41 @@ static void CheckPartyIneligibility(void) if (numEligibleMons < toChoose) { - s32 i; - s32 caughtBannedMons = 0; - s32 species = gFrontierBannedSpecies[0]; - for (i = 0; species != 0xFFFF; i++, species = gFrontierBannedSpecies[i]) + u32 i; + u32 baseSpecies = 0; + u32 totalCaughtBanned = 0; + u32 caughtBanned[100] = {0}; + + for (i = 0; i < NUM_SPECIES; i++) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) - caughtBannedMons++; + if (totalCaughtBanned >= ARRAY_COUNT(caughtBanned)) + break; + baseSpecies = GET_BASE_SPECIES_ID(i); + if (baseSpecies == i) + { + if (gSpeciesInfo[baseSpecies].isFrontierBanned) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(baseSpecies), FLAG_GET_CAUGHT)) + { + caughtBanned[totalCaughtBanned] = baseSpecies; + totalCaughtBanned++; + } + } + } } gStringVar1[0] = EOS; gSpecialVar_0x8004 = TRUE; - count = 0; - for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF; i++) - count = AppendCaughtBannedMonSpeciesName(gFrontierBannedSpecies[i], count, caughtBannedMons); + for (i = 0; i < totalCaughtBanned; i++) + AppendCaughtBannedMonSpeciesName(caughtBanned[i], i+1, totalCaughtBanned); - if (count == 0) + if (totalCaughtBanned == 0) { StringAppend(gStringVar1, gText_Space2); StringAppend(gStringVar1, gText_Are); } else { - if (count % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) + if (totalCaughtBanned % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) StringAppend(gStringVar1, gText_LineBreak); else StringAppend(gStringVar1, gText_Space2); diff --git a/src/graphics.c b/src/graphics.c index bd9c73e864f8..c35cec3467e2 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -57,6 +57,12 @@ const u32 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpriteGfx_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.4bpp.lz"); const u32 gBattleAnimSpritePal_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_TeraCrystal[] = INCBIN_U32("graphics/battle_anims/sprites/tera_crystal.4bpp.lz"); +const u32 gBattleAnimSpritePal_TeraCrystal[] = INCBIN_U32("graphics/battle_anims/sprites/tera_crystal.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_TeraShatter[] = INCBIN_U32("graphics/battle_anims/sprites/tera_shatter.4bpp.lz"); +const u32 gBattleAnimSpritePal_TeraShatter[] = INCBIN_U32("graphics/battle_anims/sprites/tera_shatter.gbapal.lz"); + const u32 gBattleAnimSpriteGfx_Anchor[] = INCBIN_U32("graphics/battle_anims/sprites/anchor.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/apple.4bpp.lz"); @@ -120,6 +126,8 @@ const u32 gBattleAnimSpritePal_DragonPulseRing[] = INCBIN_U32("graphics/battle_a const u32 gBattleAnimSpriteGfx_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile.4bpp.lz"); const u32 gBattleAnimSpritePal_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_DreepyMissileShiny[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile.4bpp.lz"); +const u32 gBattleAnimSpritePal_DreepyMissileShiny[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile_shiny.gbapal.lz"); const u32 gBattleAnimSpriteGfx_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/drill.4bpp.lz"); const u32 gBattleAnimSpritePal_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/drill.gbapal.lz"); @@ -1627,6 +1635,9 @@ const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/party_menu/pokeball.gb const u32 gStatusGfx_Icons[] = INCBIN_U32("graphics/interface/status_icons.4bpp.lz"); const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapal.lz"); +const u16 gCategoryIcons_Pal[] = INCBIN_U16("graphics/interface/category_icons.gbapal"); +const u32 gCategoryIcons_Gfx[] = INCBIN_U32("graphics/interface/category_icons.4bpp.lz"); + const u32 gMoveTypes_Gfx[] = INCBIN_U32("graphics/types/move_types.4bpp.lz"); const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 80689c264e46..1c3b00f2ef1b 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -1167,11 +1167,15 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u } else { - width = GetStringRightAlignXOffset(FONT_NORMAL, text, 0x80); - AddTextPrinterParameterized3(0, FONT_NORMAL, width, 1, sMonInfoTextColors, TEXT_SKIP_DRAW, text); + u32 fontId = GetFontIdToFit(text, FONT_NORMAL, 0, 66); + width = GetStringRightAlignXOffset(fontId, text, 0x80); + AddTextPrinterParameterized3(0, fontId, width, 1, sMonInfoTextColors, TEXT_SKIP_DRAW, text); text[0] = CHAR_SLASH; - stringPtr = StringCopy(text + 1, GetSpeciesName(currMon->species)); + text[1] = EXT_CTRL_CODE_BEGIN; + text[2] = EXT_CTRL_CODE_FONT; + text[3] = fontId; + stringPtr = StringCopy(text + 4, GetSpeciesName(currMon->species)); if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F) { diff --git a/src/item.c b/src/item.c index 3fcafccc02dc..6c3742fd76b2 100644 --- a/src/item.c +++ b/src/item.c @@ -13,8 +13,10 @@ #include "item_use.h" #include "battle_pyramid.h" #include "battle_pyramid_bag.h" +#include "graphics.h" #include "constants/battle.h" #include "constants/items.h" +#include "constants/moves.h" #include "constants/item_effects.h" #include "constants/hold_effects.h" @@ -81,24 +83,28 @@ void SetBagItemsPointers(void) gBagPockets[BERRIES_POCKET].capacity = BAG_BERRIES_COUNT; } -void CopyItemName(u16 itemId, u8 *dst) +u8 *CopyItemName(u16 itemId, u8 *dst) { - StringCopy(dst, ItemId_GetName(itemId)); + return StringCopy(dst, ItemId_GetName(itemId)); } const u8 sText_s[] =_("s"); -void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity) +u8 *CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity) { - u8 *end = StringCopy(dst, ItemId_GetName(itemId)) - 1; - - if (quantity < 2) - return; - - if (DoesItemHavePluralName(itemId)) - StringCopy(dst, ItemId_GetPluralName(itemId)); + if (quantity == 1) + { + return StringCopy(dst, ItemId_GetName(itemId)); + } + else if (DoesItemHavePluralName(itemId)) + { + return StringCopy(dst, ItemId_GetPluralName(itemId)); + } else - StringAppend(end, sText_s); + { + u8 *end = StringCopy(dst, ItemId_GetName(itemId)); + return StringCopy(end, sText_s); + } } bool8 IsBagPocketNonEmpty(u8 pocket) @@ -158,6 +164,18 @@ bool8 HasAtLeastOneBerry(void) return FALSE; } +bool8 HasAtLeastOnePokeBall(void) +{ + u16 i; + + for (i = FIRST_BALL; i <= LAST_BALL; i++) + { + if (CheckBagHasItem(i, 1) == TRUE) + return TRUE; + } + return FALSE; +} + bool8 CheckBagHasSpace(u16 itemId, u16 count) { if (ItemId_GetPocket(itemId) == POCKET_NONE) diff --git a/src/item_icon.c b/src/item_icon.c index fd6f041695e1..14a812b7fa8f 100644 --- a/src/item_icon.c +++ b/src/item_icon.c @@ -5,6 +5,8 @@ #include "malloc.h" #include "sprite.h" #include "constants/items.h" +#include "item.h" +#include "battle_main.h" // EWRAM vars EWRAM_DATA u8 *gItemIconDecompressionBuffer = NULL; @@ -96,14 +98,14 @@ u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId) struct CompressedSpritePalette spritePalette; struct SpriteTemplate *spriteTemplate; - LZDecompressWram(GetItemIconPicOrPalette(itemId, 0), gItemIconDecompressionBuffer); + LZDecompressWram(GetItemIconPic(itemId), gItemIconDecompressionBuffer); CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer); spriteSheet.data = gItemIcon4x4Buffer; spriteSheet.size = 0x200; spriteSheet.tag = tilesTag; LoadSpriteSheet(&spriteSheet); - spritePalette.data = GetItemIconPicOrPalette(itemId, 1); + spritePalette.data = GetItemIconPalette(itemId); spritePalette.tag = paletteTag; LoadCompressedSpritePalette(&spritePalette); @@ -133,14 +135,14 @@ u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u1 struct CompressedSpritePalette spritePalette; struct SpriteTemplate *spriteTemplate; - LZDecompressWram(GetItemIconPicOrPalette(itemId, 0), gItemIconDecompressionBuffer); + LZDecompressWram(GetItemIconPic(itemId), gItemIconDecompressionBuffer); CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer); spriteSheet.data = gItemIcon4x4Buffer; spriteSheet.size = 0x200; spriteSheet.tag = tilesTag; LoadSpriteSheet(&spriteSheet); - spritePalette.data = GetItemIconPicOrPalette(itemId, 1); + spritePalette.data = GetItemIconPalette(itemId); spritePalette.tag = paletteTag; LoadCompressedSpritePalette(&spritePalette); @@ -157,12 +159,30 @@ u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u1 } } -const void *GetItemIconPicOrPalette(u16 itemId, u8 which) +const void *GetItemIconPic(u16 itemId) { if (itemId == ITEM_LIST_END) - itemId = ITEMS_COUNT; // Use last icon, the "return to field" arrow - else if (itemId >= ITEMS_COUNT) - itemId = 0; + return gItemIcon_ReturnToFieldArrow; // Use last icon, the "return to field" arrow + if (itemId >= ITEMS_COUNT) + return gItemsInfo[0].iconPic; + if (itemId >= ITEM_TM01 && itemId < ITEM_HM01 + NUM_HIDDEN_MACHINES) + { + if (itemId < ITEM_TM01 + NUM_TECHNICAL_MACHINES) + return gItemIcon_TM; + return gItemIcon_HM; + } + + return gItemsInfo[itemId].iconPic; +} + +const void *GetItemIconPalette(u16 itemId) +{ + if (itemId == ITEM_LIST_END) + return gItemIconPalette_ReturnToFieldArrow; + if (itemId >= ITEMS_COUNT) + return gItemsInfo[0].iconPalette; + if (itemId >= ITEM_TM01 && itemId < ITEM_HM01 + NUM_HIDDEN_MACHINES) + return gTypesInfo[gMovesInfo[gItemsInfo[itemId].secondaryId].type].paletteTMHM; - return gItemIconTable[itemId][which]; + return gItemsInfo[itemId].iconPalette; } diff --git a/src/item_menu.c b/src/item_menu.c index 569712cfe625..d885f0a8ec85 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -109,7 +109,7 @@ struct ListBuffer1 { }; struct ListBuffer2 { - u8 name[MAX_POCKET_ITEMS][ITEM_NAME_LENGTH + 10]; + u8 name[MAX_POCKET_ITEMS][max(ITEM_NAME_LENGTH, MOVE_NAME_LENGTH) + 15]; }; struct TempWallyBag { @@ -905,10 +905,12 @@ static void LoadBagItemListBuffers(u8 pocketId) static void GetItemName(u8 *dest, u16 itemId) { + u8 *end; switch (gBagPosition.pocket) { case TMHM_POCKET: - StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(itemId))); + end = StringCopy(gStringVar2, GetMoveName(ItemIdToBattleMoveId(itemId))); + PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 73); if (itemId >= ITEM_HM01) { // Get HM number @@ -924,11 +926,13 @@ static void GetItemName(u8 *dest, u16 itemId) break; case BERRIES_POCKET: ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); - CopyItemName(itemId, gStringVar2); + end = CopyItemName(itemId, gStringVar2); + PrependFontIdToFit(gStringVar2, end, FONT_NARROW, 73); StringExpandPlaceholders(dest, gText_NumberItem_TMBerry); break; default: - CopyItemName(itemId, dest); + end = CopyItemName(itemId, dest); + PrependFontIdToFit(dest, end, FONT_NARROW, 88); break; } } @@ -1221,7 +1225,7 @@ static void PrintItemSoldAmount(int windowId, int numSold, int moneyEarned) ConvertIntToDecimalStringN(gStringVar1, numSold, STR_CONV_MODE_LEADING_ZEROS, MAX_ITEM_DIGITS); StringExpandPlaceholders(gStringVar4, gText_xVar1); AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, 0, 1, TEXT_SKIP_DRAW, 0); - PrintMoneyAmount(windowId, 38, 1, moneyEarned, 0); + PrintMoneyAmount(windowId, CalculateMoneyTextHorizontalPosition(moneyEarned), 1, moneyEarned, 0); } static void Task_BagMenu_HandleInput(u8 taskId) @@ -1667,7 +1671,8 @@ static void OpenContextMenu(u8 taskId) } else { - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemName(gSpecialVar_ItemId, gStringVar1); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected); FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0)); BagMenu_Print(WIN_DESCRIPTION, FONT_NORMAL, gStringVar4, 3, 1, 0, 0, 0, COLORID_NORMAL); @@ -1833,7 +1838,8 @@ static void ItemMenu_Toss(u8 taskId) } else { - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSpecialVar_ItemId, gStringVar1, 2); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s); FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0)); BagMenu_Print(WIN_DESCRIPTION, FONT_NORMAL, gStringVar4, 3, 1, 0, 0, 0, COLORID_NORMAL); @@ -1846,7 +1852,8 @@ static void AskTossItems(u8 taskId) { s16 *data = gTasks[taskId].data; - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSpecialVar_ItemId, gStringVar1, tItemCount); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS); StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems); FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0)); @@ -1889,7 +1896,8 @@ static void ConfirmToss(u8 taskId) { s16 *data = gTasks[taskId].data; - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSpecialVar_ItemId, gStringVar1, tItemCount); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS); StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s); FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0)); @@ -2121,7 +2129,7 @@ static void DisplaySellItemPriceAndConfirm(u8 taskId) { s16 *data = gTasks[taskId].data; - ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS); StringExpandPlaceholders(gStringVar4, gText_ICanPayVar1); DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, AskSellItems); } @@ -2181,7 +2189,7 @@ static void ConfirmSell(u8 taskId) s16 *data = gTasks[taskId].data; CopyItemName(gSpecialVar_ItemId, gStringVar2); - ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS); StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2); DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, SellItem); } @@ -2226,7 +2234,8 @@ static void Task_ItemContext_Deposit(u8 taskId) } else { - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSpecialVar_ItemId, gStringVar1, 2); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); StringExpandPlaceholders(gStringVar4, gText_DepositHowManyVar1); FillWindowPixelBuffer(WIN_DESCRIPTION, PIXEL_FILL(0)); BagMenu_Print(WIN_DESCRIPTION, FONT_NORMAL, gStringVar4, 3, 1, 0, 0, 0, COLORID_NORMAL); @@ -2273,7 +2282,8 @@ static void TryDepositItem(u8 taskId) else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE) { // Successfully deposited - CopyItemName(gSpecialVar_ItemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSpecialVar_ItemId, gStringVar1, tItemCount); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(WIN_DESCRIPTION) - 10 - 6); ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS); StringExpandPlaceholders(gStringVar4, gText_DepositedVar2Var1s); BagMenu_Print(WIN_DESCRIPTION, FONT_NORMAL, gStringVar4, 3, 1, 0, 0, 0, COLORID_NORMAL); diff --git a/src/libisagbprn.c b/src/libisagbprn.c index fab9b5990bf0..6724059ff8c7 100644 --- a/src/libisagbprn.c +++ b/src/libisagbprn.c @@ -1,7 +1,7 @@ #include #include #include "gba/gba.h" -#include "config.h" +#include "config/general.h" #include "malloc.h" #include "mini_printf.h" diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index e7a5862f074b..5acb9d3a40d6 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -49,7 +49,7 @@ void SetLilycoveLadyGfx(void) if (GetLilycoveLadyId() == LILYCOVE_LADY_CONTEST) { lilycoveLady = &gSaveBlock1Ptr->lilycoveLady; - VarSet(VAR_OBJ_GFX_ID_1, sContestLadyMonGfxId[lilycoveLady->contest.category]); + VarSet(VAR_OBJ_GFX_ID_1, sContestLadyValues[lilycoveLady->contest.category].monGfxId); gSpecialVar_Result = TRUE; } else @@ -396,7 +396,7 @@ static u8 BufferQuizAuthorName(void) sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz; if (sQuizLadyPtr->playerName[0] == EOS) { - StringCopy_PlayerName(gStringVar1, gText_QuizLady_Lady); + StringCopy_PlayerName(gStringVar1, COMPOUND_STRING("Lady")); authorNameId = QUIZ_AUTHOR_NAME_LADY; } else @@ -695,15 +695,15 @@ bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock) static void BufferContestLadyCategoryAndMonName(u8 *category, u8 *nickname) { sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest; - StringCopy(category, sContestLadyCategoryNames[sContestLadyPtr->category]); - StringCopy_Nickname(nickname, sContestLadyMonNames[sContestLadyPtr->category]); + StringCopy(category, sContestLadyValues[sContestLadyPtr->category].categoryName); + StringCopy_Nickname(nickname, sContestLadyValues[sContestLadyPtr->category].monName); } void BufferContestLadyMonName(u8 *category, u8 *nickname) { sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest; *category = sContestLadyPtr->category; - StringCopy(nickname, sContestLadyMonNames[sContestLadyPtr->category]); + StringCopy(nickname, sContestLadyValues[sContestLadyPtr->category].monName); } void BufferContestLadyPlayerName(u8 *dest) @@ -720,7 +720,7 @@ void BufferContestLadyLanguage(u8 *dest) void BufferContestName(u8 *dest, u8 category) { - StringCopy(dest, sContestNames[category]); + StringCopy(dest, sContestLadyValues[category].contestName); } // Used by the Contest Lady's TV show to determine how well she performed @@ -775,7 +775,7 @@ void SetContestLadyGivenPokeblock(void) void GetContestLadyMonSpecies(void) { sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest; - gSpecialVar_0x8005 = sContestLadyMonSpecies[sContestLadyPtr->category]; + gSpecialVar_0x8005 = sContestLadyValues[sContestLadyPtr->category].monSpecies; } u8 GetContestLadyCategory(void) diff --git a/src/list_menu.c b/src/list_menu.c index e83f325161d7..aa65683eddc6 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -600,11 +600,14 @@ static void ListMenuPrint(struct ListMenu *list, const u8 *str, u8 x, u8 y) u8 colors[3]; if (gListMenuOverride.enabled) { + u32 fontId = gListMenuOverride.fontId; + if (list->template.textNarrowWidth) + fontId = GetFontIdToFit(str, fontId, gListMenuOverride.lettersSpacing, list->template.textNarrowWidth); colors[0] = gListMenuOverride.fillValue; colors[1] = gListMenuOverride.cursorPal; colors[2] = gListMenuOverride.cursorShadowPal; AddTextPrinterParameterized4(list->template.windowId, - gListMenuOverride.fontId, + fontId, x, y, gListMenuOverride.lettersSpacing, 0, colors, TEXT_SKIP_DRAW, str); @@ -613,11 +616,14 @@ static void ListMenuPrint(struct ListMenu *list, const u8 *str, u8 x, u8 y) } else { + u32 fontId = list->template.fontId; + if (list->template.textNarrowWidth) + fontId = GetFontIdToFit(str, fontId, list->template.lettersSpacing, list->template.textNarrowWidth); colors[0] = list->template.fillValue; colors[1] = list->template.cursorPal; colors[2] = list->template.cursorShadowPal; AddTextPrinterParameterized4(list->template.windowId, - list->template.fontId, + fontId, x, y, list->template.lettersSpacing, 0, colors, TEXT_SKIP_DRAW, str); diff --git a/src/load_save.c b/src/load_save.c index 70db12fb98ea..ee8a6bd04c22 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -14,6 +14,7 @@ #include "decoration_inventory.h" #include "agb_flash.h" #include "event_data.h" +#include "constants/event_objects.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); @@ -198,17 +199,45 @@ void LoadPlayerParty(void) void SaveObjectEvents(void) { int i; + u16 graphicsId; for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { gSaveBlock1Ptr->objectEvents[i] = gObjectEvents[i]; + // Swap graphicsId bytes when saving and loading + // This keeps compatibility with vanilla, + // since the lower graphicsIds will be in the same place as vanilla + graphicsId = gObjectEvents[i].graphicsId; + gSaveBlock1Ptr->objectEvents[i].graphicsId = (graphicsId >> 8) | (graphicsId << 8); + gSaveBlock1Ptr->objectEvents[i].spriteId = 127; // magic number + // To avoid crash on vanilla, save follower as inactive + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER) + gSaveBlock1Ptr->objectEvents[i].active = FALSE; + } } void LoadObjectEvents(void) { int i; + u16 graphicsId; for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { gObjectEvents[i] = gSaveBlock1Ptr->objectEvents[i]; + // Swap graphicsId bytes when saving and loading + // This keeps compatibility with vanilla, + // since the lower graphicsIds will be in the same place as vanilla + graphicsId = gObjectEvents[i].graphicsId; + gObjectEvents[i].graphicsId = (graphicsId >> 8) | (graphicsId << 8); + if (gObjectEvents[i].spriteId != 127) + gObjectEvents[i].graphicsId &= 0xFF; + gObjectEvents[i].spriteId = 0; + // Try to restore saved inactive follower + if (gObjectEvents[i].localId == OBJ_EVENT_ID_FOLLOWER && + !gObjectEvents[i].active && + gObjectEvents[i].graphicsId >= OBJ_EVENT_GFX_MON_BASE) + gObjectEvents[i].active = TRUE; + } } void CopyPartyAndObjectsToSave(void) diff --git a/src/main.c b/src/main.c index 4bd981639886..b0bba2f3f394 100644 --- a/src/main.c +++ b/src/main.c @@ -448,7 +448,18 @@ static void IntrDummy(void) static void WaitForVBlank(void) { gMain.intrCheck &= ~INTR_FLAG_VBLANK; - VBlankIntrWait(); + + if (gWirelessCommType != 0) + { + // Desynchronization may occur if wireless adapter is connected + // and we call VBlankIntrWait(); + while (!(gMain.intrCheck & INTR_FLAG_VBLANK)) + ; + } + else + { + VBlankIntrWait(); + } } void SetTrainerHillVBlankCounter(u32 *counter) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 725bb80838e4..67a0d6373f85 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -2,12 +2,16 @@ #include "battle_pyramid.h" #include "bg.h" #include "event_data.h" +#include "field_weather.h" #include "gpu_regs.h" +#include "graphics.h" #include "international_string_util.h" +#include "main.h" #include "menu.h" #include "map_name_popup.h" #include "palette.h" #include "region_map.h" +#include "rtc.h" #include "start_menu.h" #include "string_util.h" #include "task.h" @@ -16,6 +20,8 @@ #include "constants/layouts.h" #include "constants/region_map_sections.h" #include "constants/weather.h" +#include "config/general.h" +#include "config/overworld.h" // enums enum MapPopUp_Themes @@ -28,13 +34,18 @@ enum MapPopUp_Themes MAPPOPUP_THEME_STONE2, }; +enum MapPopUp_Themes_BW +{ + MAPPOPUP_THEME_BW_DEFAULT, +}; + // static functions static void Task_MapNamePopUpWindow(u8 taskId); static void ShowMapNamePopUpWindow(void); static void LoadMapNamePopUpWindowBg(void); // EWRAM -static EWRAM_DATA u8 sPopupTaskId = 0; +EWRAM_DATA u8 gPopupTaskId = 0; // .rodata static const u8 sMapPopUp_Table[][960] = @@ -177,6 +188,127 @@ static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping[] = [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE }; +#if OW_POPUP_GENERATION == GEN_5 +// Gen5 assets +static const u8 sMapPopUpTilesPrimary_BW[] = INCBIN_U8("graphics/map_popup/bw/bw_primary.4bpp"); +static const u8 sMapPopUpTilesSecondary_BW[] = INCBIN_U8("graphics/map_popup/bw/bw_secondary.4bpp"); +static const u16 sMapPopUpTilesPalette_BW_Black[16] = INCBIN_U16("graphics/map_popup/bw/black.gbapal"); +static const u16 sMapPopUpTilesPalette_BW_White[16] = INCBIN_U16("graphics/map_popup/bw/white.gbapal"); +#else +static const u8 sMapPopUpTilesPrimary_BW[] = {0}; +static const u8 sMapPopUpTilesSecondary_BW[] = {0}; +static const u16 sMapPopUpTilesPalette_BW_Black[] = {0}; +static const u16 sMapPopUpTilesPalette_BW_White[] = {0}; +#endif + +static const u8 sRegionMapSectionId_To_PopUpThemeIdMapping_BW[] = +{ + [MAPSEC_LITTLEROOT_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_OLDALE_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_DEWFORD_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_LAVARIDGE_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_FALLARBOR_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_VERDANTURF_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_PACIFIDLOG_TOWN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_PETALBURG_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SLATEPORT_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MAUVILLE_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_RUSTBORO_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_FORTREE_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_LILYCOVE_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MOSSDEEP_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SOOTOPOLIS_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_EVER_GRANDE_CITY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_101] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_102] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_103] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_104] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_105] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_106] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_107] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_108] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_109] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_110] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_111] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_112] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_113] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_114] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_115] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_116] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_117] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_118] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_119] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_120] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_121] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_122] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_123] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_124] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_125] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_126] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_127] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_128] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_129] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_130] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_131] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_132] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_133] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ROUTE_134] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_124] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_126] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_127] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_128] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_SOOTOPOLIS] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_GRANITE_CAVE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MT_CHIMNEY] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SAFARI_ZONE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_BATTLE_FRONTIER] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_PETALBURG_WOODS] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_RUSTURF_TUNNEL] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ABANDONED_SHIP] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_NEW_MAUVILLE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_METEOR_FALLS] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_METEOR_FALLS2] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MT_PYRE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_AQUA_HIDEOUT_OLD] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SHOAL_CAVE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SEAFLOOR_CAVERN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_SEAFLOOR_CAVERN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_VICTORY_ROAD] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MIRAGE_ISLAND] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_CAVE_OF_ORIGIN] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SOUTHERN_ISLAND] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_FIERY_PATH] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_FIERY_PATH2] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_JAGGED_PASS] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_JAGGED_PASS2] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SEALED_CHAMBER] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_SEALED_CHAMBER] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SCORCHED_SLAB] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ISLAND_CAVE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_DESERT_RUINS] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ANCIENT_TOMB] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_INSIDE_OF_TRUCK] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SKY_PILLAR] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_SECRET_BASE] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_DYNAMIC] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_AQUA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MAGMA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MIRAGE_TOWER - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_BIRTH_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_FARAWAY_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ARTISAN_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_TERRA_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_105 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_125 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_UNDERWATER_129 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_DESERT_UNDERPASS - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_NAVEL_ROCK - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, + [MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_BW_DEFAULT, +}; + static const u8 sText_PyramidFloor1[] = _("PYRAMID FLOOR 1"); static const u8 sText_PyramidFloor2[] = _("PYRAMID FLOOR 2"); static const u8 sText_PyramidFloor3[] = _("PYRAMID FLOOR 3"); @@ -216,7 +348,7 @@ enum { STATE_PRINT, // For some reason the first state is numerically last. }; -#define POPUP_OFFSCREEN_Y 40 +#define POPUP_OFFSCREEN_Y ((OW_POPUP_GENERATION == GEN_5) ? 24 : 40) #define POPUP_SLIDE_SPEED 2 #define tState data[0] @@ -232,18 +364,29 @@ void ShowMapNamePopup(void) if (!FuncIsActiveTask(Task_MapNamePopUpWindow)) { // New pop up window - sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90); - SetGpuReg(REG_OFFSET_BG0VOFS, POPUP_OFFSCREEN_Y); - gTasks[sPopupTaskId].tState = STATE_PRINT; - gTasks[sPopupTaskId].tYOffset = POPUP_OFFSCREEN_Y; + if (OW_POPUP_GENERATION == GEN_5) + { + gPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 100); + + if (OW_POPUP_BW_ALPHA_BLEND && !IsWeatherAlphaBlend()) + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); + } + else + { + gPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90); + SetGpuReg(REG_OFFSET_BG0VOFS, POPUP_OFFSCREEN_Y); + } + + gTasks[gPopupTaskId].tState = STATE_PRINT; + gTasks[gPopupTaskId].tYOffset = POPUP_OFFSCREEN_Y; } else { // 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; + if (gTasks[gPopupTaskId].tState != STATE_SLIDE_OUT) + gTasks[gPopupTaskId].tState = STATE_SLIDE_OUT; + gTasks[gPopupTaskId].tIncomingPopUp = TRUE; } } } @@ -261,6 +404,11 @@ static void Task_MapNamePopUpWindow(u8 taskId) task->tState = STATE_SLIDE_IN; task->tPrintTimer = 0; ShowMapNamePopUpWindow(); + if (OW_POPUP_GENERATION == GEN_5) + { + EnableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(HBlankCB_DoublePopupWindow); + } } break; case STATE_SLIDE_IN: @@ -270,7 +418,7 @@ static void Task_MapNamePopUpWindow(u8 taskId) { task->tYOffset = 0; task->tState = STATE_WAIT; - gTasks[sPopupTaskId].data[1] = 0; + gTasks[gPopupTaskId].tOnscreenTimer = 0; } break; case STATE_WAIT: @@ -304,13 +452,16 @@ static void Task_MapNamePopUpWindow(u8 taskId) break; case STATE_ERASE: ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); + if (OW_POPUP_GENERATION == GEN_5) + ClearStdWindowAndFrame(GetSecondaryPopUpWindowId(), TRUE); task->tState = STATE_END; break; case STATE_END: HideMapNamePopUpWindow(); return; } - SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); + if (OW_POPUP_GENERATION != GEN_5) + SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); } void HideMapNamePopUpWindow(void) @@ -324,8 +475,28 @@ void HideMapNamePopUpWindow(void) ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); RemoveMapNamePopUpWindow(); } + + if (OW_POPUP_GENERATION == GEN_5) + { + if (GetSecondaryPopUpWindowId() != WINDOW_NONE) + { + ClearStdWindowAndFrame(GetSecondaryPopUpWindowId(), TRUE); + RemoveSecondaryPopUpWindow(); + } + + DisableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(NULL); + + if (OW_POPUP_BW_ALPHA_BLEND && !IsWeatherAlphaBlend()) + { + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 10)); + } + } + SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0); - DestroyTask(sPopupTaskId); + DestroyTask(gPopupTaskId); } } @@ -335,6 +506,7 @@ static void ShowMapNamePopUpWindow(void) u8 *withoutPrefixPtr; u8 x; const u8 *mapDisplayHeaderSource; + u8 mapNamePopUpWindowId, secondaryPopUpWindowId; if (InBattlePyramid()) { @@ -355,14 +527,46 @@ static void ShowMapNamePopUpWindow(void) withoutPrefixPtr = &(mapDisplayHeader[3]); GetMapName(withoutPrefixPtr, gMapHeader.regionMapSectionId, 0); } - AddMapNamePopUpWindow(); + + if (OW_POPUP_GENERATION == GEN_5) + { + if (OW_POPUP_BW_ALPHA_BLEND && !IsWeatherAlphaBlend()) + SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR); + + mapNamePopUpWindowId = AddMapNamePopUpWindow(); + secondaryPopUpWindowId = AddSecondaryPopUpWindow(); + } + else + { + AddMapNamePopUpWindow(); + } + LoadMapNamePopUpWindowBg(); - x = GetStringCenterAlignXOffset(FONT_NARROW, withoutPrefixPtr, 80); + mapDisplayHeader[0] = EXT_CTRL_CODE_BEGIN; mapDisplayHeader[1] = EXT_CTRL_CODE_HIGHLIGHT; mapDisplayHeader[2] = TEXT_COLOR_TRANSPARENT; - AddTextPrinterParameterized(GetMapNamePopUpWindowId(), FONT_NARROW, mapDisplayHeader, x, 3, TEXT_SKIP_DRAW, NULL); - CopyWindowToVram(GetMapNamePopUpWindowId(), COPYWIN_FULL); + + if (OW_POPUP_GENERATION == GEN_5) + { + AddTextPrinterParameterized(mapNamePopUpWindowId, FONT_SHORT, mapDisplayHeader, 8, 2, TEXT_SKIP_DRAW, NULL); + + if (OW_POPUP_BW_TIME_MODE != OW_POPUP_BW_TIME_NONE) + { + RtcCalcLocalTime(); + FormatDecimalTimeWithoutSeconds(withoutPrefixPtr, gLocalTime.hours, gLocalTime.minutes, OW_POPUP_BW_TIME_MODE == OW_POPUP_BW_TIME_24_HR); + AddTextPrinterParameterized(secondaryPopUpWindowId, FONT_SMALL, mapDisplayHeader, GetStringRightAlignXOffset(FONT_SMALL, mapDisplayHeader, DISPLAY_WIDTH) - 5, 8, TEXT_SKIP_DRAW, NULL); + } + + CopyWindowToVram(mapNamePopUpWindowId, COPYWIN_FULL); + CopyWindowToVram(secondaryPopUpWindowId, COPYWIN_FULL); + } + else + { + x = GetStringCenterAlignXOffset(FONT_NARROW, withoutPrefixPtr, 80); + AddTextPrinterParameterized(GetMapNamePopUpWindowId(), FONT_NARROW, mapDisplayHeader, x, 3, TEXT_SKIP_DRAW, NULL); + CopyWindowToVram(GetMapNamePopUpWindowId(), COPYWIN_FULL); + } } #define TILE_TOP_EDGE_START 0x21D @@ -402,6 +606,10 @@ static void LoadMapNamePopUpWindowBg(void) u8 popUpThemeId; u8 popupWindowId = GetMapNamePopUpWindowId(); u16 regionMapSectionId = gMapHeader.regionMapSectionId; + u8 secondaryPopUpWindowId; + + if (OW_POPUP_GENERATION == GEN_5) + secondaryPopUpWindowId = GetSecondaryPopUpWindowId(); if (regionMapSectionId >= KANTO_MAPSEC_START) { @@ -410,14 +618,37 @@ static void LoadMapNamePopUpWindowBg(void) else regionMapSectionId = 0; // Discard kanto region sections; } - popUpThemeId = sRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId]; - LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), sMapPopUp_OutlineTable[popUpThemeId], 0x400, 0x21D); - CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame); - PutWindowTilemap(popupWindowId); - if (gMapHeader.weather == WEATHER_UNDERWATER_BUBBLES) - LoadPalette(&sMapPopUp_Palette_Underwater, BG_PLTT_ID(14), sizeof(sMapPopUp_Palette_Underwater)); + if (OW_POPUP_GENERATION == GEN_5) + { + popUpThemeId = sRegionMapSectionId_To_PopUpThemeIdMapping_BW[regionMapSectionId]; + switch (popUpThemeId) + { + // add additional gen 5-style pop-up themes as cases here + case MAPPOPUP_THEME_BW_DEFAULT: + if (OW_POPUP_BW_COLOR == OW_POPUP_BW_COLOR_WHITE) + LoadPalette(sMapPopUpTilesPalette_BW_White, BG_PLTT_ID(14), sizeof(sMapPopUpTilesPalette_BW_White)); + else + LoadPalette(sMapPopUpTilesPalette_BW_Black, BG_PLTT_ID(14), sizeof(sMapPopUpTilesPalette_BW_Black)); + + CopyToWindowPixelBuffer(popupWindowId, sMapPopUpTilesPrimary_BW, sizeof(sMapPopUpTilesPrimary_BW), 0); + CopyToWindowPixelBuffer(secondaryPopUpWindowId, sMapPopUpTilesSecondary_BW, sizeof(sMapPopUpTilesSecondary_BW), 0); + break; + } + + PutWindowTilemap(popupWindowId); + PutWindowTilemap(secondaryPopUpWindowId); + } else - LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], BG_PLTT_ID(14), sizeof(sMapPopUp_PaletteTable[0])); - BlitBitmapToWindow(popupWindowId, sMapPopUp_Table[popUpThemeId], 0, 0, 80, 24); + { + popUpThemeId = sRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId]; + LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), sMapPopUp_OutlineTable[popUpThemeId], 0x400, 0x21D); + CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame); + PutWindowTilemap(popupWindowId); + if (gMapHeader.weather == WEATHER_UNDERWATER_BUBBLES) + LoadPalette(&sMapPopUp_Palette_Underwater, BG_PLTT_ID(14), sizeof(sMapPopUp_Palette_Underwater)); + else + LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], BG_PLTT_ID(14), sizeof(sMapPopUp_PaletteTable[0])); + BlitBitmapToWindow(popupWindowId, sMapPopUp_Table[popUpThemeId], 0, 0, 80, 24); + } } diff --git a/src/menu.c b/src/menu.c index a6bd9ae2bcde..ff1970c3f14f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -4,8 +4,10 @@ #include "blit.h" #include "dma3.h" #include "event_data.h" +#include "field_weather.h" #include "graphics.h" #include "main.h" +#include "map_name_popup.h" #include "menu.h" #include "menu_helpers.h" #include "palette.h" @@ -18,6 +20,7 @@ #include "task.h" #include "text_window.h" #include "window.h" +#include "config/overworld.h" #include "constants/songs.h" #define DLG_WINDOW_PALETTE_NUM 15 @@ -62,6 +65,7 @@ static void task_free_buf_after_copying_tile_data_to_vram(u8 taskId); static EWRAM_DATA u8 sStartMenuWindowId = 0; static EWRAM_DATA u8 sMapNamePopupWindowId = 0; +static EWRAM_DATA u8 sSecondaryPopupWindowId = 0; static EWRAM_DATA struct Menu sMenu = {0}; static EWRAM_DATA u16 sTileNum = 0; static EWRAM_DATA u8 sPaletteNum = 0; @@ -112,6 +116,7 @@ static const u8 sTextColors[] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_C static const struct MenuInfoIcon sMenuInfoIcons[] = { // { width, height, offset } { 12, 12, 0x00 }, // Unused + [TYPE_NONE + 1] = { 32, 12, 0xA4 }, // Copy of TYPE_MYSTERY's [TYPE_NORMAL + 1] = { 32, 12, 0x20 }, [TYPE_FIGHTING + 1] = { 32, 12, 0x64 }, [TYPE_FLYING + 1] = { 32, 12, 0x60 }, @@ -145,6 +150,8 @@ void InitStandardTextBoxWindows(void) InitWindows(sStandardTextBox_WindowTemplates); sStartMenuWindowId = WINDOW_NONE; sMapNamePopupWindowId = WINDOW_NONE; + if (OW_POPUP_GENERATION == GEN_5) + sSecondaryPopupWindowId = WINDOW_NONE; } void FreeAllOverworldWindowBuffers(void) @@ -521,7 +528,12 @@ static u16 UNUSED GetStandardFrameBaseTileNum(void) u8 AddMapNamePopUpWindow(void) { if (sMapNamePopupWindowId == WINDOW_NONE) - sMapNamePopupWindowId = AddWindowParameterized(0, 1, 1, 10, 3, 14, 0x107); + { + if (OW_POPUP_GENERATION == GEN_5) + sMapNamePopupWindowId = AddWindowParameterized(0, 0, 0, 30, 3, 14, 0x107); + else + sMapNamePopupWindowId = AddWindowParameterized(0, 1, 1, 10, 3, 14, 0x107); + } return sMapNamePopupWindowId; } @@ -2145,3 +2157,42 @@ void BufferSaveMenuText(u8 textId, u8 *dest, u8 color) break; } } + +// BW map pop-ups +u8 AddSecondaryPopUpWindow(void) +{ + if (sSecondaryPopupWindowId == WINDOW_NONE) + sSecondaryPopupWindowId = AddWindowParameterized(0, 0, 17, 30, 3, 14, 0x161); + return sSecondaryPopupWindowId; +} + +u8 GetSecondaryPopUpWindowId(void) +{ + return sSecondaryPopupWindowId; +} + +void RemoveSecondaryPopUpWindow(void) +{ + if (sSecondaryPopupWindowId != WINDOW_NONE) + { + RemoveWindow(sSecondaryPopupWindowId); + sSecondaryPopupWindowId = WINDOW_NONE; + } +} + +void HBlankCB_DoublePopupWindow(void) +{ + u16 offset = gTasks[gPopupTaskId].data[2]; + u16 scanline = REG_VCOUNT; + + if (scanline < 80 || scanline > 160) + { + REG_BG0VOFS = offset; + if(OW_POPUP_BW_ALPHA_BLEND && !IsWeatherAlphaBlend()) + REG_BLDALPHA = BLDALPHA_BLEND(15, 5); + } + else + { + REG_BG0VOFS = 512 - offset; + } +} diff --git a/src/menu_specialized.c b/src/menu_specialized.c index fcb65d9ae73a..a80a227a4b9e 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -186,7 +186,8 @@ static const struct ListMenuTemplate sMoveRelearnerMovesListTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = CURSOR_BLACK_ARROW + .cursorKind = CURSOR_BLACK_ARROW, + .textNarrowWidth = 68, }; //-------------- diff --git a/src/mini_printf.c b/src/mini_printf.c index cab78d761195..7432395b796f 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -35,7 +35,7 @@ #include "mini_printf.h" #include "gba/types.h" #include "gba/defines.h" -#include "config.h" +#include "config/general.h" #include "characters.h" #include "string_util.h" diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 78dec7a15b75..6b541e37accb 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -4,6 +4,7 @@ #include "event_data.h" #include "event_object_movement.h" #include "field_camera.h" +#include "field_effect.h" #include "fieldmap.h" #include "gpu_regs.h" #include "menu.h" @@ -154,7 +155,7 @@ static const union AnimCmd *const sAnims_FallingFossil[] = static const struct SpriteTemplate sSpriteTemplate_FallingFossil = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_FallingFossil, .anims = sAnims_FallingFossil, .images = NULL, @@ -686,6 +687,7 @@ static void Task_FossilFallAndSink(u8 taskId) { struct SpriteTemplate fossilTemplate = sSpriteTemplate_FallingFossil; fossilTemplate.images = sFallingFossil->frameImage; + LoadObjectEventPalette(sSpriteTemplate_FallingFossil.paletteTag); sFallingFossil->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1); gSprites[sFallingFossil->spriteId].centerToCornerVecX = 0; gSprites[sFallingFossil->spriteId].data[0] = gSprites[sFallingFossil->spriteId].x; @@ -706,6 +708,9 @@ static void Task_FossilFallAndSink(u8 taskId) // Wait for fossil to finish falling / disintegrating if (gSprites[sFallingFossil->spriteId].callback != SpriteCallbackDummy) return; + gSprites[sFallingFossil->spriteId].inUse = FALSE; + FieldEffectFreePaletteIfUnused(gSprites[sFallingFossil->spriteId].oam.paletteNum); + gSprites[sFallingFossil->spriteId].inUse = TRUE; DestroySprite(&gSprites[sFallingFossil->spriteId]); FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);; FREE_AND_SET_NULL(sFallingFossil->frameImage); diff --git a/src/money.c b/src/money.c index 321f882ff64a..0a5129c934e7 100644 --- a/src/money.c +++ b/src/money.c @@ -9,6 +9,7 @@ #include "sprite.h" #include "strings.h" #include "decompress.h" +#include "tv.h" EWRAM_DATA static u8 sMoneyBoxWindowId = 0; EWRAM_DATA static u8 sMoneyLabelSpriteId = 0; @@ -130,23 +131,33 @@ void SubtractMoneyFromVar0x8005(void) void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed) { - PrintMoneyAmount(windowId, 38, 1, amount, speed); + PrintMoneyAmount(windowId, CalculateMoneyTextHorizontalPosition(amount), 1, amount, speed); +} + +static u32 CalculateLeadingSpacesForMoney(u32 numDigits) +{ + u32 leadingSpaces = CountDigits(INT_MAX) - StringLength(gStringVar1); + return (numDigits > 8) ? leadingSpaces : leadingSpaces - 2; } void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) { - u8 *txtPtr; - s32 strLength; + u8 *txtPtr = gStringVar4; + u32 numDigits = CountDigits(amount); + u32 maxDigits = (numDigits > 6) ? MAX_MONEY_DIGITS: 6; + u32 leadingSpaces; - ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_LEFT_ALIGN, maxDigits); - strLength = 6 - StringLength(gStringVar1); - txtPtr = gStringVar4; + leadingSpaces = CalculateLeadingSpacesForMoney(numDigits); - while (strLength-- > 0) + while (leadingSpaces-- > 0) *(txtPtr++) = CHAR_SPACER; StringExpandPlaceholders(txtPtr, gText_PokedollarVar1); + + if (numDigits > 8) + PrependFontIdToFit(gStringVar4, txtPtr + 1 + numDigits, FONT_NORMAL, 54); AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, x, y, speed, NULL); } @@ -161,6 +172,11 @@ void ChangeAmountInMoneyBox(int amount) PrintMoneyAmountInMoneyBox(sMoneyBoxWindowId, amount, 0); } +u32 CalculateMoneyTextHorizontalPosition(u32 amount) +{ + return (CountDigits(amount) > 8) ? 34 : 26; +} + void DrawMoneyBox(int amount, u8 x, u8 y) { struct WindowTemplate template; diff --git a/src/naming_screen.c b/src/naming_screen.c index 0f2e2dbb7f94..118d91cfb416 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1395,7 +1395,7 @@ static void NamingScreen_NoIcon(void) static void NamingScreen_CreatePlayerIcon(void) { - u8 rivalGfxId; + u16 rivalGfxId; u8 spriteId; rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, sNamingScreen->monSpecies); @@ -1436,6 +1436,7 @@ static void NamingScreen_CreateWaldaDadIcon(void) //-------------------------------------------------- static bool8 KeyboardKeyHandler_Character(u8); +static void SwapKeyboardToLowerAfterFirstCapitalLetter(void); static bool8 KeyboardKeyHandler_Page(u8); static bool8 KeyboardKeyHandler_Backspace(u8); static bool8 KeyboardKeyHandler_OK(u8); @@ -1480,6 +1481,8 @@ static bool8 KeyboardKeyHandler_Character(u8 input) { bool8 textFull = AddTextCharacter(); + SwapKeyboardToLowerAfterFirstCapitalLetter(); + SquishCursor(); if (textFull) { @@ -1490,6 +1493,20 @@ static bool8 KeyboardKeyHandler_Character(u8 input) return FALSE; } +static void SwapKeyboardToLowerAfterFirstCapitalLetter(void) +{ + if (AUTO_LOWERCASE_KEYBOARD < GEN_6) + return; + + if (sNamingScreen->currentPage != KBPAGE_LETTERS_UPPER) + return; + + if (GetTextEntryPosition() != 1) + return; + + MainState_StartPageSwap(); +} + static bool8 KeyboardKeyHandler_Page(u8 input) { TryStartButtonFlash(BUTTON_PAGE, TRUE, FALSE); @@ -1710,10 +1727,11 @@ static void DrawNormalTextEntryBox(void) static void DrawMonTextEntryBox(void) { - u8 buffer[32]; + u8 buffer[64]; - StringCopy(buffer, GetSpeciesName(sNamingScreen->monSpecies)); - StringAppendN(buffer, sNamingScreen->template->title, 15); + u8 *end = StringCopy(buffer, GetSpeciesName(sNamingScreen->monSpecies)); + WrapFontIdToFit(buffer, end, FONT_NORMAL, 128 - 64); + StringAppendN(end, sNamingScreen->template->title, 15); FillWindowPixelBuffer(sNamingScreen->windows[WIN_TEXT_ENTRY_BOX], PIXEL_FILL(1)); AddTextPrinterParameterized(sNamingScreen->windows[WIN_TEXT_ENTRY_BOX], FONT_NORMAL, buffer, 8, 1, 0, 0); PutWindowTilemap(sNamingScreen->windows[WIN_TEXT_ENTRY_BOX]); diff --git a/src/new_game.c b/src/new_game.c index ece85ac544dc..783c6893c8d0 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -181,8 +181,7 @@ void NewGameInitData(void) gPlayerPartyCount = 0; ZeroPlayerPartyMons(); ResetPokemonStorageSystem(); - ClearRoamerData(); - ClearRoamerLocationData(); + DeactivateAllRoamers(); gSaveBlock1Ptr->registeredItem = ITEM_NONE; ClearBag(); NewGameInitPCItems(); diff --git a/src/overworld.c b/src/overworld.c index db4b499655df..a9606578dcdc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -42,6 +42,7 @@ #include "random.h" #include "roamer.h" #include "rotating_gate.h" +#include "rtc.h" #include "safari_zone.h" #include "save.h" #include "save_location.h" @@ -448,7 +449,7 @@ static void UpdateMiscOverworldStates(void) ChooseAmbientCrySpecies(); ResetCyclingRoadChallengeData(); UpdateLocationHistoryForRoamer(); - RoamerMoveToOtherLocationSet(); + MoveAllRoamersToOtherLocationSets(); } void ResetGameStats(void) @@ -846,14 +847,22 @@ if (I_VS_SEEKER_CHARGING != 0) InitSecondaryTilesetAnimation(); UpdateLocationHistoryForRoamer(); - RoamerMove(); + MoveAllRoamers(); DoCurrentWeather(); ResetFieldTasksArgs(); RunOnResumeMapScript(); - if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER - || gMapHeader.regionMapSectionId != sLastMapSectionId) - ShowMapNamePopup(); + if (OW_HIDE_REPEAT_MAP_POPUP) + { + if (gMapHeader.regionMapSectionId != sLastMapSectionId) + ShowMapNamePopup(); + } + else + { + if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER + || gMapHeader.regionMapSectionId != sLastMapSectionId) + ShowMapNamePopup(); + } } static void LoadMapFromWarp(bool32 a1) @@ -897,7 +906,8 @@ if (I_VS_SEEKER_CHARGING != 0) Overworld_ClearSavedMusic(); RunOnTransitionMapScript(); UpdateLocationHistoryForRoamer(); - RoamerMoveToOtherLocationSet(); + MoveAllRoamersToOtherLocationSets(); + gChainFishingDexNavStreak = 0; if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR) InitBattlePyramidMap(FALSE); else if (InTrainerHill()) @@ -1526,7 +1536,10 @@ void CB2_Overworld(void) SetVBlankCallback(NULL); OverworldBasic(); if (fading) + { SetFieldVBlankCallback(); + return; + } } void SetMainCallback1(MainCallback cb) @@ -2005,6 +2018,10 @@ static bool32 ReturnToFieldLocal(u8 *state) ResetScreenForMapLoad(); ResumeMap(FALSE); InitObjectEventsReturnToField(); + if (gFieldCallback == FieldCallback_UseFly) + RemoveFollowingPokemon(); + else + UpdateFollowingPokemon(); SetCameraToTrackPlayer(); (*state)++; break; @@ -2175,10 +2192,7 @@ static void ResumeMap(bool32 a1) ResetAllPicSprites(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); - if (!a1) - InitObjectEventPalettes(0); - else - InitObjectEventPalettes(1); + FreeAllSpritePalettes(); FieldEffectActiveListClear(); StartWeather(); @@ -2212,6 +2226,7 @@ static void InitObjectEventsLocal(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnObjectEvents(0, 0); + UpdateFollowingPokemon(); TryRunOnWarpIntoMapScript(); } @@ -3001,7 +3016,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 objEvent->previousCoords.y = y; SetSpritePosToMapCoords(x, y, &objEvent->initialCoords.x, &objEvent->initialCoords.y); objEvent->initialCoords.x += 8; - ObjectEventUpdateElevation(objEvent); + ObjectEventUpdateElevation(objEvent, NULL); } static void UNUSED SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) @@ -3141,7 +3156,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer { objEvent->directionSequenceIndex = 16; ShiftObjectEventCoords(objEvent, x, y); - ObjectEventUpdateElevation(objEvent); + ObjectEventUpdateElevation(objEvent, NULL); return TRUE; } } diff --git a/src/party_menu.c b/src/party_menu.c index 7a14d0fb720b..5214ddc2be63 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -14,6 +14,7 @@ #include "decompress.h" #include "easy_chat.h" #include "event_data.h" +#include "event_object_movement.h" #include "evolution_scene.h" #include "field_control_avatar.h" #include "field_effect.h" @@ -2429,6 +2430,11 @@ static void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, c AddTextPrinterParameterized3(windowId, FONT_SMALL, align[0], align[1], sFontColorTable[color], 0, str); } +static void DisplayPartyPokemonBarDetailToFit(u8 windowId, const u8 *str, u8 color, const u8 *align, u32 width) +{ + AddTextPrinterParameterized3(windowId, GetFontIdToFit(str, FONT_SMALL, 0, width), align[0], align[1], sFontColorTable[color], 0, str); +} + static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) { u8 nickname[POKEMON_NAME_LENGTH + 1]; @@ -2438,7 +2444,7 @@ static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox if (c == 1) menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[0] >> 3, menuBox->infoRects->dimensions[1] >> 3, menuBox->infoRects->dimensions[2] >> 3, menuBox->infoRects->dimensions[3] >> 3, FALSE); GetMonNickname(mon, nickname); - DisplayPartyPokemonBarDetail(menuBox->windowId, nickname, 0, menuBox->infoRects->dimensions); + DisplayPartyPokemonBarDetailToFit(menuBox->windowId, nickname, 0, menuBox->infoRects->dimensions, 50); } } @@ -2981,6 +2987,9 @@ static void CB2_ReturnToPartyMenuFromSummaryScreen(void) static void CursorCb_Switch(u8 taskId) { + // Reset follower steps when the party leader is changed + if (gPartyMenu.slotId == 0 || gPartyMenu.slotId2 == 0) + gFollowerSteps = 0; PlaySE(SE_SELECT); gPartyMenu.action = PARTY_ACTION_SWITCH; PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); @@ -4008,6 +4017,13 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void) return TRUE; } +// Same as above, but removes follower pokemon +bool8 FieldCallback_PrepareFadeInForTeleport(void) +{ + RemoveFollowingPokemon(); + return FieldCallback_PrepareFadeInFromMenu(); +} + static void Task_FieldMoveWaitForFade(u8 taskId) { if (IsWeatherNotFadingIn() == TRUE) @@ -5540,20 +5556,28 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) if (cannotUseEffect) { u16 targetSpecies = SPECIES_NONE; + bool32 evoModeNormal = TRUE; // Resets values to 0 so other means of teaching moves doesn't overwrite levels sInitialLevel = 0; sFinalLevel = 0; if (holdEffectParam == 0) + { targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + if (targetSpecies == SPECIES_NONE) + { + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + } if (targetSpecies != SPECIES_NONE) { RemoveBagItem(gSpecialVar_ItemId, 1); FreePartyPointers(); gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); DestroyTask(taskId); } else @@ -5727,12 +5751,20 @@ static void CB2_ReturnToPartyMenuUsingRareCandy(void) static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; - u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + u16 targetSpecies = SPECIES_NONE; + bool32 evoModeNormal = TRUE; // Resets values to 0 so other means of teaching moves doesn't overwrite levels sInitialLevel = 0; sFinalLevel = 0; + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + if (targetSpecies == SPECIES_NONE) + { + targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_CANT_STOP, ITEM_NONE, NULL); + evoModeNormal = FALSE; + } + if (targetSpecies != SPECIES_NONE) { FreePartyPointers(); @@ -5740,7 +5772,7 @@ static void PartyMenuTryEvolution(u8 taskId) gCB2_AfterEvolution = CB2_ReturnToPartyMenuUsingRareCandy; else gCB2_AfterEvolution = gPartyMenu.exitCallback; - BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId); + BeginEvolutionScene(mon, targetSpecies, evoModeNormal, gPartyMenu.slotId); DestroyTask(taskId); } else @@ -6332,6 +6364,7 @@ static void Task_TryItemUseFormChange(u8 taskId) case 0: targetSpecies = gTasks[taskId].tTargetSpecies; SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + TrySetDayLimitToFormChange(mon); CalculateMonStats(mon); gTasks[taskId].tState++; break; @@ -6897,8 +6930,7 @@ static u8 GetPartySlotEntryStatus(s8 slot) static bool8 GetBattleEntryEligibility(struct Pokemon *mon) { - u16 i = 0; - u16 species; + u32 species; if (GetMonData(mon, MON_DATA_IS_EGG) || GetMonData(mon, MON_DATA_LEVEL) > GetBattleEntryLevelCap() @@ -6919,11 +6951,8 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) return TRUE; default: // Battle Frontier species = GetMonData(mon, MON_DATA_SPECIES); - for (; gFrontierBannedSpecies[i] != 0xFFFF; i++) - { - if (gFrontierBannedSpecies[i] == GET_BASE_SPECIES_ID(species)) - return FALSE; - } + if (gSpeciesInfo[species].isFrontierBanned) + return FALSE; return TRUE; } } @@ -7736,6 +7765,6 @@ void IsLastMonThatKnowsSurf(void) } } if (AnyStorageMonWithMove(move) != TRUE) - gSpecialVar_Result = TRUE; + gSpecialVar_Result = !P_CAN_FORGET_HIDDEN_MOVE; } } diff --git a/src/play_time.c b/src/play_time.c index 97f4ac22f962..197b1fbac9a6 100644 --- a/src/play_time.c +++ b/src/play_time.c @@ -1,5 +1,6 @@ #include "global.h" #include "play_time.h" +#include "fake_rtc.h" enum { @@ -45,6 +46,7 @@ void PlayTimeCounter_Update(void) gSaveBlock2Ptr->playTimeVBlanks = 0; gSaveBlock2Ptr->playTimeSeconds++; + FakeRtc_TickTimeForward(); if (gSaveBlock2Ptr->playTimeSeconds < 60) return; diff --git a/src/player_pc.c b/src/player_pc.c index a10cb2ac2be1..3dd5fcc36f26 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -293,6 +293,7 @@ static const struct ListMenuTemplate sListMenuTemplate_ItemStorage = .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NARROW, .cursorKind = CURSOR_BLACK_ARROW, + .textNarrowWidth = 74, }; static const struct WindowTemplate sWindowTemplates_ItemStorage[ITEMPC_WIN_COUNT] = @@ -1349,6 +1350,7 @@ static void ItemStorage_PrintItemQuantity(u8 windowId, u16 value, u32 mode, u8 x // Start an item Withdraw/Toss static void ItemStorage_DoItemAction(u8 taskId) { + u8 *end; s16 *data = gTasks[taskId].data; u16 pos = gPlayerPCItemPageInfo.cursorPos + gPlayerPCItemPageInfo.itemsAbove; ItemStorage_RemoveScrollIndicator(); @@ -1364,7 +1366,8 @@ static void ItemStorage_DoItemAction(u8 taskId) } // Withdrawing multiple items, show "how many" message - CopyItemName(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1); + end = CopyItemNameHandlePlural(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1, 2); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(ITEMPC_WIN_MESSAGE) - 6); ItemStorage_PrintMessage(ItemStorage_GetMessage(MSG_HOW_MANY_TO_WITHDRAW)); } else @@ -1377,7 +1380,8 @@ static void ItemStorage_DoItemAction(u8 taskId) } // Tossing multiple items, show "how many" message - CopyItemName(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1); + end = CopyItemNameHandlePlural(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1, 2); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(ITEMPC_WIN_MESSAGE) - 6); ItemStorage_PrintMessage(ItemStorage_GetMessage(MSG_HOW_MANY_TO_TOSS)); } @@ -1426,7 +1430,8 @@ static void ItemStorage_DoItemWithdraw(u8 taskId) if (AddBagItem(gSaveBlock1Ptr->pcItems[pos].itemId, tQuantity) == TRUE) { // Item withdrawn - CopyItemName(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1, tQuantity); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(ITEMPC_WIN_MESSAGE) - 6); ConvertIntToDecimalStringN(gStringVar2, tQuantity, STR_CONV_MODE_LEFT_ALIGN, 3); ItemStorage_PrintMessage(ItemStorage_GetMessage(MSG_WITHDREW_ITEM)); gTasks[taskId].func = ItemStorage_HandleRemoveItem; @@ -1448,7 +1453,8 @@ static void ItemStorage_DoItemToss(u8 taskId) if (!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[pos].itemId)) { // Show toss confirmation prompt - CopyItemName(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1); + u8 *end = CopyItemNameHandlePlural(gSaveBlock1Ptr->pcItems[pos].itemId, gStringVar1, tQuantity); + WrapFontIdToFit(gStringVar1, end, FONT_NORMAL, WindowWidthPx(ITEMPC_WIN_MESSAGE) - 6); ConvertIntToDecimalStringN(gStringVar2, tQuantity, STR_CONV_MODE_LEFT_ALIGN, 3); ItemStorage_PrintMessage(ItemStorage_GetMessage(MSG_OKAY_TO_THROW_AWAY)); CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_ItemStorage[ITEMPC_WIN_YESNO], 1, 0, 1, 0x214, 0xE, &ItemTossYesNoFuncs); diff --git a/src/pokeball.c b/src/pokeball.c index 89568215e947..914455af5a83 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -16,8 +16,11 @@ #include "constants/songs.h" static void Task_DoPokeballSendOutAnim(u8 taskId); -static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite); -static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite); +static inline void DoPokeballSendOutSoundEffect(u32 battler); +static inline void *GetOpponentMonSendOutCallback(void); +static inline bool32 IsBattlerPlayer(u32 battler); +static void SpriteCB_MonSendOut_1(struct Sprite *sprite); +static void SpriteCB_MonSendOut_2(struct Sprite *sprite); static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite); static void SpriteCB_BallThrow(struct Sprite *sprite); static void SpriteCB_BallThrow_ReachMon(struct Sprite *sprite); @@ -548,6 +551,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) { u32 throwCaseId, ballId, battlerId, ballSpriteId; bool32 notSendOut = FALSE; + u32 throwXoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? 24 : 0; + s32 throwYoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? -16 : 24; if (gTasks[taskId].tFrames == 0) { @@ -566,18 +571,25 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) switch (throwCaseId) { + case POKEBALL_PLAYER_SLIDEIN: // don't actually send out, trigger the slide-in animation + gBattlerTarget = battlerId; + gSprites[ballSpriteId].callback = HandleBallAnimEnd; + gSprites[ballSpriteId].invisible = TRUE; + break; case POKEBALL_PLAYER_SENDOUT: gBattlerTarget = battlerId; gSprites[ballSpriteId].x = 24; gSprites[ballSpriteId].y = 68; - gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1; + gSprites[ballSpriteId].callback = SpriteCB_MonSendOut_1; + DoPokeballSendOutSoundEffect(battlerId); break; case POKEBALL_OPPONENT_SENDOUT: - gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X); - gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 24; + gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X) + throwXoffset; + gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + throwYoffset; gBattlerTarget = battlerId; gSprites[ballSpriteId].data[0] = 0; - gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut; + gSprites[ballSpriteId].callback = GetOpponentMonSendOutCallback(); + DoPokeballSendOutSoundEffect(battlerId); break; default: gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); @@ -604,6 +616,22 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) PlaySE(SE_BALL_THROW); } +static inline void DoPokeballSendOutSoundEffect(u32 battler) +{ + if (IsBattlerPlayer(battler) && B_PLAYER_THROW_BALLS_SOUND < GEN_5) + return; + + if (!IsBattlerPlayer(battler) && B_ENEMY_THROW_BALLS_SOUND < GEN_5) + return; + + PlaySE(SE_BALL_THROW); +} + +static inline void *GetOpponentMonSendOutCallback(void) +{ + return (B_ENEMY_THROW_BALLS >= GEN_6) ? SpriteCB_MonSendOut_1 : SpriteCB_OpponentMonSendOut; +} + // This sequence of functions is very similar to those that get run when // a Pokéball gets thrown at a wild Pokémon, starting at SpriteCB_Ball_Arc. // These do not seem to get run. @@ -1037,6 +1065,13 @@ static void HandleBallAnimEnd(struct Sprite *sprite) bool8 affineAnimEnded = FALSE; u8 battlerId = sprite->sBattler; + if (sprite->data[7] == POKEBALL_PLAYER_SLIDEIN) + { + gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonSlideIn; + AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; + } + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; if (sprite->animEnded) sprite->invisible = TRUE; @@ -1098,23 +1133,33 @@ static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite) } } -static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite) +static inline bool32 IsBattlerPlayer(u32 battler) { + return (battler % B_POSITION_PLAYER_RIGHT) ? FALSE : TRUE; +} + +static void SpriteCB_MonSendOut_1(struct Sprite *sprite) +{ + bool32 isPlayer = IsBattlerPlayer(sprite->sBattler); + u32 coordX = (isPlayer) ? BATTLER_COORD_X_2 : BATTLER_COORD_X; + u32 coordY = (isPlayer) ? BATTLER_COORD_Y_PIC_OFFSET : BATTLER_COORD_Y; + sprite->data[0] = 25; - sprite->data[2] = GetBattlerSpriteCoord(sprite->sBattler, BATTLER_COORD_X_2); - sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, BATTLER_COORD_Y_PIC_OFFSET) + 24; + sprite->data[2] = GetBattlerSpriteCoord(sprite->sBattler, coordX); + sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, coordY) + 24; sprite->data[5] = -30; sprite->oam.affineParam = sprite->sBattler; InitAnimArcTranslation(sprite); - sprite->callback = SpriteCB_PlayerMonSendOut_2; + sprite->callback = SpriteCB_MonSendOut_2; } #define HIBYTE(x) (((x) >> 8) & 0xFF) -static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) +static void SpriteCB_MonSendOut_2(struct Sprite *sprite) { u32 r6; u32 r7; + bool32 rightPosition = (IsBattlerPlayer(sprite->sBattler)) ? B_POSITION_PLAYER_RIGHT : B_POSITION_OPPONENT_RIGHT; if (HIBYTE(sprite->data[7]) >= 35 && HIBYTE(sprite->data[7]) < 80) { @@ -1157,7 +1202,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) sprite->data[0] = 0; if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->introAnimActive - && sprite->sBattler == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)) + && sprite->sBattler == GetBattlerAtPosition(rightPosition)) sprite->callback = SpriteCB_ReleaseMon2FromBall; else sprite->callback = SpriteCB_ReleaseMonFromBall; diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 59aed379d8aa..f31896a4cbe3 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -40,51 +40,9 @@ enum { NUM_ANIMDATA }; -enum { - AFFINE_NONE, - AFFINE_TURN_UP, - AFFINE_TURN_UP_AND_DOWN, - AFFINE_TURN_DOWN, - AFFINE_TURN_DOWN_SLOW, - AFFINE_TURN_DOWN_SLIGHT, - AFFINE_TURN_UP_HIGH, - AFFINE_UNUSED_1, - AFFINE_UNUSED_2, - AFFINE_UNUSED_3, - NUM_MON_AFFINES, -}; - #define MON_X 48 #define MON_Y 80 -// The animation the Pokémon does during the feeding scene depends on their nature. -// The below values are offsets into sMonPokeblockAnims of the animation data for that nature. -#define ANIM_HARDY 0 -#define ANIM_LONELY (ANIM_HARDY + 3) -#define ANIM_BRAVE (ANIM_LONELY + 1) -#define ANIM_ADAMANT (ANIM_BRAVE + 1) -#define ANIM_NAUGHTY (ANIM_ADAMANT + 5) -#define ANIM_BOLD (ANIM_NAUGHTY + 3) -#define ANIM_DOCILE (ANIM_BOLD + 2) -#define ANIM_RELAXED (ANIM_DOCILE + 1) -#define ANIM_IMPISH (ANIM_RELAXED + 2) -#define ANIM_LAX (ANIM_IMPISH + 1) -#define ANIM_TIMID (ANIM_LAX + 1) -#define ANIM_HASTY (ANIM_TIMID + 5) -#define ANIM_SERIOUS (ANIM_HASTY + 2) -#define ANIM_JOLLY (ANIM_SERIOUS + 1) -#define ANIM_NAIVE (ANIM_JOLLY + 1) -#define ANIM_MODEST (ANIM_NAIVE + 4) -#define ANIM_MILD (ANIM_MODEST + 3) -#define ANIM_QUIET (ANIM_MILD + 1) -#define ANIM_BASHFUL (ANIM_QUIET + 2) -#define ANIM_RASH (ANIM_BASHFUL + 3) -#define ANIM_CALM (ANIM_RASH + 3) -#define ANIM_GENTLE (ANIM_CALM + 1) -#define ANIM_SASSY (ANIM_GENTLE + 1) -#define ANIM_CAREFUL (ANIM_SASSY + 1) -#define ANIM_QUIRKY (ANIM_CAREFUL + 5) - struct PokeblockFeed { struct Sprite *monSpritePtr; @@ -141,35 +99,6 @@ static void SpriteCB_ThrownPokeblock(struct Sprite *); EWRAM_DATA static struct PokeblockFeed *sPokeblockFeed = NULL; EWRAM_DATA static struct CompressedSpritePalette sPokeblockSpritePal = {0}; -static const u8 sNatureToMonPokeblockAnim[NUM_NATURES][2] = -{ - [NATURE_HARDY] = { ANIM_HARDY, AFFINE_NONE }, - [NATURE_LONELY] = { ANIM_LONELY, AFFINE_NONE }, - [NATURE_BRAVE] = { ANIM_BRAVE, AFFINE_TURN_UP }, - [NATURE_ADAMANT] = { ANIM_ADAMANT, AFFINE_NONE }, - [NATURE_NAUGHTY] = { ANIM_NAUGHTY, AFFINE_NONE }, - [NATURE_BOLD] = { ANIM_BOLD, AFFINE_NONE }, - [NATURE_DOCILE] = { ANIM_DOCILE, AFFINE_NONE }, - [NATURE_RELAXED] = { ANIM_RELAXED, AFFINE_TURN_UP_AND_DOWN }, - [NATURE_IMPISH] = { ANIM_IMPISH, AFFINE_NONE }, - [NATURE_LAX] = { ANIM_LAX, AFFINE_NONE }, - [NATURE_TIMID] = { ANIM_TIMID, AFFINE_NONE }, - [NATURE_HASTY] = { ANIM_HASTY, AFFINE_NONE }, - [NATURE_SERIOUS] = { ANIM_SERIOUS, AFFINE_TURN_DOWN }, - [NATURE_JOLLY] = { ANIM_JOLLY, AFFINE_NONE }, - [NATURE_NAIVE] = { ANIM_NAIVE, AFFINE_NONE }, - [NATURE_MODEST] = { ANIM_MODEST, AFFINE_TURN_DOWN_SLOW }, - [NATURE_MILD] = { ANIM_MILD, AFFINE_NONE }, - [NATURE_QUIET] = { ANIM_QUIET, AFFINE_NONE }, - [NATURE_BASHFUL] = { ANIM_BASHFUL, AFFINE_NONE }, - [NATURE_RASH] = { ANIM_RASH, AFFINE_NONE }, - [NATURE_CALM] = { ANIM_CALM, AFFINE_NONE }, - [NATURE_GENTLE] = { ANIM_GENTLE, AFFINE_TURN_DOWN_SLIGHT }, - [NATURE_SASSY] = { ANIM_SASSY, AFFINE_TURN_UP_HIGH }, - [NATURE_CAREFUL] = { ANIM_CAREFUL, AFFINE_NONE }, - [NATURE_QUIRKY] = { ANIM_QUIRKY, AFFINE_NONE }, -}; - // Data for the animation the Pokémon does while readying to jump for the Pokéblock // Each nature can have up to 8 anim 'stages' it progresses through, and each stage has its own array of data. // The elements in each array correspond in order to the following: @@ -996,7 +925,7 @@ static void CalculateMonAnimLength(void) pokeblockFeed = sPokeblockFeed; pokeblockFeed->monAnimLength = 1; - animId = sNatureToMonPokeblockAnim[pokeblockFeed->nature][0]; + animId = gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[0]; // Add up the time each stage of the animation will take for (i = 0; i < 8; i++, animId++) @@ -1014,7 +943,7 @@ static void UpdateMonAnim(void) switch (pokeblockFeed->animRunState) { case 0: - pokeblockFeed->animId = sNatureToMonPokeblockAnim[pokeblockFeed->nature][0]; + pokeblockFeed->animId = gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[0]; pokeblockFeed->monSpritePtr = &gSprites[pokeblockFeed->monSpriteId_]; pokeblockFeed->savedMonSprite = *pokeblockFeed->monSpritePtr; pokeblockFeed->animRunState = 10; @@ -1023,7 +952,7 @@ static void UpdateMonAnim(void) break; case 10: InitMonAnimStage(); - if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != AFFINE_NONE) + if (gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[1] != AFFINE_NONE) { // Initialize affine anim pokeblockFeed->monSpritePtr->oam.affineMode = ST_OAM_AFFINE_DOUBLE; @@ -1033,13 +962,13 @@ static void UpdateMonAnim(void) } pokeblockFeed->animRunState = 50; case 50: - if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != AFFINE_NONE) + if (gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[1] != AFFINE_NONE) { // Start affine anim if (!pokeblockFeed->noMonFlip) // double negation, so mon's sprite is flipped - StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] + NUM_MON_AFFINES); + StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[1] + NUM_MON_AFFINES); else - StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, sNatureToMonPokeblockAnim[pokeblockFeed->nature][1]); + StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, gNaturesInfo[pokeblockFeed->nature].pokeBlockAnim[1]); } pokeblockFeed->animRunState = 60; break; diff --git a/src/pokedex.c b/src/pokedex.c index 8e36c27d4e35..2cf8274db524 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1387,9 +1387,9 @@ static const struct SearchOptionText sDexSearchColorOptions[] = {}, }; -static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES + 1] = // + 2 for "None" and terminator, - 1 for Mystery +static const struct SearchOptionText sDexSearchTypeOptions[] = { - {gText_DexEmptyString, gText_DexSearchTypeNone}, + {gText_DexEmptyString, gTypesInfo[TYPE_NONE].name}, {gText_DexEmptyString, gTypesInfo[TYPE_NORMAL].name}, {gText_DexEmptyString, gTypesInfo[TYPE_FIGHTING].name}, {gText_DexEmptyString, gTypesInfo[TYPE_FLYING].name}, @@ -2337,13 +2337,16 @@ static void CreatePokedexList(u8 dexMode, u8 order) } } -static void PrintMonDexNumAndName(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top) +static void PrintMonDexNum(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top) { - u8 color[3]; + static const u8 color[3] = { TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_LIGHT_GRAY }; + AddTextPrinterParameterized4(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, TEXT_SKIP_DRAW, str); +} - color[0] = TEXT_COLOR_TRANSPARENT; - color[1] = TEXT_DYNAMIC_COLOR_6; - color[2] = TEXT_COLOR_LIGHT_GRAY; +static void PrintMonName(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top) +{ + static const u8 color[3] = { TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_LIGHT_GRAY }; + fontId = GetFontIdToFit(str, fontId, 0, 50); AddTextPrinterParameterized4(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, TEXT_SKIP_DRAW, str); } @@ -2453,7 +2456,7 @@ static void CreateMonDexNum(u16 entryNum, u8 left, u8 top, u16 unused) 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); + PrintMonDexNum(0, FONT_NARROW, text, left, top); } static void CreateCaughtBall(bool16 owned, u8 x, u8 y, u16 unused) @@ -2473,7 +2476,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top) str = GetSpeciesName(num); else str = sText_TenDashes; - PrintMonDexNumAndName(0, FONT_NARROW, str, left, top); + PrintMonName(0, FONT_NARROW, str, left, top); return StringLength(str); } @@ -4671,7 +4674,7 @@ static void UNUSED UnusedPrintNum(u8 windowId, u16 num, u8 left, u8 top) static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) { - u8 str[POKEMON_NAME_LENGTH + 1]; + u8 str[POKEMON_NAME_BUFFER_SIZE]; u8 i; for (i = 0; i < ARRAY_COUNT(str); i++) @@ -4682,6 +4685,7 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) default: for (i = 0; GetSpeciesName(num)[i] != EOS && i < POKEMON_NAME_LENGTH; i++) str[i] = GetSpeciesName(num)[i]; + WrapFontIdToFit(str, str + i, FONT_NORMAL, 60); break; case 0: for (i = 0; i < 5; i++) @@ -5004,13 +5008,16 @@ static u8 LoadSearchMenu(void) return CreateTask(Task_LoadSearchMenu, 0); } -static void PrintSearchText(const u8 *str, u32 x, u32 y) +static void PrintSearchTextToFit(const u8 *str, u32 x, u32 y, u32 width) { - u8 color[3]; + static const u8 color[3] = { TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_DARK_GRAY }; + u32 fontId = GetFontIdToFit(str, FONT_NORMAL, 0, width); + AddTextPrinterParameterized4(0, fontId, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); +} - color[0] = TEXT_COLOR_TRANSPARENT; - color[1] = TEXT_DYNAMIC_COLOR_6; - color[2] = TEXT_COLOR_DARK_GRAY; +static void PrintSearchText(const u8 *str, u32 x, u32 y) +{ + static const u8 color[3] = { TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_DARK_GRAY }; AddTextPrinterParameterized4(0, FONT_NORMAL, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); } @@ -5630,10 +5637,10 @@ static void PrintSelectedSearchParameters(u8 taskId) PrintSearchText(sDexSearchColorOptions[searchParamId].title, 0x2D, 0x21); searchParamId = gTasks[taskId].tCursorPos_TypeLeft + gTasks[taskId].tScrollOffset_TypeLeft; - PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x2D, 0x31); + PrintSearchTextToFit(sDexSearchTypeOptions[searchParamId].title, 0x2D, 0x31, 38); searchParamId = gTasks[taskId].tCursorPos_TypeRight + gTasks[taskId].tScrollOffset_TypeRight; - PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x5D, 0x31); + PrintSearchTextToFit(sDexSearchTypeOptions[searchParamId].title, 0x5D, 0x31, 38); searchParamId = gTasks[taskId].tCursorPos_Order + gTasks[taskId].tScrollOffset_Order; PrintSearchText(sDexOrderOptions[searchParamId].title, 0x2D, 0x41); diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 1c155bf5ec4f..a3bbafa92632 100755 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -252,72 +252,67 @@ static void FindMapsWithMon(u16 species) if (sPokedexAreaScreen->alteringCaveId >= NUM_ALTERING_CAVE_TABLES) sPokedexAreaScreen->alteringCaveId = 0; - roamer = &gSaveBlock1Ptr->roamer; - if (species != roamer->species) - { - sPokedexAreaScreen->numOverworldAreas = 0; - sPokedexAreaScreen->numSpecialAreas = 0; + sPokedexAreaScreen->numOverworldAreas = 0; + sPokedexAreaScreen->numSpecialAreas = 0; - // Check if this species should be hidden from the area map. - // This only applies to Wynaut, to hide the encounters on Mirage Island. - for (i = 0; i < ARRAY_COUNT(sSpeciesHiddenFromAreaScreen); i++) - { - if (sSpeciesHiddenFromAreaScreen[i] == species) - return; - } + // Check if this species should be hidden from the area map. + // This only applies to Wynaut, to hide the encounters on Mirage Island. + for (i = 0; i < ARRAY_COUNT(sSpeciesHiddenFromAreaScreen); i++) + { + if (sSpeciesHiddenFromAreaScreen[i] == species) + return; + } - // Add Pokémon with special encounter circumstances (i.e. not listed - // in the regular wild encounter table) to the area map. - // This only applies to Feebas on Route 119, but it was clearly set - // up to allow handling others. - for (i = 0; sFeebasData[i][0] != NUM_SPECIES; i++) + // Add Pokémon with special encounter circumstances (i.e. not listed + // in the regular wild encounter table) to the area map. + // This only applies to Feebas on Route 119, but it was clearly set + // up to allow handling others. + for (i = 0; sFeebasData[i][0] != NUM_SPECIES; i++) + { + if (species == sFeebasData[i][0]) { - if (species == sFeebasData[i][0]) + switch (sFeebasData[i][1]) { - switch (sFeebasData[i][1]) - { - case MAP_GROUP_TOWNS_AND_ROUTES: - SetAreaHasMon(sFeebasData[i][1], sFeebasData[i][2]); - break; - case MAP_GROUP_DUNGEONS: - case MAP_GROUP_SPECIAL_AREA: - SetSpecialMapHasMon(sFeebasData[i][1], sFeebasData[i][2]); - break; - } + case MAP_GROUP_TOWNS_AND_ROUTES: + SetAreaHasMon(sFeebasData[i][1], sFeebasData[i][2]); + break; + case MAP_GROUP_DUNGEONS: + case MAP_GROUP_SPECIAL_AREA: + SetSpecialMapHasMon(sFeebasData[i][1], sFeebasData[i][2]); + break; } } + } - // Add regular species to the area map - for (i = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED); i++) + // Add regular species to the area map + for (i = 0; gWildMonHeaders[i].mapGroup != MAP_GROUP(UNDEFINED); i++) + { + if (MapHasSpecies(&gWildMonHeaders[i], species)) { - if (MapHasSpecies(&gWildMonHeaders[i], species)) + switch (gWildMonHeaders[i].mapGroup) { - switch (gWildMonHeaders[i].mapGroup) - { - case MAP_GROUP_TOWNS_AND_ROUTES: - SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); - break; - case MAP_GROUP_DUNGEONS: - case MAP_GROUP_SPECIAL_AREA: - SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); - break; - } + case MAP_GROUP_TOWNS_AND_ROUTES: + SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); + break; + case MAP_GROUP_DUNGEONS: + case MAP_GROUP_SPECIAL_AREA: + SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum); + break; } } } - else + + // Add roamers to the area map + for (i = 0; i < ROAMER_COUNT; i++) { - // This is the roamer's species, show where the roamer is currently - sPokedexAreaScreen->numSpecialAreas = 0; - if (roamer->active) - { - GetRoamerLocation(&sPokedexAreaScreen->overworldAreasWithMons[0].mapGroup, &sPokedexAreaScreen->overworldAreasWithMons[0].mapNum); - sPokedexAreaScreen->overworldAreasWithMons[0].regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(sPokedexAreaScreen->overworldAreasWithMons[0].mapGroup, sPokedexAreaScreen->overworldAreasWithMons[0].mapNum)->regionMapSectionId; - sPokedexAreaScreen->numOverworldAreas = 1; - } - else + roamer = &gSaveBlock1Ptr->roamer[i]; + if (species == roamer->species && roamer->active) { - sPokedexAreaScreen->numOverworldAreas = 0; + // This is a roamer's species, show where this roamer is currently + struct OverworldArea *roamerLocation = &sPokedexAreaScreen->overworldAreasWithMons[sPokedexAreaScreen->numOverworldAreas]; + GetRoamerLocation(i, &roamerLocation->mapGroup, &roamerLocation->mapNum); + roamerLocation->regionMapSectionId = Overworld_GetMapHeaderByGroupAndId(roamerLocation->mapGroup, roamerLocation->mapNum)->regionMapSectionId; + sPokedexAreaScreen->numOverworldAreas++; } } } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 9d8970322630..fa5279441b32 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -245,9 +245,12 @@ 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_LEVEL_MOVE_TWENTY_TIMES[] = _("{LV}{UP_ARROW} after 20x {STR_VAR_2}"); -static const u8 sText_EVO_LEVEL_RECOIL_DAMAGE_MALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, male"); -static const u8 sText_EVO_LEVEL_RECOIL_DAMAGE_FEMALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, female"); +static const u8 sText_EVO_USE_MOVE_TWENTY_TIMES[] = _("{LV}{UP_ARROW} after 20x {STR_VAR_2}"); +static const u8 sText_EVO_RECOIL_DAMAGE_MALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, male"); +static const u8 sText_EVO_RECOIL_DAMAGE_FEMALE[] = _("{LV}{UP_ARROW} with {STR_VAR_2} recoil, female"); +static const u8 sText_EVO_ITEM_COUNT_999[] = _("{LV}{UP_ARROW} with 999 {STR_VAR_2} in bag"); +static const u8 sText_EVO_DEFEAT_THREE_WITH_ITEM[] = _("{LV}{UP_ARROW} defeating 3 {STR_VAR_3} holding {STR_VAR_2}"); +static const u8 sText_EVO_OVERWORLD_STEPS[] = _("{LV}{UP_ARROW} after {STR_VAR_2} steps"); static const u8 sText_EVO_UNKNOWN[] = _("Method unknown"); static const u8 sText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); @@ -621,60 +624,6 @@ static void DestroyCategoryIcon(void); static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); -#define TAG_CATEGORY_ICONS 30004 - -static const u16 sCategoryIcons_Pal[] = INCBIN_U16("graphics/interface/category_icons.gbapal"); -static const u32 sCategoryIcons_Gfx[] = INCBIN_U32("graphics/interface/category_icons.4bpp.lz"); - -static const struct OamData sOamData_CategoryIcons = -{ - .size = SPRITE_SIZE(16x16), - .shape = SPRITE_SHAPE(16x16), - .priority = 0, -}; -static const struct CompressedSpriteSheet sSpriteSheet_CategoryIcons = -{ - .data = sCategoryIcons_Gfx, - .size = 16*16*3/2, - .tag = TAG_CATEGORY_ICONS, -}; -static const struct SpritePalette sSpritePal_CategoryIcons = -{ - .data = sCategoryIcons_Pal, - .tag = TAG_CATEGORY_ICONS -}; -static const union AnimCmd sSpriteAnim_CategoryIcon0[] = -{ - ANIMCMD_FRAME(0, 0), - ANIMCMD_END -}; -static const union AnimCmd sSpriteAnim_CategoryIcon1[] = -{ - ANIMCMD_FRAME(4, 0), - ANIMCMD_END -}; -static const union AnimCmd sSpriteAnim_CategoryIcon2[] = -{ - ANIMCMD_FRAME(8, 0), - ANIMCMD_END -}; -static const union AnimCmd *const sSpriteAnimTable_CategoryIcons[] = -{ - sSpriteAnim_CategoryIcon0, - sSpriteAnim_CategoryIcon1, - sSpriteAnim_CategoryIcon2, -}; -static const struct SpriteTemplate sSpriteTemplate_CategoryIcons = -{ - .tileTag = TAG_CATEGORY_ICONS, - .paletteTag = TAG_CATEGORY_ICONS, - .oam = &sOamData_CategoryIcons, - .anims = sSpriteAnimTable_CategoryIcons, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy -}; - //Stat bars by DizzyEgg #define TAG_STAT_BAR 4097 #define TAG_STAT_BAR_BG 4098 @@ -1952,9 +1901,9 @@ static const struct SearchOptionText sDexSearchColorOptions[] = {}, }; -static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES + 1] = // + 2 for "None" and terminator, - 1 for Mystery +static const struct SearchOptionText sDexSearchTypeOptions[] = { - {gText_DexEmptyString, gText_DexSearchTypeNone}, + {gText_DexEmptyString, gTypesInfo[TYPE_NONE].name}, {gText_DexEmptyString, gTypesInfo[TYPE_NORMAL].name}, {gText_DexEmptyString, gTypesInfo[TYPE_FIGHTING].name}, {gText_DexEmptyString, gTypesInfo[TYPE_FLYING].name}, @@ -4768,7 +4717,7 @@ static void LoadTilesetTilemapHGSS(u8 page) static u8 ShowCategoryIcon(u32 category) { if (sPokedexView->categoryIconSpriteId == 0xFF) - sPokedexView->categoryIconSpriteId = CreateSprite(&sSpriteTemplate_CategoryIcons, 139, 90, 0); + sPokedexView->categoryIconSpriteId = CreateSprite(&gSpriteTemplate_CategoryIcons, 139, 90, 0); gSprites[sPokedexView->categoryIconSpriteId].invisible = FALSE; StartSpriteAnim(&gSprites[sPokedexView->categoryIconSpriteId], category); @@ -4911,8 +4860,8 @@ static void Task_LoadStatsScreen(u8 taskId) CreateTypeIconSprites(); sPokedexView->categoryIconSpriteId = 0xFF; LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); - LoadCompressedSpriteSheet(&sSpriteSheet_CategoryIcons); - LoadSpritePalette(&sSpritePal_CategoryIcons); + LoadCompressedSpriteSheet(&gSpriteSheet_CategoryIcons); + LoadSpritePalette(&gSpritePal_CategoryIcons); gMain.state++; break; case 4: @@ -6663,17 +6612,32 @@ static void PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 dept CopyItemName(item, gStringVar2); StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD ); break; - case EVO_LEVEL_MOVE_TWENTY_TIMES: + case EVO_USE_MOVE_TWENTY_TIMES: StringCopy(gStringVar2, GetMoveName(evolutions[i].param)); - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_MOVE_TWENTY_TIMES ); + StringExpandPlaceholders(gStringVar4, sText_EVO_USE_MOVE_TWENTY_TIMES ); break; - case EVO_LEVEL_RECOIL_DAMAGE_MALE: + case EVO_RECOIL_DAMAGE_MALE: ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RECOIL_DAMAGE_MALE); + StringExpandPlaceholders(gStringVar4, sText_EVO_RECOIL_DAMAGE_MALE); break; - case EVO_LEVEL_RECOIL_DAMAGE_FEMALE: + case EVO_RECOIL_DAMAGE_FEMALE: ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RECOIL_DAMAGE_FEMALE); + StringExpandPlaceholders(gStringVar4, sText_EVO_RECOIL_DAMAGE_FEMALE); + break; + case EVO_ITEM_COUNT_999: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_COUNT_999); + break; + case EVO_DEFEAT_THREE_WITH_ITEM: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringCopy(gStringVar3, GetSpeciesName(species)); + StringExpandPlaceholders(gStringVar4, sText_EVO_DEFEAT_THREE_WITH_ITEM); + break; + case EVO_OVERWORLD_STEPS: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, sText_EVO_OVERWORLD_STEPS); break; default: StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN); diff --git a/src/pokemon.c b/src/pokemon.c index 240dab132286..2b731ef13cfa 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -12,6 +12,7 @@ #include "battle_z_move.h" #include "data.h" #include "event_data.h" +#include "event_object_movement.h" #include "evolution_scene.h" #include "field_specials.h" #include "field_weather.h" @@ -46,6 +47,7 @@ #include "constants/battle_script_commands.h" #include "constants/battle_partner.h" #include "constants/cries.h" +#include "constants/event_objects.h" #include "constants/form_change_types.h" #include "constants/hold_effects.h" #include "constants/item_effects.h" @@ -56,6 +58,7 @@ #include "constants/trainers.h" #include "constants/union_room.h" #include "constants/weather.h" +#include "wild_encounter.h" #define FRIENDSHIP_EVO_THRESHOLD ((P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9) ? 160 : 220) @@ -82,6 +85,7 @@ EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {0}; EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0}; EWRAM_DATA static struct MonSpritesGfxManager *sMonSpritesGfxManagers[MON_SPR_GFX_MANAGERS_COUNT] = {NULL}; EWRAM_DATA static u8 sTriedEvolving = 0; +EWRAM_DATA u16 gFollowerSteps = 0; #include "data/moves_info.h" #include "data/abilities.h" @@ -357,62 +361,316 @@ const struct SpindaSpot gSpindaSpotGraphics[] = {.x = 34, .y = 26, .image = INCBIN_U16("graphics/pokemon/spinda/spots/spot_3.1bpp")} }; -const u8 *const gNatureNamePointers[NUM_NATURES] = -{ - [NATURE_HARDY] = COMPOUND_STRING("Hardy"), - [NATURE_LONELY] = COMPOUND_STRING("Lonely"), - [NATURE_BRAVE] = COMPOUND_STRING("Brave"), - [NATURE_ADAMANT] = COMPOUND_STRING("Adamant"), - [NATURE_NAUGHTY] = COMPOUND_STRING("Naughty"), - [NATURE_BOLD] = COMPOUND_STRING("Bold"), - [NATURE_DOCILE] = COMPOUND_STRING("Docile"), - [NATURE_RELAXED] = COMPOUND_STRING("Relaxed"), - [NATURE_IMPISH] = COMPOUND_STRING("Impish"), - [NATURE_LAX] = COMPOUND_STRING("Lax"), - [NATURE_TIMID] = COMPOUND_STRING("Timid"), - [NATURE_HASTY] = COMPOUND_STRING("Hasty"), - [NATURE_SERIOUS] = COMPOUND_STRING("Serious"), - [NATURE_JOLLY] = COMPOUND_STRING("Jolly"), - [NATURE_NAIVE] = COMPOUND_STRING("Naive"), - [NATURE_MODEST] = COMPOUND_STRING("Modest"), - [NATURE_MILD] = COMPOUND_STRING("Mild"), - [NATURE_QUIET] = COMPOUND_STRING("Quiet"), - [NATURE_BASHFUL] = COMPOUND_STRING("Bashful"), - [NATURE_RASH] = COMPOUND_STRING("Rash"), - [NATURE_CALM] = COMPOUND_STRING("Calm"), - [NATURE_GENTLE] = COMPOUND_STRING("Gentle"), - [NATURE_SASSY] = COMPOUND_STRING("Sassy"), - [NATURE_CAREFUL] = COMPOUND_STRING("Careful"), - [NATURE_QUIRKY] = COMPOUND_STRING("Quirky"), -}; - -const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = -{ // Attack Defense Speed Sp.Atk Sp. Def - [NATURE_HARDY] = { 0, 0, 0, 0, 0 }, - [NATURE_LONELY] = { +1, -1, 0, 0, 0 }, - [NATURE_BRAVE] = { +1, 0, -1, 0, 0 }, - [NATURE_ADAMANT] = { +1, 0, 0, -1, 0 }, - [NATURE_NAUGHTY] = { +1, 0, 0, 0, -1 }, - [NATURE_BOLD] = { -1, +1, 0, 0, 0 }, - [NATURE_DOCILE] = { 0, 0, 0, 0, 0 }, - [NATURE_RELAXED] = { 0, +1, -1, 0, 0 }, - [NATURE_IMPISH] = { 0, +1, 0, -1, 0 }, - [NATURE_LAX] = { 0, +1, 0, 0, -1 }, - [NATURE_TIMID] = { -1, 0, +1, 0, 0 }, - [NATURE_HASTY] = { 0, -1, +1, 0, 0 }, - [NATURE_SERIOUS] = { 0, 0, 0, 0, 0 }, - [NATURE_JOLLY] = { 0, 0, +1, -1, 0 }, - [NATURE_NAIVE] = { 0, 0, +1, 0, -1 }, - [NATURE_MODEST] = { -1, 0, 0, +1, 0 }, - [NATURE_MILD] = { 0, -1, 0, +1, 0 }, - [NATURE_QUIET] = { 0, 0, -1, +1, 0 }, - [NATURE_BASHFUL] = { 0, 0, 0, 0, 0 }, - [NATURE_RASH] = { 0, 0, 0, +1, -1 }, - [NATURE_CALM] = { -1, 0, 0, 0, +1 }, - [NATURE_GENTLE] = { 0, -1, 0, 0, +1 }, - [NATURE_SASSY] = { 0, 0, -1, 0, +1 }, - [NATURE_CAREFUL] = { 0, 0, 0, -1, +1 }, - [NATURE_QUIRKY] = { 0, 0, 0, 0, 0 }, +// In Battle Palace, moves are chosen based on the pokemons nature rather than by the player +// Moves are grouped into "Attack", "Defense", or "Support" (see PALACE_MOVE_GROUP_*) +// Each nature has a certain percent chance of selecting a move from a particular group +// and a separate percent chance for each group when at or below 50% HP +// The table below doesn't list percentages for Support because you can subtract the other two +// Support percentages are listed in comments off to the side instead +#define PALACE_STYLE(atk, def, atkLow, defLow) {atk, atk + def, atkLow, atkLow + defLow} + +const struct NatureInfo gNaturesInfo[NUM_NATURES] = +{ + [NATURE_HARDY] = + { + .name = COMPOUND_STRING("Hardy"), + .statUp = STAT_ATK, + .statDown = STAT_ATK, + .backAnim = 0, + .pokeBlockAnim = {ANIM_HARDY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlHardy, + .battlePalacePercents = PALACE_STYLE(61, 7, 61, 7), //32% support >= 50% HP, 32% support < 50% HP + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_LONELY] = + { + .name = COMPOUND_STRING("Lonely"), + .statUp = STAT_ATK, + .statDown = STAT_DEF, + .backAnim = 2, + .pokeBlockAnim = {ANIM_LONELY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlLonely, + .battlePalacePercents = PALACE_STYLE(20, 25, 84, 8), //55%, 8% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_BRAVE] = + { + .name = COMPOUND_STRING("Brave"), + .statUp = STAT_ATK, + .statDown = STAT_SPEED, + .backAnim = 0, + .pokeBlockAnim = {ANIM_BRAVE, AFFINE_TURN_UP}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlBrave, + .battlePalacePercents = PALACE_STYLE(70, 15, 32, 60), //15%, 8% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_ADAMANT] = + { + .name = COMPOUND_STRING("Adamant"), + .statUp = STAT_ATK, + .statDown = STAT_SPATK, + .backAnim = 0, + .pokeBlockAnim = {ANIM_ADAMANT, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlAdamant, + .battlePalacePercents = PALACE_STYLE(38, 31, 70, 15), //31%, 15% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_NAUGHTY] = + { + .name = COMPOUND_STRING("Naughty"), + .statUp = STAT_ATK, + .statDown = STAT_SPDEF, + .backAnim = 0, + .pokeBlockAnim = {ANIM_NAUGHTY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlNaughty, + .battlePalacePercents = PALACE_STYLE(20, 70, 70, 22), //10%, 8% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_BOLD] = + { + .name = COMPOUND_STRING("Bold"), + .statUp = STAT_DEF, + .statDown = STAT_ATK, + .backAnim = 1, + .pokeBlockAnim = {ANIM_BOLD, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlBold, + .battlePalacePercents = PALACE_STYLE(30, 20, 32, 58), //50%, 10% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_DOCILE] = + { + .name = COMPOUND_STRING("Docile"), + .statUp = STAT_DEF, + .statDown = STAT_DEF, + .backAnim = 1, + .pokeBlockAnim = {ANIM_DOCILE, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, + .battlePalacePercents = PALACE_STYLE(56, 22, 56, 22), //22%, 22% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_RANDOM, + }, + [NATURE_RELAXED] = + { + .name = COMPOUND_STRING("Relaxed"), + .statUp = STAT_DEF, + .statDown = STAT_SPEED, + .backAnim = 1, + .pokeBlockAnim = {ANIM_RELAXED, AFFINE_TURN_UP_AND_DOWN}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlRelaxed, + .battlePalacePercents = PALACE_STYLE(25, 15, 75, 15), //60%, 10% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_IMPISH] = + { + .name = COMPOUND_STRING("Impish"), + .statUp = STAT_DEF, + .statDown = STAT_SPATK, + .backAnim = 0, + .pokeBlockAnim = {ANIM_IMPISH, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlImpish, + .battlePalacePercents = PALACE_STYLE(69, 6, 28, 55), //25%, 17% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_LAX] = + { + .name = COMPOUND_STRING("Lax"), + .statUp = STAT_DEF, + .statDown = STAT_SPDEF, + .backAnim = 1, + .pokeBlockAnim = {ANIM_LAX, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlLax, + .battlePalacePercents = PALACE_STYLE(35, 10, 29, 6), //55%, 65% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_TIMID] = + { + .name = COMPOUND_STRING("Timid"), + .statUp = STAT_SPEED, + .statDown = STAT_ATK, + .backAnim = 2, + .pokeBlockAnim = {ANIM_TIMID, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlTimid, + .battlePalacePercents = PALACE_STYLE(62, 10, 30, 20), //28%, 50% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_HASTY] = + { + .name = COMPOUND_STRING("Hasty"), + .statUp = STAT_SPEED, + .statDown = STAT_DEF, + .backAnim = 0, + .pokeBlockAnim = {ANIM_HASTY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlHasty, + .battlePalacePercents = PALACE_STYLE(58, 37, 88, 6), //5%, 6% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_SERIOUS] = + { + .name = COMPOUND_STRING("Serious"), + .statUp = STAT_SPEED, + .statDown = STAT_SPEED, + .backAnim = 1, + .pokeBlockAnim = {ANIM_SERIOUS, AFFINE_TURN_DOWN}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlSerious, + .battlePalacePercents = PALACE_STYLE(34, 11, 29, 11), //55%, 60% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_JOLLY] = + { + .name = COMPOUND_STRING("Jolly"), + .statUp = STAT_SPEED, + .statDown = STAT_SPATK, + .backAnim = 0, + .pokeBlockAnim = {ANIM_JOLLY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlJolly, + .battlePalacePercents = PALACE_STYLE(35, 5, 35, 60), //60%, 5% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_NAIVE] = + { + .name = COMPOUND_STRING("Naive"), + .statUp = STAT_SPEED, + .statDown = STAT_SPDEF, + .backAnim = 0, + .pokeBlockAnim = {ANIM_NAIVE, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, + .battlePalacePercents = PALACE_STYLE(56, 22, 56, 22), //22%, 22% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_RANDOM, + }, + [NATURE_MODEST] = + { + .name = COMPOUND_STRING("Modest"), + .statUp = STAT_SPATK, + .statDown = STAT_ATK, + .backAnim = 2, + .pokeBlockAnim = {ANIM_MODEST, AFFINE_TURN_DOWN_SLOW}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlModest, + .battlePalacePercents = PALACE_STYLE(35, 45, 34, 60), //20%, 6% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_MILD] = + { + .name = COMPOUND_STRING("Mild"), + .statUp = STAT_SPATK, + .statDown = STAT_DEF, + .backAnim = 2, + .pokeBlockAnim = {ANIM_MILD, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlMild, + .battlePalacePercents = PALACE_STYLE(44, 50, 34, 6), //6%, 60% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_QUIET] = + { + .name = COMPOUND_STRING("Quiet"), + .statUp = STAT_SPATK, + .statDown = STAT_SPEED, + .backAnim = 2, + .pokeBlockAnim = {ANIM_QUIET, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, + .battlePalacePercents = PALACE_STYLE(56, 22, 56, 22), //22%, 22% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_BASHFUL] = + { + .name = COMPOUND_STRING("Bashful"), + .statUp = STAT_SPATK, + .statDown = STAT_SPATK, + .backAnim = 2, + .pokeBlockAnim = {ANIM_BASHFUL, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlBashful, + .battlePalacePercents = PALACE_STYLE(30, 58, 30, 58), //12%, 12% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_RASH] = + { + .name = COMPOUND_STRING("Rash"), + .statUp = STAT_SPATK, + .statDown = STAT_SPDEF, + .backAnim = 1, + .pokeBlockAnim = {ANIM_RASH, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlRash, + .battlePalacePercents = PALACE_STYLE(30, 13, 27, 6), //57%, 67% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_CALM] = + { + .name = COMPOUND_STRING("Calm"), + .statUp = STAT_SPDEF, + .statDown = STAT_ATK, + .backAnim = 1, + .pokeBlockAnim = {ANIM_CALM, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlCalm, + .battlePalacePercents = PALACE_STYLE(40, 50, 25, 62), //10%, 13% + .battlePalaceFlavorText = B_MSG_GETTING_IN_POS, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_GENTLE] = + { + .name = COMPOUND_STRING("Gentle"), + .statUp = STAT_SPDEF, + .statDown = STAT_DEF, + .backAnim = 2, + .pokeBlockAnim = {ANIM_GENTLE, AFFINE_TURN_DOWN_SLIGHT}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlGentle, + .battlePalacePercents = PALACE_STYLE(18, 70, 90, 5), //12%, 5% + .battlePalaceFlavorText = B_MSG_GLINT_IN_EYE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, + [NATURE_SASSY] = + { + .name = COMPOUND_STRING("Sassy"), + .statUp = STAT_SPDEF, + .statDown = STAT_SPEED, + .backAnim = 1, + .pokeBlockAnim = {ANIM_SASSY, AFFINE_TURN_UP_HIGH}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlSassy, + .battlePalacePercents = PALACE_STYLE(88, 6, 22, 20), //6%, 58% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_CAREFUL] = + { + .name = COMPOUND_STRING("Careful"), + .statUp = STAT_SPDEF, + .statDown = STAT_SPATK, + .backAnim = 2, + .pokeBlockAnim = {ANIM_CAREFUL, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlCareful, + .battlePalacePercents = PALACE_STYLE(42, 50, 42, 5), //8%, 53% + .battlePalaceFlavorText = B_MSG_GROWL_DEEPLY, + .battlePalaceSmokescreen = PALACE_TARGET_WEAKER, + }, + [NATURE_QUIRKY] = + { + .name = COMPOUND_STRING("Quirky"), + .statUp = STAT_SPDEF, + .statDown = STAT_SPDEF, + .backAnim = 1, + .pokeBlockAnim = {ANIM_QUIRKY, AFFINE_NONE}, + .natureGirlMessage = BattleFrontier_Lounge5_Text_NatureGirlDocileNaiveQuietQuirky, + .battlePalacePercents = PALACE_STYLE(56, 22, 56, 22), //22%, 22% + .battlePalaceFlavorText = B_MSG_EAGER_FOR_MORE, + .battlePalaceSmokescreen = PALACE_TARGET_STRONGER, + }, }; #include "data/graphics/pokemon.h" @@ -442,9 +700,11 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = #endif #include "data/pokemon/teachable_learnsets.h" +#include "data/pokemon/egg_moves.h" #include "data/pokemon/form_species_tables.h" #include "data/pokemon/form_change_tables.h" #include "data/pokemon/form_change_table_pointers.h" +#include "data/object_events/object_event_pic_tables_followers.h" #include "data/pokemon/species_info.h" @@ -743,6 +1003,20 @@ static const u32 sCompressedStatuses[] = // - The maximum PP. // - The maximum HP. // - The maximum form countdown. + +// The following STATIC_ASSERT will prevent developers from compiling the game if the value of the constant on the left does not fit within the number of bits defined in PokemonSubstruct0 (currently located in include/pokemon.h). + +// To successfully compile, developers will need to do one of the following: +// 1) Decrease the size of the constant. +// 2) Increase the number of bits both on the struct AND in the corresponding assert. This will likely break user's saves unless there is free space after the member that is being adjsted. +// 3) Repurpose unused IDs. + +// EXAMPLES +// If a developer has added enough new items so that ITEMS_COUNT now equals 1200, they could... +// 1) remove new items until ITEMS_COUNT is 1023, the max value that will fit in 10 bits. +// 2) change heldItem:10 to heldItem:11 AND change the below assert for ITEMS_COUNT to check for (1 << 11). +// 3) repurpose IDs from other items that aren't being used, like ITEM_GOLD_TEETH or ITEM_SS_TICKET until ITEMS_COUNT equals 1023, the max value that will fit in 10 bits. + STATIC_ASSERT(NUM_SPECIES < (1 << 11), PokemonSubstruct0_species_TooSmall); STATIC_ASSERT(NUMBER_OF_MON_TYPES + 1 <= (1 << 5), PokemonSubstruct0_teraType_TooSmall); STATIC_ASSERT(ITEMS_COUNT < (1 << 10), PokemonSubstruct0_heldItem_TooSmall); @@ -870,6 +1144,14 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, { isShiny = TRUE; } + else if (P_ONLY_OBTAINABLE_SHINIES && InBattlePyramid()) + { + isShiny = FALSE; + } + else if (P_NO_SHINIES_WITHOUT_POKEBALLS && !HasAtLeastOnePokeBall()) + { + isShiny = FALSE; + } else { u32 totalRerolls = 0; @@ -877,6 +1159,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, totalRerolls += I_SHINY_CHARM_ADDITIONAL_ROLLS; if (LURE_STEP_COUNT != 0) totalRerolls += 1; + if (I_FISHING_CHAIN && gIsFishingEncounter) + totalRerolls += CalculateChainFishingShinyRolls(); while (GET_SHINY_VALUE(value, personality) >= SHINY_ODDS && totalRerolls > 0) { @@ -922,7 +1206,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, else { u32 iv; - value = Random(); + u32 ivRandom = Random32(); + value = (u16)ivRandom; iv = value & MAX_IV_MASK; SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); @@ -931,7 +1216,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); - value = Random(); + value = (u16)(ivRandom >> 16); iv = value & MAX_IV_MASK; SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); @@ -1331,7 +1616,7 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP dest->spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); dest->abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL); dest->personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - GetMonData(mon, MON_DATA_NICKNAME, dest->nickname); + GetMonData(mon, MON_DATA_NICKNAME10, dest->nickname); } static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId) @@ -1661,30 +1946,7 @@ void GiveMonInitialMoveset(struct Pokemon *mon) GiveBoxMonInitialMoveset(&mon->box); } -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; learnset[i].move != LEVEL_UP_MOVE_END; i++) - { - if (learnset[i].level > level) - break; - if (learnset[i].level == 0) - continue; - if (GiveMoveToBoxMon(boxMon, learnset[i].move) == MON_HAS_MAX_MOVES) - DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, learnset[i].move); - } -} - -void GiveMonInitialMoveset_Fast(struct Pokemon *mon) -{ - GiveBoxMonInitialMoveset_Fast(&mon->box); -} - -void GiveBoxMonInitialMoveset_Fast(struct BoxPokemon *boxMon) //Credit: AsparagusEduardo +void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) //Credit: AsparagusEduardo { u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); s32 level = GetLevelFromBoxMonExp(boxMon); @@ -2131,8 +2393,8 @@ u32 GetMonData2(struct Pokemon *mon, s32 field) struct EvolutionTrackerBitfield { u16 a: 5; - u16 b: 4; - u16 unused: 7; + u16 b: 5; + u16 unused: 6; }; union EvolutionTracker @@ -2175,6 +2437,7 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) switch (field) { case MON_DATA_NICKNAME: + case MON_DATA_NICKNAME10: { if (boxMon->isBadEgg) { @@ -2215,7 +2478,7 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) // so if both are 0 we assume that this is a vanilla // Pokémon and replace them with EOS. This means that // two CHAR_SPACE at the end of a nickname are trimmed. - if (POKEMON_NAME_LENGTH >= 12) + if (field != MON_DATA_NICKNAME10 && POKEMON_NAME_LENGTH >= 12) { if (substruct0->nickname11 == 0 && substruct0->nickname12 == 0) { @@ -2520,18 +2783,20 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) retVal = substruct3->gigantamaxFactor; break; case MON_DATA_TERA_TYPE: - { - if (substruct0->teraType == 0) + if (gSpeciesInfo[substruct0->species].forceTeraType) + { + retVal = gSpeciesInfo[substruct0->species].forceTeraType; + } + else if (substruct0->teraType == TYPE_NONE) // Tera Type hasn't been modified so we can just use the personality { const u8 *types = gSpeciesInfo[substruct0->species].types; retVal = (boxMon->personality & 0x1) == 0 ? types[0] : types[1]; } else { - retVal = substruct0->teraType - 1; + retVal = substruct0->teraType; } break; - } case MON_DATA_EVOLUTION_TRACKER: evoTracker.asField.a = substruct1->evolutionTracker1; evoTracker.asField.b = substruct1->evolutionTracker2; @@ -2601,6 +2866,9 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) retVal = nature ^ boxMon->hiddenNatureModifier; break; } + case MON_DATA_DAYS_SINCE_FORM_CHANGE: + retVal = boxMon->daysSinceFormChange; + break; default: break; } @@ -2709,14 +2977,23 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) switch (field) { case MON_DATA_NICKNAME: + case MON_DATA_NICKNAME10: { s32 i; for (i = 0; i < min(sizeof(boxMon->nickname), POKEMON_NAME_LENGTH); i++) boxMon->nickname[i] = data[i]; - if (POKEMON_NAME_LENGTH >= 11) - substruct0->nickname11 = data[10]; - if (POKEMON_NAME_LENGTH >= 12) - substruct0->nickname12 = data[11]; + if (field != MON_DATA_NICKNAME10) + { + if (POKEMON_NAME_LENGTH >= 11) + substruct0->nickname11 = data[10]; + if (POKEMON_NAME_LENGTH >= 12) + substruct0->nickname12 = data[11]; + } + else + { + substruct0->nickname11 = EOS; + substruct0->nickname12 = EOS; + } break; } case MON_DATA_SPECIES: @@ -2948,7 +3225,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) { u32 teraType; SET8(teraType); - substruct0->teraType = 1 + teraType; + substruct0->teraType = teraType; break; } case MON_DATA_EVOLUTION_TRACKER: @@ -3026,6 +3303,9 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) boxMon->hiddenNatureModifier = nature ^ hiddenNature; break; } + case MON_DATA_DAYS_SINCE_FORM_CHANGE: + SET8(boxMon->daysSinceFormChange); + break; } } @@ -3128,6 +3408,9 @@ u8 GetMonsStateToDoubles(void) s32 i; CalculatePlayerPartyCount(); + if (OW_DOUBLE_APPROACH_WITH_ONE_MON) + return PLAYER_HAS_TWO_USABLE_MONS; + if (gPlayerPartyCount == 1) return gPlayerPartyCount; // PLAYER_HAS_ONE_MON @@ -3315,6 +3598,14 @@ const u16 *GetSpeciesTeachableLearnset(u16 species) return learnset; } +const u16 *GetSpeciesEggMoves(u16 species) +{ + const u16 *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].eggMoveLearnset; + if (learnset == NULL) + return gSpeciesInfo[SPECIES_NONE].eggMoveLearnset; + return learnset; +} + const struct Evolution *GetSpeciesEvolutions(u16 species) { const struct Evolution *evolutions = gSpeciesInfo[SanitizeSpeciesId(species)].evolutions; @@ -4402,18 +4693,47 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s consumeItem = TRUE; } break; - case EVO_LEVEL_MOVE_TWENTY_TIMES: + case EVO_USE_MOVE_TWENTY_TIMES: if (evolutionTracker >= 20) targetSpecies = evolutions[i].targetSpecies; break; - case EVO_LEVEL_RECOIL_DAMAGE_MALE: + case EVO_RECOIL_DAMAGE_MALE: if (evolutionTracker >= evolutions[i].param && GetMonGender(mon) == MON_MALE) targetSpecies = evolutions[i].targetSpecies; break; - case EVO_LEVEL_RECOIL_DAMAGE_FEMALE: + case EVO_RECOIL_DAMAGE_FEMALE: if (evolutionTracker >= evolutions[i].param && GetMonGender(mon) == MON_FEMALE) targetSpecies = evolutions[i].targetSpecies; break; + case EVO_DEFEAT_THREE_WITH_ITEM: + if (evolutionTracker >= 3) + targetSpecies = evolutions[i].targetSpecies; + break; + case EVO_OVERWORLD_STEPS: + if (mon == GetFirstLiveMon() && gFollowerSteps >= evolutions[i].param) + targetSpecies = evolutions[i].targetSpecies; + break; + } + } + break; + case EVO_MODE_CANT_STOP: + level = GetMonData(mon, MON_DATA_LEVEL, 0); + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0); + + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) + { + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) + { + case EVO_ITEM_COUNT_999: + if (CheckBagHasItem(evolutions[i].param, 999)) + { + targetSpecies = evolutions[i].targetSpecies; + RemoveBagItem(evolutions[i].param, 999); + } + break; } } break; @@ -4788,38 +5108,15 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId) u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex) { -// Because this is a u16 it will be unable to store the -// result of the multiplication for any stat > 595 for a -// positive nature and > 728 for a negative nature. -// Neither occur in the base game, but this can happen if -// any Nature-affected base stat is increased to a value -// above 248. The closest by default is Shuckle at 230. -#ifdef BUGFIX - u32 retVal; -#else - u16 retVal; -#endif - // Don't modify HP, Accuracy, or Evasion by nature - if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS) + if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS || gNaturesInfo[nature].statUp == gNaturesInfo[nature].statDown) + return stat; + else if (statIndex == gNaturesInfo[nature].statUp) + return stat * 110 / 100; + else if (statIndex == gNaturesInfo[nature].statDown) + return stat * 90 / 100; + else return stat; - - switch (gNatureStatTable[nature][statIndex - 1]) - { - case 1: - retVal = stat * 110; - retVal /= 100; - break; - case -1: - retVal = stat * 90; - retVal /= 100; - break; - default: - retVal = stat; - break; - } - - return retVal; } void AdjustFriendship(struct Pokemon *mon, u8 event) @@ -5513,12 +5810,17 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon) } const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality) +{ + return GetMonSpritePalFromSpecies(species, isShiny, IsPersonalityFemale(species, personality)); +} + +const u32 *GetMonSpritePalFromSpecies(u16 species, bool32 isShiny, bool32 isFemale) { species = SanitizeSpeciesId(species); if (isShiny) { - if (gSpeciesInfo[species].shinyPaletteFemale != NULL && IsPersonalityFemale(species, personality)) + if (gSpeciesInfo[species].shinyPaletteFemale != NULL && isFemale) return gSpeciesInfo[species].shinyPaletteFemale; else if (gSpeciesInfo[species].shinyPalette != NULL) return gSpeciesInfo[species].shinyPalette; @@ -5527,7 +5829,7 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, } else { - if (gSpeciesInfo[species].paletteFemale != NULL && IsPersonalityFemale(species, personality)) + if (gSpeciesInfo[species].paletteFemale != NULL && isFemale) return gSpeciesInfo[species].paletteFemale; else if (gSpeciesInfo[species].palette != NULL) return gSpeciesInfo[species].palette; @@ -5539,6 +5841,10 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, bool8 IsMoveHM(u16 move) { int i = 0; + + if (P_CAN_FORGET_HIDDEN_MOVE) + return FALSE; + while (sHMMoves[i] != HM_MOVES_END) { if (sHMMoves[i++] == move) @@ -5647,9 +5953,9 @@ static inline bool32 CanFirstMonBoostHeldItemRarity(void) return FALSE; ability = GetMonAbility(&gPlayerParty[0]); - if ((OW_COMPOUND_EYES < GEN_9) && ability == ABILITY_COMPOUND_EYES) + if (ability == ABILITY_COMPOUND_EYES) return TRUE; - else if ((OW_SUPER_LUCK == GEN_8) && ability == ABILITY_SUPER_LUCK) + else if ((OW_SUPER_LUCK >= GEN_8) && ability == ABILITY_SUPER_LUCK) return TRUE; return FALSE; } @@ -5947,7 +6253,7 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality) bool8 HasTwoFramesAnimation(u16 species) { - return species != SPECIES_UNOWN; + return P_TWO_FRAME_FRONT_SPRITES && species != SPECIES_UNOWN; } static bool8 ShouldSkipFriendshipChange(void) @@ -6240,6 +6546,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 break; case FORM_CHANGE_WITHDRAW: case FORM_CHANGE_FAINT: + case FORM_CHANGE_DAYS_PASSED: targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_STATUS: @@ -6267,6 +6574,22 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 return targetSpecies; } +void TrySetDayLimitToFormChange(struct Pokemon *mon) +{ + u32 i; + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + const struct FormChange *formChanges = GetSpeciesFormChanges(species); + + for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) + { + if (formChanges[i].method == FORM_CHANGE_DAYS_PASSED && species != formChanges[i].targetSpecies) + { + SetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, &formChanges[i].param1); + break; + } + } +} + bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method) { u32 i; @@ -6545,8 +6868,8 @@ void HealBoxPokemon(struct BoxPokemon *boxMon) u16 GetCryIdBySpecies(u16 species) { species = SanitizeSpeciesId(species); - if (gSpeciesInfo[species].cryId >= CRY_COUNT) - return 0; + if (P_CRIES_ENABLED == FALSE || gSpeciesInfo[species].cryId >= CRY_COUNT) + return CRY_NONE; return gSpeciesInfo[species].cryId; } @@ -6573,3 +6896,48 @@ const u8 *GetMoveName(u16 moveId) { return gMovesInfo[moveId].name; } + +const u8 *GetMoveAnimationScript(u16 moveId) +{ + if (gMovesInfo[moveId].battleAnimScript == NULL) + { + DebugPrintfLevel(MGBA_LOG_WARN, "No animation for moveId=%u", moveId); + return Move_TACKLE; + } + return gMovesInfo[moveId].battleAnimScript; +} + +void UpdateDaysPassedSinceFormChange(u16 days) +{ + u32 i; + for (i = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *mon = &gPlayerParty[i]; + u8 daysSinceFormChange; + + if (!GetMonData(mon, MON_DATA_SPECIES, 0)) + continue; + + daysSinceFormChange = GetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, 0); + if (daysSinceFormChange == 0) + continue; + + if (daysSinceFormChange > days) + daysSinceFormChange -= days; + else + daysSinceFormChange = 0; + + SetMonData(mon, MON_DATA_DAYS_SINCE_FORM_CHANGE, &daysSinceFormChange); + + if (daysSinceFormChange == 0) + { + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_DAYS_PASSED, 0); + + if (targetSpecies != SPECIES_NONE) + { + SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(mon); + } + } + } +} diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index acf3d4b91f9b..d7c0bb343c5e 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -428,35 +428,6 @@ static const u8 sBackAnimationIds[] = [(BACK_ANIM_SHAKE_GLOW_BLUE - 1) * 3] = ANIM_SHAKE_GLOW_BLUE_FAST, ANIM_SHAKE_GLOW_BLUE, ANIM_SHAKE_GLOW_BLUE_SLOW, }; -static const u8 sBackAnimNatureModTable[NUM_NATURES] = -{ - [NATURE_HARDY] = 0, - [NATURE_LONELY] = 2, - [NATURE_BRAVE] = 0, - [NATURE_ADAMANT] = 0, - [NATURE_NAUGHTY] = 0, - [NATURE_BOLD] = 1, - [NATURE_DOCILE] = 1, - [NATURE_RELAXED] = 1, - [NATURE_IMPISH] = 0, - [NATURE_LAX] = 1, - [NATURE_TIMID] = 2, - [NATURE_HASTY] = 0, - [NATURE_SERIOUS] = 1, - [NATURE_JOLLY] = 0, - [NATURE_NAIVE] = 0, - [NATURE_MODEST] = 2, - [NATURE_MILD] = 2, - [NATURE_QUIET] = 2, - [NATURE_BASHFUL] = 2, - [NATURE_RASH] = 1, - [NATURE_CALM] = 1, - [NATURE_GENTLE] = 2, - [NATURE_SASSY] = 1, - [NATURE_CAREFUL] = 2, - [NATURE_QUIRKY] = 1, -}; - static const union AffineAnimCmd sMonAffineAnim_0[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), @@ -579,7 +550,7 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet) nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]); // * 3 below because each back anim has 3 variants depending on nature - animId = 3 * backAnimSet + sBackAnimNatureModTable[nature]; + animId = 3 * backAnimSet + gNaturesInfo[nature].backAnim; gTasks[taskId].tAnimId = sBackAnimationIds[animId]; } diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index d7f9e24029e2..639f24327a77 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -2,7 +2,7 @@ #include "graphics.h" #include "mail.h" #include "palette.h" -#include "pokemon_debug.h" +#include "pokemon_sprite_visualizer.h" #include "pokemon_icon.h" #include "sprite.h" #include "data.h" diff --git a/src/pokemon_debug.c b/src/pokemon_sprite_visualizer.c similarity index 89% rename from src/pokemon_debug.c rename to src/pokemon_sprite_visualizer.c index 3f2291141744..c83716aeda74 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_sprite_visualizer.c @@ -8,6 +8,7 @@ #include "constants/songs.h" #include "data.h" #include "decompress.h" +#include "event_object_movement.h" #include "field_weather.h" #include "gpu_regs.h" #include "graphics.h" @@ -24,7 +25,7 @@ #include "pokedex.h" #include "pokemon.h" #include "pokemon_animation.h" -#include "pokemon_debug.h" +#include "pokemon_sprite_visualizer.h" #include "pokemon_icon.h" #include "reset_rtc_screen.h" #include "scanline_effect.h" @@ -38,8 +39,9 @@ #include "trainer_pokemon_sprites.h" #include "constants/items.h" +#include "constants/event_objects.h" -#if DEBUG_POKEMON_MENU == TRUE +#if DEBUG_POKEMON_SPRITE_VISUALIZER == TRUE extern const struct BattleBackground sBattleTerrainTable[]; extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; @@ -47,13 +49,44 @@ extern const struct SpritePalette sSpritePalettes_HealthBoxHealthBar[2]; extern const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] ; static const u16 sBgColor[] = {RGB_WHITE}; -static struct PokemonDebugMenu *GetStructPtr(u8 taskId) +static struct PokemonSpriteVisualizer *GetStructPtr(u8 taskId) { u8 *taskDataPtr = (u8 *)(&gTasks[taskId].data[0]); - return (struct PokemonDebugMenu*)(T1_READ_PTR(taskDataPtr)); + return (struct PokemonSpriteVisualizer*)(T1_READ_PTR(taskDataPtr)); } +static const union AnimCmd sAnim_Follower_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(2, 30), + ANIMCMD_FRAME(3, 30), + ANIMCMD_FRAME(2, 30), + ANIMCMD_FRAME(3, 30), + ANIMCMD_FRAME(2, 10), + ANIMCMD_FRAME(4, 30), + ANIMCMD_FRAME(5, 30), + ANIMCMD_FRAME(4, 30), + ANIMCMD_FRAME(5, 30), + ANIMCMD_FRAME(4, 10), + ANIMCMD_FRAME(4, 30, .hFlip = TRUE), + ANIMCMD_FRAME(5, 30, .hFlip = TRUE), + ANIMCMD_FRAME(4, 30, .hFlip = TRUE), + ANIMCMD_FRAME(5, 30, .hFlip = TRUE), + ANIMCMD_FRAME(4, 10, .hFlip = TRUE), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_Follower[] = +{ + sAnim_GeneralFrame0, + sAnim_Follower_1, +}; + //BgTemplates static const struct BgTemplate sBgTemplates[] = { @@ -96,7 +129,7 @@ static const struct BgTemplate sBgTemplates[] = }; //WindowTemplates -static const struct WindowTemplate sPokemonDebugWindowTemplate[] = +static const struct WindowTemplate sPokemonSpriteVisualizerWindowTemplate[] = { [WIN_NAME_NUMBERS] = { .bg = 0, @@ -365,16 +398,16 @@ const u8 gBattleBackgroundTerrainNames[][26] = [BATTLE_TERRAIN_PLAIN] = _("NORMAL - PLAIN "), }; //Function declarations -static void PrintDigitChars(struct PokemonDebugMenu *data); -static void SetUpModifyArrows(struct PokemonDebugMenu *data); -static void UpdateBattlerValue(struct PokemonDebugMenu *data); +static void PrintDigitChars(struct PokemonSpriteVisualizer *data); +static void SetUpModifyArrows(struct PokemonSpriteVisualizer *data); +static void UpdateBattlerValue(struct PokemonSpriteVisualizer *data); static void ValueToCharDigits(u8 *charDigits, u32 newValue, u8 maxDigits); -static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 moveUp); -static void CB2_Debug_Runner(void); -static void ResetBGs_Debug_Menu(u16); -static void Handle_Input_Debug_Pokemon(u8); -static void ReloadPokemonSprites(struct PokemonDebugMenu *data); -static void Exit_Debug_Pokemon(u8); +static bool32 TryMoveDigit(struct PokemonSpriteVisualizerModifyArrows *modArrows, bool32 moveUp); +static void CB2_PokemonSpriteVisualizerRunner(void); +static void ResetBGs_PokemonSpriteVisualizer(u16); +static void HandleInput_PokemonSpriteVisualizer(u8); +static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data); +static void Exit_PokemonSpriteVisualizer(u8); //Text handling functions static void UNUSED PadString(const u8 *src, u8 *dst) @@ -390,7 +423,7 @@ static void UNUSED PadString(const u8 *src, u8 *dst) dst[i] = EOS; } -static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) +static void PrintInstructionsOnWindow(struct PokemonSpriteVisualizer *data) { u8 fontId = 0; u8 x = 2; @@ -470,7 +503,7 @@ static void SetStructPtr(u8 taskId, void *ptr) //Digit and arrow functions #define VAL_U16 0 -static void PrintDigitChars(struct PokemonDebugMenu *data) +static void PrintDigitChars(struct PokemonSpriteVisualizer *data) { s32 i; u16 species = data->modifyArrows.currValue; @@ -539,7 +572,7 @@ static void ValueToCharDigits(u8 *charDigits, u32 newValue, u8 maxDigits) charDigits[i] = valueDigits[i] + CHAR_0; } -static void SetArrowInvisibility(struct PokemonDebugMenu *data) +static void SetArrowInvisibility(struct PokemonSpriteVisualizer *data) { switch (data->currentSubmenu) { @@ -564,7 +597,7 @@ static void SetArrowInvisibility(struct PokemonDebugMenu *data) } } -static void SetUpModifyArrows(struct PokemonDebugMenu *data) +static void SetUpModifyArrows(struct PokemonSpriteVisualizer *data) { LoadSpritePalette(&gSpritePalette_Arrow); data->modifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, MODIFY_DIGITS_ARROW_X, MODIFY_DIGITS_ARROW1_Y, 0); @@ -582,7 +615,7 @@ static void SetUpModifyArrows(struct PokemonDebugMenu *data) ValueToCharDigits(data->modifyArrows.charDigits, data->modifyArrows.currValue, data->modifyArrows.maxDigits); } -static void SetUpOptionArrows(struct PokemonDebugMenu *data) +static void SetUpOptionArrows(struct PokemonSpriteVisualizer *data) { LoadSpritePalette(&gSpritePalette_Arrow); data->optionArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, OPTIONS_ARROW_1_X, OPTIONS_ARROW_Y, 0); @@ -593,7 +626,7 @@ static void SetUpOptionArrows(struct PokemonDebugMenu *data) gSprites[data->optionArrows.arrowSpriteId[0]].invisible = TRUE; } -static void SetUpYPosModifyArrows(struct PokemonDebugMenu *data) +static void SetUpYPosModifyArrows(struct PokemonSpriteVisualizer *data) { LoadSpritePalette(&gSpritePalette_Arrow); data->yPosModifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, OPTIONS_ARROW_1_X, OPTIONS_ARROW_Y, 0); @@ -604,7 +637,7 @@ static void SetUpYPosModifyArrows(struct PokemonDebugMenu *data) gSprites[data->yPosModifyArrows.arrowSpriteId[0]].invisible = TRUE; } -static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 moveUp) +static bool32 TryMoveDigit(struct PokemonSpriteVisualizerModifyArrows *modArrows, bool32 moveUp) { s32 i; u8 charDigits[MODIFY_DIGITS_MAX]; @@ -668,7 +701,7 @@ static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 mo } } -static void UpdateBattlerValue(struct PokemonDebugMenu *data) +static void UpdateBattlerValue(struct PokemonSpriteVisualizer *data) { switch (data->modifyArrows.typeOfVal) { @@ -678,59 +711,17 @@ static void UpdateBattlerValue(struct PokemonDebugMenu *data) } } -//Sprite functions -static const u32 *GetMonSpritePalStructCustom(u16 species, bool8 isFemale, bool8 isShiny) -{ - if (isShiny) - { - if (gSpeciesInfo[species].shinyPaletteFemale != NULL && isFemale) - return gSpeciesInfo[species].shinyPaletteFemale; - else if (gSpeciesInfo[species].shinyPalette != NULL) - return gSpeciesInfo[species].shinyPalette; - else - return gSpeciesInfo[SPECIES_NONE].shinyPalette; - } - else - { - if (gSpeciesInfo[species].paletteFemale != NULL && isFemale) - return gSpeciesInfo[species].paletteFemale; - else if (gSpeciesInfo[species].palette != NULL) - return gSpeciesInfo[species].palette; - else - return gSpeciesInfo[SPECIES_NONE].palette; - } -} - static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bool8 isShiny, u8 battlerId) { - const void *lzPaletteData; - u16 paletteOffset = 0x100 + battlerId * 16;; - - if (isShiny) - { - if (gSpeciesInfo[species].shinyPaletteFemale != NULL && isFemale) - lzPaletteData = gSpeciesInfo[species].shinyPaletteFemale; - else if (gSpeciesInfo[species].shinyPalette != NULL) - lzPaletteData = gSpeciesInfo[species].shinyPalette; - else - lzPaletteData = gSpeciesInfo[SPECIES_NONE].shinyPalette; - } - else - { - if (gSpeciesInfo[species].paletteFemale != NULL && isFemale) - lzPaletteData = gSpeciesInfo[species].paletteFemale; - else if (gSpeciesInfo[species].palette != NULL) - lzPaletteData = gSpeciesInfo[species].palette; - else - lzPaletteData = gSpeciesInfo[SPECIES_NONE].palette; - } + const u32 *lzPaletteData = GetMonSpritePalFromSpecies(species, isShiny, isFemale); + u16 paletteOffset = OBJ_PLTT_ID(battlerId); LZDecompressWram(lzPaletteData, gDecompressionBuffer); - LoadPalette(gDecompressionBuffer, paletteOffset, 0x20); - LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20); + LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); + LoadPalette(gDecompressionBuffer, BG_PLTT_ID(8) + BG_PLTT_ID(battlerId), PLTT_SIZE_4BPP); } -static void SetConstSpriteValues(struct PokemonDebugMenu *data) +static void SetConstSpriteValues(struct PokemonSpriteVisualizer *data) { u16 species = data->currentmonId; data->constSpriteValues.frontPicCoords = gSpeciesInfo[species].frontPicYOffset; @@ -738,7 +729,7 @@ static void SetConstSpriteValues(struct PokemonDebugMenu *data) data->constSpriteValues.backPicCoords = gSpeciesInfo[species].backPicYOffset; } -static void ResetOffsetSpriteValues(struct PokemonDebugMenu *data) +static void ResetOffsetSpriteValues(struct PokemonSpriteVisualizer *data) { data->offsetsSpriteValues.offset_back_picCoords = 0; data->offsetsSpriteValues.offset_front_picCoords = 0; @@ -766,7 +757,7 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off return y; } -static void UpdateShadowSpriteInvisible(struct PokemonDebugMenu *data) +static void UpdateShadowSpriteInvisible(struct PokemonSpriteVisualizer *data) { if (data->constSpriteValues.frontElevation + data->offsetsSpriteValues.offset_front_elevation == 0) gSprites[data->frontShadowSpriteId].invisible = TRUE; @@ -783,7 +774,36 @@ static void SpriteCB_EnemyShadowCustom(struct Sprite *shadowSprite) shadowSprite->x2 = battlerSprite->x2; } -static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, u16 species) +static void SpriteCB_Follower(struct Sprite *sprite) +{ + if (sprite->animDelayCounter == 0) + { + sprite->animDelayCounter = 60; + switch (sprite->animNum) + { + default: + case 0: + case 1: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH)); + break; + case 2: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST)); + break; + case 3: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST)); + break; + case 4: + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH)); + break; + } + } + else + { + sprite->animDelayCounter--; + } +} + +static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonSpriteVisualizer *data, u16 species) { u8 x, y; bool8 invisible = FALSE; @@ -883,7 +903,7 @@ static void LoadBattleBg(u8 battleBgType, u8 battleTerrain) } static void PrintBattleBgName(u8 taskId) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); u8 fontId = 0; u8 text[30+1]; @@ -895,7 +915,7 @@ static void PrintBattleBgName(u8 taskId) } static void UpdateBattleBg(u8 taskId, bool8 increment) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); if (data->battleBgType == MAP_BATTLE_SCENE_NORMAL) { @@ -951,7 +971,7 @@ static void UpdateBattleBg(u8 taskId, bool8 increment) // Main functions static void UpdateMonAnimNames(u8 taskId) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); u8 frontAnim = data->animIdFront; u8 backAnim = data->animIdBack; u8 text[34]; @@ -974,7 +994,7 @@ static void UpdateMonAnimNames(u8 taskId) PrintBattleBgName(taskId); } -static void UpdateYPosOffsetText(struct PokemonDebugMenu *data) +static void UpdateYPosOffsetText(struct PokemonSpriteVisualizer *data) { u8 text[34]; u8 fontId = 0; @@ -1025,12 +1045,12 @@ static void UpdateYPosOffsetText(struct PokemonDebugMenu *data) AddTextPrinterParameterized(WIN_BOTTOM_RIGHT, fontId, text, x_new_val, y, 0, NULL); } -static void ResetPokemonDebugWindows(void) +static void ResetPokemonSpriteVisualizerWindows(void) { u8 i; FreeAllWindowBuffers(); - InitWindows(sPokemonDebugWindowTemplate); + InitWindows(sPokemonSpriteVisualizerWindowTemplate); for (i = 0; i < WIN_END + 1; i++) { @@ -1043,11 +1063,11 @@ static void ResetPokemonDebugWindows(void) #define MALE_PERSONALITY 0xFE #define FEMALE_PERSONALITY 0X0 -void CB2_Debug_Pokemon(void) +void CB2_Pokemon_Sprite_Visualizer(void) { u8 taskId; const u32 *palette; - struct PokemonDebugMenu *data; + struct PokemonSpriteVisualizer *data; u16 species; s16 offset_y; u8 front_x = sBattlerCoords[0][1].x; @@ -1059,7 +1079,7 @@ void CB2_Debug_Pokemon(void) default: SetVBlankCallback(NULL); FreeMonSpritesGfx(); - ResetBGs_Debug_Menu(0); + ResetBGs_PokemonSpriteVisualizer(0); DmaFillLarge16(3, 0, (u8 *)VRAM, VRAM_SIZE, 0x1000) DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); @@ -1083,7 +1103,7 @@ void CB2_Debug_Pokemon(void) gMain.state++; break; case 2: - ResetPokemonDebugWindows(); + ResetPokemonSpriteVisualizerWindows(); gMain.state++; break; case 3: @@ -1099,9 +1119,9 @@ void CB2_Debug_Pokemon(void) ShowBg(3); //input task handler - taskId = CreateTask(Handle_Input_Debug_Pokemon, 0); + taskId = CreateTask(HandleInput_PokemonSpriteVisualizer, 0); - data = AllocZeroed(sizeof(struct PokemonDebugMenu)); + data = AllocZeroed(sizeof(struct PokemonSpriteVisualizer)); SetStructPtr(taskId, data); data->currentmonId = SPECIES_BULBASAUR; @@ -1111,7 +1131,7 @@ void CB2_Debug_Pokemon(void) PrintInstructionsOnWindow(data); //Palettes - palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); + palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); LoadCompressedSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); @@ -1133,15 +1153,20 @@ void CB2_Debug_Pokemon(void) BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 4); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gSpeciesInfo[species].backPicYOffset; - data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, DEBUG_MON_BACK_X, DEBUG_MON_BACK_Y + offset_y, 0); + data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, VISUALIZER_MON_BACK_X, VISUALIZER_MON_BACK_Y + offset_y, 0); gSprites[data->backspriteId].oam.paletteNum = 4; gSprites[data->backspriteId].callback = SpriteCallbackDummy; gSprites[data->backspriteId].oam.priority = 0; //Icon Sprite - data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, VISUALIZER_ICON_X, VISUALIZER_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); gSprites[data->iconspriteId].oam.priority = 0; + //Follower Sprite + data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species, SpriteCB_Follower, VISUALIZER_FOLLOWER_X, VISUALIZER_FOLLOWER_Y, 0); + gSprites[data->followerspriteId].oam.priority = 0; + gSprites[data->followerspriteId].anims = sAnims_Follower; + //Modify Arrows SetUpModifyArrows(data); PrintDigitChars(data); @@ -1169,13 +1194,13 @@ void CB2_Debug_Pokemon(void) case 4: EnableInterrupts(1); SetVBlankCallback(VBlankCB); - SetMainCallback2(CB2_Debug_Runner); + SetMainCallback2(CB2_PokemonSpriteVisualizerRunner); m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80); break; } } -static void CB2_Debug_Runner(void) +static void CB2_PokemonSpriteVisualizerRunner(void) { RunTasks(); AnimateSprites(); @@ -1183,7 +1208,7 @@ static void CB2_Debug_Runner(void) UpdatePaletteFade(); } -static void ResetBGs_Debug_Menu(u16 a) +static void ResetBGs_PokemonSpriteVisualizer(u16 a) { if (!(a & DISPCNT_BG0_ON)) { @@ -1222,11 +1247,11 @@ static void ResetBGs_Debug_Menu(u16 a) } } -static void ApplyOffsetSpriteValues(struct PokemonDebugMenu *data) +static void ApplyOffsetSpriteValues(struct PokemonSpriteVisualizer *data) { u16 species = data->currentmonId; //Back - gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gSpeciesInfo[species].backPicYOffset + data->offsetsSpriteValues.offset_back_picCoords; + gSprites[data->backspriteId].y = VISUALIZER_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); @@ -1236,7 +1261,7 @@ static void ApplyOffsetSpriteValues(struct PokemonDebugMenu *data) static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); u8 option = data->submenuYpos[1]; switch (option) @@ -1281,7 +1306,7 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment) case 3: if (GetSpeciesFormTable(data->currentmonId) != NULL) { - struct PokemonDebugModifyArrows *modArrows = &data->modifyArrows; + struct PokemonSpriteVisualizerModifyArrows *modArrows = &data->modifyArrows; u8 formId = GetFormIdFromFormSpeciesId(data->currentmonId); const u16 *formTable = GetSpeciesFormTable(data->currentmonId); if (increment) @@ -1324,7 +1349,7 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment) static void UpdateSubmenuTwoOptionValue(u8 taskId, bool8 increment) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); u16 species = data->currentmonId; u8 option = data->submenuYpos[2]; s8 offset; @@ -1349,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 + gSpeciesInfo[species].backPicYOffset + offset; + gSprites[data->backspriteId].y = VISUALIZER_MON_BACK_Y + gSpeciesInfo[species].backPicYOffset + offset; break; case 1: //Front picCoords offset = data->offsetsSpriteValues.offset_front_picCoords; @@ -1420,9 +1445,9 @@ static void Task_AnimateAfterDelay(u8 taskId) } } -static void Handle_Input_Debug_Pokemon(u8 taskId) +static void HandleInput_PokemonSpriteVisualizer(u8 taskId) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); struct Sprite *Frontsprite = &gSprites[data->frontspriteId]; struct Sprite *Backsprite = &gSprites[data->backspriteId]; @@ -1483,7 +1508,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) else if (JOY_NEW(B_BUTTON)) { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); - gTasks[taskId].func = Exit_Debug_Pokemon; + gTasks[taskId].func = Exit_PokemonSpriteVisualizer; PlaySE(SE_PC_OFF); } else if (JOY_NEW(DPAD_DOWN)) @@ -1637,7 +1662,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) #undef sDelay #undef sAnimId -static void ReloadPokemonSprites(struct PokemonDebugMenu *data) +static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data) { const u32 *palette; u16 species = data->currentmonId; @@ -1648,6 +1673,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) DestroySprite(&gSprites[data->frontspriteId]); DestroySprite(&gSprites[data->backspriteId]); DestroySprite(&gSprites[data->iconspriteId]); + DestroySprite(&gSprites[data->followerspriteId]); FreeMonSpritesGfx(); ResetSpriteData(); @@ -1663,7 +1689,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) PrintInstructionsOnWindow(data); //Palettes - palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); + palette = GetMonSpritePalFromSpecies(species, data->isShiny, data->isFemale); LoadCompressedSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->spritesGfx[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); @@ -1683,15 +1709,24 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gSpeciesInfo[species].backPicYOffset; - data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, DEBUG_MON_BACK_X, DEBUG_MON_BACK_Y + offset_y, 0); + data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, VISUALIZER_MON_BACK_X, VISUALIZER_MON_BACK_Y + offset_y, 0); gSprites[data->backspriteId].oam.paletteNum = 5; gSprites[data->backspriteId].callback = SpriteCallbackDummy; gSprites[data->backspriteId].oam.priority = 0; //Icon Sprite - data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); + data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, VISUALIZER_ICON_X, VISUALIZER_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); gSprites[data->iconspriteId].oam.priority = 0; + //Follower Sprite + data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_GFX_MON_BASE + species + (data->isShiny ? SPECIES_SHINY_TAG : 0), + SpriteCB_Follower, + VISUALIZER_FOLLOWER_X, + VISUALIZER_FOLLOWER_Y, + 0); + gSprites[data->followerspriteId].oam.priority = 0; + gSprites[data->followerspriteId].anims = sAnims_Follower; + //Modify Arrows LoadSpritePalette(&gSpritePalette_Arrow); data->modifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, MODIFY_DIGITS_ARROW_X + (data->modifyArrows.currentDigit * 6), MODIFY_DIGITS_ARROW1_Y, 0); @@ -1716,11 +1751,11 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); } -static void Exit_Debug_Pokemon(u8 taskId) +static void Exit_PokemonSpriteVisualizer(u8 taskId) { if (!gPaletteFade.active) { - struct PokemonDebugMenu *data = GetStructPtr(taskId); + struct PokemonSpriteVisualizer *data = GetStructPtr(taskId); Free(data); FreeMonSpritesGfx(); DestroyTask(taskId); diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 1bcc89244c14..fe65df011485 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -6,6 +6,7 @@ #include "dma3.h" #include "dynamic_placeholder_text_util.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_screen_effect.h" #include "field_weather.h" #include "fldeff_misc.h" @@ -53,9 +54,19 @@ // PC main menu options enum { +#if OW_PC_MOVE_ORDER <= GEN_3 OPTION_WITHDRAW, OPTION_DEPOSIT, OPTION_MOVE_MONS, +#elif OW_PC_MOVE_ORDER >= GEN_4 && OW_PC_MOVE_ORDER <= GEN_6_XY + OPTION_DEPOSIT, + OPTION_WITHDRAW, + OPTION_MOVE_MONS, +#elif OW_PC_MOVE_ORDER >= GEN_7 + OPTION_MOVE_MONS, + OPTION_DEPOSIT, + OPTION_WITHDRAW, +#endif OPTION_MOVE_ITEMS, OPTION_EXIT, OPTIONS_COUNT @@ -717,8 +728,6 @@ static void MultiMove_DeselectColumn(u8, u8, u8); // Move Items mode static bool32 IsItemIconAtPosition(u8, u8); -static const u32 *GetItemIconPic(u16); -static const u32 *GetItemIconPalette(u16); static u8 GetNewItemIconIdx(void); static void SetItemIconPosition(u8, u8, u8); static void LoadItemIconGfx(u8, const u32 *, const u32 *); @@ -1428,9 +1437,9 @@ s16 GetFirstFreeBoxSpot(u8 boxId) return -1; // all spots are taken } -u8 CountPartyNonEggMons(void) +u32 CountPartyNonEggMons(void) { - u16 i, count; + u32 i, count; for (i = 0, count = 0; i < PARTY_SIZE; i++) { @@ -4019,16 +4028,16 @@ static void PrintDisplayMonInfo(void) FillWindowPixelBuffer(WIN_DISPLAY_INFO, PIXEL_FILL(1)); if (sStorage->boxOption != OPTION_MOVE_ITEMS) { - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_NORMAL, sStorage->displayMonNameText, 6, 0, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 15, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonNameText, FONT_NORMAL, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 6), sStorage->displayMonNameText, 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonNameText, FONT_SHORT, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 12), sStorage->displayMonSpeciesName, 6, 15, TEXT_SKIP_DRAW, NULL); AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 29, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SMALL, sStorage->displayMonItemName, 6, 43, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonItemName, FONT_SMALL, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 6), sStorage->displayMonItemName, 6, 43, TEXT_SKIP_DRAW, NULL); } else { - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SMALL, sStorage->displayMonItemName, 6, 0, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_NORMAL, sStorage->displayMonNameText, 6, 13, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonSpeciesName, 6, 28, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonItemName, FONT_SMALL, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 6), sStorage->displayMonItemName, 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonNameText, FONT_NORMAL, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 6), sStorage->displayMonNameText, 6, 13, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(WIN_DISPLAY_INFO, GetFontIdToFit(sStorage->displayMonSpeciesName, FONT_SHORT, 0, WindowWidthPx(WIN_DISPLAY_INFO) - 12), sStorage->displayMonSpeciesName, 6, 28, TEXT_SKIP_DRAW, NULL); AddTextPrinterParameterized(WIN_DISPLAY_INFO, FONT_SHORT, sStorage->displayMonGenderLvlText, 10, 42, TEXT_SKIP_DRAW, NULL); } @@ -6404,9 +6413,15 @@ static void RefreshDisplayMon(void) static void SetMovingMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) + { sStorage->movingMon = gPlayerParty[sCursorPosition]; + if (&gPlayerParty[sCursorPosition] == GetFirstLiveMon()) + gFollowerSteps = 0; + } else + { BoxMonAtToMon(boxId, position, &sStorage->movingMon); + } PurgeMonOrBoxMon(boxId, position); sMovingMonOrigBoxId = boxId; @@ -6419,9 +6434,15 @@ static void SetPlacedMonData(u8 boxId, u8 position) HealPokemon(&sStorage->movingMon); if (boxId == TOTAL_BOXES_COUNT) + { gPlayerParty[position] = sStorage->movingMon; + if (&gPlayerParty[position] == GetFirstLiveMon()) + gFollowerSteps = 0; + } else + { SetBoxMonAt(boxId, position, &sStorage->movingMon.box); + } } static void PurgeMonOrBoxMon(u8 boxId, u8 position) @@ -6509,6 +6530,7 @@ static bool8 TryHideReleaseMon(void) static void ReleaseMon(void) { u8 boxId; + u16 item = ITEM_NONE; DestroyReleaseMonIcon(); if (sIsMonBeingMoved) @@ -6518,11 +6540,21 @@ static void ReleaseMon(void) else { if (sCursorArea == CURSOR_AREA_IN_PARTY) + { boxId = TOTAL_BOXES_COUNT; + if (OW_PC_RELEASE_ITEM >= GEN_8) + item = GetMonData(&gPlayerParty[sCursorPosition], MON_DATA_HELD_ITEM); + } else + { boxId = StorageGetCurrentBox(); + if (OW_PC_RELEASE_ITEM >= GEN_8) + item = GetBoxMonDataAt(boxId, sCursorPosition, MON_DATA_HELD_ITEM); + } PurgeMonOrBoxMon(boxId, sCursorPosition); + if (item != ITEM_NONE) + AddBagItem(item, 1); } TryRefreshDisplayMon(); } @@ -9253,16 +9285,6 @@ static void SetItemIconActive(u8 id, bool8 active) sStorage->itemIcons[id].sprite->invisible = (active == FALSE); } -static const u32 *GetItemIconPic(u16 itemId) -{ - return GetItemIconPicOrPalette(itemId, 0); -} - -static const u32 *GetItemIconPalette(u16 itemId) -{ - return GetItemIconPicOrPalette(itemId, 1); -} - static void PrintItemDescription(void) { const u8 *description; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index d47d5d7f2719..e81ef0b0669f 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -28,7 +28,7 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" -#include "pokemon_debug.h" +#include "pokemon_sprite_visualizer.h" #include "pokemon_storage_system.h" #include "pokemon_summary_screen.h" #include "region_map.h" @@ -740,9 +740,6 @@ static const u8 sMovesPPLayout[] = _("{PP}{DYNAMIC 0}/{DYNAMIC 1}"); #define TAG_MON_MARKINGS 30003 #define TAG_CATEGORY_ICONS 30004 -static const u16 sCategoryIcons_Pal[] = INCBIN_U16("graphics/interface/category_icons.gbapal"); -static const u32 sCategoryIcons_Gfx[] = INCBIN_U32("graphics/interface/category_icons.4bpp.lz"); - static const struct OamData sOamData_CategoryIcons = { .size = SPRITE_SIZE(16x16), @@ -750,16 +747,16 @@ static const struct OamData sOamData_CategoryIcons = .priority = 0, }; -static const struct CompressedSpriteSheet sSpriteSheet_CategoryIcons = +const struct CompressedSpriteSheet gSpriteSheet_CategoryIcons = { - .data = sCategoryIcons_Gfx, + .data = gCategoryIcons_Gfx, .size = 16*16*3/2, .tag = TAG_CATEGORY_ICONS, }; -static const struct SpritePalette sSpritePal_CategoryIcons = +const struct SpritePalette gSpritePal_CategoryIcons = { - .data = sCategoryIcons_Pal, + .data = gCategoryIcons_Pal, .tag = TAG_CATEGORY_ICONS }; @@ -788,7 +785,7 @@ static const union AnimCmd *const sSpriteAnimTable_CategoryIcons[] = sSpriteAnim_CategoryIcon2, }; -static const struct SpriteTemplate sSpriteTemplate_CategoryIcons = +const struct SpriteTemplate gSpriteTemplate_CategoryIcons = { .tileTag = TAG_CATEGORY_ICONS, .paletteTag = TAG_CATEGORY_ICONS, @@ -815,6 +812,10 @@ static const struct OamData sOamData_MoveTypes = .paletteNum = 0, .affineParam = 0, }; +static const union AnimCmd sSpriteAnim_TypeNone[] = { + ANIMCMD_FRAME(TYPE_NONE * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_TypeNormal[] = { ANIMCMD_FRAME(TYPE_NORMAL * 8, 0, FALSE, FALSE), ANIMCMD_END @@ -891,6 +892,10 @@ static const union AnimCmd sSpriteAnim_TypeFairy[] = { ANIMCMD_FRAME(TYPE_FAIRY * 8, 0, FALSE, FALSE), ANIMCMD_END }; +static const union AnimCmd sSpriteAnim_TypeStellar[] = { + ANIMCMD_FRAME(TYPE_STELLAR * 8, 0, FALSE, FALSE), + ANIMCMD_END +}; static const union AnimCmd sSpriteAnim_CategoryCool[] = { ANIMCMD_FRAME((CONTEST_CATEGORY_COOL + NUMBER_OF_MON_TYPES) * 8, 0, FALSE, FALSE), ANIMCMD_END @@ -912,30 +917,32 @@ static const union AnimCmd sSpriteAnim_CategoryTough[] = { ANIMCMD_END }; static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = { - sSpriteAnim_TypeNormal, - sSpriteAnim_TypeFighting, - sSpriteAnim_TypeFlying, - sSpriteAnim_TypePoison, - sSpriteAnim_TypeGround, - sSpriteAnim_TypeRock, - sSpriteAnim_TypeBug, - sSpriteAnim_TypeGhost, - sSpriteAnim_TypeSteel, - sSpriteAnim_TypeMystery, - sSpriteAnim_TypeFire, - sSpriteAnim_TypeWater, - sSpriteAnim_TypeGrass, - sSpriteAnim_TypeElectric, - sSpriteAnim_TypePsychic, - sSpriteAnim_TypeIce, - sSpriteAnim_TypeDragon, - sSpriteAnim_TypeDark, - sSpriteAnim_TypeFairy, - sSpriteAnim_CategoryCool, - sSpriteAnim_CategoryBeauty, - sSpriteAnim_CategoryCute, - sSpriteAnim_CategorySmart, - sSpriteAnim_CategoryTough, + [TYPE_NONE] = sSpriteAnim_TypeNone, + [TYPE_NORMAL] = sSpriteAnim_TypeNormal, + [TYPE_FIGHTING] = sSpriteAnim_TypeFighting, + [TYPE_FLYING] = sSpriteAnim_TypeFlying, + [TYPE_POISON] = sSpriteAnim_TypePoison, + [TYPE_GROUND] = sSpriteAnim_TypeGround, + [TYPE_ROCK] = sSpriteAnim_TypeRock, + [TYPE_BUG] = sSpriteAnim_TypeBug, + [TYPE_GHOST] = sSpriteAnim_TypeGhost, + [TYPE_STEEL] = sSpriteAnim_TypeSteel, + [TYPE_MYSTERY] = sSpriteAnim_TypeMystery, + [TYPE_FIRE] = sSpriteAnim_TypeFire, + [TYPE_WATER] = sSpriteAnim_TypeWater, + [TYPE_GRASS] = sSpriteAnim_TypeGrass, + [TYPE_ELECTRIC] = sSpriteAnim_TypeElectric, + [TYPE_PSYCHIC] = sSpriteAnim_TypePsychic, + [TYPE_ICE] = sSpriteAnim_TypeIce, + [TYPE_DRAGON] = sSpriteAnim_TypeDragon, + [TYPE_DARK] = sSpriteAnim_TypeDark, + [TYPE_FAIRY] = sSpriteAnim_TypeFairy, + [TYPE_STELLAR] = sSpriteAnim_TypeStellar, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = sSpriteAnim_CategoryCool, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = sSpriteAnim_CategoryBeauty, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = sSpriteAnim_CategoryCute, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_SMART] = sSpriteAnim_CategorySmart, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_TOUGH] = sSpriteAnim_CategoryTough, }; const struct CompressedSpriteSheet gSpriteSheet_MoveTypes = @@ -1137,7 +1144,7 @@ static const u16 sMarkings_Pal[] = INCBIN_U16("graphics/summary_screen/markings. static u8 ShowCategoryIcon(u32 category) { if (sMonSummaryScreen->categoryIconSpriteId == 0xFF) - sMonSummaryScreen->categoryIconSpriteId = CreateSprite(&sSpriteTemplate_CategoryIcons, 48, 129, 0); + sMonSummaryScreen->categoryIconSpriteId = CreateSprite(&gSpriteTemplate_CategoryIcons, 48, 129, 0); gSprites[sMonSummaryScreen->categoryIconSpriteId].invisible = FALSE; StartSpriteAnim(&gSprites[sMonSummaryScreen->categoryIconSpriteId], category); @@ -1432,8 +1439,8 @@ static bool8 DecompressGraphics(void) break; case 12: LoadCompressedPalette(gMoveTypes_Pal, OBJ_PLTT_ID(13), 3 * PLTT_SIZE_4BPP); - LoadCompressedSpriteSheet(&sSpriteSheet_CategoryIcons); - LoadSpritePalette(&sSpritePal_CategoryIcons); + LoadCompressedSpriteSheet(&gSpriteSheet_CategoryIcons); + LoadSpritePalette(&gSpritePal_CategoryIcons); sMonSummaryScreen->switchCounter = 0; return TRUE; } @@ -1633,10 +1640,10 @@ static void Task_HandleInput(u8 taskId) PlaySE(SE_SELECT); BeginCloseSummaryScreen(taskId); } - #if DEBUG_POKEMON_MENU == TRUE + #if DEBUG_POKEMON_SPRITE_VISUALIZER == TRUE else if (JOY_NEW(SELECT_BUTTON) && !gMain.inBattle) { - sMonSummaryScreen->callback = CB2_Debug_Pokemon; + sMonSummaryScreen->callback = CB2_Pokemon_Sprite_Visualizer; StopPokemonAnimations(); PlaySE(SE_SELECT); CloseSummaryScreen(taskId); @@ -2795,9 +2802,25 @@ static void ResetWindows(void) sMonSummaryScreen->windowIds[i] = WINDOW_NONE; } +static void PrintTextOnWindowWithFont(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId, u32 fontId) +{ + AddTextPrinterParameterized4(windowId, fontId, x, y, 0, lineSpacing, sTextColors[colorId], 0, string); +} + static void PrintTextOnWindow(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId) { - AddTextPrinterParameterized4(windowId, FONT_NORMAL, x, y, 0, lineSpacing, sTextColors[colorId], 0, string); + PrintTextOnWindowWithFont(windowId, string, x, y, lineSpacing, colorId, FONT_NORMAL); +} + +static void PrintTextOnWindowToFitPx(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId, u32 width) +{ + u32 fontId = GetFontIdToFit(string, FONT_NORMAL, 0, width); + PrintTextOnWindowWithFont(windowId, string, x, y, lineSpacing, colorId, fontId); +} + +static void PrintTextOnWindowToFit(u8 windowId, const u8 *string, u8 x, u8 y, u8 lineSpacing, u8 colorId) +{ + PrintTextOnWindowToFitPx(windowId, string, x, y, lineSpacing, colorId, WindowWidthPx(windowId)); } static void PrintMonInfo(void) @@ -2814,7 +2837,6 @@ static void PrintMonInfo(void) static void PrintNotEggInfo(void) { - u8 strArray[16]; struct Pokemon *mon = &sMonSummaryScreen->currentMon; struct PokeSummary *summary = &sMonSummaryScreen->summary; u16 dexNum = SpeciesToPokedexNum(summary->species); @@ -2850,10 +2872,9 @@ static void PrintNotEggInfo(void) StringAppend(gStringVar1, gStringVar2); PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gStringVar1, 24, 17, 0, 1); GetMonNickname(mon, gStringVar1); - PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1); - strArray[0] = CHAR_SLASH; - StringCopy(&strArray[1], &GetSpeciesName(summary->species2)[0]); - PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, strArray, 0, 1, 0, 1); + PrintTextOnWindowToFitPx(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1, WindowWidthPx(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME) - 9); + PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_Slash, 0, 1, 0, 1); + PrintTextOnWindowToFitPx(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, GetSpeciesName(summary->species2), 6, 1, 0, 1, WindowWidthPx(PSS_LABEL_WINDOW_PORTRAIT_SPECIES) - 9); PrintGenderSymbol(mon, summary->species2); PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME); PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); @@ -3242,7 +3263,7 @@ static void PrintMonTrainerMemo(void) static void BufferNatureString(void) { struct PokemonSummaryScreenData *sumStruct = sMonSummaryScreen; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNaturesInfo[sumStruct->summary.nature].name); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); } @@ -3415,6 +3436,7 @@ static void Task_PrintSkillsPage(u8 taskId) static void PrintHeldItemName(void) { const u8 *text; + u32 fontId; int x; if (sMonSummaryScreen->summary.item == ITEM_ENIGMA_BERRY_E_READER @@ -3433,8 +3455,9 @@ static void PrintHeldItemName(void) text = gStringVar1; } - x = GetStringCenterAlignXOffset(FONT_NORMAL, text, 72) + 6; - PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_HELD_ITEM), text, x, 1, 0, 0); + fontId = GetFontIdToFit(text, FONT_NORMAL, 0, WindowTemplateWidthPx(&sPageSkillsTemplate[PSS_DATA_WINDOW_SKILLS_HELD_ITEM]) - 8); + x = GetStringCenterAlignXOffset(fontId, text, 72) + 6; + PrintTextOnWindowWithFont(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_HELD_ITEM), text, x, 1, 0, 0, fontId); } static void PrintRibbonCount(void) @@ -3457,19 +3480,21 @@ 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 void BufferStat(u8 *dst, u8 statIndex, 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) + if (statIndex == 0 || !SUMMARY_SCREEN_NATURE_COLORS || gNaturesInfo[sMonSummaryScreen->summary.mintNature].statUp == gNaturesInfo[sMonSummaryScreen->summary.mintNature].statDown) txtPtr = StringCopy(dst, sTextNatureNeutral); - else if (natureMod > 0) + else if (statIndex == gNaturesInfo[sMonSummaryScreen->summary.mintNature].statUp) txtPtr = StringCopy(dst, sTextNatureUp); - else + else if (statIndex == gNaturesInfo[sMonSummaryScreen->summary.mintNature].statDown) txtPtr = StringCopy(dst, sTextNatureDown); + else + txtPtr = StringCopy(dst, sTextNatureNeutral); ConvertIntToDecimalStringN(txtPtr, stat, STR_CONV_MODE_RIGHT_ALIGN, n); DynamicPlaceholderTextUtil_SetPlaceholderPtr(strId, dst); @@ -3481,13 +3506,12 @@ static void BufferLeftColumnStats(void) u8 *maxHPString = Alloc(20); u8 *attackString = Alloc(20); u8 *defenseString = Alloc(20); - const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.mintNature]; DynamicPlaceholderTextUtil_Reset(); 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); + BufferStat(attackString, STAT_ATK, sMonSummaryScreen->summary.atk, 2, 7); + BufferStat(defenseString, STAT_DEF, sMonSummaryScreen->summary.def, 3, 7); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout); Free(currentHPString); @@ -3503,12 +3527,10 @@ static void PrintLeftColumnStats(void) static void BufferRightColumnStats(void) { - const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.mintNature]; - DynamicPlaceholderTextUtil_Reset(); - 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); + BufferStat(gStringVar1, STAT_SPATK, sMonSummaryScreen->summary.spatk, 0, 3); + BufferStat(gStringVar2, STAT_SPDEF, sMonSummaryScreen->summary.spdef, 1, 3); + BufferStat(gStringVar3, STAT_SPEED, sMonSummaryScreen->summary.speed, 2, 3); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout); } @@ -3618,7 +3640,7 @@ static void PrintMoveNameAndPP(u8 moveIndex) if (move != 0) { pp = CalculatePPWithBonus(move, summary->ppBonuses, moveIndex); - PrintTextOnWindow(moveNameWindowId, GetMoveName(move), 0, moveIndex * 16 + 1, 0, 1); + PrintTextOnWindowToFit(moveNameWindowId, GetMoveName(move), 0, moveIndex * 16 + 1, 0, 1); ConvertIntToDecimalStringN(gStringVar1, summary->pp[moveIndex], STR_CONV_MODE_RIGHT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, pp, STR_CONV_MODE_RIGHT_ALIGN, 2); DynamicPlaceholderTextUtil_Reset(); @@ -3786,9 +3808,9 @@ static void PrintNewMoveDetailsOrCancelText(void) u16 move = sMonSummaryScreen->newMove; if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) - PrintTextOnWindow(windowId1, GetMoveName(move), 0, 65, 0, 6); + PrintTextOnWindowToFit(windowId1, GetMoveName(move), 0, 65, 0, 6); else - PrintTextOnWindow(windowId1, GetMoveName(move), 0, 65, 0, 5); + PrintTextOnWindowToFit(windowId1, GetMoveName(move), 0, 65, 0, 5); ConvertIntToDecimalStringN(gStringVar1, gMovesInfo[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 2); DynamicPlaceholderTextUtil_Reset(); diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index 19cfe38b95d5..382ddde41324 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -372,6 +372,8 @@ static u8 *CopyConditionMonNameGender(u8 *str, u16 listId, bool8 skipPadding) while (*str_ != EOS) (str_++); + str_ = WrapFontIdToFit(str, str_, FONT_NORMAL, 57); + *(str_++) = EXT_CTRL_CODE_BEGIN; *(str_++) = EXT_CTRL_CODE_SKIP; *(str_++) = 60; diff --git a/src/pokenav_conditions_search_results.c b/src/pokenav_conditions_search_results.c index 24fe966dc329..9afb2bb2d9c5 100644 --- a/src/pokenav_conditions_search_results.c +++ b/src/pokenav_conditions_search_results.c @@ -692,8 +692,9 @@ static void BufferSearchMonListItem(struct PokenavMonListItem * item, u8 *dest) { u8 gender; u8 level; - u8 *s; + u8 *s, *end; const u8 *genderStr; + u32 fontId; // Mon is in party if (item->boxId == TOTAL_BOXES_COUNT) @@ -712,8 +713,6 @@ static void BufferSearchMonListItem(struct PokenavMonListItem * item, u8 *dest) GetBoxMonData(mon, MON_DATA_NICKNAME, gStringVar3); } - StringGet_Nickname(gStringVar3); - dest = GetStringClearToWidth(dest, FONT_NORMAL, gStringVar3, 60); switch (gender) { default: @@ -726,6 +725,11 @@ static void BufferSearchMonListItem(struct PokenavMonListItem * item, u8 *dest) genderStr = sText_FemaleSymbol; break; } + end = StringGet_Nickname(gStringVar3); + fontId = GetFontIdToFit(gStringVar3, FONT_NORMAL, 0, 60); + WrapFontIdToFit(gStringVar3, end, FONT_NORMAL, 60); + dest = GetStringClearToWidth(dest, fontId, gStringVar3, 60); + s = StringCopy(gStringVar1, genderStr); *s++ = CHAR_SLASH; *s++ = CHAR_EXTRA_SYMBOL; diff --git a/src/pokenav_ribbons_list.c b/src/pokenav_ribbons_list.c index 72783b0972d1..834dc926ad0a 100644 --- a/src/pokenav_ribbons_list.c +++ b/src/pokenav_ribbons_list.c @@ -699,9 +699,10 @@ static void BufferRibbonMonInfoText(struct PokenavListItem * listItem, u8 *dest) { u8 gender; u8 level; - u8 *s; + u8 *s, *end; const u8 *genderStr; struct PokenavMonListItem * item = (struct PokenavMonListItem *)listItem; + u32 fontId; // Mon is in party if (item->boxId == TOTAL_BOXES_COUNT) @@ -720,8 +721,6 @@ static void BufferRibbonMonInfoText(struct PokenavListItem * listItem, u8 *dest) GetBoxMonData(mon, MON_DATA_NICKNAME, gStringVar3); } - StringGet_Nickname(gStringVar3); - dest = GetStringClearToWidth(dest, FONT_NORMAL, gStringVar3, 60); switch (gender) { default: @@ -734,6 +733,10 @@ static void BufferRibbonMonInfoText(struct PokenavListItem * listItem, u8 *dest) genderStr = sText_FemaleSymbol; break; } + end = StringGet_Nickname(gStringVar3); + fontId = GetFontIdToFit(gStringVar3, FONT_NORMAL, 0, 60); + WrapFontIdToFit(gStringVar3, end, FONT_NORMAL, 60); + dest = GetStringClearToWidth(dest, fontId, gStringVar3, 60); s = StringCopy(gStringVar1, genderStr); *s++ = CHAR_SLASH; diff --git a/src/pokenav_ribbons_summary.c b/src/pokenav_ribbons_summary.c index 1ff55dc187c6..bba1c3600cb0 100644 --- a/src/pokenav_ribbons_summary.c +++ b/src/pokenav_ribbons_summary.c @@ -878,7 +878,6 @@ static void PrintRibbbonsSummaryMonInfo(struct Pokenav_RibbonsSummaryMenu *menu) FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); GetMonNicknameLevelGender(gStringVar3, &level, &gender); - AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar3, 0, 1, TEXT_SKIP_DRAW, NULL); switch (gender) { case MON_MALE: @@ -891,6 +890,7 @@ static void PrintRibbbonsSummaryMonInfo(struct Pokenav_RibbonsSummaryMenu *menu) genderTxt = sGenderlessIconString; break; } + AddTextPrinterParameterized(windowId, GetFontIdToFit(gStringVar3, FONT_NORMAL, 0, 60), gStringVar3, 0, 1, TEXT_SKIP_DRAW, NULL); txtPtr = StringCopy(gStringVar1, genderTxt); *(txtPtr++) = CHAR_SLASH; diff --git a/src/random.c b/src/random.c index 3ec3638fe190..9d43ae37408f 100644 --- a/src/random.c +++ b/src/random.c @@ -239,3 +239,22 @@ const void *RandomElementArrayDefault(enum RandomTag tag, const void *array, siz { return (const u8 *)array + size * RandomUniformDefault(tag, 0, count - 1); } + +// Returns a random index according to a list of weights +u8 RandomWeightedIndex(u8 *weights, u8 length) +{ + u32 i; + u16 randomValue; + u16 weightSum = 0; + for (i = 0; i < length; i++) + weightSum += weights[i]; + randomValue = weightSum > 0 ? Random() % weightSum : 0; + weightSum = 0; + for (i = 0; i < length; i++) + { + weightSum += weights[i]; + if (randomValue <= weightSum) + return i; + } + return 0; +} diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index 3264b22bdf08..b3e0276f1d4a 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -1,5 +1,6 @@ #include "global.h" #include "rayquaza_scene.h" +#include "event_object_movement.h" #include "sprite.h" #include "task.h" #include "graphics.h" @@ -15,6 +16,7 @@ #include "sound.h" #include "constants/songs.h" #include "constants/rgb.h" +#include "constants/event_objects.h" #include "random.h" /* @@ -1296,9 +1298,15 @@ void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void)) static void CB2_InitRayquazaScene(void) { + u32 i; SetVBlankHBlankCallbacksToNull(); ClearScheduledBgCopiesToVram(); ScanlineEffect_Stop(); + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].graphicsId == OBJ_EVENT_GFX_RAYQUAZA) + gObjectEvents[i].invisible = FALSE; + } FreeAllSpritePalettes(); ResetPaletteFade(); ResetSpriteData(); diff --git a/src/roamer.c b/src/roamer.c index daa70dcb9494..dc5977cc3164 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -14,9 +14,10 @@ enum MAP_NUM, // map number }; -#define ROAMER (&gSaveBlock1Ptr->roamer) -EWRAM_DATA static u8 sLocationHistory[3][2] = {0}; -EWRAM_DATA static u8 sRoamerLocation[2] = {0}; +#define ROAMER(index) (&gSaveBlock1Ptr->roamer[index]) +EWRAM_DATA static u8 sLocationHistory[ROAMER_COUNT][3][2] = {0}; +EWRAM_DATA static u8 sRoamerLocation[ROAMER_COUNT][2] = {0}; +EWRAM_DATA u8 gEncounteredRoamerIndex = 0; #define ___ MAP_NUM(UNDEFINED) // For empty spots in the location table @@ -61,122 +62,166 @@ static const u8 sRoamerLocations[][6] = #define NUM_LOCATION_SETS (ARRAY_COUNT(sRoamerLocations) - 1) #define NUM_LOCATIONS_PER_SET (ARRAY_COUNT(sRoamerLocations[0])) -void ClearRoamerData(void) +void DeactivateAllRoamers(void) { - memset(ROAMER, 0, sizeof(*ROAMER)); - ROAMER->species = SPECIES_LATIAS; + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) + SetRoamerInactive(i); } -void ClearRoamerLocationData(void) +static void ClearRoamerLocationHistory(u32 roamerIndex) { - u8 i; + u32 i; - for (i = 0; i < ARRAY_COUNT(sLocationHistory); i++) + for (i = 0; i < ARRAY_COUNT(sLocationHistory[roamerIndex]); i++) { - sLocationHistory[i][MAP_GRP] = 0; - sLocationHistory[i][MAP_NUM] = 0; + sLocationHistory[roamerIndex][i][MAP_GRP] = 0; + sLocationHistory[roamerIndex][i][MAP_NUM] = 0; } +} - sRoamerLocation[MAP_GRP] = 0; - sRoamerLocation[MAP_NUM] = 0; +void MoveAllRoamersToOtherLocationSets(void) +{ + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) + RoamerMoveToOtherLocationSet(i); } -static void CreateInitialRoamerMon(bool16 createLatios) +void MoveAllRoamers(void) { - if (!createLatios) - ROAMER->species = SPECIES_LATIAS; - else - ROAMER->species = SPECIES_LATIOS; - - CreateMon(&gEnemyParty[0], ROAMER->species, 40, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); - ROAMER->level = 40; - ROAMER->statusA = 0; - ROAMER->statusB = 0; - ROAMER->active = TRUE; - ROAMER->ivs = GetMonData(&gEnemyParty[0], MON_DATA_IVS); - ROAMER->personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY); - ROAMER->hp = GetMonData(&gEnemyParty[0], MON_DATA_MAX_HP); - ROAMER->cool = GetMonData(&gEnemyParty[0], MON_DATA_COOL); - ROAMER->beauty = GetMonData(&gEnemyParty[0], MON_DATA_BEAUTY); - ROAMER->cute = GetMonData(&gEnemyParty[0], MON_DATA_CUTE); - ROAMER->smart = GetMonData(&gEnemyParty[0], MON_DATA_SMART); - ROAMER->tough = GetMonData(&gEnemyParty[0], MON_DATA_TOUGH); - sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP; - sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % NUM_LOCATION_SETS][0]; + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) + RoamerMove(i); +} + +static void CreateInitialRoamerMon(u8 index, u16 species, u8 level) +{ + ClearRoamerLocationHistory(index); + CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + ROAMER(index)->ivs = GetMonData(&gEnemyParty[0], MON_DATA_IVS); + ROAMER(index)->personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY); + ROAMER(index)->species = species; + ROAMER(index)->level = level; + ROAMER(index)->statusA = 0; + ROAMER(index)->statusB = 0; + ROAMER(index)->hp = GetMonData(&gEnemyParty[0], MON_DATA_MAX_HP); + ROAMER(index)->cool = GetMonData(&gEnemyParty[0], MON_DATA_COOL); + ROAMER(index)->beauty = GetMonData(&gEnemyParty[0], MON_DATA_BEAUTY); + ROAMER(index)->cute = GetMonData(&gEnemyParty[0], MON_DATA_CUTE); + ROAMER(index)->smart = GetMonData(&gEnemyParty[0], MON_DATA_SMART); + ROAMER(index)->tough = GetMonData(&gEnemyParty[0], MON_DATA_TOUGH); + ROAMER(index)->active = TRUE; + sRoamerLocation[index][MAP_GRP] = ROAMER_MAP_GROUP; + sRoamerLocation[index][MAP_NUM] = sRoamerLocations[Random() % NUM_LOCATION_SETS][0]; +} + +static u8 GetFirstInactiveRoamerIndex(void) +{ + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) + { + if (!ROAMER(i)->active) + return i; + } + return ROAMER_COUNT; +} + +bool8 TryAddRoamer(u16 species, u8 level) +{ + u8 index = GetFirstInactiveRoamerIndex(); + + if (index < ROAMER_COUNT) + { + // Create the roamer and stop searching + CreateInitialRoamerMon(index, species, level); + return TRUE; + } + + // Maximum active roamers found: do nothing and let the calling function know + return FALSE; } // gSpecialVar_0x8004 here corresponds to the options in the multichoice MULTI_TV_LATI (0 for 'Red', 1 for 'Blue') void InitRoamer(void) { - ClearRoamerData(); - ClearRoamerLocationData(); - CreateInitialRoamerMon(gSpecialVar_0x8004); + if (gSpecialVar_0x8004 == 0) // Red + TryAddRoamer(SPECIES_LATIAS, 40); + else + TryAddRoamer(SPECIES_LATIOS, 40); } void UpdateLocationHistoryForRoamer(void) { - sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP]; - sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM]; + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) + { + sLocationHistory[i][2][MAP_GRP] = sLocationHistory[i][1][MAP_GRP]; + sLocationHistory[i][2][MAP_NUM] = sLocationHistory[i][1][MAP_NUM]; - sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP]; - sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM]; + sLocationHistory[i][1][MAP_GRP] = sLocationHistory[i][0][MAP_GRP]; + sLocationHistory[i][1][MAP_NUM] = sLocationHistory[i][0][MAP_NUM]; - sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; - sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; + sLocationHistory[i][0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup; + sLocationHistory[i][0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum; + } } -void RoamerMoveToOtherLocationSet(void) +void RoamerMoveToOtherLocationSet(u32 roamerIndex) { u8 mapNum = 0; - if (!ROAMER->active) + if (!ROAMER(roamerIndex)->active) return; - sRoamerLocation[MAP_GRP] = ROAMER_MAP_GROUP; + sRoamerLocation[roamerIndex][MAP_GRP] = ROAMER_MAP_GROUP; // Choose a location set that starts with a map // different from the roamer's current map - while (1) + do { mapNum = sRoamerLocations[Random() % NUM_LOCATION_SETS][0]; - if (sRoamerLocation[MAP_NUM] != mapNum) + if (sRoamerLocation[roamerIndex][MAP_NUM] != mapNum) { - sRoamerLocation[MAP_NUM] = mapNum; + sRoamerLocation[roamerIndex][MAP_NUM] = mapNum; return; } - } + } while (sRoamerLocation[roamerIndex][MAP_NUM] == mapNum); + sRoamerLocation[roamerIndex][MAP_NUM] = mapNum; } -void RoamerMove(void) +void RoamerMove(u32 roamerIndex) { u8 locSet = 0; if ((Random() % 16) == 0) { - RoamerMoveToOtherLocationSet(); + RoamerMoveToOtherLocationSet(roamerIndex); } else { - if (!ROAMER->active) + if (!ROAMER(roamerIndex)->active) return; while (locSet < NUM_LOCATION_SETS) { // Find the location set that starts with the roamer's current map - if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0]) + if (sRoamerLocation[roamerIndex][MAP_NUM] == sRoamerLocations[locSet][0]) { u8 mapNum; - while (1) + // Choose a new map (excluding the first) within this set + // Also exclude a map if the roamer was there 2 moves ago + do { - // Choose a new map (excluding the first) within this set - // Also exclude a map if the roamer was there 2 moves ago mapNum = sRoamerLocations[locSet][(Random() % (NUM_LOCATIONS_PER_SET - 1)) + 1]; - if (!(sLocationHistory[2][MAP_GRP] == ROAMER_MAP_GROUP - && sLocationHistory[2][MAP_NUM] == mapNum) - && mapNum != MAP_NUM(UNDEFINED)) - break; - } - sRoamerLocation[MAP_NUM] = mapNum; + } while ((sLocationHistory[roamerIndex][2][MAP_GRP] == ROAMER_MAP_GROUP + && sLocationHistory[roamerIndex][2][MAP_NUM] == mapNum) + || mapNum == MAP_NUM(UNDEFINED)); + sRoamerLocation[roamerIndex][MAP_NUM] = mapNum; return; } locSet++; @@ -184,60 +229,65 @@ void RoamerMove(void) } } -bool8 IsRoamerAt(u8 mapGroup, u8 mapNum) +bool8 IsRoamerAt(u32 roamerIndex, u8 mapGroup, u8 mapNum) { - if (ROAMER->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM]) + if (ROAMER(roamerIndex)->active && mapGroup == sRoamerLocation[roamerIndex][MAP_GRP] && mapNum == sRoamerLocation[roamerIndex][MAP_NUM]) return TRUE; else return FALSE; } -void CreateRoamerMonInstance(void) +void CreateRoamerMonInstance(u32 roamerIndex) { - u32 status = ROAMER->statusA + (ROAMER->statusB << 8); + u32 status = ROAMER(roamerIndex)->statusA + (ROAMER(roamerIndex)->statusB << 8); struct Pokemon *mon = &gEnemyParty[0]; ZeroEnemyPartyMons(); - CreateMonWithIVsPersonality(mon, ROAMER->species, ROAMER->level, ROAMER->ivs, ROAMER->personality); + CreateMonWithIVsPersonality(mon, ROAMER(roamerIndex)->species, ROAMER(roamerIndex)->level, ROAMER(roamerIndex)->ivs, ROAMER(roamerIndex)->personality); + // The roamer's status field is u16, but SetMonData expects status to be u32, so will set the roamer's status + // using the status field and the following 3 bytes (cool, beauty, and cute). SetMonData(mon, MON_DATA_STATUS, &status); - SetMonData(mon, MON_DATA_HP, &ROAMER->hp); - SetMonData(mon, MON_DATA_COOL, &ROAMER->cool); - SetMonData(mon, MON_DATA_BEAUTY, &ROAMER->beauty); - SetMonData(mon, MON_DATA_CUTE, &ROAMER->cute); - SetMonData(mon, MON_DATA_SMART, &ROAMER->smart); - SetMonData(mon, MON_DATA_TOUGH, &ROAMER->tough); + SetMonData(mon, MON_DATA_HP, &ROAMER(roamerIndex)->hp); + SetMonData(mon, MON_DATA_COOL, &ROAMER(roamerIndex)->cool); + SetMonData(mon, MON_DATA_BEAUTY, &ROAMER(roamerIndex)->beauty); + SetMonData(mon, MON_DATA_CUTE, &ROAMER(roamerIndex)->cute); + SetMonData(mon, MON_DATA_SMART, &ROAMER(roamerIndex)->smart); + SetMonData(mon, MON_DATA_TOUGH, &ROAMER(roamerIndex)->tough); } bool8 TryStartRoamerEncounter(void) { - if (IsRoamerAt(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0) - { - CreateRoamerMonInstance(); - return TRUE; - } - else + u32 i; + + for (i = 0; i < ROAMER_COUNT; i++) { - return FALSE; + if (IsRoamerAt(i, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0) + { + CreateRoamerMonInstance(i); + gEncounteredRoamerIndex = i; + return TRUE; + } } + return FALSE; } void UpdateRoamerHPStatus(struct Pokemon *mon) { u32 status = GetMonData(mon, MON_DATA_STATUS); - ROAMER->hp = GetMonData(mon, MON_DATA_HP); - ROAMER->statusA = status; - ROAMER->statusB = status >> 8; + ROAMER(gEncounteredRoamerIndex)->hp = GetMonData(mon, MON_DATA_HP); + ROAMER(gEncounteredRoamerIndex)->statusA = status; + ROAMER(gEncounteredRoamerIndex)->statusB = status >> 8; - RoamerMoveToOtherLocationSet(); + RoamerMoveToOtherLocationSet(gEncounteredRoamerIndex); } -void SetRoamerInactive(void) +void SetRoamerInactive(u32 roamerIndex) { - ROAMER->active = FALSE; + ROAMER(roamerIndex)->active = FALSE; } -void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) +void GetRoamerLocation(u32 roamerIndex, u8 *mapGroup, u8 *mapNum) { - *mapGroup = sRoamerLocation[MAP_GRP]; - *mapNum = sRoamerLocation[MAP_NUM]; + *mapGroup = sRoamerLocation[roamerIndex][MAP_GRP]; + *mapNum = sRoamerLocation[roamerIndex][MAP_NUM]; } diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 0b0c68a836d4..57cb9fa7eb0b 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -6,6 +6,7 @@ #include "sound.h" #include "sprite.h" #include "constants/songs.h" +#include "constants/event_objects.h" #define ROTATING_GATE_TILE_TAG 0x1300 #define ROTATING_GATE_PUZZLE_MAX 12 @@ -461,11 +462,10 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = sSpriteAffineAnim_RotatingClockwise270to360Faster, }; - static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateLarge, .anims = sSpriteAnimTable_RotatingGateLarge, .images = NULL, @@ -476,7 +476,7 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { .tileTag = ROTATING_GATE_TILE_TAG, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_RotatingGateRegular, .anims = sSpriteAnimTable_RotatingGateRegular, .images = NULL, @@ -740,7 +740,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; - spriteId = CreateSprite(&template, 0, 0, 0x94); + spriteId = CreateSprite(&template, 0, 0, 0x93); if (spriteId == MAX_SPRITES) return MAX_SPRITES; @@ -748,6 +748,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) y = gate->y + MAP_OFFSET; sprite = &gSprites[spriteId]; + UpdateSpritePaletteByTemplate(&template, sprite); sprite->data[0] = gateId; sprite->coordOffsetEnabled = 1; diff --git a/src/rtc.c b/src/rtc.c index a90c9aa89b64..5ccafec621bd 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -1,7 +1,9 @@ #include "global.h" #include "rtc.h" #include "string_util.h" +#include "strings.h" #include "text.h" +#include "fake_rtc.h" // iwram bss static u16 sErrorStatus; @@ -45,6 +47,9 @@ void RtcRestoreInterrupts(void) u32 ConvertBcdToBinary(u8 bcd) { + if (OW_USE_FAKE_RTC) + return bcd; + if (bcd > 0x9F) return 0xFF; @@ -88,14 +93,22 @@ u16 ConvertDateToDayCount(u8 year, u8 month, u8 day) u16 RtcGetDayCount(struct SiiRtcInfo *rtc) { - u8 year = ConvertBcdToBinary(rtc->year); - u8 month = ConvertBcdToBinary(rtc->month); - u8 day = ConvertBcdToBinary(rtc->day); + u8 year, month, day; + + if (OW_USE_FAKE_RTC) + return rtc->day; + + year = ConvertBcdToBinary(rtc->year); + month = ConvertBcdToBinary(rtc->month); + day = ConvertBcdToBinary(rtc->day); return ConvertDateToDayCount(year, month, day); } void RtcInit(void) { + if (OW_USE_FAKE_RTC) + return; + sErrorStatus = 0; RtcDisableInterrupts(); @@ -120,12 +133,14 @@ void RtcInit(void) u16 RtcGetErrorStatus(void) { - return sErrorStatus; + return (OW_USE_FAKE_RTC) ? 0 : sErrorStatus; } void RtcGetInfo(struct SiiRtcInfo *rtc) { - if (sErrorStatus & RTC_ERR_FLAG_MASK) + if (OW_USE_FAKE_RTC) + FakeRtc_GetRawInfo(rtc); + else if (sErrorStatus & RTC_ERR_FLAG_MASK) *rtc = sRtcDummy; else RtcGetRawInfo(rtc); @@ -158,6 +173,9 @@ u16 RtcCheckInfo(struct SiiRtcInfo *rtc) s32 month; s32 value; + if (OW_USE_FAKE_RTC) + return 0; + if (rtc->status & SIIRTCINFO_POWER) errorFlags |= RTC_ERR_POWER_FAILURE; @@ -210,6 +228,12 @@ u16 RtcCheckInfo(struct SiiRtcInfo *rtc) void RtcReset(void) { + if (OW_USE_FAKE_RTC) + { + memset(FakeRtc_GetCurrentTime(), 0, sizeof(struct Time)); + return; + } + RtcDisableInterrupts(); SiiRtcReset(); RtcRestoreInterrupts(); @@ -364,3 +388,33 @@ u32 RtcGetLocalDayCount(void) { return RtcGetDayCount(&sRtc); } + +void FormatDecimalTimeWithoutSeconds(u8 *txtPtr, s8 hour, s8 minute, bool32 is24Hour) +{ + if (is24Hour) + { + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour, STR_CONV_MODE_LEADING_ZEROS, 2); + *txtPtr++ = CHAR_COLON; + txtPtr = ConvertIntToDecimalStringN(txtPtr, minute, STR_CONV_MODE_LEADING_ZEROS, 2); + } + else + { + if (hour == 0) + txtPtr = ConvertIntToDecimalStringN(txtPtr, 12, STR_CONV_MODE_LEADING_ZEROS, 2); + else if (hour < 13) + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour, STR_CONV_MODE_LEADING_ZEROS, 2); + else + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour - 12, STR_CONV_MODE_LEADING_ZEROS, 2); + + *txtPtr++ = CHAR_COLON; + txtPtr = ConvertIntToDecimalStringN(txtPtr, minute, STR_CONV_MODE_LEADING_ZEROS, 2); + txtPtr = StringAppend(txtPtr, gText_Space); + if (hour < 12) + txtPtr = StringAppend(txtPtr, gText_AM); + else + txtPtr = StringAppend(txtPtr, gText_PM); + } + + *txtPtr++ = EOS; + *txtPtr = EOS; +} diff --git a/src/scrcmd.c b/src/scrcmd.c index 269540946010..b642f41ede49 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -15,6 +15,7 @@ #include "field_effect.h" #include "event_object_lock.h" #include "event_object_movement.h" +#include "event_scripts.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -107,6 +108,7 @@ bool8 ScrCmd_nop1(struct ScriptContext *ctx) bool8 ScrCmd_end(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); StopScript(ctx); return FALSE; } @@ -292,6 +294,7 @@ bool8 ScrCmd_returnram(struct ScriptContext *ctx) bool8 ScrCmd_endram(struct ScriptContext *ctx) { + FlagClear(FLAG_SAFE_FOLLOWER_MOVEMENT); ClearRamScript(); StopScript(ctx); return TRUE; @@ -996,10 +999,29 @@ bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx) bool8 ScrCmd_applymovement(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); - const void *movementScript = (const void *)ScriptReadWord(ctx); + const u8 *movementScript = (const u8 *)ScriptReadWord(ctx); + struct ObjectEvent *objEvent; + // When applying script movements to follower, it may have frozen animation that must be cleared + if (localId == OBJ_EVENT_ID_FOLLOWER && (objEvent = GetFollowerObject()) && objEvent->frozen) + { + ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); + gSprites[objEvent->spriteId].animCmdIndex = 0; // Reset start frame of animation + } ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript); sMovingNpcId = localId; + objEvent = GetFollowerObject(); + // Force follower into pokeball + if (localId != OBJ_EVENT_ID_FOLLOWER + && !FlagGet(FLAG_SAFE_FOLLOWER_MOVEMENT) + && (movementScript < Common_Movement_FollowerSafeStart || movementScript > Common_Movement_FollowerSafeEnd) + && (objEvent = GetFollowerObject()) + && !objEvent->invisible) + { + ClearObjectEventMovement(objEvent, &gSprites[objEvent->spriteId]); + gSprites[objEvent->spriteId].animCmdIndex = 0; // Reset start frame of animation + ScriptMovement_StartObjectMovementScript(OBJ_EVENT_ID_FOLLOWER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, EnterPokeballMovement); + } return FALSE; } @@ -1017,7 +1039,16 @@ bool8 ScrCmd_applymovementat(struct ScriptContext *ctx) static bool8 WaitForMovementFinish(void) { - return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapNum, sMovingNpcMapGroup); + if (ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapNum, sMovingNpcMapGroup)) + { + struct ObjectEvent *objEvent = GetFollowerObject(); + // If the follower is still entering the pokeball, wait for it to finish too + // This prevents a `release` after this script command from getting the follower stuck in an intermediate state + if (sMovingNpcId != OBJ_EVENT_ID_FOLLOWER && objEvent && ObjectEventGetHeldMovementActionId(objEvent) == MOVEMENT_ACTION_ENTER_POKEBALL) + return ScriptMovement_IsObjectMovementFinished(objEvent->localId, objEvent->mapNum, objEvent->mapGroup); + return TRUE; + } + return FALSE; } bool8 ScrCmd_waitmovement(struct ScriptContext *ctx) @@ -1180,10 +1211,10 @@ bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx) bool8 ScrCmd_createvobject(struct ScriptContext *ctx) { - u8 graphicsId = ScriptReadByte(ctx); + u16 graphicsId = ScriptReadHalfword(ctx); u8 virtualObjId = ScriptReadByte(ctx); u16 x = VarGet(ScriptReadHalfword(ctx)); - u32 y = VarGet(ScriptReadHalfword(ctx)); + u16 y = VarGet(ScriptReadHalfword(ctx)); u8 elevation = ScriptReadByte(ctx); u8 direction = ScriptReadByte(ctx); @@ -1216,7 +1247,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx) } } -// lock freezes all object events except the player and the selected object immediately. +// lock freezes all object events except the player, follower, and the selected object immediately. // The player and selected object are frozen after waiting for their current movement to finish. bool8 ScrCmd_lock(struct ScriptContext *ctx) { @@ -1226,16 +1257,22 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) } else { + struct ObjectEvent *followerObj = GetFollowerObject(); if (gObjectEvents[gSelectedObjectEvent].active) { FreezeObjects_WaitForPlayerAndSelected(); SetupNativeScript(ctx, IsFreezeSelectedObjectAndPlayerFinished); + // follower is being talked to; keep it frozen + if (gObjectEvents[gSelectedObjectEvent].localId == OBJ_EVENT_ID_FOLLOWER) + followerObj = NULL; } else { FreezeObjects_WaitForPlayer(); SetupNativeScript(ctx, IsFreezePlayerFinished); } + if (followerObj) // Unfreeze follower object + UnfreezeObjectEvent(followerObj); return TRUE; } } @@ -1243,6 +1280,10 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx) bool8 ScrCmd_releaseall(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + // Release follower from movement iff it exists and is in the shadowing state + if (followerObject && gSprites[followerObject->spriteId].data[1] == 0) + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); HideFieldMessageBox(); playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0); @@ -1255,6 +1296,10 @@ bool8 ScrCmd_releaseall(struct ScriptContext *ctx) bool8 ScrCmd_release(struct ScriptContext *ctx) { u8 playerObjectId; + struct ObjectEvent *followerObject = GetFollowerObject(); + // Release follower from movement iff it exists and is in the shadowing state + if (followerObject && gSprites[followerObject->spriteId].data[1] == 0) + ClearObjectEventMovement(followerObject, &gSprites[followerObject->spriteId]); HideFieldMessageBox(); if (gObjectEvents[gSelectedObjectEvent].active) @@ -1648,7 +1693,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx) bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); - u16 species = VarGet(ScriptReadHalfword(ctx)); + u16 species = VarGet(ScriptReadHalfword(ctx)) & ((1 << 10) - 1); // ignore possible shiny / form bits StringCopy(sScriptStringVars[stringVarIndex], GetSpeciesName(species)); return FALSE; @@ -1665,6 +1710,14 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } +void BufferFirstLiveMonNickname(struct ScriptContext *ctx) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + + GetMonData(GetFirstLiveMon(), MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); + StringGet_Nickname(sScriptStringVars[stringVarIndex]); +} + bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -2129,6 +2182,11 @@ bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) return FALSE; } +void PlayFirstMonCry(struct ScriptContext *ctx) +{ + PlayCry_Script(GetMonData(GetFirstLiveMon(), MON_DATA_SPECIES), CRY_MODE_NORMAL); +} + bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); @@ -2409,3 +2467,8 @@ bool8 ScrCmd_warpwhitefade(struct ScriptContext *ctx) ResetInitialPlayerAvatarState(); return TRUE; } + +void ScriptSetDoubleBattleFlag(struct ScriptContext *ctx) +{ + sIsScriptedWildDouble = TRUE; +} diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index 991618173306..e732dc7aa239 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -7,6 +7,7 @@ #include "decompress.h" #include "event_data.h" #include "international_string_util.h" +#include "item.h" #include "link.h" #include "link_rfu.h" #include "main.h" @@ -38,6 +39,10 @@ void HealPlayerParty(void) HealPokemon(&gPlayerParty[i]); if (OW_PC_HEAL >= GEN_8) HealPlayerBoxes(); + + // Recharge Tera Orb, if possible. + if (B_FLAG_TERA_ORB_CHARGED != 0 && CheckBagHasItem(ITEM_TERA_ORB, 1)) + FlagSet(B_FLAG_TERA_ORB_CHARGED); } static void HealPlayerBoxes(void) @@ -289,7 +294,30 @@ void ToggleGigantamaxFactor(struct ScriptContext *ctx) } } -u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 nature, u8 abilityNum, u8 gender, u8 *evs, u8 *ivs, u16 *moves, bool8 isShiny, bool8 ggMaxFactor, u8 teraType) +void CheckTeraType(struct ScriptContext *ctx) +{ + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = TYPE_NONE; + + if (partyIndex < PARTY_SIZE) + gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TERA_TYPE); +} + +void SetTeraType(struct ScriptContext *ctx) +{ + u32 type = ScriptReadByte(ctx); + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + + if (type < NUMBER_OF_MON_TYPES && partyIndex < PARTY_SIZE) + SetMonData(&gPlayerParty[partyIndex], MON_DATA_TERA_TYPE, &type); +} + +/* Creates a Pokemon via script + * if side/slot are assigned, it will create the mon at the assigned party location + * if slot == PARTY_SIZE, it will give the mon to first available party or storage slot + */ +static u32 ScriptGiveMonParameterized(u8 side, u8 slot, u16 species, u8 level, u16 item, u8 ball, u8 nature, u8 abilityNum, u8 gender, u8 *evs, u8 *ivs, u16 *moves, bool8 isShiny, bool8 ggMaxFactor, u8 teraType) { u16 nationalDexNum; int sentToPc; @@ -328,7 +356,7 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu // tera type if (teraType >= NUMBER_OF_MON_TYPES) - teraType = gSpeciesInfo[species].types[0]; + teraType = TYPE_NONE; SetMonData(&mon, MON_DATA_TERA_TYPE, &teraType); // EV and IV @@ -384,34 +412,43 @@ u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 natu SetMonData(&mon, MON_DATA_OT_NAME, gSaveBlock2Ptr->playerName); SetMonData(&mon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender); - // find empty party slot to decide whether the Pokémon goes to the Player's party or the storage system. - for (i = 0; i < PARTY_SIZE; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) == SPECIES_NONE) - break; - } - if (i >= PARTY_SIZE) + if (slot < PARTY_SIZE) { - sentToPc = CopyMonToPC(&mon); + if (side == 0) + CopyMon(&gPlayerParty[slot], &mon, sizeof(struct Pokemon)); + else + CopyMon(&gEnemyParty[slot], &mon, sizeof(struct Pokemon)); + sentToPc = MON_GIVEN_TO_PARTY; } else { - sentToPc = MON_GIVEN_TO_PARTY; - CopyMon(&gPlayerParty[i], &mon, sizeof(mon)); - gPlayerPartyCount = i + 1; + // find empty party slot to decide whether the Pokémon goes to the Player's party or the storage system. + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) == SPECIES_NONE) + break; + } + if (i >= PARTY_SIZE) + { + sentToPc = CopyMonToPC(&mon); + } + else + { + sentToPc = MON_GIVEN_TO_PARTY; + CopyMon(&gPlayerParty[i], &mon, sizeof(mon)); + gPlayerPartyCount = i + 1; + } } - // set pokédex flags - nationalDexNum = SpeciesToNationalPokedexNum(species); - switch (sentToPc) + if (side == 0) { - case MON_GIVEN_TO_PARTY: - case MON_GIVEN_TO_PC: - GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); - GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT); - break; - case MON_CANT_GIVE: - break; + // set pokédex flags + nationalDexNum = SpeciesToNationalPokedexNum(species); + if (sentToPc != MON_CANT_GIVE) + { + GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); + GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT); + } } return sentToPc; @@ -424,13 +461,17 @@ u32 ScriptGiveMon(u16 species, u8 level, u16 item) MAX_PER_STAT_IVS + 1, MAX_PER_STAT_IVS + 1, MAX_PER_STAT_IVS + 1}; // ScriptGiveMonParameterized won't touch the stats' IV. u16 moves[MAX_MON_MOVES] = {MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE}; - return ScriptGiveMonParameterized(species, level, item, ITEM_POKE_BALL, NUM_NATURES, NUM_ABILITY_PERSONALITY, MON_GENDERLESS, evs, ivs, moves, FALSE, FALSE, NUMBER_OF_MON_TYPES); + return ScriptGiveMonParameterized(0, PARTY_SIZE, species, level, item, ITEM_POKE_BALL, NUM_NATURES, NUM_ABILITY_PERSONALITY, MON_GENDERLESS, evs, ivs, moves, FALSE, FALSE, NUMBER_OF_MON_TYPES); } #define PARSE_FLAG(n, default_) (flags & (1 << (n))) ? VarGet(ScriptReadHalfword(ctx)) : (default_) -void ScrCmd_givemon(struct ScriptContext *ctx) +/* Give or create a mon to either player or opponent + */ +void ScrCmd_createmon(struct ScriptContext *ctx) { + u8 side = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = VarGet(ScriptReadHalfword(ctx)); @@ -464,7 +505,7 @@ void ScrCmd_givemon(struct ScriptContext *ctx) u8 ivs[NUM_STATS] = {hpIv, atkIv, defIv, speedIv, spAtkIv, spDefIv}; u16 moves[MAX_MON_MOVES] = {move1, move2, move3, move4}; - gSpecialVar_Result = ScriptGiveMonParameterized(species, level, item, ball, nature, abilityNum, gender, evs, ivs, moves, isShiny, ggMaxFactor, teraType); + gSpecialVar_Result = ScriptGiveMonParameterized(side, slot, species, level, item, ball, nature, abilityNum, gender, evs, ivs, moves, isShiny, ggMaxFactor, teraType); } #undef PARSE_FLAG diff --git a/src/secret_base.c b/src/secret_base.c index 264cd9435a5a..7e0c1ae10738 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -159,7 +159,7 @@ static const struct YesNoFuncTable sDeleteRegistryYesNoFuncs = .noFunc = DeleteRegistry_No, }; -static const u8 sSecretBaseOwnerGfxIds[10] = +static const u16 sSecretBaseOwnerGfxIds[10] = { // Male OBJ_EVENT_GFX_YOUNGSTER, diff --git a/src/shop.c b/src/shop.c index f72736c89f3d..77f2039e3b52 100644 --- a/src/shop.c +++ b/src/shop.c @@ -34,6 +34,7 @@ #include "text_window.h" #include "tv.h" #include "constants/decorations.h" +#include "constants/event_objects.h" #include "constants/items.h" #include "constants/metatile_behaviors.h" #include "constants/rgb.h" @@ -216,7 +217,8 @@ static const struct ListMenuTemplate sShopBuyMenuListTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NARROW, - .cursorKind = CURSOR_BLACK_ARROW + .cursorKind = CURSOR_BLACK_ARROW, + .textNarrowWidth = 84, }; static const struct BgTemplate sShopBuyMenuBgTemplates[] = @@ -868,7 +870,8 @@ static void BuyMenuCollectObjectEventData(void) { u8 objEventId = GetObjectEventIdByXY(facingX - 4 + x, facingY - 2 + y); - if (objEventId != OBJECT_EVENTS_COUNT) + // skip if invalid or an overworld pokemon that is not following the player + if (objEventId != OBJECT_EVENTS_COUNT && !(gObjectEvents[objEventId].active && gObjectEvents[objEventId].graphicsId >= OBJ_EVENT_GFX_MON_BASE && gObjectEvents[objEventId].localId != OBJ_EVENT_ID_FOLLOWER)) { sShopData->viewportObjects[numObjects][OBJ_EVENT_ID] = objEventId; sShopData->viewportObjects[numObjects][X_COORD] = x; @@ -902,7 +905,12 @@ static void BuyMenuDrawObjectEvents(void) u8 i; u8 spriteId; const struct ObjectEventGraphicsInfo *graphicsInfo; + u8 weatherTemp = gWeatherPtr->palProcessingState; + // This function runs during fadeout, so the weather palette processing state must be temporarily changed, + // so that time-blending will work properly + if (weatherTemp == WEATHER_PAL_STATE_SCREEN_FADING_OUT) + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; for (i = 0; i < OBJECT_EVENTS_COUNT; i++) { if (sShopData->viewportObjects[i][OBJ_EVENT_ID] == OBJECT_EVENTS_COUNT) @@ -925,6 +933,9 @@ static void BuyMenuDrawObjectEvents(void) StartSpriteAnim(&gSprites[spriteId], sShopData->viewportObjects[i][ANIM_NUM]); } + + gWeatherPtr->palProcessingState = weatherTemp; // restore weather state + CpuFastCopy(gPlttBufferFaded + 16*16, gPlttBufferUnfaded + 16*16, PLTT_BUFFER_SIZE); } static bool8 BuyMenuCheckIfObjectEventOverlapsMenuBg(s16 *object) @@ -1024,7 +1035,7 @@ static void Task_BuyMenu(u8 taskId) else { StringCopy(gStringVar1, gDecorations[itemId].name); - ConvertIntToDecimalStringN(gStringVar2, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar2, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS); if (sMartInfo.martType == MART_TYPE_DECOR) StringExpandPlaceholders(gStringVar4, gText_Var1IsItThatllBeVar2); @@ -1086,7 +1097,7 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) PutWindowTilemap(WIN_ITEM_LIST); CopyItemName(tItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS); - ConvertIntToDecimalStringN(gStringVar3, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, sShopData->totalCost, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS); BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, BuyMenuConfirmPurchase); } else if (JOY_NEW(B_BUTTON)) @@ -1215,7 +1226,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) s16 *data = gTasks[taskId].data; FillWindowPixelBuffer(WIN_QUANTITY_PRICE, PIXEL_FILL(1)); - PrintMoneyAmount(WIN_QUANTITY_PRICE, 38, 1, sShopData->totalCost, TEXT_SKIP_DRAW); + PrintMoneyAmount(WIN_QUANTITY_PRICE, CalculateMoneyTextHorizontalPosition(sShopData->totalCost), 1, sShopData->totalCost, TEXT_SKIP_DRAW); ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, MAX_ITEM_DIGITS); StringExpandPlaceholders(gStringVar4, gText_xVar1); BuyMenuPrint(WIN_QUANTITY_PRICE, gStringVar4, 0, 1, 0, COLORID_NORMAL); diff --git a/src/siirtc.c b/src/siirtc.c index 1536aecb4234..a29a62da2666 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -4,7 +4,7 @@ #include "gba/gba.h" #include "siirtc.h" -#include "config.h" +#include "config/general.h" #define STATUS_INTFE 0x02 // frequency interrupt enable #define STATUS_INTME 0x08 // per-minute interrupt enable diff --git a/src/sound.c b/src/sound.c index c6f01c8ad26b..548e48f163a9 100644 --- a/src/sound.c +++ b/src/sound.c @@ -5,6 +5,7 @@ #include "m4a.h" #include "main.h" #include "pokemon.h" +#include "constants/cries.h" #include "constants/songs.h" #include "task.h" @@ -460,7 +461,7 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) SetPokemonCryPriority(priority); species = GetCryIdBySpecies(species); - if (species != 0) + if (species != CRY_NONE) { species--; gMPlay_PokemonCry = SetPokemonCryTone(reverse ? &gCryTable_Reverse[species] : &gCryTable[species]); diff --git a/src/strings.c b/src/strings.c index 46067a7fe83b..254378d37920 100644 --- a/src/strings.c +++ b/src/strings.c @@ -220,20 +220,20 @@ const u8 gText_xVar1[] = _("×{STR_VAR_1}"); const u8 gText_Berry2[] = _(" BERRY"); // Unused const u8 gText_Coins[] = _("{STR_VAR_1} COINS"); const u8 gText_CloseBag[] = _("CLOSE BAG"); -const u8 gText_Var1IsSelected[] = _("{STR_VAR_1} is\nselected."); +const u8 gText_Var1IsSelected[] = _("{STR_VAR_1}\nis selected."); const u8 gText_CantWriteMail[] = _("You can't write\nMAIL here."); const u8 gText_NoPokemon[] = _("There is no\nPOKéMON."); const u8 gText_MoveVar1Where[] = _("Move the\n{STR_VAR_1}\nwhere?"); const u8 gText_Var1CantBeHeld[] = _("The {STR_VAR_1} can't be held."); const u8 gText_Var1CantBeHeldHere[] = _("The {STR_VAR_1} can't be held\nhere."); -const u8 gText_DepositHowManyVar1[] = _("Deposit how many\n{STR_VAR_1}(s)?"); -const u8 gText_DepositedVar2Var1s[] = _("Deposited {STR_VAR_2}\n{STR_VAR_1}(s)."); +const u8 gText_DepositHowManyVar1[] = _("Deposit how many\n{STR_VAR_1}?"); +const u8 gText_DepositedVar2Var1s[] = _("Deposited {STR_VAR_2}\n{STR_VAR_1}."); const u8 gText_NoRoomForItems[] = _("There's no room to\nstore items."); const u8 gText_CantStoreImportantItems[] = _("Important items\ncan't be stored in\nthe PC!"); const u8 gText_TooImportantToToss[] = _("That's much too\nimportant to toss\nout!"); -const u8 gText_TossHowManyVar1s[] = _("Toss out how many\n{STR_VAR_1}(s)?"); -const u8 gText_ThrewAwayVar2Var1s[] = _("Threw away {STR_VAR_2}\n{STR_VAR_1}(s)."); -const u8 gText_ConfirmTossItems[] = _("Is it okay to\nthrow away {STR_VAR_2}\n{STR_VAR_1}(s)?"); +const u8 gText_TossHowManyVar1s[] = _("Toss out how many\n{STR_VAR_1}?"); +const u8 gText_ThrewAwayVar2Var1s[] = _("Threw away {STR_VAR_2}\n{STR_VAR_1}."); +const u8 gText_ConfirmTossItems[] = _("Is it okay to\nthrow away {STR_VAR_2}\n{STR_VAR_1}?"); const u8 gText_DadsAdvice[] = _("DAD's advice…\n{PLAYER}, there's a time and place for\leverything!{PAUSE_UNTIL_PRESS}"); const u8 gText_CantDismountBike[] = _("You can't dismount your BIKE here.{PAUSE_UNTIL_PRESS}"); const u8 gText_ItemFinderNearby[] = _("Huh?\nThe ITEMFINDER's responding!\pThere's an item buried around here!{PAUSE_UNTIL_PRESS}"); @@ -596,8 +596,8 @@ const u8 gText_TakeOutItemsFromPC[] = _("Take out items from the PC."); const u8 gText_ThrowAwayItemsInPC[] = _("Throw away items stored in the PC."); const u8 gText_NoItems[] = _("There are no items.{PAUSE_UNTIL_PRESS}"); const u8 gText_NoRoomInBag[] = _("There is no more\nroom in the BAG."); -const u8 gText_WithdrawHowManyItems[] = _("Withdraw how many\n{STR_VAR_1}(s)?"); -const u8 gText_WithdrawXItems[] = _("Withdrew {STR_VAR_2}\n{STR_VAR_1}(s)."); +const u8 gText_WithdrawHowManyItems[] = _("Withdraw how many\n{STR_VAR_1}?"); +const u8 gText_WithdrawXItems[] = _("Withdrew {STR_VAR_2}\n{STR_VAR_1}."); const u8 gText_Read[] = _("READ"); const u8 gText_MoveToBag[] = _("MOVE TO BAG"); const u8 gText_Give2[] = _("GIVE"); @@ -1609,23 +1609,6 @@ const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}'s nickname?"); const u8 gText_TellHimTheWords[] = _("Tell him the words."); const u8 gText_MoveOkBack[] = _("{DPAD_NONE}MOVE {A_BUTTON}OK {B_BUTTON}BACK"); const u8 gText_CallCantBeMadeHere[] = _("A call can't be made from here."); -const u8 gText_ContestLady_Handsome[] = _("HANDSOME"); -const u8 gText_ContestLady_Vinny[] = _("VINNY"); -const u8 gText_ContestLady_Moreme[] = _("MOREME"); -const u8 gText_ContestLady_Ironhard[] = _("IRONHARD"); -const u8 gText_ContestLady_Muscle[] = _("MUSCLE"); -const u8 gText_ContestLady_Coolness[] = _("coolness"); -const u8 gText_ContestLady_Beauty[] = _("beauty"); -const u8 gText_ContestLady_Cuteness[] = _("cuteness"); -const u8 gText_ContestLady_Smartness[] = _("smartness"); -const u8 gText_ContestLady_Toughness[] = _("toughness"); -const u8 gText_QuizLady_Lady[] = _("Lady"); -const u8 gText_FavorLady_Slippery[] = _("slippery"); -const u8 gText_FavorLady_Roundish[] = _("roundish"); -const u8 gText_FavorLady_Whamish[] = _("wham-ish"); -const u8 gText_FavorLady_Shiny[] = _("shiny"); -const u8 gText_FavorLady_Sticky[] = _("sticky"); -const u8 gText_FavorLady_Pointy[] = _("pointy"); const u8 gText_RentalPkmn2[] = _("RENTAL POKéMON"); const u8 gText_SelectFirstPkmn[] = _("Select the first POKéMON."); const u8 gText_SelectSecondPkmn[] = _("Select the second POKéMON."); @@ -1849,3 +1832,5 @@ const u8 gText_ExpShareOff[] = _("The Exp. Share has been turned off.{PAUSE_UNTI const u8 gText_BasePointsResetToZero[] = _("{STR_VAR_1}'s base points\nwere all reset to zero!{PAUSE_UNTIL_PRESS}"); const u8 gText_Fertilize[] = _("FERTILIZE"); const u8 gText_PlantBerry[] = _("PLANT BERRY"); +const u8 gText_AM[] = _("AM"); +const u8 gText_PM[] = _("PM"); diff --git a/src/trainer_card.c b/src/trainer_card.c index 225e8241ac0e..29e94bfe9f19 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1045,7 +1045,7 @@ static void PrintMoneyOnCard(void) else AddTextPrinterParameterized3(WIN_CARD_TEXT, FONT_NORMAL, 16, 57, sTrainerCardTextColors, TEXT_SKIP_DRAW, gText_TrainerCardMoney); - ConvertIntToDecimalStringN(gStringVar1, sData->trainerCard.money, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, sData->trainerCard.money, STR_CONV_MODE_LEFT_ALIGN, MAX_MONEY_DIGITS); StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1); if (!sData->isHoenn) { diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 06b21d05cf2c..675c7643c805 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -251,7 +251,7 @@ u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 fl return spriteId; } -static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) +static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId, bool8 clearPalette) { u8 i; u8 *framePics; @@ -267,7 +267,7 @@ static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId) framePics = sSpritePics[i].frames; images = sSpritePics[i].images; - if (sSpritePics[i].paletteTag != TAG_NONE) + if (clearPalette && sSpritePics[i].paletteTag != TAG_NONE) FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); DestroySprite(&gSprites[spriteId]); Free(framePics); @@ -307,7 +307,12 @@ u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFron u16 FreeAndDestroyMonPicSprite(u16 spriteId) { - return FreeAndDestroyPicSpriteInternal(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId, TRUE); +} + +u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId) +{ + return FreeAndDestroyPicSpriteInternal(spriteId, FALSE); } static u16 UNUSED LoadMonPicInWindow(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) @@ -328,7 +333,7 @@ u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 palet u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) { - return FreeAndDestroyPicSpriteInternal(spriteId); + return FreeAndDestroyPicSpriteInternal(spriteId, TRUE); } static u16 UNUSED LoadTrainerPicInWindow(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) diff --git a/src/trainer_see.c b/src/trainer_see.c index 7a88d3cf4678..67ab2ebe1d22 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -64,6 +64,8 @@ static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/field_effects/p 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"); +// HGSS emote graphics ripped by Lemon on The Spriters Resource: https://www.spriters-resource.com/ds_dsi/pokemonheartgoldsoulsilver/sheet/30497/ +static const u8 sEmotion_Gfx[] = INCBIN_U8("graphics/misc/emotes.4bpp"); static u8 (*const sDirectionalApproachDistanceFuncs[])(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) = { @@ -157,6 +159,120 @@ static const struct SpriteFrameImage sSpriteImageTable_HeartIcon[] = } }; +static const struct SpriteFrameImage sSpriteImageTable_Emotes[] = +{ + overworld_frame(sEmotion_Gfx, 2, 2, 0), // FOLLOWER_EMOTION_HAPPY + overworld_frame(sEmotion_Gfx, 2, 2, 1), // FOLLOWER_EMOTION_HAPPY + overworld_frame(sEmotion_Gfx, 2, 2, 2), // FOLLOWER_EMOTION_NEUTRAL + overworld_frame(sEmotion_Gfx, 2, 2, 3), // FOLLOWER_EMOTION_NEUTRAL + overworld_frame(sEmotion_Gfx, 2, 2, 4), // FOLLOWER_EMOTION_SAD + overworld_frame(sEmotion_Gfx, 2, 2, 5), // FOLLOWER_EMOTION_SAD + overworld_frame(sEmotion_Gfx, 2, 2, 6), // FOLLOWER_EMOTION_UPSET + overworld_frame(sEmotion_Gfx, 2, 2, 7), // FOLLOWER_EMOTION_UPSET + overworld_frame(sEmotion_Gfx, 2, 2, 8), // FOLLOWER_EMOTION_ANGRY + overworld_frame(sEmotion_Gfx, 2, 2, 9), // FOLLOWER_EMOTION_ANGRY + overworld_frame(sEmotion_Gfx, 2, 2, 10), // FOLLOWER_EMOTION_PENSIVE + overworld_frame(sEmotion_Gfx, 2, 2, 11), // FOLLOWER_EMOTION_PENSIVE + overworld_frame(sEmotion_Gfx, 2, 2, 12), // FOLLOWER_EMOTION_LOVE + overworld_frame(sEmotion_Gfx, 2, 2, 13), // FOLLOWER_EMOTION_LOVE + overworld_frame(sEmotion_Gfx, 2, 2, 14), // FOLLOWER_EMOTION_SURPRISE + overworld_frame(sEmotion_Gfx, 2, 2, 15), // FOLLOWER_EMOTION_SURPRISE + overworld_frame(sEmotion_Gfx, 2, 2, 16), // FOLLOWER_EMOTION_CURIOUS + overworld_frame(sEmotion_Gfx, 2, 2, 17), // FOLLOWER_EMOTION_CURIOUS + overworld_frame(sEmotion_Gfx, 2, 2, 18), // FOLLOWER_EMOTION_MUSIC + overworld_frame(sEmotion_Gfx, 2, 2, 19), // FOLLOWER_EMOTION_MUSIC + overworld_frame(sEmotion_Gfx, 2, 2, 20), // FOLLOWER_EMOTION_POISONED + overworld_frame(sEmotion_Gfx, 2, 2, 21), // FOLLOWER_EMOTION_POISONED +}; + +static const union AnimCmd sSpriteAnim_Emotes0[] = +{ + ANIMCMD_FRAME(0*2, 30), + ANIMCMD_FRAME(0*2+1, 25), + ANIMCMD_FRAME(0*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes1[] = +{ + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_FRAME(1*2+1, 25), + ANIMCMD_FRAME(1*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes2[] = +{ + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_FRAME(2*2+1, 25), + ANIMCMD_FRAME(2*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes3[] = +{ + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_FRAME(3*2+1, 25), + ANIMCMD_FRAME(3*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes4[] = +{ + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_FRAME(4*2+1, 25), + ANIMCMD_FRAME(4*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes5[] = +{ + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_FRAME(5*2+1, 25), + ANIMCMD_FRAME(5*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes6[] = +{ + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_FRAME(6*2+1, 25), + ANIMCMD_FRAME(6*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes7[] = +{ + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_FRAME(7*2+1, 25), + ANIMCMD_FRAME(7*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes8[] = +{ + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_FRAME(8*2+1, 25), + ANIMCMD_FRAME(8*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes9[] = +{ + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_FRAME(9*2+1, 25), + ANIMCMD_FRAME(9*2, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Emotes10[] = +{ + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_FRAME(10*2+1, 25), + ANIMCMD_FRAME(10*2, 30), + ANIMCMD_END +}; + static const union AnimCmd sSpriteAnim_Icons1[] = { ANIMCMD_FRAME(0, 60), @@ -190,10 +306,25 @@ static const union AnimCmd *const sSpriteAnimTable_Icons[] = sSpriteAnim_Icons4 }; +static const union AnimCmd *const sSpriteAnimTable_Emotes[] = +{ + sSpriteAnim_Emotes0, + sSpriteAnim_Emotes1, + sSpriteAnim_Emotes2, + sSpriteAnim_Emotes3, + sSpriteAnim_Emotes4, + sSpriteAnim_Emotes5, + sSpriteAnim_Emotes6, + sSpriteAnim_Emotes7, + sSpriteAnim_Emotes8, + sSpriteAnim_Emotes9, + sSpriteAnim_Emotes10, +}; + static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_MAY, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_ExclamationQuestionMark, @@ -204,7 +335,7 @@ static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = static const struct SpriteTemplate sSpriteTemplate_HeartIcon = { .tileTag = TAG_NONE, - .paletteTag = FLDEFF_PAL_TAG_GENERAL_0, + .paletteTag = OBJ_EVENT_PAL_TAG_NPC_1, .oam = &sOamData_Icons, .anims = sSpriteAnimTable_Icons, .images = sSpriteImageTable_HeartIcon, @@ -212,6 +343,17 @@ static const struct SpriteTemplate sSpriteTemplate_HeartIcon = .callback = SpriteCB_TrainerIcons }; +static const struct SpriteTemplate sSpriteTemplate_Emote = +{ + .tileTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_EMOTES, + .oam = &sOamData_Icons, + .anims = sSpriteAnimTable_Emotes, + .images = sSpriteImageTable_Emotes, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TrainerIcons +}; + // code bool8 CheckForTrainersWantingBattle(void) { @@ -726,17 +868,35 @@ u8 FldEff_ExclamationMarkIcon(void) u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53); if (spriteId != MAX_SPRITES) + { SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 0); + UpdateSpritePaletteByTemplate(&sSpriteTemplate_ExclamationQuestionMark, &gSprites[spriteId]); + } return 0; } u8 FldEff_QuestionMarkIcon(void) { - u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); + u8 spriteId; + if (gFieldEffectArguments[7] >= 0) + { + // Use follower emotes + u8 emotion = gFieldEffectArguments[7]; + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_Emote, 0, 0, 0x52); + if (spriteId == MAX_SPRITES) + return 0; + SetIconSpriteData(&gSprites[spriteId], FLDEFF_EMOTE, emotion); // Set animation based on emotion + UpdateSpritePaletteByTemplate(&sSpriteTemplate_Emote, &gSprites[spriteId]); + return 0; + } + spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x52); if (spriteId != MAX_SPRITES) + { SetIconSpriteData(&gSprites[spriteId], FLDEFF_QUESTION_MARK_ICON, 1); + UpdateSpritePaletteByTemplate(&sSpriteTemplate_ExclamationQuestionMark, &gSprites[spriteId]); + } return 0; } @@ -750,7 +910,7 @@ u8 FldEff_HeartIcon(void) struct Sprite *sprite = &gSprites[spriteId]; SetIconSpriteData(sprite, FLDEFF_HEART_ICON, 0); - sprite->oam.paletteNum = 2; + UpdateSpritePaletteByTemplate(&sSpriteTemplate_HeartIcon, sprite); } return 0; diff --git a/src/tv.c b/src/tv.c index 215af04dced4..e0f910eaaf89 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1455,7 +1455,7 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace) show->bravoTrainer.contestCategory = gSpecialVar_ContestCategory; show->bravoTrainer.contestRank = gSpecialVar_ContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_SPECIES, NULL); - GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); + GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_NICKNAME10, show->bravoTrainer.pokemonNickname); StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_LANGUAGE); } @@ -1536,7 +1536,7 @@ void PutNameRaterShowOnTheAir(void) show->nameRaterShow.random2 = Random() % 2; show->nameRaterShow.randomSpecies = GetRandomDifferentSpeciesSeenByPlayer(show->nameRaterShow.species); StringCopy(show->nameRaterShow.trainerName, gSaveBlock2Ptr->playerName); - GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, show->nameRaterShow.pokemonName); + GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME10, show->nameRaterShow.pokemonName); StripExtCtrlCodes(show->nameRaterShow.pokemonName); StorePlayerIdInNormalShow(show); show->nameRaterShow.language = gGameLanguage; @@ -1612,7 +1612,7 @@ static void InterviewAfter_PkmnFanClubOpinions(void) show->fanclubOpinions.friendshipHighNybble = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_FRIENDSHIP, NULL) >> 4; show->fanclubOpinions.questionAsked = gSpecialVar_0x8007; StringCopy(show->fanclubOpinions.playerName, gSaveBlock2Ptr->playerName); - GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, show->fanclubOpinions.nickname); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME10, show->fanclubOpinions.nickname); StripExtCtrlCodes(show->fanclubOpinions.nickname); show->fanclubOpinions.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); StorePlayerIdInNormalShow(show); @@ -2229,7 +2229,7 @@ void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx) show->cuties.kind = TVSHOW_CUTIES; show->cuties.active = FALSE; // NOTE: Show is not active until passed via Record Mix. StringCopy(show->cuties.playerName, gSaveBlock2Ptr->playerName); - GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname); + GetMonData(pokemon, MON_DATA_NICKNAME10, show->cuties.nickname); StripExtCtrlCodes(show->cuties.nickname); show->cuties.nRibbons = GetRibbonCount(pokemon); show->cuties.selectedRibbon = MonDataIdxToRibbon(ribbonMonDataIdx); @@ -2760,16 +2760,14 @@ void ConvertIntToDecimalString(u8 varIdx, int value) size_t CountDigits(int value) { - if (value / 10 == 0) return 1; - if (value / 100 == 0) return 2; - if (value / 1000 == 0) return 3; - if (value / 10000 == 0) return 4; - if (value / 100000 == 0) return 5; - if (value / 1000000 == 0) return 6; - if (value / 10000000 == 0) return 7; - if (value / 100000000 == 0) return 8; + u32 count = 0; - return 1; + while (value > 0) + { + value /= 10; + count++; + } + return count; } static void SmartShopper_BufferPurchaseTotal(u8 varIdx, TVShow *show) diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c index 31f535310d15..6a2d6081c161 100644 --- a/src/union_room_player_avatar.c +++ b/src/union_room_player_avatar.c @@ -23,9 +23,8 @@ static u8 CreateTask_AnimateUnionRoomPlayers(void); static u32 IsUnionRoomPlayerInvisible(u32, u32); static void SetUnionRoomObjectFacingDirection(s32, s32, u8); -// + 2 is just to match, those elements are empty and never read // Graphics ids should correspond with the classes in gUnionRoomFacilityClasses -static const u8 sUnionRoomObjGfxIds[GENDER_COUNT][NUM_UNION_ROOM_CLASSES + 2] = { +static const u16 sUnionRoomObjGfxIds[GENDER_COUNT][NUM_UNION_ROOM_CLASSES] = { [MALE] = { OBJ_EVENT_GFX_MAN_3, OBJ_EVENT_GFX_BLACK_BELT, @@ -131,7 +130,7 @@ static bool32 IsPlayerStandingStill(void) } // Gender and trainer id are used to determine which sprite a player appears as -static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id) +static u16 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id) { return sUnionRoomObjGfxIds[gender][id % NUM_UNION_ROOM_CLASSES]; } @@ -442,7 +441,7 @@ static bool32 IsUnionRoomPlayerInvisible(u32 leaderId, u32 memberId) return IsVirtualObjectInvisible(UR_PLAYER_SPRITE_ID(leaderId, memberId) - UR_SPRITE_START_ID); } -static void SpawnGroupMember(u32 leaderId, u32 memberId, u8 graphicsId, struct RfuGameData * gameData) +static void SpawnGroupMember(u32 leaderId, u32 memberId, u16 graphicsId, struct RfuGameData * gameData) { s32 x, y; s32 id = UR_PLAYER_SPRITE_ID(leaderId, memberId); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c9d5c56e5c04..7d6af9bd794a 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1393,7 +1393,7 @@ static void UpdateMonInfoText(u16 loadId, bool8 firstPrint) partyIndex = GetPartyIdFromSelectionId(sMenu->info.curSelection); nature = GetNature(&gPlayerParty[partyIndex]); str = StringCopy(sMenu->info.natureText, gText_NatureSlash); - str = StringCopy(str, gNatureNamePointers[nature]); + str = StringCopy(str, gNaturesInfo[nature].name); AddTextPrinterParameterized3(WIN_NATURE, FONT_NORMAL, 2, 1, sNatureTextColors, 0, sMenu->info.natureText); } diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 474c5ef560fe..ae7770aa3a34 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -51,6 +51,7 @@ enum { static u16 FeebasRandom(void); static void FeebasSeedRng(u16 seed); +static void UpdateChainFishingStreak(); static bool8 IsWildLevelAllowedByRepel(u8 level); static void ApplyFluteEncounterRateMod(u32 *encRate); static void ApplyCleanseTagEncounterRateMod(u32 *encRate); @@ -66,6 +67,7 @@ EWRAM_DATA static u8 sWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; EWRAM_DATA bool8 gIsFishingEncounter = 0; EWRAM_DATA bool8 gIsSurfingEncounter = 0; +EWRAM_DATA u8 gChainFishingDexNavStreak = 0; #include "data/wild_encounters.h" @@ -404,10 +406,9 @@ u8 PickWildMonNature(void) } } // check synchronize for a Pokémon with the same ability - if (OW_SYNCHRONIZE_NATURE < GEN_9 - && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) + if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - && (OW_SYNCHRONIZE_NATURE == GEN_8 || Random() % 2 == 0)) + && (OW_SYNCHRONIZE_NATURE >= GEN_8 || Random() % 2 == 0)) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } @@ -418,10 +419,9 @@ u8 PickWildMonNature(void) static void CreateWildMon(u16 species, u8 level) { - bool32 checkCuteCharm; + bool32 checkCuteCharm = TRUE; ZeroEnemyPartyMons(); - checkCuteCharm = OW_CUTE_CHARM < GEN_9; switch (gSpeciesInfo[species].genderRatio) { @@ -467,33 +467,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar switch (area) { case WILD_AREA_LAND: - if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_LIGHTNING_ROD >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_FLASH_FIRE >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_HARVEST >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, LAND_WILD_COUNT)) break; - if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STORM_DRAIN >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, LAND_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_Land(); break; case WILD_AREA_WATER: - if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) + if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_LIGHTNING_ROD == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_LIGHTNING_ROD >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_LIGHTNING_ROD, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_FLASH_FIRE == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_FLASH_FIRE >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_FIRE, ABILITY_FLASH_FIRE, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_HARVEST == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_HARVEST >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_GRASS, ABILITY_HARVEST, &wildMonIndex, WATER_WILD_COUNT)) break; - if (OW_STORM_DRAIN == GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STORM_DRAIN >= GEN_8 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_WATER, ABILITY_STORM_DRAIN, &wildMonIndex, WATER_WILD_COUNT)) break; wildMonIndex = ChooseWildMonIndex_WaterRock(); @@ -516,10 +516,12 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) { u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); + u16 wildMonSpecies = wildMonInfo->wildPokemon[wildMonIndex].species; u8 level = ChooseWildMonLevel(wildMonInfo->wildPokemon, wildMonIndex, WILD_AREA_FISHING); - CreateWildMon(wildMonInfo->wildPokemon[wildMonIndex].species, level); - return wildMonInfo->wildPokemon[wildMonIndex].species; + UpdateChainFishingStreak(); + CreateWildMon(wildMonSpecies, level); + return wildMonSpecies; } static bool8 SetUpMassOutbreakEncounter(u8 flags) @@ -574,7 +576,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate = encounterRate * 3 / 4; else if (ability == ABILITY_STENCH) encounterRate /= 2; - else if (ability == ABILITY_ILLUMINATE && OW_ILLUMINATE < GEN_9) + else if (ability == ABILITY_ILLUMINATE) encounterRate *= 2; else if (ability == ABILITY_WHITE_SMOKE) encounterRate /= 2; @@ -586,7 +588,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate /= 2; else if (ability == ABILITY_QUICK_FEET) encounterRate /= 2; - else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR == GEN_8) + else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR >= GEN_8) encounterRate /= 2; else if (ability == ABILITY_NO_GUARD) encounterRate *= 2; @@ -669,9 +671,9 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) else if (WildEncounterCheck(gWildMonHeaders[headerId].landMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - if (TryStartRoamerEncounter() == TRUE) + if (TryStartRoamerEncounter()) { - roamer = &gSaveBlock1Ptr->roamer; + roamer = &gSaveBlock1Ptr->roamer[gEncounteredRoamerIndex]; if (!IsWildLevelAllowedByRepel(roamer->level)) return FALSE; @@ -718,9 +720,9 @@ bool8 StandardWildEncounter(u16 curMetatileBehavior, u16 prevMetatileBehavior) else if (WildEncounterCheck(gWildMonHeaders[headerId].waterMonsInfo->encounterRate, FALSE) != TRUE) return FALSE; - if (TryStartRoamerEncounter() == TRUE) + if (TryStartRoamerEncounter()) { - roamer = &gSaveBlock1Ptr->roamer; + roamer = &gSaveBlock1Ptr->roamer[gEncounteredRoamerIndex]; if (!IsWildLevelAllowedByRepel(roamer->level)) return FALSE; @@ -820,7 +822,7 @@ bool8 SweetScentWildEncounter(void) if (gWildMonHeaders[headerId].landMonsInfo == NULL) return FALSE; - if (TryStartRoamerEncounter() == TRUE) + if (TryStartRoamerEncounter()) { BattleSetup_StartRoamerBattle(); return TRUE; @@ -841,7 +843,7 @@ bool8 SweetScentWildEncounter(void) if (gWildMonHeaders[headerId].waterMonsInfo == NULL) return FALSE; - if (TryStartRoamerEncounter() == TRUE) + if (TryStartRoamerEncounter()) { BattleSetup_StartRoamerBattle(); return TRUE; @@ -866,10 +868,27 @@ bool8 DoesCurrentMapHaveFishingMons(void) return FALSE; } +u32 CalculateChainFishingShinyRolls(void) +{ + return (2 * min(gChainFishingDexNavStreak, FISHING_CHAIN_SHINY_STREAK_MAX)); +} + +static void UpdateChainFishingStreak() +{ + if (!I_FISHING_CHAIN) + return; + + if (gChainFishingDexNavStreak >= FISHING_CHAIN_LENGTH_MAX) + return; + + gChainFishingDexNavStreak++; +} + void FishingWildEncounter(u8 rod) { u16 species; + gIsFishingEncounter = TRUE; if (CheckFeebas() == TRUE) { u8 level = ChooseWildMonLevel(&sWildFeebas, 0, WILD_AREA_FISHING); @@ -881,9 +900,9 @@ void FishingWildEncounter(u8 rod) { species = GenerateFishingWildMon(gWildMonHeaders[GetCurrentMapWildMonHeaderId()].fishingMonsInfo, rod); } + IncrementGameStat(GAME_STAT_FISHING_ENCOUNTERS); SetPokemonAnglerSpecies(species); - gIsFishingEncounter = TRUE; BattleSetup_StartWildBattle(); } diff --git a/test/battle/ability/ate_abilities.c b/test/battle/ability/ate_abilities.c new file mode 100644 index 000000000000..203452cc0152 --- /dev/null +++ b/test/battle/ability/ate_abilities.c @@ -0,0 +1,84 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); +} + +SINGLE_BATTLE_TEST("Galvanize can not turn certain moves into Electric type moves") +{ + u32 move; + + PARAMETRIZE { move = MOVE_HIDDEN_POWER; } + PARAMETRIZE { move = MOVE_WEATHER_BALL; } + PARAMETRIZE { move = MOVE_MULTI_ATTACK; } + + ASSUME(gMovesInfo[MOVE_HIDDEN_POWER].effect == EFFECT_HIDDEN_POWER); + ASSUME(gMovesInfo[MOVE_WEATHER_BALL].effect == EFFECT_WEATHER_BALL); + ASSUME(gMovesInfo[MOVE_MULTI_ATTACK].effect == EFFECT_CHANGE_TYPE_ON_ITEM); + GIVEN { + PLAYER(SPECIES_KRABBY); + OPPONENT(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + NOT MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Galvanize turns a normal type move into Electric") +{ + GIVEN { + PLAYER(SPECIES_KRABBY); + OPPONENT(SPECIES_GEODUDE_ALOLAN) { Ability(ABILITY_GALVANIZE); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Pixilate turns a normal type move into Fairy") +{ + GIVEN { + PLAYER(SPECIES_DRAGONITE); + OPPONENT(SPECIES_ALTARIA) { Item(ITEM_ALTARIANITE); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_MEGA); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Refrigerate turns a normal type move into Ice") +{ + GIVEN { + PLAYER(SPECIES_MEGANIUM); + OPPONENT(SPECIES_AMAURA) { Ability(ABILITY_REFRIGERATE); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Aerilate turns a normal type move into Flying") +{ + GIVEN { + PLAYER(SPECIES_MEGANIUM); + OPPONENT(SPECIES_SALAMENCE) { Item(ITEM_SALAMENCITE); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_MEGA); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c index f7c9c267dceb..bb05031fe3ea 100644 --- a/test/battle/ability/beads_of_ruin.c +++ b/test/battle/ability/beads_of_ruin.c @@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Chi-Yu!"); ABILITY_POPUP(opponent, ABILITY_BEADS_OF_RUIN); MESSAGE("Foe Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!"); diff --git a/test/battle/ability/booster_energy.c b/test/battle/ability/booster_energy.c new file mode 100644 index 000000000000..a63f462b72d9 --- /dev/null +++ b/test/battle/ability/booster_energy.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_BOOSTER_ENERGY].holdEffect == HOLD_EFFECT_BOOSTER_ENERGY); +} + +SINGLE_BATTLE_TEST("Booster Energy will activate Quark Drive after Electric Terrain ends") +{ + GIVEN { + PLAYER(SPECIES_IRON_MOTH) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TAPU_KOKO) { Speed(100); Ability(ABILITY_ELECTRIC_SURGE); }; + } WHEN { + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Iron Moth used its Booster Energy to activate Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + } + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + MESSAGE("The electricity disappeared from the battlefield."); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("Iron Moth used its Booster Energy to activate Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy will activate Protosynthesis after harsh sunlight ends") +{ + GIVEN { + PLAYER(SPECIES_RAGING_BOLT) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_TORKOAL) { Speed(100); Ability(ABILITY_DROUGHT); }; + } WHEN { + TURN {} + TURN {} + TURN {} + TURN {} + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DROUGHT); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Raging Bolt used its Booster Energy to activate Protosynthesis!"); + MESSAGE("Raging Bolt's Sp. Atk was heightened!"); + } + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("The harsh sunlight activated Raging Bolt's Protosynthesis!"); + MESSAGE("Raging Bolt's Sp. Atk was heightened!"); + MESSAGE("The sunlight faded."); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Raging Bolt used its Booster Energy to activate Protosynthesis!"); + MESSAGE("Raging Bolt's Sp. Atk was heightened!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy activates Protosynthesis and increases highest stat") +{ + u32 attack, defense, speed, spAttack, spDefense; + + PARAMETRIZE { attack = 110; defense = 100; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 110; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 110; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 110; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 100; spDefense = 110; } + + GIVEN { + PLAYER(SPECIES_RAGING_BOLT) { Attack(attack); Defense(defense); Speed(speed); SpAttack(spAttack); SpDefense(spDefense); Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }; + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); + MESSAGE("Raging Bolt used its Booster Energy to activate Protosynthesis!"); + if (attack == 110) + MESSAGE("Raging Bolt's Attack was heightened!"); + else if (defense == 110) + MESSAGE("Raging Bolt's Defense was heightened!"); + else if (speed == 110) + MESSAGE("Raging Bolt's Speed was heightened!"); + else if (spAttack == 110) + MESSAGE("Raging Bolt's Sp. Atk was heightened!"); + else if (spDefense == 110) + MESSAGE("Raging Bolt's Sp. Def was heightened!"); + } THEN { + EXPECT(player->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Booster Energy activates Quark Drive and increases highest stat") +{ + u32 attack, defense, speed, spAttack, spDefense; + + PARAMETRIZE { attack = 110; defense = 100; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 110; speed = 100; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 110; spAttack = 100; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 110; spDefense = 100; } + PARAMETRIZE { attack = 100; defense = 100; speed = 100; spAttack = 100; spDefense = 110; } + + GIVEN { + PLAYER(SPECIES_IRON_MOTH) { Attack(attack); Defense(defense); Speed(speed); SpAttack(spAttack); SpDefense(spDefense); Ability(ABILITY_QUARK_DRIVE); Item(ITEM_BOOSTER_ENERGY); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }; + } WHEN { + TURN { } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + if (attack == 110) + MESSAGE("Iron Moth's Attack was heightened!"); + else if (defense == 110) + MESSAGE("Iron Moth's Defense was heightened!"); + else if (speed == 110) + MESSAGE("Iron Moth's Speed was heightened!"); + else if (spAttack == 110) + MESSAGE("Iron Moth's Sp. Atk was heightened!"); + else if (spDefense == 110) + MESSAGE("Iron Moth's Sp. Def was heightened!"); + } THEN { + EXPECT(player->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Booster Energy increases special attack by 30% if it is the highest stat", s16 damage) +{ + u32 species; + u32 ability; + u32 item; + + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_BOOSTER_ENERGY; } + + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_BOOSTER_ENERGY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_ROUND].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(species) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ability); Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(player, MOVE_ROUND); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROUND, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Booster Energy increases special defense by 30% if it is the highest stat", s16 damage) +{ + u32 species; + u32 ability; + u32 item; + + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_RAGING_BOLT; ability = ABILITY_PROTOSYNTHESIS; item = ITEM_BOOSTER_ENERGY; } + + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; item = ITEM_BOOSTER_ENERGY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_ROUND].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(species) { Attack(100); Defense(100); Speed(100); SpAttack(100); SpDefense(110); Ability(ability); Item(item); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(opponent, MOVE_ROUND); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROUND, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.7), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Booster Energy can't be flung if a Paradox species is involved") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadox == TRUE); + PLAYER(SPECIES_IRON_MOTH); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { MOVE(opponent, MOVE_FLING); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_FLING, opponent); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Booster Energy can't be tricked if a Paradox species is involved") +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_IRON_MOTH].isParadox == TRUE); + PLAYER(SPECIES_IRON_MOTH) { Item(ITEM_BERRY_JUICE); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BOOSTER_ENERGY); } + } WHEN { + TURN { MOVE(opponent, MOVE_TRICK); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TRICK, opponent); + MESSAGE("But it failed!"); + } +} diff --git a/test/battle/ability/clear_body.c b/test/battle/ability/clear_body.c index 5dd4eff5db2d..1379506a72d0 100644 --- a/test/battle/ability/clear_body.c +++ b/test/battle/ability/clear_body.c @@ -400,7 +400,7 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S MESSAGE("Foe Torkoal used Celebrate!"); else MESSAGE("Foe Metang used Celebrate!"); - MESSAGE("Wobbuffet used SpectrlThief!"); + MESSAGE("Wobbuffet used Spectral Thief!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player); NOT ABILITY_POPUP(opponent, ability); MESSAGE("Wobbuffet used Celebrate!"); diff --git a/test/battle/ability/color_change.c b/test/battle/ability/color_change.c index b7828bb978af..86c009e8ac37 100644 --- a/test/battle/ability/color_change.c +++ b/test/battle/ability/color_change.c @@ -73,7 +73,7 @@ SINGLE_BATTLE_TEST("Color Change changes the user to Electric type if hit by a m } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHO_CUT, player); ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE); - MESSAGE("Foe Wobbuffet's Color Change made it the Electr type!"); + MESSAGE("Foe Wobbuffet's Color Change made it the Electric type!"); } } @@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Color Change changes the type when a Pokemon is hit by Futur ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player); MESSAGE("Foe Snorlax took the Future Sight attack!"); ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE); - MESSAGE("Foe Snorlax's Color Change made it the Psychc type!"); + MESSAGE("Foe Snorlax's Color Change made it the Psychic type!"); } } diff --git a/test/battle/ability/contrary.c b/test/battle/ability/contrary.c index 4df0bc39ed0e..d257a7a34430 100644 --- a/test/battle/ability/contrary.c +++ b/test/battle/ability/contrary.c @@ -82,7 +82,7 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall PARAMETRIZE { ability = ABILITY_CONTRARY; } PARAMETRIZE { ability = ABILITY_TANGLED_FEET; } GIVEN { - ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE); ASSUME(gMovesInfo[MOVE_OVERHEAT].category == DAMAGE_CATEGORY_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_SPINDA) { Ability(ability); } diff --git a/test/battle/ability/cute_charm.c b/test/battle/ability/cute_charm.c index af9815e75081..06eb4cf84284 100644 --- a/test/battle/ability/cute_charm.c +++ b/test/battle/ability/cute_charm.c @@ -45,3 +45,22 @@ SINGLE_BATTLE_TEST("Cute Charm cannot infatuate same gender") ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); } } + +SINGLE_BATTLE_TEST("Cute Charm triggers 30% of the time") +{ + PASSES_RANDOMLY(3, 10, RNG_CUTE_CHARM); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player); + MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!"); + MESSAGE("Wobbuffet is in love with Foe Clefairy!"); + } +} diff --git a/test/battle/ability/dauntless_shield.c b/test/battle/ability/dauntless_shield.c index f412011c651e..ff7cc723acb3 100644 --- a/test/battle/ability/dauntless_shield.c +++ b/test/battle/ability/dauntless_shield.c @@ -56,7 +56,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield activates when it's no longer effected by N } SCENE { ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); MESSAGE("Neutralizing Gas filled the area!"); - MESSAGE("Weezing, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Weezing"); MESSAGE("The effects of Neutralizing Gas wore off!"); ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); diff --git a/test/battle/ability/defiant.c b/test/battle/ability/defiant.c index d464dd2443f3..84b65bdc5092 100644 --- a/test/battle/ability/defiant.c +++ b/test/battle/ability/defiant.c @@ -128,7 +128,7 @@ SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, opponent); // Switch-in - Sticky Web activates - MESSAGE("Go! Mankey!"); + SEND_IN_MESSAGE("Mankey"); MESSAGE("Mankey was caught in a Sticky Web!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Mankey's Speed fell!"); diff --git a/test/battle/ability/download.c b/test/battle/ability/download.c index 4a6daf8d189d..9fecda400d3b 100644 --- a/test/battle/ability/download.c +++ b/test/battle/ability/download.c @@ -73,7 +73,7 @@ SINGLE_BATTLE_TEST("Download doesn't activate if target hasn't been sent out yet ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Porygon!"); + SEND_IN_MESSAGE("Porygon"); NONE_OF { ABILITY_POPUP(player, ABILITY_DOWNLOAD); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); diff --git a/test/battle/ability/effect_spore.c b/test/battle/ability/effect_spore.c new file mode 100644 index 000000000000..107cd086757f --- /dev/null +++ b/test/battle/ability/effect_spore.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Effect Spore only inflicts status on contact") +{ + u32 move; + + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + ASSUME(!gMovesInfo[MOVE_SWIFT].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } + } WHEN { + TURN { MOVE(player, move, WITH_RNG(RNG_EFFECT_SPORE, 1)); } + TURN {} + } SCENE { + if (gMovesInfo[move].makesContact) { + ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!"); + STATUS_ICON(player, poison: TRUE); + } else { + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!"); + STATUS_ICON(player, poison: TRUE); + } + } + } +} + +SINGLE_BATTLE_TEST("Effect Spore causes poison 9% of the time") +{ + PASSES_RANDOMLY(9, 100, RNG_EFFECT_SPORE); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!"); + STATUS_ICON(player, poison: TRUE); + } +} + +SINGLE_BATTLE_TEST("Effect Spore causes paralysis 10% of the time") +{ + PASSES_RANDOMLY(10, 100, RNG_EFFECT_SPORE); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + MESSAGE("Foe Breloom's Effect Spore paralyzed Wobbuffet! It may be unable to move!"); + STATUS_ICON(player, paralysis: TRUE); + } +} + +SINGLE_BATTLE_TEST("Effect Spore causes sleep 11% of the time") +{ + PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player); + MESSAGE("Foe Breloom's Effect Spore made Wobbuffet sleep!"); + STATUS_ICON(player, sleep: TRUE); + } +} diff --git a/test/battle/ability/embody_aspect.c b/test/battle/ability/embody_aspect.c index 728ba8cb9432..a2427875f6a0 100644 --- a/test/battle/ability/embody_aspect.c +++ b/test/battle/ability/embody_aspect.c @@ -50,7 +50,7 @@ SINGLE_BATTLE_TEST("Embody Aspect activates when it's no longer effected by Neut } SCENE { ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); MESSAGE("Neutralizing Gas filled the area!"); - MESSAGE("Weezing, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Weezing"); MESSAGE("The effects of Neutralizing Gas wore off!"); ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); diff --git a/test/battle/ability/flame_body.c b/test/battle/ability/flame_body.c index 84d2cd48f254..f44fb91724a4 100644 --- a/test/battle/ability/flame_body.c +++ b/test/battle/ability/flame_body.c @@ -29,3 +29,21 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact") } } } + +SINGLE_BATTLE_TEST("Flame Body triggers 30% of the time") +{ + PASSES_RANDOMLY(3, 10, RNG_FLAME_BODY); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_FLAME_BODY); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player); + MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!"); + STATUS_ICON(player, burn: TRUE); + } +} diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index 2c1006e3f571..69a76b8e816c 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -143,7 +143,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back when it switches out") ABILITY_POPUP(player, ABILITY_FLOWER_GIFT); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); - MESSAGE("Cherrim, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Cherrim"); } THEN { EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CHERRIM); } diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index f87e34a532be..427a8e6807e0 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -368,7 +368,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back when it switches out") ABILITY_POPUP(player, ABILITY_FORECAST); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); - MESSAGE("Castform, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Castform"); } THEN { EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_SPECIES), SPECIES_CASTFORM); } diff --git a/test/battle/ability/frisk.c b/test/battle/ability/frisk.c index dd6d0f691f64..385ab7e1f909 100644 --- a/test/battle/ability/frisk.c +++ b/test/battle/ability/frisk.c @@ -37,9 +37,9 @@ SINGLE_BATTLE_TEST("Frisk triggers in a Single Battle") DOUBLE_BATTLE_TEST("Frisk triggers for player in a Double Battle after switching-in after fainting") { - bool32 targetLeft; - PARAMETRIZE { targetLeft = TRUE; } - PARAMETRIZE { targetLeft = FALSE; } + struct BattlePokemon *target = NULL; + PARAMETRIZE { target = playerLeft; } + PARAMETRIZE { target = playerRight; } GIVEN { ASSUME(gMovesInfo[MOVE_POUND].power != 0); @@ -49,20 +49,20 @@ DOUBLE_BATTLE_TEST("Frisk triggers for player in a Double Battle after switching OPPONENT(SPECIES_WYNAUT) { Item(ITEM_POTION); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponentLeft, MOVE_POUND, target: targetLeft ? playerLeft : playerRight); SEND_OUT(targetLeft ? playerLeft : playerRight, 2); } + TURN { MOVE(opponentLeft, MOVE_POUND, target: target); SEND_OUT(target, 2); } } SCENE { MESSAGE("Foe Wynaut used Pound!"); MESSAGE("Wobbuffet fainted!"); - ABILITY_POPUP(targetLeft ? playerLeft : playerRight, ABILITY_FRISK); + ABILITY_POPUP(target, ABILITY_FRISK); MESSAGE("Furret frisked Foe Wynaut and found its Potion!"); } } DOUBLE_BATTLE_TEST("Frisk triggers for opponent in a Double Battle after switching-in after fainting") { - bool32 targetLeft; - PARAMETRIZE { targetLeft = TRUE; } - PARAMETRIZE { targetLeft = FALSE; } + struct BattlePokemon *target = NULL; + PARAMETRIZE { target = opponentLeft; } + PARAMETRIZE { target = opponentRight; } GIVEN { ASSUME(gMovesInfo[MOVE_POUND].power != 0); @@ -72,11 +72,11 @@ DOUBLE_BATTLE_TEST("Frisk triggers for opponent in a Double Battle after switchi OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_FURRET) { Ability(ABILITY_FRISK); }; } WHEN { - TURN { MOVE(playerLeft, MOVE_POUND, target: targetLeft ? opponentLeft : opponentRight); SEND_OUT(targetLeft ? opponentLeft : opponentRight, 2); } + TURN { MOVE(playerLeft, MOVE_POUND, target: target); SEND_OUT(target, 2); } } SCENE { MESSAGE("Wynaut used Pound!"); MESSAGE("Foe Wobbuffet fainted!"); - ABILITY_POPUP(targetLeft ? opponentLeft : opponentRight, ABILITY_FRISK); + ABILITY_POPUP(target, ABILITY_FRISK); MESSAGE("Foe Furret frisked Wynaut and found its Potion!"); } } diff --git a/test/battle/ability/gale_wings.c b/test/battle/ability/gale_wings.c index d8a3873be81c..e74d34790f34 100644 --- a/test/battle/ability/gale_wings.c +++ b/test/battle/ability/gale_wings.c @@ -50,4 +50,40 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority to Flying-type moves") } } -TO_DO_BATTLE_TEST("Gale Wings doesn't increase priority of Flying-type Hidden Power, Natural Gift, Judgment or Tera Blast"); +SINGLE_BATTLE_TEST("Gale Wings doesn't increase priority of Flying-type Natural Gift, Judgment, Hidden Power, or Tera Blast") +{ + u32 move; + u16 heldItem; + PARAMETRIZE { move = MOVE_NATURAL_GIFT; heldItem = ITEM_LUM_BERRY; } + PARAMETRIZE { move = MOVE_JUDGMENT; heldItem = ITEM_SKY_PLATE; } + PARAMETRIZE { move = MOVE_HIDDEN_POWER; heldItem = ITEM_NONE; } + GIVEN { + ASSUME(B_GALE_WINGS >= GEN_7); + ASSUME(gMovesInfo[MOVE_NATURAL_GIFT].effect == EFFECT_NATURAL_GIFT); + ASSUME(gMovesInfo[MOVE_JUDGMENT].effect == EFFECT_CHANGE_TYPE_ON_ITEM); + // IV combinations sourced from https://www.smogon.com/forums/threads/hidden-power-iv-combinations.78083/ + ASSUME(gMovesInfo[MOVE_HIDDEN_POWER].effect == EFFECT_HIDDEN_POWER); + ASSUME(gMovesInfo[MOVE_TERA_BLAST].effect == EFFECT_TERA_BLAST); + ASSUME(gItemsInfo[ITEM_SKY_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItemsInfo[ITEM_SKY_PLATE].secondaryId == TYPE_FLYING); + ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_LUM_BERRY)].type == TYPE_FLYING); + OPPONENT(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); Speed(1); Item(heldItem); HPIV(31); AttackIV(3); DefenseIV(31); SpAttackIV(30); SpDefenseIV(30); SpeedIV(30); TeraType(TYPE_FLYING); } + PLAYER(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + MESSAGE("Wobbuffet used Celebrate!"); + if (move == MOVE_NATURAL_GIFT) { + MESSAGE("Foe Talonflame used Natural Gift!"); + } + else if (move == MOVE_JUDGMENT) { + MESSAGE("Foe Talonflame used Judgment!"); + } + else if (move == MOVE_HIDDEN_POWER) { + MESSAGE("Foe Talonflame used Hidden Power!"); + } + else { + MESSAGE("Foe Talonflame used Tera Blast!"); + } + } +} diff --git a/test/battle/ability/hospitality.c b/test/battle/ability/hospitality.c index c40512d5be8f..058254918025 100644 --- a/test/battle/ability/hospitality.c +++ b/test/battle/ability/hospitality.c @@ -18,12 +18,12 @@ DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health") } SCENE { if (health == 75) { ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); + MESSAGE("Wobbuffet drank down all the matcha that Poltchageist made!"); HP_BAR(playerRight, damage: -25); } else { NONE_OF { ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); + MESSAGE("Wobbuffet drank down all the matcha that Poltchageist made!"); HP_BAR(playerRight, damage: -25); } } @@ -41,10 +41,10 @@ DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health on switch-in" } WHEN { TURN { SWITCH(playerLeft, 2); } } SCENE { - MESSAGE("Wobbuffet, that's enough! Come back!"); - MESSAGE("Go! Ptchageist!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Poltchageist"); ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); + MESSAGE("Wobbuffet drank down all the matcha that Poltchageist made!"); HP_BAR(playerRight, damage: -25); } } @@ -62,10 +62,10 @@ DOUBLE_BATTLE_TEST("Hospitality ignores Substitute") TURN { SWITCH(playerLeft, 2); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, playerRight); - MESSAGE("Wobbuffet, that's enough! Come back!"); - MESSAGE("Go! Ptchageist!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Poltchageist"); ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); - MESSAGE("Wobbuffet drank down all the matcha that Ptchageist made!"); + MESSAGE("Wobbuffet drank down all the matcha that Poltchageist made!"); } } @@ -85,7 +85,7 @@ DOUBLE_BATTLE_TEST("Hospitality does not trigger if there is no ally on the fiel MESSAGE("Wobbuffet fainted!"); HP_BAR(playerRight); MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Ptchageist!"); + SEND_IN_MESSAGE("Poltchageist"); NOT ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); } } diff --git a/test/battle/ability/ice_body.c b/test/battle/ability/ice_body.c index aca84532a447..1aa7c80a4d98 100644 --- a/test/battle/ability/ice_body.c +++ b/test/battle/ability/ice_body.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Ice Body recovers 1/16th of Max HP in hail.") TURN { MOVE(opponent, MOVE_HAIL); } } SCENE { ABILITY_POPUP(player, ABILITY_ICE_BODY); - MESSAGE("Glalie's Ice Body healed it a little bit!"); HP_BAR(player, damage: -(100 / 16)); + MESSAGE("Glalie's Ice Body healed it a little bit!"); } } diff --git a/test/battle/ability/illusion.c b/test/battle/ability/illusion.c new file mode 100644 index 000000000000..ca3bcb2ee0b4 --- /dev/null +++ b/test/battle/ability/illusion.c @@ -0,0 +1,24 @@ +#include "global.h" +#include "test/battle.h" + +// This test is eyes on only +SINGLE_BATTLE_TEST("Illusion can only imitate Normal Form terapagos") +{ + GIVEN { + PLAYER(SPECIES_ZOROARK) { Moves(MOVE_CELEBRATE); } + PLAYER(SPECIES_TERAPAGOS) { Moves(MOVE_CELEBRATE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + // Zoroark is out, should be normal form Terapagos + // Switch to Terapagos which enters Terastal Form + TURN { SWITCH(player, 1); } + // Switch back to Zoroark, should not be Terastal Terapagos + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_TACKLE);} + // Switch back to Terapagos + TURN { SWITCH(player, 1); } + // Terapagos Stellar, Zoroark gets Roared in, should not be Stellar Terapagos + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROAR); } + // Reveal the Zoroark + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + } +} diff --git a/test/battle/ability/intimidate.c b/test/battle/ability/intimidate.c index 09677523c1ef..d2d7bc4af706 100644 --- a/test/battle/ability/intimidate.c +++ b/test/battle/ability/intimidate.c @@ -77,7 +77,7 @@ DOUBLE_BATTLE_TEST("Intimidate doesn't activate on an empty field in a double ba ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, playerLeft); // Everyone faints. - MESSAGE("Go! Ekans!"); + SEND_IN_MESSAGE("Ekans"); NONE_OF { ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); @@ -87,7 +87,7 @@ DOUBLE_BATTLE_TEST("Intimidate doesn't activate on an empty field in a double ba ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); } - MESSAGE("Go! Abra!"); + SEND_IN_MESSAGE("Abra"); MESSAGE("2 sent out Wynaut!"); // Intimidate activates after all battlers have been brought out ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); @@ -113,9 +113,9 @@ SINGLE_BATTLE_TEST("Intimidate and Eject Button force the opponent to Attack") OPPONENT(SPECIES_HITMONTOP) { Moves(MOVE_TACKLE); } } WHEN { TURN { - MOVE(player, MOVE_QUICK_ATTACK); - MOVE(opponent, MOVE_TACKLE); - SEND_OUT(opponent, 1); + MOVE(player, MOVE_QUICK_ATTACK); + MOVE(opponent, MOVE_TACKLE); + SEND_OUT(opponent, 1); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); @@ -153,12 +153,12 @@ DOUBLE_BATTLE_TEST("Intimidate activates on an empty slot") } SCENE { - MESSAGE("Wobbuffet, that's enough! Come back!"); - MESSAGE("Go! Wynaut!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_MOVE, MOVE_GUNK_SHOT, playerRight); ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponentRight); - MESSAGE("Wynaut, that's enough! Come back!"); - MESSAGE("Go! Hitmontop!"); + SWITCH_OUT_MESSAGE("Wynaut"); + SEND_IN_MESSAGE("Hitmontop"); ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); NONE_OF { MESSAGE("Hitmontop's Intimidate cuts Foe Ralts's attack!"); @@ -245,3 +245,21 @@ DOUBLE_BATTLE_TEST("Intimidate is not going to trigger if a mon switches out thr NOT ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); } } + +SINGLE_BATTLE_TEST("Intimidate activates when it's no longer effected by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARBOK) { Ability(ABILITY_INTIMIDATE); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Neutralizing Gas filled the area!"); + SWITCH_OUT_MESSAGE("Weezing"); + MESSAGE("The effects of Neutralizing Gas wore off!"); + ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); + SEND_IN_MESSAGE("Wobbuffet"); + } +} diff --git a/test/battle/ability/intrepid_sword.c b/test/battle/ability/intrepid_sword.c index 0194a9be5b76..fdae307a43bd 100644 --- a/test/battle/ability/intrepid_sword.c +++ b/test/battle/ability/intrepid_sword.c @@ -56,7 +56,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword activates when it's no longer effected by Neu } SCENE { ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); MESSAGE("Neutralizing Gas filled the area!"); - MESSAGE("Weezing, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Weezing"); MESSAGE("The effects of Neutralizing Gas wore off!"); ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index 38ee8dab91e8..327b493a35d4 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -55,11 +55,11 @@ SINGLE_BATTLE_TEST("Mirror Armor triggers even if the attacking Pokemon also has } WHEN { TURN { MOVE(opponent, MOVE_LEER); } } SCENE { - MESSAGE("Foe Corviknigh used Leer!"); + MESSAGE("Foe Corviknight used Leer!"); ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); - MESSAGE("Foe Corviknigh's Defense fell!"); + MESSAGE("Foe Corviknight's Defense fell!"); } THEN { EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE); EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE - 1); @@ -153,9 +153,9 @@ SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stat of the attacking Pokemon TURN { MOVE(player, MOVE_SCREECH); } TURN { MOVE(opponent, MOVE_LEER); } } SCENE { - MESSAGE("Corviknigh used Screech!"); - MESSAGE("Corviknigh used Screech!"); - MESSAGE("Corviknigh used Screech!"); + MESSAGE("Corviknight used Screech!"); + MESSAGE("Corviknight used Screech!"); + MESSAGE("Corviknight used Screech!"); MESSAGE("Foe Wynaut used Leer!"); ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); @@ -188,8 +188,8 @@ DOUBLE_BATTLE_TEST("Mirror Armor lowers Speed of the partner Pokemon after Court MESSAGE("Wobbuffet used Sticky Web!"); MESSAGE("Foe Wynaut used Court Change!"); MESSAGE("Foe Wynaut swapped the battle effects affecting each side!"); - MESSAGE("Go! Corviknigh!"); - MESSAGE("Corviknigh was caught in a Sticky Web!"); + SEND_IN_MESSAGE("Corviknight"); + MESSAGE("Corviknight was caught in a Sticky Web!"); ABILITY_POPUP(playerRight, ABILITY_MIRROR_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); MESSAGE("Wobbuffet's Speed fell!"); diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c index d262de362d4f..945e975b77a6 100644 --- a/test/battle/ability/parental_bond.c +++ b/test/battle/ability/parental_bond.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Parental Bond converts Tackle into a two-strike move") PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Parental Bond does not convert a move with three or more str PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TRIPLE_KICK, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TRIPLE_KICK, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Parental Bond converts multi-target moves into a two-strike PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, move, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, move, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -86,7 +86,7 @@ DOUBLE_BATTLE_TEST("Parental Bond does not convert multi-target moves into a two OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_PIDGEY); } WHEN { - TURN { MOVE(playerLeft, MOVE_EARTHQUAKE, megaEvolve: TRUE); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentLeft, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_EARTHQUAKE, gimmick: GIMMICK_MEGA); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentLeft, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_CELEBRATE); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, playerLeft); @@ -114,7 +114,7 @@ SINGLE_BATTLE_TEST("Parental Bond-converted moves only hit once on Lightning Rod PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(species) { Ability(ability); } } WHEN { - TURN { MOVE(player, move, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, move, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_COMET_PUNCH, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -168,7 +168,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_COMET_PUNCH, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -195,7 +195,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_COMET_PUNCH, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -223,7 +223,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_COMET_PUNCH, gimmick: GIMMICK_MEGA); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); @@ -248,7 +248,7 @@ SINGLE_BATTLE_TEST("Parental Bond Smack Down effect triggers after 2nd hit") PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } OPPONENT(SPECIES_SKARMORY); } WHEN { - TURN { MOVE(player, MOVE_SMACK_DOWN, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_SMACK_DOWN, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index bd713fa2fc7b..26c9c7296834 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -30,3 +30,22 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact") } } } + +SINGLE_BATTLE_TEST("Poison Point triggers 30% of the time") +{ + PASSES_RANDOMLY(3, 10, RNG_POISON_POINT); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN {} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_POISON_POINT); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); + MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!"); + STATUS_ICON(player, poison: TRUE); + } +} diff --git a/test/battle/ability/poison_puppeteer.c b/test/battle/ability/poison_puppeteer.c new file mode 100644 index 000000000000..af5d5389fa65 --- /dev/null +++ b/test/battle/ability/poison_puppeteer.c @@ -0,0 +1,73 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ +} + +SINGLE_BATTLE_TEST("Poison Puppeteer confuses target if it was poisoned by a damaging move") +{ + GIVEN { + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + PLAYER(SPECIES_PECHARUNT) { Ability(ABILITY_POISON_PUPPETEER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POISON_STING); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_STING, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } +} + +SINGLE_BATTLE_TEST("Poison Puppeteer confuses target if it was (badly) poisoned by a status move") +{ + u32 move; + + PARAMETRIZE { move = MOVE_POISON_POWDER; } + PARAMETRIZE { move = MOVE_TOXIC; } + + GIVEN { + ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON) == TRUE); + PLAYER(SPECIES_PECHARUNT) { Ability(ABILITY_POISON_PUPPETEER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + if (move == MOVE_POISON_POWDER) + STATUS_ICON(opponent, poison: TRUE); + else + STATUS_ICON(opponent, badPoison: TRUE); + ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } +} + +SINGLE_BATTLE_TEST("Poison Puppeteer does not trigger if poison is Toxic Spikes induced") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TOXIC_SPIKES].effect == EFFECT_TOXIC_SPIKES); + PLAYER(SPECIES_PECHARUNT) { Ability(ABILITY_POISON_PUPPETEER); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TOXIC_SPIKES);} + TURN { SWITCH(opponent, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + STATUS_ICON(opponent, poison: TRUE); + NONE_OF { + ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } + } +} diff --git a/test/battle/ability/prankster.c b/test/battle/ability/prankster.c index 8c5feaee430a..d5fae3edb746 100644 --- a/test/battle/ability/prankster.c +++ b/test/battle/ability/prankster.c @@ -196,7 +196,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves can still be bounced back by a Dark PLAYER(SPECIES_ABSOL) { Item(ITEM_ABSOLITE); } OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CONFUSE_RAY); } } SCENE { MESSAGE("Foe Volbeat's Confuse Ray was bounced back by Absol's Magic Bounce!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); @@ -209,7 +209,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Boun PLAYER(SPECIES_ABSOL) { Item(ITEM_ABSOLITE); } OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CONFUSE_RAY); } } SCENE { MESSAGE("Foe Murkrow's Confuse Ray was bounced back by Absol's Magic Bounce!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player); diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c index 264548c207f3..3cb35164ec7b 100644 --- a/test/battle/ability/protosynthesis.c +++ b/test/battle/ability/protosynthesis.c @@ -17,8 +17,8 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts the highest stat") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); - MESSAGE("WalkngWake's Sp. Atk was heightened!"); + MESSAGE("The harsh sunlight activated Walking Wake's Protosynthesis!"); + MESSAGE("Walking Wake's Sp. Atk was heightened!"); } } @@ -68,19 +68,19 @@ SINGLE_BATTLE_TEST("Protosynthesis ability pop up activates only once during the } SCENE { ABILITY_POPUP(opponent, ABILITY_DROUGHT); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); - MESSAGE("WalkngWake's Sp. Atk was heightened!"); + MESSAGE("The harsh sunlight activated Walking Wake's Protosynthesis!"); + MESSAGE("Walking Wake's Sp. Atk was heightened!"); NONE_OF { for (turns = 0; turns < 4; turns++) { ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); - MESSAGE("WalkngWake's Sp. Atk was heightened!"); + MESSAGE("The harsh sunlight activated Walking Wake's Protosynthesis!"); + MESSAGE("Walking Wake's Sp. Atk was heightened!"); } } ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); - MESSAGE("WalkngWake's Sp. Atk was heightened!"); + MESSAGE("The harsh sunlight activated Walking Wake's Protosynthesis!"); + MESSAGE("Walking Wake's Sp. Atk was heightened!"); } } @@ -95,7 +95,7 @@ SINGLE_BATTLE_TEST("Protosynthesis activates on switch-in") } SCENE { ABILITY_POPUP(opponent, ABILITY_DROUGHT); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated RoarngMoon's Protosynthesis!"); - MESSAGE("RoarngMoon's Attack was heightened!"); + MESSAGE("The harsh sunlight activated Roaring Moon's Protosynthesis!"); + MESSAGE("Roaring Moon's Attack was heightened!"); } } diff --git a/test/battle/ability/rattled.c b/test/battle/ability/rattled.c index c63e24557564..fed99b775d1e 100644 --- a/test/battle/ability/rattled.c +++ b/test/battle/ability/rattled.c @@ -88,6 +88,6 @@ SINGLE_BATTLE_TEST("Rattled triggers correctly when hit by U-Turn") // Specific ABILITY_POPUP(opponent, ABILITY_RATTLED); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Sudowoodo's Speed rose!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } diff --git a/test/battle/ability/shed_skin.c b/test/battle/ability/shed_skin.c new file mode 100644 index 000000000000..d3030b9baf49 --- /dev/null +++ b/test/battle/ability/shed_skin.c @@ -0,0 +1,19 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Shed Skin triggers 30% of the time") +{ + PASSES_RANDOMLY(3, 10, RNG_SHED_SKIN); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARBOK) { Status1(STATUS1_POISON); Ability(ABILITY_SHED_SKIN); } + } WHEN { + TURN; + } SCENE { + ABILITY_POPUP(opponent, ABILITY_SHED_SKIN); + MESSAGE("Foe Arbok's Shed Skin cured its poison problem!"); + STATUS_ICON(opponent, poison: FALSE); + } +} diff --git a/test/battle/ability/shield_dust.c b/test/battle/ability/shield_dust.c index 93a277dea8bf..d1785bd69e1b 100644 --- a/test/battle/ability/shield_dust.c +++ b/test/battle/ability/shield_dust.c @@ -95,7 +95,7 @@ SINGLE_BATTLE_TEST("Shield Dust does not block self-targeting effects, primary o GIVEN { ASSUME(MoveHasAdditionalEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE); ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPID_SPIN) == TRUE); - ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE); ASSUME(MoveHasAdditionalEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_VIVILLON) { Ability(ABILITY_SHIELD_DUST); } diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index 0f1b4f816fe6..2e74db3e140e 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -29,3 +29,21 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact") } } } + +SINGLE_BATTLE_TEST("Static triggers 30% of the time") +{ + PASSES_RANDOMLY(3, 10, RNG_STATIC); + GIVEN { + ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4); + ASSUME(gMovesInfo[MOVE_TACKLE].makesContact); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_STATIC); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player); + MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!"); + STATUS_ICON(player, paralysis: TRUE); + } +} diff --git a/test/battle/ability/supreme_overlord.c b/test/battle/ability/supreme_overlord.c index baf20764298c..dcaaa494a0df 100644 --- a/test/battle/ability/supreme_overlord.c +++ b/test/battle/ability/supreme_overlord.c @@ -106,7 +106,7 @@ SINGLE_BATTLE_TEST("Supreme Overlord's message displays correctly after all batt HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); // Everyone faints. - MESSAGE("Go! Kingambit!"); + SEND_IN_MESSAGE("Kingambit"); MESSAGE("2 sent out Wobbuffet!"); ABILITY_POPUP(player, ABILITY_SUPREME_OVERLORD); MESSAGE("Kingambit gained strength from the fallen!"); @@ -127,7 +127,7 @@ SINGLE_BATTLE_TEST("Supreme Overlord's message displays correctly after all batt HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Kingambit!"); ABILITY_POPUP(opponent, ABILITY_SUPREME_OVERLORD); MESSAGE("Foe Kingambit gained strength from the fallen!"); diff --git a/test/battle/ability/sword_of_ruin.c b/test/battle/ability/sword_of_ruin.c index 7fc2c30d2a1f..02eec69ed868 100644 --- a/test/battle/ability/sword_of_ruin.c +++ b/test/battle/ability/sword_of_ruin.c @@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Chien-Pao!"); ABILITY_POPUP(opponent, ABILITY_SWORD_OF_RUIN); MESSAGE("Foe Chien-Pao's Sword of Ruin weakened the Defense of all surrounding Pokémon!"); diff --git a/test/battle/ability/tablets_of_ruin.c b/test/battle/ability/tablets_of_ruin.c index d8858aca2edc..7862a0bb8c56 100644 --- a/test/battle/ability/tablets_of_ruin.c +++ b/test/battle/ability/tablets_of_ruin.c @@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Wo-Chien!"); ABILITY_POPUP(opponent, ABILITY_TABLETS_OF_RUIN); MESSAGE("Foe Wo-Chien's Tablets of Ruin weakened the Attack of all surrounding Pokémon!"); diff --git a/test/battle/ability/tera_shell.c b/test/battle/ability/tera_shell.c new file mode 100644 index 000000000000..138a56f9b4eb --- /dev/null +++ b/test/battle/ability/tera_shell.c @@ -0,0 +1,99 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Tera Shell makes all moves against Terapagos not very effective when at full HP") +{ + u16 hp; + PARAMETRIZE { hp = 100; } + PARAMETRIZE { hp = 99; } + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); HP(hp); MaxHP(100);} + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (hp == 100) { + MESSAGE("Foe Wobbuffet used Tackle!"); + ABILITY_POPUP(player, ABILITY_TERA_SHELL); + MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + MESSAGE("It's not very effective…"); + } + else { + NONE_OF { + ABILITY_POPUP(player, ABILITY_TERA_SHELL); + MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); + MESSAGE("It's not very effective…"); + } + } + } +} + +SINGLE_BATTLE_TEST("Tera Shell makes all hits of multi-hit moves against Terapagos not very effective") +{ + s16 firstHit; + s16 secondHit; + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DOUBLE_HIT); } + } SCENE { + MESSAGE("Foe Wobbuffet used Double Hit!"); + ABILITY_POPUP(player, ABILITY_TERA_SHELL); + MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_HIT, opponent); + HP_BAR(player, captureDamage: &firstHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_HIT, opponent); + HP_BAR(player, captureDamage: &secondHit); + MESSAGE("It's not very effective…"); + } THEN { + EXPECT_EQ(firstHit, secondHit); + } +} + +DOUBLE_BATTLE_TEST("Tera Shell only makes the first hit of a double battle turn not very effective") +{ + s16 firstHit; + s16 secondHit; + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_TERA_SHELL); + MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + HP_BAR(playerLeft, captureDamage: &firstHit); + MESSAGE("It's not very effective…"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + HP_BAR(playerLeft, captureDamage: &secondHit); + NOT MESSAGE("It's not very effective…"); + } THEN { + EXPECT_MUL_EQ(firstHit, Q_4_12(2.0), secondHit); + } +} + +DOUBLE_BATTLE_TEST("Tera Shell only makes the first hit against Terapagos from a multi-target move not very effective") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_BLIZZARD); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_TERA_SHELL); + MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLIZZARD, opponentLeft); + HP_BAR(playerLeft); + MESSAGE("It's not very effective…"); + HP_BAR(playerRight); + NOT MESSAGE("It's not very effective…"); + } +} diff --git a/test/battle/ability/tera_shift.c b/test/battle/ability/tera_shift.c new file mode 100644 index 000000000000..9149160cd18d --- /dev/null +++ b/test/battle/ability/tera_shift.c @@ -0,0 +1,35 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Tera Shift transforms Terapagos into its Terastal form on switch in") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_NORMAL) { Ability(ABILITY_TERA_SHIFT); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { ; } + } SCENE { + ABILITY_POPUP(player, ABILITY_TERA_SHIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Terapagos transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_TERAPAGOS_TERASTAL); + } +} + +SINGLE_BATTLE_TEST("Tera Shift can't be suppressed by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_NORMAL) { Ability(ABILITY_TERA_SHIFT); } + OPPONENT(SPECIES_KOFFING) { Ability(ABILITY_NEUTRALIZING_GAS); } + } WHEN { + TURN { ; } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS); + ABILITY_POPUP(player, ABILITY_TERA_SHIFT); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + MESSAGE("Terapagos transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_TERAPAGOS_TERASTAL); + } +} diff --git a/test/battle/ability/teraform_zero.c b/test/battle/ability/teraform_zero.c new file mode 100644 index 000000000000..6540515322fb --- /dev/null +++ b/test/battle/ability/teraform_zero.c @@ -0,0 +1,102 @@ +#include "global.h" +#include "test/battle.h" + +DOUBLE_BATTLE_TEST("Teraform Zero clears weather and terrain upon activation") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); } + OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_TERAFORM_ZERO); + MESSAGE("The rain stopped."); + MESSAGE("The electricity disappeared from the battlefield."); + } +} + +DOUBLE_BATTLE_TEST("Teraform Zero can be supressed") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WEEZING) {Ability(ABILITY_NEUTRALIZING_GAS); } + OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); } + OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); } + } WHEN { + TURN { SWITCH(playerRight, 2); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + ABILITY_POPUP(playerRight, ABILITY_NEUTRALIZING_GAS); + NONE_OF { + MESSAGE("The rain stopped."); + MESSAGE("The electricity disappeared from the battlefield."); + } + } +} + +SINGLE_BATTLE_TEST("Teraform Zero can be replaced") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_WORRY_SEED].effect == EFFECT_WORRY_SEED); + ASSUME(gMovesInfo[MOVE_REST].effect == EFFECT_REST); + PLAYER(SPECIES_TERAPAGOS); + OPPONENT(SPECIES_WHIMSICOTT) { Ability(ABILITY_PRANKSTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_WORRY_SEED); MOVE(player, MOVE_REST, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Foe Whimsicott used Worry Seed!"); + MESSAGE("Terapagos acquired Insomnia!"); + MESSAGE("Terapagos used Rest!"); + ABILITY_POPUP(player, ABILITY_INSOMNIA); + MESSAGE("Terapagos stayed awake using its Insomnia!"); + } +} + +SINGLE_BATTLE_TEST("Teraform Zero cannot be swapped") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_SKILL_SWAP].effect == EFFECT_SKILL_SWAP); + PLAYER(SPECIES_TERAPAGOS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + MESSAGE("Foe Wobbuffet used Skill Swap!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Teraform Zero cannot be copied") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); + PLAYER(SPECIES_TERAPAGOS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROLE_PLAY); } + } SCENE { + MESSAGE("Foe Wobbuffet used Role Play!"); + MESSAGE("But it failed!"); + } +} + +DOUBLE_BATTLE_TEST("Teraform Zero shouldn't cause Neutralizing Gas to show it's popup when trying to activate") +{ + KNOWN_FAILING; // #5010 + GIVEN { + PLAYER(SPECIES_TERAPAGOS_TERASTAL); + PLAYER(SPECIES_ABSOL) {Ability(ABILITY_PRESSURE); } + PLAYER(SPECIES_WEEZING) {Ability(ABILITY_NEUTRALIZING_GAS); } + OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); } + OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); } + } WHEN { + TURN { SWITCH(playerRight, 2); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Terapagos is storing energy!"); + MESSAGE("Terapagos terastalized into the Stellar type!"); + NOT ABILITY_POPUP(playerRight, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Terapagos used Celebreate!"); + } +} diff --git a/test/battle/ability/toxic_chain.c b/test/battle/ability/toxic_chain.c new file mode 100644 index 000000000000..2c29770f52a6 --- /dev/null +++ b/test/battle/ability/toxic_chain.c @@ -0,0 +1,112 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Toxic Chain inflicts bad poison when attacking") +{ + PASSES_RANDOMLY(3, 10, RNG_TOXIC_CHAIN); + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_TACKLE].power > 0); + PLAYER(SPECIES_OKIDOGI) { Ability(ABILITY_TOXIC_CHAIN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + MESSAGE("Foe Wobbuffet is badly poisoned!"); + STATUS_ICON(opponent, badPoison: TRUE); + } THEN { + EXPECT(opponent->status1 & STATUS1_TOXIC_POISON); + } +} + +SINGLE_BATTLE_TEST("Toxic Chain inflicts bad poison on any hit of a multi-hit move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_DOUBLE_SLAP].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_DOUBLE_SLAP].effect == EFFECT_MULTI_HIT); + ASSUME(gMovesInfo[MOVE_DOUBLE_SLAP].power > 0); + ASSUME(gItemsInfo[ITEM_PECHA_BERRY].holdEffect == HOLD_EFFECT_CURE_PSN); + PLAYER(SPECIES_OKIDOGI) { Ability(ABILITY_TOXIC_CHAIN); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_PECHA_BERRY); } + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_SLAP); } + } SCENE { + ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + MESSAGE("Foe Wobbuffet is badly poisoned!"); + STATUS_ICON(opponent, badPoison: TRUE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + STATUS_ICON(opponent, badPoison: FALSE); + ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + MESSAGE("Foe Wobbuffet is badly poisoned!"); + STATUS_ICON(opponent, badPoison: TRUE); + } THEN { + EXPECT(opponent->status1 & STATUS1_TOXIC_POISON); + } +} + +DOUBLE_BATTLE_TEST("Toxic Chain can inflict bad poison on both foes") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_RAZOR_LEAF].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_RAZOR_LEAF].target == MOVE_TARGET_BOTH); + ASSUME(gMovesInfo[MOVE_RAZOR_LEAF].power > 0); + PLAYER(SPECIES_OKIDOGI) { Ability(ABILITY_TOXIC_CHAIN); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_RAZOR_LEAF, WITH_RNG(RNG_TOXIC_CHAIN, TRUE)); } + } SCENE { + HP_BAR(opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft); + MESSAGE("Foe Wobbuffet is badly poisoned!"); + STATUS_ICON(opponentLeft, badPoison: TRUE); + HP_BAR(opponentRight); + ABILITY_POPUP(playerLeft, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentRight); + MESSAGE("Foe Wynaut is badly poisoned!"); + STATUS_ICON(opponentRight, badPoison: TRUE); + } THEN { + EXPECT(opponentLeft->status1 & STATUS1_TOXIC_POISON); + EXPECT(opponentRight->status1 & STATUS1_TOXIC_POISON); + } +} + +SINGLE_BATTLE_TEST("Toxic Chain makes Lum/Pecha Berry trigger before being knocked off") +{ + u16 item = 0; + + PARAMETRIZE { item = ITEM_PECHA_BERRY; } + PARAMETRIZE { item = ITEM_LUM_BERRY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_KNOCK_OFF].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_KNOCK_OFF].effect == EFFECT_KNOCK_OFF); + ASSUME(gMovesInfo[MOVE_KNOCK_OFF].power > 0); + ASSUME(gItemsInfo[ITEM_PECHA_BERRY].holdEffect == HOLD_EFFECT_CURE_PSN); + ASSUME(gItemsInfo[ITEM_LUM_BERRY].holdEffect == HOLD_EFFECT_CURE_STATUS); + PLAYER(SPECIES_OKIDOGI) { Ability(ABILITY_TOXIC_CHAIN); } + OPPONENT(SPECIES_WOBBUFFET) { Item(item); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF, WITH_RNG(RNG_TOXIC_CHAIN, TRUE)); } + } SCENE { + ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); + MESSAGE("Foe Wobbuffet is badly poisoned!"); + STATUS_ICON(opponent, badPoison: TRUE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + STATUS_ICON(opponent, badPoison: FALSE); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Okidogi knocked off Foe Wobbuffet's Pecha Berry!"); + MESSAGE("Okidogi knocked off Foe Wobbuffet's Lum Berry!"); + } + } THEN { + EXPECT(opponent->status1 == 0); + } +} diff --git a/test/battle/ability/vessel_of_ruin.c b/test/battle/ability/vessel_of_ruin.c index 5f83a6c07f25..362b44c00393 100644 --- a/test/battle/ability/vessel_of_ruin.c +++ b/test/battle/ability/vessel_of_ruin.c @@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Ting-Lu!"); ABILITY_POPUP(opponent, ABILITY_VESSEL_OF_RUIN); MESSAGE("Foe Ting-Lu's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!"); diff --git a/test/battle/ability/wind_power.c b/test/battle/ability/wind_power.c index bbf76cd6fb66..146c47f3dd87 100644 --- a/test/battle/ability/wind_power.c +++ b/test/battle/ability/wind_power.c @@ -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 Wattrel with power!"); + MESSAGE("Being hit by Petal Blizzard charged Wattrel with power!"); } HP_BAR(playerRight); if (abilityRight == ABILITY_WIND_POWER) { ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); - MESSAGE("Being hit by PetalBlizzrd charged Wattrel with power!"); + MESSAGE("Being hit by Petal Blizzard charged Wattrel with power!"); } HP_BAR(opponentRight); NOT HP_BAR(opponentLeft); diff --git a/test/battle/ability/zero_to_hero.c b/test/battle/ability/zero_to_hero.c index 3939c6cb7859..be72a55a7e4e 100644 --- a/test/battle/ability/zero_to_hero.c +++ b/test/battle/ability/zero_to_hero.c @@ -11,16 +11,16 @@ SINGLE_BATTLE_TEST("Zero to Hero transforms Palafin when it switches out") 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!"); + SWITCH_OUT_MESSAGE("Palafin"); + SEND_IN_MESSAGE("Wobbuffet"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("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") +SINGLE_BATTLE_TEST("Zero to Hero can't be suppressed by Neutralizing Gas") { GIVEN { PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } @@ -152,7 +152,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers HP_BAR(opponent, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, opponent); // Everyone faints. - MESSAGE("Go! Palafin!"); + SEND_IN_MESSAGE("Palafin"); MESSAGE("2 sent out Wobbuffet!"); ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); MESSAGE("Palafin underwent a heroic transformation!"); @@ -175,7 +175,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers HP_BAR(player, hp: 0); ANIMATION(ANIM_TYPE_MOVE, MOVE_EXPLOSION, player); // Everyone faints. - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("2 sent out Palafin!"); ABILITY_POPUP(opponent, ABILITY_ZERO_TO_HERO); MESSAGE("Foe Palafin underwent a heroic transformation!"); diff --git a/test/battle/ai.c b/test/battle/ai/ai.c similarity index 70% rename from test/battle/ai.c rename to test/battle/ai/ai.c index 578ca345ffd3..a19481c7ed3a 100644 --- a/test/battle/ai.c +++ b/test/battle/ai/ai.c @@ -2,26 +2,6 @@ #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; @@ -526,235 +506,6 @@ AI_SINGLE_BATTLE_TEST("AI will choose either Rock Tomb or Bulldoze if Stat drop } } -AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is less than recurring healing to avoid an infinite loop") -{ - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } - // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place - OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } - OPPONENT(SPECIES_NINETALES_ALOLAN) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } - OPPONENT(SPECIES_WEAVILE) { Level(100); Moves(MOVE_NIGHT_SLASH, MOVE_TRIPLE_AXEL, MOVE_ICE_SHARD, MOVE_FAKE_OUT); } - OPPONENT(SPECIES_DITTO) { Level(100); Moves(MOVE_TRANSFORM); } - OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } - OPPONENT(SPECIES_UMBREON) { Level(100); Item(ITEM_LEFTOVERS); Moves(MOVE_FOUL_PLAY, MOVE_SNARL, MOVE_HELPING_HAND, MOVE_THUNDER_WAVE); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } - } SCENE { - MESSAGE("Venusaur fainted!"); - } -} - -AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is zero to avoid an infinite loop") -{ - GIVEN { - ASSUME(gItemsInfo[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_BULBASAUR) { Level(5); Moves(MOVE_SWORDS_DANCE, MOVE_WHIRLWIND, MOVE_SAND_ATTACK, MOVE_TAIL_WHIP); } - // Scenario courtesy of Duke, who triggered the bug in the first place - OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } - OPPONENT(SPECIES_NOSEPASS) { Level(100); Moves(MOVE_TACKLE); } - } WHEN { - TURN { MOVE(player, MOVE_SWORDS_DANCE); EXPECT_MOVES(opponent, MOVE_TACKLE); } - } SCENE { - MESSAGE("Bulbasaur fainted!"); - } -} - -AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Avoid infinite loop if damage taken is equal to recurring healing") -{ - GIVEN { - ASSUME(gItemsInfo[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); - PLAYER(SPECIES_MEOWTH_GALARIAN) { Level(100); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } - // Scenario courtesy of Duke, who triggered the bug in the first place - OPPONENT(SPECIES_MEOWTH_GALARIAN) { Level(5); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } - OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } - OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } - OPPONENT(SPECIES_NOSEPASS) { Level(5); Moves(MOVE_DOUBLE_EDGE); } - OPPONENT(SPECIES_HOUNDSTONE) { Level(5); Moves(MOVE_NIGHT_SHADE, MOVE_BODY_PRESS, MOVE_WILL_O_WISP, MOVE_PROTECT); Item(ITEM_LEFTOVERS); } - } WHEN { - TURN { MOVE(player, MOVE_FAKE_OUT); EXPECT_MOVES(opponent, MOVE_FAKE_OUT); } - } -} - -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 { - ASSUME(gMovesInfo[MOVE_PSYCHIC].category == DAMAGE_CATEGORY_SPECIAL); - ASSUME(gMovesInfo[MOVE_FOCUS_BLAST].category == DAMAGE_CATEGORY_SPECIAL); - ASSUME(gMovesInfo[MOVE_BUBBLE_BEAM].category == DAMAGE_CATEGORY_SPECIAL); - ASSUME(gMovesInfo[MOVE_WATER_GUN].category == DAMAGE_CATEGORY_SPECIAL); - ASSUME(gMovesInfo[MOVE_STRENGTH].category == DAMAGE_CATEGORY_PHYSICAL); - 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 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_MON_CHOICES: U-Turn will send out Ace Mon if it's the only one remaining") -{ - GIVEN { - ASSUME(gMovesInfo[MOVE_U_TURN].effect == EFFECT_HIT_ESCAPE); - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_ACE_POKEMON); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_U_TURN); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { EXPECT_MOVE(opponent, MOVE_U_TURN); EXPECT_SEND_OUT(opponent, 1); } - } -} - -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 { - ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(gMovesInfo[MOVE_RAPID_SPIN].category == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(gMovesInfo[MOVE_EARTHQUAKE].category == DAMAGE_CATEGORY_PHYSICAL); - ASSUME(gMovesInfo[MOVE_HEADBUTT].category == DAMAGE_CATEGORY_PHYSICAL); - 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); - } - } -} - AI_SINGLE_BATTLE_TEST("First Impression is preferred on the first turn of the species if it's the best dmg move") { GIVEN { @@ -791,34 +542,6 @@ AI_SINGLE_BATTLE_TEST("First Impression is not chosen if it's blocked by certain } } -AI_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spots in a double battle") -{ - u32 flags; - - PARAMETRIZE {flags = AI_FLAG_SMART_SWITCHING; } - PARAMETRIZE {flags = 0; } - - GIVEN { - AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | flags); - PLAYER(SPECIES_RATTATA); - PLAYER(SPECIES_RATTATA); - // No moves to damage player. - OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } - OPPONENT(SPECIES_HAUNTER) { Moves(MOVE_SHADOW_BALL); } - OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } - OPPONENT(SPECIES_RATICATE) { Moves(MOVE_HEADBUTT); } - } WHEN { - TURN { EXPECT_SWITCH(opponentLeft, 3); }; - } SCENE { - MESSAGE("{PKMN} TRAINER LEAF withdrew Gengar!"); - MESSAGE("{PKMN} TRAINER LEAF sent out Raticate!"); - NONE_OF { - MESSAGE("{PKMN} TRAINER LEAF withdrew Haunter!"); - MESSAGE("{PKMN} TRAINER LEAF sent out Raticate!"); - } - } -} - AI_SINGLE_BATTLE_TEST("AI will not choose Burn Up if the user lost the Fire typing") { GIVEN { @@ -1053,3 +776,32 @@ AI_SINGLE_BATTLE_TEST("AI avoids contact moves against rocky helmet") } } +AI_SINGLE_BATTLE_TEST("AI uses a guaranteed KO move instead of the move with the highest expected damage") +{ + u32 flags; + + PARAMETRIZE { flags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY; } + PARAMETRIZE { flags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_SLASH].criticalHitStage == 1); + ASSUME(gMovesInfo[MOVE_SLASH].power == 70); + ASSUME(gMovesInfo[MOVE_STRENGTH].power == 80); + ASSUME(gMovesInfo[MOVE_SLASH].type == gMovesInfo[MOVE_STRENGTH].type); + ASSUME(gMovesInfo[MOVE_SLASH].category == gMovesInfo[MOVE_STRENGTH].category); + AI_FLAGS(flags); + PLAYER(SPECIES_WOBBUFFET) { HP(225); } + OPPONENT(SPECIES_ABSOL) { Ability(ABILITY_SUPER_LUCK); Moves(MOVE_SLASH, MOVE_STRENGTH); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_SLASH); } + if (flags & AI_FLAG_TRY_TO_FAINT) + TURN { EXPECT_MOVE(opponent, MOVE_STRENGTH); } + else + TURN { EXPECT_MOVE(opponent, MOVE_SLASH); } + } SCENE { + if (flags & AI_FLAG_TRY_TO_FAINT) + MESSAGE("Wobbuffet fainted!"); + else + NOT MESSAGE("Wobbuffet fainted!"); + } +} diff --git a/test/battle/ai_calc_best_move_score.c b/test/battle/ai/ai_calc_best_move_score.c similarity index 100% rename from test/battle/ai_calc_best_move_score.c rename to test/battle/ai/ai_calc_best_move_score.c diff --git a/test/battle/ai_check_viability.c b/test/battle/ai/ai_check_viability.c similarity index 77% rename from test/battle/ai_check_viability.c rename to test/battle/ai/ai_check_viability.c index dcbcf8dbec08..fa921e8674bc 100644 --- a/test/battle/ai_check_viability.c +++ b/test/battle/ai/ai_check_viability.c @@ -191,3 +191,51 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves with secondary effect that have a 100% c TURN { EXPECT_MOVES(opponent, MOVE_OCTAZOOKA); } } } + +AI_DOUBLE_BATTLE_TEST("AI chooses moves that cure self or partner") +{ + u32 status1_0, status1_1, partnerAbility; + + PARAMETRIZE { status1_0 = STATUS1_NONE; status1_1 = STATUS1_NONE; partnerAbility = ABILITY_SCRAPPY; } + PARAMETRIZE { status1_0 = STATUS1_TOXIC_POISON; status1_1 = STATUS1_NONE; partnerAbility = ABILITY_SCRAPPY; } + PARAMETRIZE { status1_0 = STATUS1_NONE; status1_1 = STATUS1_PARALYSIS; partnerAbility = ABILITY_SCRAPPY; } + PARAMETRIZE { status1_0 = STATUS1_NONE; status1_1 = STATUS1_PARALYSIS; partnerAbility = ABILITY_SOUNDPROOF; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_HEAL_BELL].effect == EFFECT_HEAL_BELL); + ASSUME(B_HEAL_BELL_SOUNDPROOF >= GEN_8); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK) { Moves(MOVE_ROCK_SLIDE, MOVE_HEAL_BELL, MOVE_ACID); Status1(status1_0); } + OPPONENT(SPECIES_EXPLOUD) { Status1(status1_1); Ability(partnerAbility); } + } WHEN { + if (status1_0 != STATUS1_NONE || (status1_1 != STATUS1_NONE && partnerAbility != ABILITY_SOUNDPROOF)) + TURN { EXPECT_MOVE(opponentLeft, MOVE_HEAL_BELL); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_ROCK_SLIDE); } + } +} + +AI_SINGLE_BATTLE_TEST("AI chooses moves that cure inactive party members") +{ + u32 status, ability; + + PARAMETRIZE { status = STATUS1_TOXIC_POISON; ability = ABILITY_SCRAPPY; } + PARAMETRIZE { status = STATUS1_NONE; ability = ABILITY_SCRAPPY; } + PARAMETRIZE { status = STATUS1_TOXIC_POISON; ability = ABILITY_SOUNDPROOF; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_HEAL_BELL].effect == EFFECT_HEAL_BELL); + ASSUME(B_HEAL_BELL_SOUNDPROOF >= GEN_5); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK) { Moves(MOVE_BODY_PRESS, MOVE_HEAL_BELL); } + OPPONENT(SPECIES_EXPLOUD) { Status1(status); Ability(ability); } + } WHEN { + if (status == STATUS1_NONE) + TURN { EXPECT_MOVE(opponent, MOVE_BODY_PRESS); } + else + TURN { EXPECT_MOVE(opponent, MOVE_HEAL_BELL); } + } +} diff --git a/test/battle/ai/ai_choice.c b/test/battle/ai/ai_choice.c new file mode 100644 index 000000000000..c9992d2cab5f --- /dev/null +++ b/test/battle/ai/ai_choice.c @@ -0,0 +1,181 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gItemsInfo[ITEM_CHOICE_SPECS].holdEffect == HOLD_EFFECT_CHOICE_SPECS); + ASSUME(gItemsInfo[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); + ASSUME(gItemsInfo[ITEM_CHOICE_SCARF].holdEffect == HOLD_EFFECT_CHOICE_SCARF); +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon switch out after using a status move once") +{ + u32 j, ability = ABILITY_NONE, heldItem = ITEM_NONE; + + static const u32 choiceItems[] = { + ITEM_CHOICE_SPECS, + ITEM_CHOICE_BAND, + ITEM_CHOICE_SCARF, + }; + + for (j = 0; j < ARRAY_COUNT(choiceItems); j++) + { + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].category == DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_RHYDON) + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } + if (ability == ABILITY_KLUTZ) { // Klutz ignores item + TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + } + else { + TURN { EXPECT_SWITCH(opponent, 1); } + } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use stat boosting moves") +{ + // Moves defined by MOVE_TARGET_USER (with exceptions?) + u32 j, ability = ABILITY_NONE, heldItem = ITEM_NONE; + + static const u32 choiceItems[] = { + ITEM_CHOICE_SPECS, + ITEM_CHOICE_BAND, + ITEM_CHOICE_SCARF, + }; + + for (j = 0; j < ARRAY_COUNT(choiceItems); j++) + { + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].target == MOVE_TARGET_USER); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_RHYDON) + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_SWORDS_DANCE, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } + } WHEN { + if (ability == ABILITY_KLUTZ) { // Klutz ignores item + TURN { EXPECT_MOVE(opponent, MOVE_SWORDS_DANCE); } + } + else { + TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are the only party member") +{ + u32 j, ability = ABILITY_NONE, isAlive = 0, heldItem = ITEM_NONE; + + static const u32 choiceItems[] = { + ITEM_CHOICE_SPECS, + ITEM_CHOICE_BAND, + ITEM_CHOICE_SCARF, + }; + + for (j = 0; j < ARRAY_COUNT(choiceItems); j++) + { + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; isAlive = 0; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; isAlive = 0; } + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; isAlive = 1; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; isAlive = 1; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].category == DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_RHYDON) + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(SPECIES_SWAMPERT) { HP(isAlive); Moves(MOVE_WATERFALL); } + } WHEN { + if (isAlive == 1 || ability == ABILITY_KLUTZ) { + TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } + } + else { + TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they don't have a good switchin") +{ + u32 j, ability = ABILITY_NONE, move = MOVE_NONE, species = SPECIES_NONE, heldItem = ITEM_NONE; + + static const u32 choiceItems[] = { + ITEM_CHOICE_SPECS, + ITEM_CHOICE_BAND, + ITEM_CHOICE_SCARF, + }; + + for (j = 0; j < ARRAY_COUNT(choiceItems); j++) + { + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; species = SPECIES_SWAMPERT; move = MOVE_WATERFALL; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; species = SPECIES_SWAMPERT; move = MOVE_WATERFALL; } + PARAMETRIZE { ability = ABILITY_NONE; heldItem = choiceItems[j]; species = SPECIES_ELEKID; move = MOVE_THUNDER_WAVE; } + PARAMETRIZE { ability = ABILITY_KLUTZ; heldItem = choiceItems[j]; species = SPECIES_ELEKID; move = MOVE_THUNDER_WAVE; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].category == DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_RHYDON) + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(ability); } + OPPONENT(species) { Moves(move); } + } WHEN { + if (species == SPECIES_SWAMPERT || ability == ABILITY_KLUTZ) { + TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } + } + else { + TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + } + } +} + +AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are trapped") +{ + u32 j, aiAbility = ABILITY_NONE, playerAbility = MOVE_NONE, species = SPECIES_NONE, heldItem = ITEM_NONE; + + static const u32 choiceItems[] = { + ITEM_CHOICE_SPECS, + ITEM_CHOICE_BAND, + ITEM_CHOICE_SCARF, + }; + + for (j = 0; j < ARRAY_COUNT(choiceItems); j++) + { + PARAMETRIZE { aiAbility = ABILITY_NONE; heldItem = choiceItems[j]; species = SPECIES_RHYDON; playerAbility = ABILITY_LIGHTNING_ROD; } + PARAMETRIZE { aiAbility = ABILITY_KLUTZ; heldItem = choiceItems[j]; species = SPECIES_RHYDON; playerAbility = ABILITY_LIGHTNING_ROD; } + PARAMETRIZE { aiAbility = ABILITY_NONE; heldItem = choiceItems[j]; species = SPECIES_DUGTRIO; playerAbility = ABILITY_ARENA_TRAP; } + PARAMETRIZE { aiAbility = ABILITY_KLUTZ; heldItem = choiceItems[j]; species = SPECIES_DUGTRIO; playerAbility = ABILITY_ARENA_TRAP; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_YAWN].category == DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(species) { Ability(playerAbility); } + OPPONENT(SPECIES_LOPUNNY) { Moves(MOVE_YAWN, MOVE_TACKLE); Item(heldItem); Ability(aiAbility); } + OPPONENT(SPECIES_SWAMPERT) { Moves(MOVE_WATERFALL); } + } WHEN { + if (playerAbility != ABILITY_ARENA_TRAP || aiAbility == ABILITY_KLUTZ) { + TURN { EXPECT_MOVE(opponent, MOVE_YAWN); } + } + else { + TURN { EXPECT_MOVE(opponent, MOVE_TACKLE); } + } + } +} diff --git a/test/battle/ai/ai_flag_risky.c b/test/battle/ai/ai_flag_risky.c new file mode 100644 index 000000000000..e6156de5a08a --- /dev/null +++ b/test/battle/ai/ai_flag_risky.c @@ -0,0 +1,91 @@ +#include "global.h" +#include "test/battle.h" + +AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will blindly Mirror Coat against special attackers") +{ + u32 aiRiskyFlag = 0; + + PARAMETRIZE { aiRiskyFlag = 0; } + PARAMETRIZE { aiRiskyFlag = AI_FLAG_RISKY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_MIRROR_COAT].effect == EFFECT_MIRROR_COAT); + ASSUME(gSpeciesInfo[SPECIES_GROVYLE].baseSpAttack == 85); + ASSUME(gSpeciesInfo[SPECIES_GROVYLE].baseAttack == 65); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); + PLAYER(SPECIES_GROVYLE) { Level(20); Moves(MOVE_ENERGY_BALL); } + OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_TACKLE, MOVE_MIRROR_COAT); } + } WHEN { + TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_MIRROR_COAT : MOVE_TACKLE); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will blindly Counter against physical attackers") +{ + u32 aiRiskyFlag = 0; + + PARAMETRIZE { aiRiskyFlag = 0; } + PARAMETRIZE { aiRiskyFlag = AI_FLAG_RISKY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_COUNTER].effect == EFFECT_COUNTER); + ASSUME(gSpeciesInfo[SPECIES_MARSHTOMP].baseAttack == 85); + ASSUME(gSpeciesInfo[SPECIES_MARSHTOMP].baseSpAttack == 60); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); + PLAYER(SPECIES_MARSHTOMP) { Level(20); Moves(MOVE_WATERFALL); } + OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_TACKLE, MOVE_COUNTER); } + } WHEN { + TURN { MOVE(player, MOVE_WATERFALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_COUNTER : MOVE_TACKLE); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI will prioritize Revenge if slower") +{ + u32 aiRiskyFlag = 0; + + PARAMETRIZE { aiRiskyFlag = 0; } + PARAMETRIZE { aiRiskyFlag = AI_FLAG_RISKY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_REVENGE].effect == EFFECT_REVENGE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); + PLAYER(SPECIES_GROVYLE) { Level(20); Speed(4); Moves(MOVE_ENERGY_BALL); } + OPPONENT(SPECIES_CASTFORM) { Level(19); Speed(3); Moves(MOVE_TACKLE, MOVE_REVENGE); } + } WHEN { + TURN { MOVE(player, MOVE_ENERGY_BALL) ; EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_REVENGE : MOVE_TACKLE); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: Mid-battle switches prioritize offensive options") +{ + u32 aiRiskyFlag = 0; + + PARAMETRIZE { aiRiskyFlag = 0; } + PARAMETRIZE { aiRiskyFlag = AI_FLAG_RISKY; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | aiRiskyFlag); + 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); SpDefense(41); } // 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, aiRiskyFlag? 2 : 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_RISKY: AI prefers high damage moves at the expense of accuracy regardless of KO thresholds") +{ + u32 aiRiskyFlag = 0; + + PARAMETRIZE { aiRiskyFlag = 0; } + PARAMETRIZE { aiRiskyFlag = AI_FLAG_RISKY; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiRiskyFlag); + PLAYER(SPECIES_PSYDUCK) { Level(5); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_CASTFORM) { Level(20); Moves(MOVE_THUNDER, MOVE_THUNDERBOLT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, aiRiskyFlag ? MOVE_THUNDER : MOVE_THUNDERBOLT); } + } +} diff --git a/test/battle/ai/ai_flag_sequence_switching.c b/test/battle/ai/ai_flag_sequence_switching.c new file mode 100644 index 000000000000..1b4a264a2401 --- /dev/null +++ b/test/battle/ai/ai_flag_sequence_switching.c @@ -0,0 +1,129 @@ +#include "global.h" +#include "test/battle.h" + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SEQUENCE_SWITCHING: AI will always switch after a KO in exactly party order") +{ + u32 aiSequenceSwitchingFlag = 0; + + PARAMETRIZE { aiSequenceSwitchingFlag = 0; } + PARAMETRIZE { aiSequenceSwitchingFlag = AI_FLAG_SEQUENCE_SWITCHING; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSequenceSwitchingFlag); + PLAYER(SPECIES_SWELLOW) { Level (50); } + OPPONENT(SPECIES_MACHOP) { Level(5); } + OPPONENT(SPECIES_MACHOKE) { Level(5); } + OPPONENT(SPECIES_MACHAMP) { Level(5); } + OPPONENT(SPECIES_MANKEY) { Level(5); } + OPPONENT(SPECIES_PRIMEAPE) { Level(5); } + OPPONENT(SPECIES_MAGNEZONE) { Level(100); } + } WHEN { + TURN { MOVE(player, MOVE_WING_ATTACK); } + if (aiSequenceSwitchingFlag) { + TURN { MOVE(player, MOVE_WING_ATTACK); } + TURN { MOVE(player, MOVE_WING_ATTACK); } + TURN { MOVE(player, MOVE_WING_ATTACK); } + TURN { MOVE(player, MOVE_WING_ATTACK); } + } + } SCENE { + if (aiSequenceSwitchingFlag) { + MESSAGE("{PKMN} TRAINER LEAF sent out Machoke!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Machamp!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Mankey!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Primeape!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Magnezone!"); + } + else { + MESSAGE("{PKMN} TRAINER LEAF sent out Magnezone!"); + } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SEQUENCE_SWITCHING: Roar and Dragon Tail still force switch to random party member") +{ + u32 move; + + PARAMETRIZE { move = MOVE_ROAR; } + PARAMETRIZE {move = MOVE_DRAGON_TAIL; } + + PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH); + GIVEN { + ASSUME(gMovesInfo[MOVE_ROAR].effect == EFFECT_ROAR); + ASSUME(gMovesInfo[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + AI_FLAGS(AI_FLAG_SEQUENCE_SWITCHING); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BULBASAUR); + OPPONENT(SPECIES_CHARMANDER); + OPPONENT(SPECIES_SQUIRTLE) { HP(0); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + MESSAGE("Foe Bulbasaur was dragged out!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SEQUENCE_SWITCHING: AI will always switch into lowest party index after U-Turn, Parting Shot, and Baton Pass") +{ + u32 j, aiSequenceSwitchingFlag = 0, move = MOVE_NONE; + + static const u32 switchMoves[] = { + MOVE_U_TURN, + MOVE_PARTING_SHOT, + MOVE_BATON_PASS, + }; + + for (j = 0; j < ARRAY_COUNT(switchMoves); j++) + { + PARAMETRIZE { aiSequenceSwitchingFlag = 0; move = switchMoves[j]; } + PARAMETRIZE { aiSequenceSwitchingFlag = AI_FLAG_SEQUENCE_SWITCHING; move = switchMoves[j]; } + } + + GIVEN { + ASSUME(gMovesInfo[MOVE_U_TURN].effect == EFFECT_HIT_ESCAPE); + ASSUME(gMovesInfo[MOVE_PARTING_SHOT].effect == EFFECT_PARTING_SHOT); + ASSUME(gMovesInfo[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSequenceSwitchingFlag); + PLAYER(SPECIES_SWELLOW) { Level (50); } + OPPONENT(SPECIES_MACHOP) { Level(1); Moves(move); } + OPPONENT(SPECIES_MACHOP) { Level(2); Moves(move); } + OPPONENT(SPECIES_MACHOP) { Level(3); Moves(move); } + OPPONENT(SPECIES_MACHOP) { Level(4); Moves(move); } + OPPONENT(SPECIES_MACHOP) { Level(5); Moves(move); } + OPPONENT(SPECIES_MAGNEZONE) { Level(100); Moves(move); } + } WHEN { + if (aiSequenceSwitchingFlag) { + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 1); } + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 0); } + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 1); } + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 0); } + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 1); } + } + else { + TURN { EXPECT_MOVE(opponent, move) ; EXPECT_SEND_OUT(opponent, 5); } + } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SEQUENCE_SWITCHING: AI will not switch mid-battle") +{ + u32 aiSequenceSwitchingFlag = 0; + + PARAMETRIZE { aiSequenceSwitchingFlag = 0; } + PARAMETRIZE { aiSequenceSwitchingFlag = AI_FLAG_SEQUENCE_SWITCHING; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSequenceSwitchingFlag); + PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_LICK); } + OPPONENT(SPECIES_GASTLY) { Moves(MOVE_SHADOW_BALL); } + OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_KARATE_CHOP); } + } WHEN { + if (aiSequenceSwitchingFlag == AI_FLAG_SEQUENCE_SWITCHING) { + TURN { MOVE(player, MOVE_LICK) ; EXPECT_MOVE(opponent, MOVE_SHADOW_BALL); } + } + else { + TURN { MOVE(player, MOVE_LICK) ; EXPECT_SWITCH(opponent, 1); } + } + } +} diff --git a/test/battle/ai_powerful_status.c b/test/battle/ai/ai_powerful_status.c similarity index 100% rename from test/battle/ai_powerful_status.c rename to test/battle/ai/ai_powerful_status.c diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c new file mode 100644 index 000000000000..fcc8e322ca80 --- /dev/null +++ b/test/battle/ai/ai_switching.c @@ -0,0 +1,359 @@ +#include "global.h" +#include "test/battle.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 + } +} + +// General switching behaviour +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_DOUBLE_BATTLE_TEST("AI will not try to switch for the same pokemon for 2 spots in a double battle") +{ + u32 flags; + + PARAMETRIZE {flags = AI_FLAG_SMART_SWITCHING; } + PARAMETRIZE {flags = 0; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | flags); + PLAYER(SPECIES_RATTATA); + PLAYER(SPECIES_RATTATA); + // No moves to damage player. + OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } + OPPONENT(SPECIES_HAUNTER) { Moves(MOVE_SHADOW_BALL); } + OPPONENT(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL); } + OPPONENT(SPECIES_RATICATE) { Moves(MOVE_HEADBUTT); } + } WHEN { + TURN { EXPECT_SWITCH(opponentLeft, 3); }; + } SCENE { + MESSAGE("{PKMN} TRAINER LEAF withdrew Gengar!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Raticate!"); + NONE_OF { + MESSAGE("{PKMN} TRAINER LEAF withdrew Haunter!"); + MESSAGE("{PKMN} TRAINER LEAF sent out Raticate!"); + } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: U-Turn will send out Ace Mon if it's the only one remaining") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_U_TURN].effect == EFFECT_HIT_ESCAPE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_ACE_POKEMON); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_U_TURN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_U_TURN); EXPECT_SEND_OUT(opponent, 1); } + } +} + +// General AI_FLAG_SMART_MON_CHOICES behaviour +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is less than recurring healing to avoid an infinite loop") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_VENUSAUR) { Level(30); Moves(MOVE_TACKLE); } + // Opponent party courtesy of Skolgrahd, who triggered the bug in the first place + OPPONENT(SPECIES_PIKACHU) { Level(100); Moves(MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + OPPONENT(SPECIES_NINETALES_ALOLAN) { Level(100); Moves(MOVE_AURORA_VEIL, MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_DISABLE); } + OPPONENT(SPECIES_WEAVILE) { Level(100); Moves(MOVE_NIGHT_SLASH, MOVE_TRIPLE_AXEL, MOVE_ICE_SHARD, MOVE_FAKE_OUT); } + OPPONENT(SPECIES_DITTO) { Level(100); Moves(MOVE_TRANSFORM); } + OPPONENT(SPECIES_TYPHLOSION) { Level(100); Moves(MOVE_ERUPTION, MOVE_HEAT_WAVE, MOVE_FOCUS_BLAST, MOVE_EXTRASENSORY); } + OPPONENT(SPECIES_UMBREON) { Level(100); Item(ITEM_LEFTOVERS); Moves(MOVE_FOUL_PLAY, MOVE_SNARL, MOVE_HELPING_HAND, MOVE_THUNDER_WAVE); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVES(opponent, MOVE_ZIPPY_ZAP, MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Venusaur fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Number of hits to KO calculation checks whether incoming damage is zero to avoid an infinite loop") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_BULBASAUR) { Level(5); Moves(MOVE_SWORDS_DANCE, MOVE_WHIRLWIND, MOVE_SAND_ATTACK, MOVE_TAIL_WHIP); } + // Scenario courtesy of Duke, who triggered the bug in the first place + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_GEODUDE) { Level(100); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_NOSEPASS) { Level(100); Moves(MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_SWORDS_DANCE); EXPECT_MOVES(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Bulbasaur fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Avoid infinite loop if damage taken is equal to recurring healing") +{ + GIVEN { + ASSUME(gItemsInfo[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_MEOWTH_GALARIAN) { Level(100); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } + // Scenario courtesy of Duke, who triggered the bug in the first place + OPPONENT(SPECIES_MEOWTH_GALARIAN) { Level(5); Moves(MOVE_GROWL, MOVE_FAKE_OUT, MOVE_HONE_CLAWS); } + OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } + OPPONENT(SPECIES_GEODUDE) { Level(5); Moves(MOVE_DOUBLE_EDGE); } + OPPONENT(SPECIES_NOSEPASS) { Level(5); Moves(MOVE_DOUBLE_EDGE); } + OPPONENT(SPECIES_HOUNDSTONE) { Level(5); Moves(MOVE_NIGHT_SHADE, MOVE_BODY_PRESS, MOVE_WILL_O_WISP, MOVE_PROTECT); Item(ITEM_LEFTOVERS); } + } WHEN { + TURN { MOVE(player, MOVE_FAKE_OUT); EXPECT_MOVES(opponent, MOVE_FAKE_OUT); } + } +} + +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 { + ASSUME(gMovesInfo[MOVE_PSYCHIC].category == DAMAGE_CATEGORY_SPECIAL); + ASSUME(gMovesInfo[MOVE_FOCUS_BLAST].category == DAMAGE_CATEGORY_SPECIAL); + ASSUME(gMovesInfo[MOVE_BUBBLE_BEAM].category == DAMAGE_CATEGORY_SPECIAL); + ASSUME(gMovesInfo[MOVE_WATER_GUN].category == DAMAGE_CATEGORY_SPECIAL); + ASSUME(gMovesInfo[MOVE_STRENGTH].category == DAMAGE_CATEGORY_PHYSICAL); + 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_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); SpDefense(41); } // 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_MON_CHOICES: Post-KO switches factor in Trick Room for revenge killing") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TRICK_ROOM].effect == EFFECT_TRICK_ROOM); + 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); Speed(10); Moves(MOVE_WING_ATTACK, MOVE_GROWL); } + OPPONENT(SPECIES_BALTOY) { Level(1); Speed(10); Moves(MOVE_TRICK_ROOM); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Speed(5); Moves(MOVE_THUNDERBOLT); } + OPPONENT(SPECIES_ELECTRODE) { Level(30); Speed(15); Moves(MOVE_THUNDERBOLT); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_TRICK_ROOM); MOVE(player, MOVE_GROWL); } + TURN { MOVE(player, MOVE_WING_ATTACK); EXPECT_SEND_OUT(opponent, 1); } + } +} + +// General AI_FLAG_SMART_SWITCHING behaviour +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 { + ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(gMovesInfo[MOVE_RAPID_SPIN].category == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(gMovesInfo[MOVE_EARTHQUAKE].category == DAMAGE_CATEGORY_PHYSICAL); + ASSUME(gMovesInfo[MOVE_HEADBUTT].category == DAMAGE_CATEGORY_PHYSICAL); + 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); + } + } +} + +// Trapping behaviour +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch in trapping mon mid battle") +{ + u32 aiSmartSwitchingFlag = 0; + PARAMETRIZE { aiSmartSwitchingFlag = 0; } + PARAMETRIZE { aiSmartSwitchingFlag = AI_FLAG_SMART_SWITCHING; } + + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_GOLURK].types[0] == TYPE_GROUND); + ASSUME(gSpeciesInfo[SPECIES_GOLURK].types[1] == TYPE_GHOST); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchingFlag); + PLAYER(SPECIES_ELECTRODE) { Speed(4); Moves(MOVE_THUNDERBOLT, MOVE_AURA_SPHERE, MOVE_PROTECT); } + PLAYER(SPECIES_WOBBUFFET) { Speed(1); }; + OPPONENT(SPECIES_SNORLAX) { Speed(1); Moves(MOVE_HEADBUTT); } + OPPONENT(SPECIES_DUGTRIO) { Speed(3); Ability(ABILITY_ARENA_TRAP); Moves(MOVE_EARTHQUAKE); } + OPPONENT(SPECIES_GOLURK) { Speed(5); Moves(MOVE_EARTHQUAKE); } + } WHEN { + if (aiSmartSwitchingFlag == AI_FLAG_SMART_SWITCHING) + TURN { MOVE(player, MOVE_AURA_SPHERE) ; EXPECT_SWITCH(opponent, 1); } + else + TURN { MOVE(player, MOVE_AURA_SPHERE) ; EXPECT_MOVE(opponent, MOVE_HEADBUTT); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will switch in trapping mon after KO") +{ + u32 aiSmartMonChoicesFlag = 0; // Enables trapping behaviour after KOs + PARAMETRIZE { aiSmartMonChoicesFlag = 0; } // No trapping behaviour + PARAMETRIZE { aiSmartMonChoicesFlag = AI_FLAG_SMART_MON_CHOICES; } // Traps with mid battle switches + GIVEN{ + ASSUME(gSpeciesInfo[SPECIES_MAWILE].types[0] == TYPE_STEEL); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag); + PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_TACKLE); } + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + OPPONENT(SPECIES_SNORLAX) { Speed(3); Moves(MOVE_SELF_DESTRUCT); } + OPPONENT(SPECIES_MAGNEZONE) { Speed(1); Ability(ABILITY_MAGNET_PULL); Moves(MOVE_SHOCK_WAVE); } + OPPONENT(SPECIES_MEGANIUM) { Speed(3); Moves(MOVE_EARTH_POWER); } + } WHEN { + if (aiSmartMonChoicesFlag == AI_FLAG_SMART_MON_CHOICES) + TURN{ MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_SELF_DESTRUCT); EXPECT_SEND_OUT(opponent, 1); } + else + TURN{ MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_SELF_DESTRUCT); EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI won't use trapping behaviour if player only has 1 mon left") +{ + u32 aiSmartMonChoicesFlag = 0; // Enables trapping behaviour after KOs + PARAMETRIZE { aiSmartMonChoicesFlag = 0; } // No trapping behaviour + PARAMETRIZE { aiSmartMonChoicesFlag = AI_FLAG_SMART_MON_CHOICES; } // Traps with mid battle switches + GIVEN{ + ASSUME(gSpeciesInfo[SPECIES_MAWILE].types[0] == TYPE_STEEL); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartMonChoicesFlag); + PLAYER(SPECIES_MAWILE) { Speed(2); Moves(MOVE_PROTECT, MOVE_TACKLE); } + OPPONENT(SPECIES_SNORLAX) { Speed(3); Moves(MOVE_SELF_DESTRUCT); } + OPPONENT(SPECIES_MAGNEZONE) { Speed(1); Ability(ABILITY_MAGNET_PULL); Moves(MOVE_SHOCK_WAVE); } + OPPONENT(SPECIES_MEGANIUM) { Speed(3); Moves(MOVE_EARTH_POWER); } + } WHEN { + TURN{ MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_SELF_DESTRUCT); EXPECT_SEND_OUT(opponent, 2); } + } +} diff --git a/test/battle/ai_trytofaint.c b/test/battle/ai/ai_trytofaint.c similarity index 80% rename from test/battle/ai_trytofaint.c rename to test/battle/ai/ai_trytofaint.c index 9e7d7e3ba89f..ed6e1fccdd1e 100644 --- a/test/battle/ai_trytofaint.c +++ b/test/battle/ai/ai_trytofaint.c @@ -46,3 +46,16 @@ AI_SINGLE_BATTLE_TEST("AI will choose a priority move if it is slower then the t MESSAGE("Foe Wobbuffet fainted!"); } } + +AI_SINGLE_BATTLE_TEST("AI sees Loaded Dice damage increase from multi hit moves") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(44); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LOADED_DICE); Moves(MOVE_SEED_BOMB, MOVE_BULLET_SEED); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_BULLET_SEED); } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} diff --git a/test/battle/battle_message.c b/test/battle/battle_message.c new file mode 100644 index 000000000000..9ea74ceb27cc --- /dev/null +++ b/test/battle/battle_message.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Battle Message: Send-in message depends on foe HP") +{ + u32 hp; + + PARAMETRIZE { hp = 100; } + PARAMETRIZE { hp = 69; } + PARAMETRIZE { hp = 39; } + PARAMETRIZE { hp = 9; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { HP(hp); MaxHP(100); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + if (hp > 69) + MESSAGE("Go! Wynaut!"); + else if (hp > 39) + MESSAGE("Do it! Wynaut!"); + else if (hp > 9) + MESSAGE("Go for it, Wynaut!"); + else + MESSAGE("Your foe's weak! Get 'em, Wynaut!"); + } +} + +TO_DO_BATTLE_TEST("Battle Message: Switch-out message changes based on conditions") +/*{ + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + if (???) + MESSAGE("Wynaut, that's enough! Come back!"); + else if (???) + MESSAGE("Wynaut, come back!"); + else if (???) + MESSAGE("Wynaut, OK! Come back!"); + else + MESSAGE("Wynaut, good! Come back!"); + } +}*/ diff --git a/test/battle/crit_chance.c b/test/battle/crit_chance.c index 4964767e8ef4..d4c8e2b1a007 100644 --- a/test/battle/crit_chance.c +++ b/test/battle/crit_chance.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(B_CRIT_CHANCE >= GEN_7); } -SINGLE_BATTLE_TEST("Side effected by Lucky Chant blocks critical hits") +SINGLE_BATTLE_TEST("Crit Chance: Side effected by Lucky Chant blocks critical hits") { GIVEN { ASSUME(gMovesInfo[MOVE_LUCKY_CHANT].effect == EFFECT_LUCKY_CHANT); @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Side effected by Lucky Chant blocks critical hits") } } -SINGLE_BATTLE_TEST("Battle Armor and Shell Armor block critical hits") +SINGLE_BATTLE_TEST("Crit Chance: Battle Armor and Shell Armor block critical hits") { u32 species; u32 ability; @@ -39,7 +39,7 @@ SINGLE_BATTLE_TEST("Battle Armor and Shell Armor block critical hits") } } -SINGLE_BATTLE_TEST("Flag ignoresTargetAbility ignores Battle Armor and Shell Armor") +SINGLE_BATTLE_TEST("Crit Chance: Flag ignoresTargetAbility ignores Battle Armor and Shell Armor") { u32 species; u32 ability; @@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Flag ignoresTargetAbility ignores Battle Armor and Shell Arm } } -SINGLE_BATTLE_TEST("Mold Breaker, Teravolt and Turboblaze ignore Battle Armor and Shell Armor") +SINGLE_BATTLE_TEST("Crit Chance: Mold Breaker, Teravolt and Turboblaze ignore Battle Armor and Shell Armor") { u32 j; static const u32 pokemonPlayer[][2] = @@ -102,7 +102,7 @@ SINGLE_BATTLE_TEST("Mold Breaker, Teravolt and Turboblaze ignore Battle Armor an } } -SINGLE_BATTLE_TEST("User effected by Laser Focus causes moves to result in a critical hit") +SINGLE_BATTLE_TEST("Crit Chance: User effected by Laser Focus causes moves to result in a critical hit") { GIVEN { ASSUME(gMovesInfo[MOVE_LASER_FOCUS].effect == EFFECT_LASER_FOCUS); @@ -118,7 +118,7 @@ SINGLE_BATTLE_TEST("User effected by Laser Focus causes moves to result in a cri } } -SINGLE_BATTLE_TEST("If the target is poisoned the ability Merciless causes a move to result in a critical hit") +SINGLE_BATTLE_TEST("Crit Chance: If the target is poisoned the ability Merciless causes a move to result in a critical hit") { GIVEN { PLAYER(SPECIES_MAREANIE) { Ability(ABILITY_MERCILESS); } @@ -131,7 +131,7 @@ SINGLE_BATTLE_TEST("If the target is poisoned the ability Merciless causes a mov } } -SINGLE_BATTLE_TEST("Focus Energy increases the user's critical hit ratio by two stage") +SINGLE_BATTLE_TEST("Crit Chance: Focus Energy increases the user's critical hit ratio by two stage") { PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); GIVEN { @@ -148,7 +148,7 @@ SINGLE_BATTLE_TEST("Focus Energy increases the user's critical hit ratio by two } } -SINGLE_BATTLE_TEST("High crit rate increases the critical hit ratio by one stage") +SINGLE_BATTLE_TEST("Crit Chance: High crit rate increases the critical hit ratio by one stage") { PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { @@ -163,7 +163,7 @@ SINGLE_BATTLE_TEST("High crit rate increases the critical hit ratio by one stage } } -SINGLE_BATTLE_TEST("Super Luck increases the critical hit ratio by one stage") +SINGLE_BATTLE_TEST("Crit Chance: Super Luck increases the critical hit ratio by one stage") { PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { @@ -177,7 +177,7 @@ SINGLE_BATTLE_TEST("Super Luck increases the critical hit ratio by one stage") } } -SINGLE_BATTLE_TEST("Scope Lens increases the critical hit ratio by one stage") +SINGLE_BATTLE_TEST("Crit Chance: Scope Lens increases the critical hit ratio by one stage") { PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { @@ -192,7 +192,7 @@ SINGLE_BATTLE_TEST("Scope Lens increases the critical hit ratio by one stage") } } -SINGLE_BATTLE_TEST("High crit rate, Super Luck and Scope Lens cause the move to result in a critical hit") +SINGLE_BATTLE_TEST("Crit Chance: High crit rate, Super Luck and Scope Lens cause the move to result in a critical hit") { GIVEN { ASSUME(gMovesInfo[MOVE_SLASH].criticalHitStage == 1); @@ -207,7 +207,7 @@ SINGLE_BATTLE_TEST("High crit rate, Super Luck and Scope Lens cause the move to } } -SINGLE_BATTLE_TEST("Signature items Leek and Lucky Punch increase the critical hit ratio by 2 stages") +SINGLE_BATTLE_TEST("Crit Chance: Signature items Leek and Lucky Punch increase the critical hit ratio by 2 stages") { u32 species; u32 item; @@ -232,7 +232,7 @@ SINGLE_BATTLE_TEST("Signature items Leek and Lucky Punch increase the critical h } } -SINGLE_BATTLE_TEST("Dire Hit increases a battler's critical hit chance by 2 stages") +SINGLE_BATTLE_TEST("Crit Chance: Dire Hit increases a battler's critical hit chance by 2 stages") { PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); GIVEN { @@ -250,7 +250,7 @@ SINGLE_BATTLE_TEST("Dire Hit increases a battler's critical hit chance by 2 stag } } -SINGLE_BATTLE_TEST("Focus Energy increases critical hit ratio by two") +SINGLE_BATTLE_TEST("Crit Chance: Focus Energy increases critical hit ratio by two") { PASSES_RANDOMLY(8, 8, RNG_CRITICAL_HIT); GIVEN { @@ -269,7 +269,7 @@ SINGLE_BATTLE_TEST("Focus Energy increases critical hit ratio by two") } } -SINGLE_BATTLE_TEST("Dragon Cheer fails in a single battle") +SINGLE_BATTLE_TEST("Crit Chance: Dragon Cheer fails in a single battle") { GIVEN { ASSUME(gMovesInfo[MOVE_DRAGON_CHEER].effect == EFFECT_DRAGON_CHEER); @@ -282,7 +282,7 @@ SINGLE_BATTLE_TEST("Dragon Cheer fails in a single battle") } } -DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by one on non Dragon types") +DOUBLE_BATTLE_TEST("Crit Chance: Dragon Cheer increases critical hit ratio by one on non Dragon types") { PASSES_RANDOMLY(1, 8, RNG_CRITICAL_HIT); GIVEN { @@ -302,7 +302,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by one on non Drag } } -DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by two on Dragon types") +DOUBLE_BATTLE_TEST("Crit Chance: Dragon Cheer increases critical hit ratio by two on Dragon types") { PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); GIVEN { @@ -322,7 +322,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by two on Dragon t } } -DOUBLE_BATTLE_TEST("Dragon Cheer fails if critical hit stage was already increased by Focus Energy") +DOUBLE_BATTLE_TEST("Crit Chance: Dragon Cheer fails if critical hit stage was already increased by Focus Energy") { GIVEN { ASSUME(gMovesInfo[MOVE_SLASH].criticalHitStage == 1); diff --git a/test/battle/damage_formula.c b/test/battle/damage_formula.c index 3a58f69d90d4..473f631b1114 100644 --- a/test/battle/damage_formula.c +++ b/test/battle/damage_formula.c @@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Marshadow vs Mawile)") } } SCENE{ - MESSAGE("Marshadow used SpectrlThief!"); + MESSAGE("Marshadow used Spectral Thief!"); HP_BAR(opponent, captureDamage: &dmg); } THEN{ diff --git a/test/battle/form_change/mega_evolution.c b/test/battle/form_change/mega_evolution.c index a42c003a3dde..ffab6af18b49 100644 --- a/test/battle/form_change/mega_evolution.c +++ b/test/battle/form_change/mega_evolution.c @@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Venusaur can Mega Evolve holding Venusaurite") PLAYER(SPECIES_VENUSAUR) { Item(ITEM_VENUSAURITE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -25,7 +25,7 @@ DOUBLE_BATTLE_TEST("Mega Evolution's order is determined by Speed - opponent fas OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(3); } OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Foe Gardevoir's Gardevoirite is reacting to 2's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponentLeft); @@ -44,7 +44,7 @@ DOUBLE_BATTLE_TEST("Mega Evolution's order is determined by Speed - player faste OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2); } OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Venusaur's Venusaurite is reacting to 1's Mega Ring!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, playerLeft); @@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Rayquaza can Mega Evolve knowing Dragon Ascent") PLAYER(SPECIES_RAYQUAZA) { Moves(MOVE_DRAGON_ASCENT, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("1's fervent wish has reached Rayquaza!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -78,7 +78,7 @@ SINGLE_BATTLE_TEST("Mega Evolution affects turn order") PLAYER(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Gardevoir used Celebrate!"); MESSAGE("Foe Wobbuffet used Celebrate!"); @@ -96,7 +96,7 @@ SINGLE_BATTLE_TEST("Abilities replaced by Mega Evolution do not affect turn orde PLAYER(SPECIES_SABLEYE) { Item(ITEM_SABLENITE); Ability(ABILITY_STALL); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(44); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Sableye used Celebrate!"); MESSAGE("Foe Wobbuffet used Celebrate!"); @@ -115,7 +115,7 @@ DOUBLE_BATTLE_TEST("Mega Evolution happens after switching, but before Focus Pun OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { SWITCH(opponentRight, 2); MOVE(playerRight, MOVE_FOCUS_PUNCH, megaEvolve: TRUE, target: opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target: opponentLeft); } + TURN { SWITCH(opponentRight, 2); MOVE(playerRight, MOVE_FOCUS_PUNCH, gimmick: GIMMICK_MEGA, target: opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target: opponentLeft); } TURN {} } SCENE { MESSAGE("2 withdrew Wobbuffet!"); @@ -139,7 +139,7 @@ SINGLE_BATTLE_TEST("Regular Mega Evolution and Fervent Wish Mega Evolution can h PLAYER(SPECIES_RAYQUAZA) { Moves(MOVE_DRAGON_ASCENT, MOVE_CELEBRATE); Speed(3); } OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, megaEvolve: TRUE); MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("1's fervent wish has reached Rayquaza!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); @@ -164,7 +164,7 @@ SINGLE_BATTLE_TEST("Mega Evolved Pokemon do not change abilities after fainting" PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_GARCHOMP) { Ability(ABILITY_ROUGH_SKIN); Item(ITEM_GARCHOMPITE); HP(1); } } WHEN { - TURN { MOVE(player, MOVE_CRUNCH); MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CRUNCH); MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); ANIMATION(ANIM_TYPE_MOVE, MOVE_CRUNCH, player); diff --git a/test/battle/form_change/primal_reversion.c b/test/battle/form_change/primal_reversion.c index f978d13b2869..2f2f406827db 100644 --- a/test/battle/form_change/primal_reversion.c +++ b/test/battle/form_change/primal_reversion.c @@ -166,7 +166,7 @@ SINGLE_BATTLE_TEST("Primal reversion happens after a switch-in caused by Eject B TURN { MOVE(opponent, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet is switched out with the Eject Button!"); - MESSAGE("Go! Groudon!"); + SEND_IN_MESSAGE("Groudon"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); MESSAGE("Groudon's Primal Reversion! It reverted to its primal form!"); } THEN { @@ -205,7 +205,7 @@ SINGLE_BATTLE_TEST("Primal reversion happens after the entry hazards damage") TURN { MOVE(opponent, MOVE_SPIKES); } TURN { MOVE(opponent, MOVE_SPIKES); SWITCH(player, 1);} } SCENE { - MESSAGE("Go! Groudon!"); + SEND_IN_MESSAGE("Groudon"); HP_BAR(player); MESSAGE("Groudon is hurt by spikes!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); diff --git a/test/battle/form_change/ultra_burst.c b/test/battle/form_change/ultra_burst.c index f2c7b1da2ba6..5c6f4a2ce439 100644 --- a/test/battle/form_change/ultra_burst.c +++ b/test/battle/form_change/ultra_burst.c @@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Dusk Mane Necrozma can Ultra Burst holding Ultranecrozium Z" PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, ultraBurst: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } } SCENE { MESSAGE("Bright light is about to burst out of Necrozma!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ULTRA_BURST, player); @@ -25,7 +25,7 @@ DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - opponent faster OPPONENT(SPECIES_NECROZMA_DAWN_WINGS) { Item(ITEM_ULTRANECROZIUM_Z); Speed(3); } OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_CELEBRATE, ultraBurst: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, ultraBurst: TRUE); } + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } } SCENE { MESSAGE("Bright light is about to burst out of Foe Necrozma!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ULTRA_BURST, opponentLeft); @@ -44,7 +44,7 @@ DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - player faster") OPPONENT(SPECIES_NECROZMA_DAWN_WINGS) { Item(ITEM_ULTRANECROZIUM_Z); Speed(2); } OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } } WHEN { - TURN { MOVE(opponentLeft, MOVE_CELEBRATE, ultraBurst: TRUE); MOVE(playerLeft, MOVE_CELEBRATE, ultraBurst: TRUE); } + TURN { MOVE(opponentLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } } SCENE { MESSAGE("Bright light is about to burst out of Necrozma!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ULTRA_BURST, playerLeft); @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Ultra Burst affects turn order") PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, ultraBurst: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); } } SCENE { MESSAGE("Necrozma used Celebrate!"); MESSAGE("Foe Wobbuffet used Celebrate!"); @@ -81,7 +81,7 @@ DOUBLE_BATTLE_TEST("Ultra Burst happens after switching, but before Focus Punch- OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { SWITCH(opponentRight, 2); MOVE(playerRight, MOVE_FOCUS_PUNCH, ultraBurst: TRUE, target: opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target: opponentLeft); } + TURN { SWITCH(opponentRight, 2); MOVE(playerRight, MOVE_FOCUS_PUNCH, gimmick: GIMMICK_ULTRA_BURST, target: opponentLeft); MOVE(playerLeft, MOVE_FOCUS_PUNCH, target: opponentLeft); } TURN {} } SCENE { MESSAGE("2 withdrew Wobbuffet!"); @@ -105,7 +105,7 @@ SINGLE_BATTLE_TEST("Ultra Burst and Mega Evolution can happen on the same turn") PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(3); } OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2); } } WHEN { - TURN { MOVE(player, MOVE_CELEBRATE, ultraBurst: TRUE); MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_ULTRA_BURST); MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { MESSAGE("Bright light is about to burst out of Necrozma!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ULTRA_BURST, player); diff --git a/test/dynamax.c b/test/battle/gimmick/dynamax.c similarity index 89% rename from test/dynamax.c rename to test/battle/gimmick/dynamax.c index 09b48be1e85e..56fd2e25eaa8 100644 --- a/test/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -4,14 +4,14 @@ // ============= 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; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { // TODO: Dynamax level PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { if (dynamax) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); @@ -27,14 +27,14 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns", u16 hp) { - bool32 dynamax; - PARAMETRIZE { dynamax = FALSE; } - PARAMETRIZE { dynamax = TRUE; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); } // 1st max move + TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); } // 1st max move TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move } SCENE { @@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Foe Wobbuffet used Fake Out!"); NONE_OF { MESSAGE("Wobbuffet flinched!"); } @@ -77,7 +77,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by weight-based mo PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_HEAVY_SLAM); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_HEAVY_SLAM); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Heavy Slam!"); @@ -93,7 +93,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by OHKO moves") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_FISSURE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_FISSURE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Machamp used Fissure!"); @@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond 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); } + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Foe Wobbuffet used Destiny Bond!"); MESSAGE("Wobbuffet used Max Strike!"); @@ -124,7 +124,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } } WHEN { - TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Foe Wobbuffet used Grudge!"); MESSAGE("Wobbuffet used Max Strike!"); @@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing move PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); @@ -163,7 +163,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing move PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); SEND_OUT(player, 1); } + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Dragon Tail!"); @@ -181,7 +181,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); @@ -195,11 +195,12 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject Button") { GIVEN { + ASSUME(gItemsInfo[ITEM_EJECT_BUTTON].holdEffect == HOLD_EFFECT_EJECT_BUTTON); 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); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Tackle!"); @@ -216,7 +217,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swappe 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); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SKILL_SWAP); } } SCENE { MESSAGE("Miltank used Max Strike!"); MESSAGE("Foe Runerigus used Skill Swap!"); @@ -232,7 +233,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed o PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SIMPLE_BEAM); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SIMPLE_BEAM); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Simple Beam!"); @@ -248,7 +249,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_ENCORE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_ENCORE); } TURN { MOVE(player, MOVE_EMBER); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); @@ -264,7 +265,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after 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, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(player, MOVE_ARM_THRUST); } TURN { MOVE(player, MOVE_ARM_THRUST); } TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } @@ -284,7 +285,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_DISABLE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_DISABLE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Disable!"); @@ -300,7 +301,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on 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 { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } TURN {} TURN {} TURN { MOVE(player, MOVE_TACKLE, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } @@ -319,7 +320,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TORMENT); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TORMENT); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Torment!"); @@ -334,7 +335,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_KNOCK_OFF); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); MESSAGE("Foe Wobbuffet used Knock Off!"); @@ -351,7 +352,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CELEBRATE); } - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Substitute!"); MESSAGE("Wobbuffet made a SUBSTITUTE!"); @@ -369,7 +370,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TRICK_ROOM, dynamax: TRUE, target: opponentLeft); MOVE(playerRight, MOVE_COPYCAT, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_TRICK_ROOM, gimmick: GIMMICK_DYNAMAX, target: opponentLeft); MOVE(playerRight, MOVE_COPYCAT, target: opponentLeft); } } SCENE { MESSAGE("Wobbuffet used Max Guard!"); MESSAGE("Wynaut used Trick Room!"); @@ -378,15 +379,15 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax Cannon", s16 damage) { - bool32 dynamaxed; - PARAMETRIZE { dynamaxed = FALSE; } - PARAMETRIZE { dynamaxed = TRUE; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(gMovesInfo[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); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_DYNAMAX_CANNON); } } SCENE { HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { @@ -404,9 +405,9 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 da OPPONENT(SPECIES_WOBBUFFET); } WHEN { if (protected) - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT); } else - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { @@ -420,7 +421,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass Max Guard") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); } } SCENE { NONE_OF { HP_BAR(opponent); } } @@ -434,7 +435,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Feint bypasses Max Guard but doesn't break it") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + TURN { MOVE(playerLeft, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); MOVE(opponentLeft, MOVE_FEINT, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } @@ -455,7 +456,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, dynamax: TRUE, target: opponentLeft); + TURN { MOVE(playerLeft, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX, target: opponentLeft); MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } } SCENE { @@ -475,7 +476,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxi PLAYER(SPECIES_VENUSAUR) { GigantamaxFactor(gigantamaxFactor); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } THEN { EXPECT_EQ(player->species, species); } @@ -488,7 +489,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon switchin PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } TURN { SWITCH(player, 1); } TURN { SWITCH(player, 0); } } THEN { @@ -506,8 +507,8 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items PLAYER(SPECIES_WOBBUFFET) { Item(item); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } - TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } + TURN { MOVE(player, MOVE_ARM_THRUST); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); HP_BAR(opponent, captureDamage: &results[i].damage); @@ -524,7 +525,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holdi PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_TACKLE); } } SCENE { MESSAGE("Wobbuffet used Max Strike!"); @@ -540,15 +541,15 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holdi SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP", s16 damage) { - bool32 dynamax; - PARAMETRIZE { dynamax = TRUE; } - PARAMETRIZE { dynamax = FALSE; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(gMovesInfo[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); } + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Endeavor!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -559,15 +560,15 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP", s16 dam SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP", s16 damage) { - bool32 dynamax; - PARAMETRIZE { dynamax = TRUE; } - PARAMETRIZE { dynamax = FALSE; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(gMovesInfo[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); } + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Super Fang!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -578,15 +579,15 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP", s16 d SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP", s16 damage) { - bool32 dynamax; - PARAMETRIZE { dynamax = TRUE; } - PARAMETRIZE { dynamax = FALSE; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(gMovesInfo[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); } + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Pain Split!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -597,16 +598,16 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP", s16 d 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; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(I_SITRUS_BERRY_HEAL >= GEN_4); ASSUME(gItemsInfo[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); } + TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } } SCENE { MESSAGE("Wobbuffet's Sitrus Berry restored health!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -617,15 +618,15 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynam 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; } + u32 dynamax; + PARAMETRIZE { dynamax = GIMMICK_NONE; } + PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; } GIVEN { ASSUME(gMovesInfo[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); } + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, gimmick: dynamax); } } SCENE { MESSAGE("Foe Wobbuffet used Heal Pulse!"); HP_BAR(player, captureDamage: &results[i].damage); @@ -643,7 +644,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's 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(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } } SCENE { // turn 1 @@ -669,7 +670,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") OPPONENT(SPECIES_WOBBUFFET) {Speed(100); } OPPONENT(SPECIES_WOBBUFFET) { Speed(99); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); \ + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); \ @@ -708,7 +709,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, dynamax: TRUE); \ + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft); \ MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } @@ -746,7 +747,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_EMBER, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_EMBER, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Flare!"); MESSAGE("The sunlight got bright!"); @@ -762,7 +763,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Geyser sets up heavy rain") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_WATER_GUN, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_WATER_GUN, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Geyser!"); MESSAGE("It started to rain!"); @@ -778,7 +779,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Hailstorm sets up hail") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_POWDER_SNOW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_POWDER_SNOW, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Hailstorm!"); MESSAGE("It started to hail!"); @@ -794,7 +795,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Rockfall sets up a sandstorm") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_ROCK_THROW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_ROCK_THROW, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Rockfall!"); MESSAGE("A sandstorm brewed!"); @@ -812,7 +813,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain") 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, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_CELEBRATE); } TURN { MOVE(player, MOVE_VINE_WHIP); MOVE(opponent, MOVE_CELEBRATE); } } SCENE { MESSAGE("Wobbuffet used Max Overgrowth!"); @@ -831,12 +832,12 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Mindstorm sets up 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, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC); } } SCENE { - MESSAGE("Foe Wobbuffet used ExtremeSpeed!"); + MESSAGE("Foe Wobbuffet used Extreme Speed!"); MESSAGE("Wobbuffet used Max Mindstorm!"); - MESSAGE("Foe Wobbuffet cannot use ExtremeSpeed!"); + MESSAGE("Foe Wobbuffet cannot use Extreme Speed!"); MESSAGE("Wobbuffet used Max Mindstorm!"); } } @@ -848,7 +849,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Lightning sets up Electric Terrain") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_THUNDERBOLT, dynamax: TRUE); MOVE(opponent, MOVE_SPORE); } + TURN { MOVE(player, MOVE_THUNDERBOLT, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_SPORE); } } SCENE { MESSAGE("Wobbuffet used Max Lightning!"); MESSAGE("Foe Wobbuffet used Spore!"); @@ -863,7 +864,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Starfall sets up Misty Terrain") OPPONENT(SPECIES_WOBBUFFET); PLAYER(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_MOONBLAST, dynamax: TRUE); MOVE(opponent, MOVE_TOXIC); } + TURN { MOVE(player, MOVE_MOONBLAST, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_TOXIC); } } SCENE { MESSAGE("Wobbuffet used Max Starfall!"); MESSAGE("Foe Wobbuffet used Toxic!"); @@ -879,7 +880,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(player, MOVE_LIQUIDATION, dynamax: TRUE); } + TURN { MOVE(player, MOVE_LIQUIDATION, gimmick: GIMMICK_DYNAMAX); } TURN { SWITCH(opponent, 1); } } SCENE { // turn 1 @@ -899,7 +900,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_HATTERENE); } WHEN { - TURN { MOVE(player, MOVE_IRON_HEAD, dynamax: TRUE); } + TURN { MOVE(player, MOVE_IRON_HEAD, gimmick: GIMMICK_DYNAMAX); } TURN { SWITCH(opponent, 1); } TURN { } // wait out Dynamax TURN { MOVE(opponent, MOVE_DEFOG); } @@ -929,7 +930,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abili PLAYER(SPECIES_INTELEON) { GigantamaxFactor(TRUE); } OPPONENT(SPECIES_ARCTOVISH) { Ability(ABILITY_WATER_ABSORB); } } WHEN { - TURN { MOVE(player, move, dynamax: TRUE); } + TURN { MOVE(player, move, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Inteleon used G-Max Hydrosnipe!"); HP_BAR(opponent, captureDamage: &results[i].damage); @@ -947,7 +948,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Pikachu used G-Max Volt Crash!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); @@ -974,7 +975,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponen OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE, \ + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, gimmick: GIMMICK_DYNAMAX, \ WITH_RNG(RNG_G_MAX_STUN_SHOCK, rng)); } } SCENE { MESSAGE("Toxtricity used G-Max Stun Shock!"); @@ -1011,7 +1012,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before consideri OPPONENT(SPECIES_GARBODOR); OPPONENT(SPECIES_TRUBBISH); } WHEN { - TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE, \ + TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX, \ WITH_RNG(RNG_G_MAX_STUN_SHOCK, STATUS1_POISON)); } } SCENE { MESSAGE("Toxtricity used G-Max Stun Shock!"); @@ -1044,7 +1045,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE, + TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX, WITH_RNG(RNG_G_MAX_BEFUDDLE, rng)); } } SCENE { MESSAGE("Butterfree used G-Max Befuddle!"); @@ -1088,7 +1089,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Gold Rush confuses both opponents and genera OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Meowth used G-Max Gold Rush!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); @@ -1108,7 +1109,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Smite confuses both opponents") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Hatterene used G-Max Smite!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); @@ -1127,7 +1128,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possibl OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } } WHEN { - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Eevee used G-Max Cuddle!"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentLeft); @@ -1148,7 +1149,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_LICK, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_LICK, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Gengar used G-Max Terror!"); MESSAGE("Foe Wobbuffet can't escape now!"); @@ -1169,7 +1170,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns 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); \ + TURN { MOVE(playerLeft, MOVE_IRON_HEAD, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ MOVE(opponentLeft, MOVE_SPLASH); MOVE(opponentRight, MOVE_SPLASH); } TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ MOVE(opponentLeft, MOVE_SPLASH, allowed: FALSE); \ @@ -1207,7 +1208,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages no OPPONENT(SPECIES_WYNAUT); OPPONENT(SPECIES_ARCANINE); } WHEN { - TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } TURN { } TURN { SWITCH(opponentLeft, 2); } TURN { } @@ -1256,7 +1257,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries 50\% of t MOVE(playerRight, MOVE_STUFF_CHEEKS); \ MOVE(opponentLeft, MOVE_STUFF_CHEEKS); \ MOVE(opponentRight, MOVE_STUFF_CHEEKS); } - TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { // turn 1 MESSAGE("Using Apicot Berry, the Sp. Def of Snorlax rose!"); @@ -1281,7 +1282,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") OPPONENT(SPECIES_BLISSEY); OPPONENT(SPECIES_CHANSEY); } WHEN { - TURN { MOVE(playerLeft, MOVE_DARK_PULSE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_DARK_PULSE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } TURN { } } SCENE { // turn 1 @@ -1304,7 +1305,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Alcremie used G-Max Finale!"); HP_BAR(playerLeft, captureDamage: &damage1); @@ -1324,7 +1325,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_VINE_WHIP, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_VINE_WHIP, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Appletun used G-Max Sweetness!"); STATUS_ICON(playerLeft, none: TRUE); @@ -1345,11 +1346,11 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_FLAME_CHARGE, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_FLAME_CHARGE, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } TURN { SWITCH(playerLeft, 2); } } SCENE { // turn 1 - MESSAGE("Centiskorc used G-Max Centiferno!"); + MESSAGE("Centiskorch used G-Max Centiferno!"); MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); HP_BAR(opponentLeft); MESSAGE("Foe Wynaut is hurt by Fire Spin!"); @@ -1373,7 +1374,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") 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, gimmick: GIMMICK_DYNAMAX); } TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); } TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); \ MOVE(playerRight, MOVE_FOCUS_ENERGY); } @@ -1406,7 +1407,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Foe Sableye used Celebrate!"); MESSAGE("Duraludon used G-Max Depletion!"); @@ -1428,11 +1429,11 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage" OPPONENT(SPECIES_WYNAUT); } WHEN { if (protect) - TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ - MOVE(opponentLeft, MOVE_PROTECT, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ + MOVE(opponentLeft, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); } else - TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ - MOVE(opponentLeft, MOVE_PSYCHIC, target: playerLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, gimmick: GIMMICK_DYNAMAX); \ + MOVE(opponentLeft, MOVE_PSYCHIC, target: playerLeft, gimmick: GIMMICK_DYNAMAX); } } SCENE { if (protect) MESSAGE("Foe Wobbuffet used Max Guard!"); @@ -1453,8 +1454,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Flare doesn't softlock the game when fainting OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); - MOVE(opponentLeft, MOVE_V_CREATE, target: playerRight, dynamax: TRUE); + TURN { MOVE(playerLeft, MOVE_PROTECT, gimmick: GIMMICK_DYNAMAX); + MOVE(opponentLeft, MOVE_V_CREATE, target: playerRight, gimmick: GIMMICK_DYNAMAX); SEND_OUT(playerRight, 2); } TURN { } } @@ -1466,7 +1467,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't execute effects on fainted battler PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; } WHEN { - TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); MESSAGE("Wobbuffet used Max Strike!"); @@ -1483,7 +1484,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Moxie clones can be triggered by Max Moves faintin OPPONENT(SPECIES_WOBBUFFET) { HP(1); } OPPONENT(SPECIES_WYNAUT); } WHEN { - TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_WATERFALL, dynamax: TRUE); SEND_OUT(opponent, 1); } + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_WATERFALL, gimmick: GIMMICK_DYNAMAX); SEND_OUT(opponent, 1); } } SCENE { MESSAGE("Foe Wobbuffet fainted!"); ABILITY_POPUP(player, ABILITY_MOXIE); diff --git a/test/battle/gimmick/terastal.c b/test/battle/gimmick/terastal.c new file mode 100644 index 000000000000..f14c398b6406 --- /dev/null +++ b/test/battle/gimmick/terastal.c @@ -0,0 +1,910 @@ +#include "global.h" +#include "test/battle.h" + +// Base Power and STAB Checks + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into a different type preserves other STAB boosts", s16 damage1, s16 damage2) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_BULBASAUR) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP, gimmick: tera); } + TURN { MOVE(player, MOVE_SLUDGE_BOMB); } + } SCENE { + MESSAGE("Bulbasaur used Vine Whip!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_VINE_WHIP, player); + HP_BAR(opponent, captureDamage: &results[i].damage1); + MESSAGE("Bulbasaur used Sludge Bomb!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SLUDGE_BOMB, player); + HP_BAR(opponent, captureDamage: &results[i].damage2); + } FINALLY { + EXPECT_EQ(results[0].damage1, results[1].damage1); + EXPECT_EQ(results[0].damage2, results[1].damage2); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing does not affect the power of non-STAB moves", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HEADBUTT, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Headbutt!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into a different type gives that type 1.5x STAB", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HEADBUTT, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Headbutt!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from no STAB to 1.5x STAB is a 1.5x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into the same type gives that type 2x STAB", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Psychic!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from 1.5x STAB to 2.0x STAB is a 1.33x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into a different type with Adaptability gives 2.0x STAB", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_CRAWDAUNT) { Ability(ABILITY_ADAPTABILITY); TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HEADBUTT, gimmick: tera); } + } SCENE { + MESSAGE("Crawdaunt used Headbutt!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from no STAB to 2.0x STAB is a 2.0x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into the same type with Adaptability gives 2.25x STAB", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_CRAWDAUNT) { Ability(ABILITY_ADAPTABILITY); TeraType(TYPE_WATER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_PULSE, gimmick: tera); } + } SCENE { + MESSAGE("Crawdaunt used Water Pulse!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PULSE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from 2x STAB to 2.25x STAB is a 1.125x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.125), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing boosts moves of the same type to 60 BP", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + ASSUME(gMovesInfo[MOVE_ABSORB].power == 20); + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_GRASS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ABSORB, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Absorb!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from 20 BP to 90 BP (60 * 1.5x) is a 4.5x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor occurs after Technician", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + ASSUME(gMovesInfo[MOVE_MEGA_DRAIN].power == 40); + PLAYER(SPECIES_MR_MIME) { Ability(ABILITY_TECHNICIAN); TeraType(TYPE_GRASS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MEGA_DRAIN, gimmick: tera); } + } SCENE { + MESSAGE("Mr. Mime used Mega Drain!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEGA_DRAIN, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // This should be the same as a normal Tera boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor occurs after Technician", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_MR_MIME) { Ability(ABILITY_TECHNICIAN); TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_STORED_POWER, gimmick: tera); } + } SCENE { + MESSAGE("Mr. Mime used Stored Power!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STORED_POWER, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // The jump from 45 BP (20 * 1.5x * 1.5x) to 120 BP (60 * 2.0x) is a 2.667x boost. + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.667), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor does not apply to multi-hit moves", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FURY_SWIPES, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Fury Swipes!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FURY_SWIPES, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization's 60 BP floor does not apply to priority moves", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_QUICK_ATTACK, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Quick Attack!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +// Defensive Type Checks + +SINGLE_BATTLE_TEST("(TERA) Terastallization changes type effectiveness", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_GRASS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: tera); MOVE(opponent, MOVE_WATER_GUN); } + } SCENE { + MESSAGE("Foe Wobbuffet used Water Gun!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization changes type effectiveness") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_FLYING); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_EARTHQUAKE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Earthquake!"); + MESSAGE("It doesn't affect Wobbuffet…"); + NOT { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallization persists across switches") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_FLYING); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_EARTHQUAKE); } + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + TURN { MOVE(opponent, MOVE_EARTHQUAKE); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Earthquake!"); + MESSAGE("It doesn't affect Wobbuffet…"); + NOT { HP_BAR(player); } + // turn 4 + MESSAGE("Foe Wobbuffet used Earthquake!"); + MESSAGE("It doesn't affect Wobbuffet…"); + NOT { HP_BAR(player); } + } +} + +// Other Type Checks + +SINGLE_BATTLE_TEST("(TERA) Terastallization changes the effect of Curse") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_GHOST); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CURSE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Curse!"); + HP_BAR(player); + MESSAGE("Wobbuffet cut its own HP and laid a CURSE on Foe Wobbuffet!"); + NOT { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } + } +} + +SINGLE_BATTLE_TEST("(TERA) Roost does not remove the user's Flying type while Terastallized") +{ + GIVEN { + PLAYER(SPECIES_ZAPDOS) { HP(1); TeraType(TYPE_FLYING); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROOST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ICE_BEAM); } + } SCENE { + MESSAGE("Zapdos used Roost!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + MESSAGE("Foe Wobbuffet used Ice Beam!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ICE_BEAM, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Type-changing moves fail against a Terastallized Pokemon") +{ + u16 move; + PARAMETRIZE { move = MOVE_SOAK; } + PARAMETRIZE { move = MOVE_FORESTS_CURSE; } + PARAMETRIZE { move = MOVE_TRICK_OR_TREAT; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, move); } + } SCENE { + if (move != MOVE_SOAK) + NOT { ANIMATION(ANIM_TYPE_MOVE, move, opponent); } + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Reflect Type fails if used by a Terastallized Pokemon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_REFLECT_TYPE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Reflect Type!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Conversion fails if used by a Terastallized Pokemon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CONVERSION, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Conversion!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Conversion2 fails if used by a Terastallized Pokemon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_PSYCHIC); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CONVERSION_2, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Conversion 2!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Reflect Type copies a Terastallized Pokemon's Tera Type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_GHOST); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + TURN { MOVE(opponent, MOVE_REFLECT_TYPE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + // turn 2 + MESSAGE("Foe Wobbuffet used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, opponent); + // turn 3 + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("It doesn't affect Foe Wobbuffet…"); + NOT { HP_BAR(opponent); } + } +} + +SINGLE_BATTLE_TEST("(TERA) Synchronoise uses a Terastallized Pokemon's Tera Type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_GHOST); } + OPPONENT(SPECIES_WOBBUFFET) { TeraType(TYPE_GHOST); } + } WHEN { + TURN { MOVE(opponent, MOVE_SYNCHRONOISE); MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + TURN { MOVE(opponent, MOVE_SYNCHRONOISE, gimmick: GIMMICK_TERA); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Synchronoise!"); + MESSAGE("It had no effect on Wobbuffet!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Synchronoise!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYNCHRONOISE, opponent); + } +} + +SINGLE_BATTLE_TEST("(TERA) Revelation Dance uses a Terastallized Pokemon's Tera Type") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON); + PLAYER(SPECIES_ORICORIO) { TeraType(TYPE_NORMAL); } + OPPONENT(SPECIES_GENGAR); + } WHEN { + TURN { MOVE(player, MOVE_REVELATION_DANCE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Oricorio used Revelation Dance!"); + MESSAGE("It doesn't affect Foe Gengar…"); + NOT { HP_BAR(opponent); } + } +} + +// This tests that Tera STAB modifiers depend on the user's original types, too. +SINGLE_BATTLE_TEST("(TERA) Double Shock does not remove the user's Electric type while Terastallized, and changes STAB modifier depending on when it is used") +{ + s16 damage[4]; + GIVEN { + ASSUME(gMovesInfo[MOVE_DOUBLE_SHOCK].effect == EFFECT_FAIL_IF_NOT_ARG_TYPE); + PLAYER(SPECIES_PICHU) { TeraType(TYPE_ELECTRIC); } + PLAYER(SPECIES_WOBBUFFET) + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_DOUBLE_SHOCK, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); MOVE(opponent, MOVE_RECOVER); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_RECOVER); } + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_DOUBLE_SHOCK); } + } SCENE { + // turn 1 - regular STAB + MESSAGE("Pichu used Double Shock!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 2 - lost Electric type, gained back from Tera + MESSAGE("Pichu used Double Shock!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 3 - retained Electric type + MESSAGE("Pichu used Double Shock!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + // turn 6 - original type reset, regular STAB + Tera boost + MESSAGE("Pichu used Double Shock!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + HP_BAR(opponent, captureDamage: &damage[2]); + // turn 7 - regular STAB + Tera boost stays + MESSAGE("Pichu used Double Shock!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_SHOCK, player); + HP_BAR(opponent, captureDamage: &damage[3]); + } THEN { + EXPECT_EQ(damage[0], damage[1]); + EXPECT_MUL_EQ(damage[0], Q_4_12(1.333), damage[2]); + EXPECT_EQ(damage[2], damage[3]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Transform does not copy the target's Tera Type, and if the user is Terastallized it keeps its own Tera Type") +{ + KNOWN_FAILING; // Transform seems to be bugged in tests. + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_TACKLE, MOVE_EARTHQUAKE); TeraType(TYPE_GHOST); } + OPPONENT(SPECIES_DITTO) { TeraType(TYPE_FLYING); } + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_TRANSFORM); } + TURN { MOVE(player, MOVE_EARTHQUAKE); } + // TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE, target: player, gimmick: GIMMICK_TERA); } + } SCENE { + // turn 2 + MESSAGE("Wobbuffet used Earthquake!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, player); + HP_BAR(opponent); + // turn 3 + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("It doesn't affect Ditto…"); + NOT { HP_BAR(opponent); } + } +} + +// Stellar Type checks +SINGLE_BATTLE_TEST("(TERA) Stellar type does not change the user's defensive profile", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: tera); MOVE(opponent, MOVE_PSYCHIC); } + } SCENE { + MESSAGE("Foe Wobbuffet used Psychic!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(TERA) Reflect Type copies a Stellar-type Pokemon's base type") +{ + GIVEN { + PLAYER(SPECIES_BANETTE) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + TURN { MOVE(opponent, MOVE_REFLECT_TYPE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + // turn 2 + MESSAGE("Foe Wobbuffet used Reflect Type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_REFLECT_TYPE, opponent); + // turn 3 + MESSAGE("Banette used Tackle!"); + MESSAGE("It doesn't affect Foe Wobbuffet…"); + NOT { HP_BAR(opponent); } + } +} + +SINGLE_BATTLE_TEST("(TERA) Revelation Dance uses a Stellar-type Pokemon's base type") +{ + GIVEN { + ASSUME(P_GEN_7_POKEMON); + PLAYER(SPECIES_ORICORIO_SENSU) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_GUMSHOOS); + } WHEN { + TURN { MOVE(player, MOVE_REVELATION_DANCE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Oricorio used Revelation Dance!"); + MESSAGE("It doesn't affect Foe Gumshoos…"); + NOT { HP_BAR(opponent); } + } +} + +SINGLE_BATTLE_TEST("(TERA) Conversion2 fails if last hit by a Stellar-type move") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); } + TURN { MOVE(opponent, MOVE_CONVERSION_2); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + // turn 2 + MESSAGE("Foe Wobbuffet used Conversion 2!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Roost does not remove Flying-type ground immunity when Terastallized into the Stellar type") +{ + GIVEN { + PLAYER(SPECIES_ZAPDOS) { HP(1); TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROOST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ICE_BEAM); } + } SCENE { + MESSAGE("Zapdos used Roost!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROOST, player); + MESSAGE("Foe Wobbuffet used Ice Beam!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ICE_BEAM, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into the Stellar-type provides a one-time 2.0x boost to STAB moves") +{ + s16 damage[3]; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EXTRASENSORY); } + TURN { MOVE(player, MOVE_EXTRASENSORY, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, MOVE_EXTRASENSORY); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Extrasensory!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXTRASENSORY, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 2 + MESSAGE("Wobbuffet used Extrasensory!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXTRASENSORY, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 3 + MESSAGE("Wobbuffet used Extrasensory!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXTRASENSORY, player); + HP_BAR(opponent, captureDamage: &damage[2]); + } THEN { + // Extrasensory goes from a 50% boost to a 100% boost for a 1.33x total multiplier + EXPECT_MUL_EQ(damage[0], UQ_4_12(1.33), damage[1]); + EXPECT_EQ(damage[0], damage[2]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into the Stellar-type provides a one-time 1.2x boost to non-STAB moves") +{ + s16 damage[3]; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TAKE_DOWN); } + TURN { MOVE(player, MOVE_TAKE_DOWN, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, MOVE_TAKE_DOWN); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 2 + MESSAGE("Wobbuffet used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 3 + MESSAGE("Wobbuffet used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[2]); + } THEN { + EXPECT_MUL_EQ(damage[0], UQ_4_12(1.2), damage[1]); + EXPECT_EQ(damage[0], damage[2]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terastallizing into the Stellar type boosts all moves up to 60 BP once per type") +{ + s16 damage[4]; + GIVEN { + ASSUME(gMovesInfo[MOVE_MEGA_DRAIN].power == 40); + ASSUME(gMovesInfo[MOVE_BUBBLE].power == 40); + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MEGA_DRAIN); } + TURN { MOVE(player, MOVE_MEGA_DRAIN, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, MOVE_MEGA_DRAIN); } + TURN { MOVE(player, MOVE_BUBBLE); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Mega Drain!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEGA_DRAIN, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 2 + MESSAGE("Wobbuffet used Mega Drain!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEGA_DRAIN, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 3 + MESSAGE("Wobbuffet used Mega Drain!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEGA_DRAIN, player); + HP_BAR(opponent, captureDamage: &damage[2]); + // turn 4 + MESSAGE("Wobbuffet used Bubble!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BUBBLE, player); + HP_BAR(opponent, captureDamage: &damage[3]); + } THEN { + // The jump from 40 BP to 72 BP (60 * 1.2x) is a 1.8x boost. + EXPECT_MUL_EQ(damage[0], Q_4_12(1.8), damage[1]); + EXPECT_EQ(damage[0], damage[2]); + EXPECT_EQ(damage[1], damage[3]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Protean cannot change the type of a Terastallized Pokemon") +{ + GIVEN { + PLAYER(SPECIES_GRENINJA) { Ability(ABILITY_PROTEAN); TeraType(TYPE_GRASS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BUBBLE, gimmick: GIMMICK_TERA); + MOVE(opponent, MOVE_EMBER); } + } SCENE { + MESSAGE("Greninja used Bubble!"); + MESSAGE("Foe Wobbuffet used Ember!"); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Status moves don't expend Stellar's one-time type boost") +{ + s16 damage[2]; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GROWL, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, MOVE_TAKE_DOWN); } + TURN { MOVE(player, MOVE_TAKE_DOWN); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Growl!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + // turn 2 + MESSAGE("Wobbuffet used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 3 + MESSAGE("Wobbuffet used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[1], UQ_4_12(1.20), damage[0]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Stellar type's one-time boost factors in dynamically-typed moves") +{ + s16 damage[4]; + GIVEN { + ASSUME(gMovesInfo[MOVE_WEATHER_BALL].type == TYPE_NORMAL); + PLAYER(SPECIES_PELIPPER) { Ability(ABILITY_DRIZZLE); TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WEATHER_BALL, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_TAKE_DOWN); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_TAKE_DOWN); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_WATER_PULSE); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_WATER_PULSE); MOVE(opponent, MOVE_RECOVER); } + } SCENE { + MESSAGE("Pelipper used Weather Ball!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WEATHER_BALL, player); + // turn 2 + MESSAGE("Pelipper used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 3 + MESSAGE("Pelipper used Take Down!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TAKE_DOWN, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 4 + MESSAGE("Pelipper used Water Pulse!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PULSE, player); + HP_BAR(opponent, captureDamage: &damage[2]); + // turn 5 + MESSAGE("Pelipper used Water Pulse!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PULSE, player); + HP_BAR(opponent, captureDamage: &damage[3]); + } THEN { + // Take Down should have a Normal type boost applied + EXPECT_MUL_EQ(damage[1], UQ_4_12(1.20), damage[0]); + // Water Pulse should not have a Water type boost applied + EXPECT_EQ(damage[3], damage[2]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terapagos retains the Stellar type boost at all times") +{ + s16 damage[2]; + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_MACH_PUNCH; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_MACH_PUNCH].type != TYPE_NORMAL); + PLAYER(SPECIES_TERAPAGOS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, move); } + } SCENE { + HP_BAR(opponent, captureDamage: &damage[0]); + HP_BAR(opponent, captureDamage: &damage[1]); + } THEN { + EXPECT_EQ(damage[0], damage[1]); + } +} + +SINGLE_BATTLE_TEST("(TERA) Terapagos retains its base defensive profile when Terastalizing") +{ + GIVEN { + PLAYER(SPECIES_TERAPAGOS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_BRICK_BREAK); } + } SCENE { + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("(TERA) Illusion breaks if the pokemon Terastalizes") +{ + KNOWN_FAILING; // #5015 + u32 species; + PARAMETRIZE { species = SPECIES_TERAPAGOS; } + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + GIVEN { + PLAYER(SPECIES_ZOROARK) { TeraType(TYPE_DARK); } + PLAYER(species); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Zoroark's Illusion wore off!"); + } +} + +/* +// This test freezes the emulator +SINGLE_BATTLE_TEST("(TERA) Transformed pokemon can't Terastalize") +{ + GIVEN { + PLAYER(SPECIES_DITTO); + OPPONENT(SPECIES_TERAPAGOS) { Moves(MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(player, MOVE_TRANSFORM); } + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } +} +*/ + +SINGLE_BATTLE_TEST("(TERA) Pokemon with Tera forms change upon Terastallizing") +{ + u32 species, targetSpecies; + PARAMETRIZE { species = SPECIES_OGERPON_TEAL_MASK; targetSpecies = SPECIES_OGERPON_TEAL_MASK_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_MASK; targetSpecies = SPECIES_OGERPON_WELLSPRING_MASK_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_MASK; targetSpecies = SPECIES_OGERPON_HEARTHFLAME_MASK_TERA; } + PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_MASK; targetSpecies = SPECIES_OGERPON_CORNERSTONE_MASK_TERA; } + PARAMETRIZE { species = SPECIES_TERAPAGOS_TERASTAL; targetSpecies = SPECIES_TERAPAGOS_STELLAR; } + GIVEN { + PLAYER(species); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } THEN { + EXPECT_EQ(player->species, targetSpecies); + } +} + +SINGLE_BATTLE_TEST("(TERA) All type indicators function correctly") +{ + u32 type; + PARAMETRIZE { type = TYPE_NONE; } + PARAMETRIZE { type = TYPE_NORMAL; } + PARAMETRIZE { type = TYPE_FIGHTING; } + PARAMETRIZE { type = TYPE_FLYING; } + PARAMETRIZE { type = TYPE_POISON; } + PARAMETRIZE { type = TYPE_GROUND; } + PARAMETRIZE { type = TYPE_ROCK; } + PARAMETRIZE { type = TYPE_BUG; } + PARAMETRIZE { type = TYPE_GHOST; } + PARAMETRIZE { type = TYPE_STEEL; } + PARAMETRIZE { type = TYPE_MYSTERY; } + PARAMETRIZE { type = TYPE_FIRE; } + PARAMETRIZE { type = TYPE_WATER; } + PARAMETRIZE { type = TYPE_GRASS; } + PARAMETRIZE { type = TYPE_ELECTRIC; } + PARAMETRIZE { type = TYPE_PSYCHIC; } + PARAMETRIZE { type = TYPE_ICE; } + PARAMETRIZE { type = TYPE_DRAGON; } + PARAMETRIZE { type = TYPE_DARK; } + PARAMETRIZE { type = TYPE_FAIRY; } + PARAMETRIZE { type = TYPE_STELLAR; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(type); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } +} + +SINGLE_BATTLE_TEST("(TERA) All type indicators function correctly - Opponent") +{ + u32 type; + PARAMETRIZE { type = TYPE_NONE; } + PARAMETRIZE { type = TYPE_NORMAL; } + PARAMETRIZE { type = TYPE_FIGHTING; } + PARAMETRIZE { type = TYPE_FLYING; } + PARAMETRIZE { type = TYPE_POISON; } + PARAMETRIZE { type = TYPE_GROUND; } + PARAMETRIZE { type = TYPE_ROCK; } + PARAMETRIZE { type = TYPE_BUG; } + PARAMETRIZE { type = TYPE_GHOST; } + PARAMETRIZE { type = TYPE_STEEL; } + PARAMETRIZE { type = TYPE_MYSTERY; } + PARAMETRIZE { type = TYPE_FIRE; } + PARAMETRIZE { type = TYPE_WATER; } + PARAMETRIZE { type = TYPE_GRASS; } + PARAMETRIZE { type = TYPE_ELECTRIC; } + PARAMETRIZE { type = TYPE_PSYCHIC; } + PARAMETRIZE { type = TYPE_ICE; } + PARAMETRIZE { type = TYPE_DRAGON; } + PARAMETRIZE { type = TYPE_DARK; } + PARAMETRIZE { type = TYPE_FAIRY; } + PARAMETRIZE { type = TYPE_STELLAR; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { TeraType(type); } + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } +} diff --git a/test/battle/gimmick/zmove.c b/test/battle/gimmick/zmove.c new file mode 100644 index 000000000000..bde241bfd72a --- /dev/null +++ b/test/battle/gimmick/zmove.c @@ -0,0 +1,601 @@ +#include "global.h" +#include "test/battle.h" +#include "constants/battle_z_move_effects.h" + +// Basic Functionality +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves do not retain priority") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_QUICK_ATTACK].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); + MOVE(player, MOVE_QUICK_ATTACK, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves are not affected by -ate abilities") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_SWELLOW].types[1] == TYPE_FLYING); + PLAYER(SPECIES_AURORUS) { Ability(ABILITY_REFRIGERATE); Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_SWELLOW); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + NOT { MESSAGE("It's super effective!"); } + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves are affected by Ion Deluge") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_ION_DELUGE].effect == EFFECT_ION_DELUGE); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_SWELLOW); + } WHEN { + TURN { MOVE(opponent, MOVE_ION_DELUGE); MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves deal 1/4 damage through protect", s16 damage) +{ + bool32 protected; + PARAMETRIZE { protected = TRUE; } + PARAMETRIZE { protected = FALSE; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_PROTECT].effect == EFFECT_PROTECT); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (protected) + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_PROTECT); } + else + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4), results[1].damage); + } +} + +// Status Z-Effects +SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_RESET_STATS clears a battler's negative stat stages") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_LEECH_SEED].zMove.effect == Z_EFFECT_RESET_STATS); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SWORDS_DANCE); MOVE(opponent, MOVE_SCREECH); } + TURN { MOVE(player, MOVE_LEECH_SEED, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LEECH_SEED, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_ALL_STATS_UP raises all of a battler's stat stages by one") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_CELEBRATE].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_CELEBRATE].zMove.effect == Z_EFFECT_ALL_STATS_UP_1); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_BOOST_CRITS raises a battler's critical hit ratio") +{ + PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); + GIVEN { + ASSUME(gMovesInfo[MOVE_FORESIGHT].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_FORESIGHT].zMove.effect == Z_EFFECT_BOOST_CRITS); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FORESIGHT, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FORESIGHT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + MESSAGE("A critical hit!"); + } +} + +DOUBLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_FOLLOW_ME redirects attacks to the user") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_DESTINY_BOND].type == TYPE_GHOST); + ASSUME(gMovesInfo[MOVE_DESTINY_BOND].zMove.effect == Z_EFFECT_FOLLOW_ME); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GHOSTIUM_Z); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DESTINY_BOND, gimmick: GIMMICK_Z_MOVE); + MOVE(opponentLeft, MOVE_TACKLE, target: playerRight); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DESTINY_BOND, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + NOT { HP_BAR(playerRight); } + HP_BAR(playerLeft); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_RESTORE_REPLACEMENT_HP fully heals the replacement battler's HP") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_PARTING_SHOT].type == TYPE_DARK); + ASSUME(gMovesInfo[MOVE_PARTING_SHOT].zMove.effect == Z_EFFECT_RESTORE_REPLACEMENT_HP); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_DARKINIUM_Z); } + PLAYER(SPECIES_WYNAUT) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PARTING_SHOT, gimmick: GIMMICK_Z_MOVE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PARTING_SHOT, player); + HP_BAR(player); + } THEN { + EXPECT_EQ(player->species, SPECIES_WYNAUT); + EXPECT_EQ(player->hp, player->maxHP); + } +} + +// This tests the functionality of Z_EFFECT_RECOVER_HP and Z_EFFECT_ATK_UP_1 (and thus by extension all stat-up Z-effects) +SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_CURSE activates Z_EFFECT_RECOVER_HP or Z_EFFECT_ATK_UP_1 depending on the type of the battler") +{ + u32 species; + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + PARAMETRIZE { species = SPECIES_DUSCLOPS; } + GIVEN { + ASSUME(gMovesInfo[MOVE_CURSE].type == TYPE_GHOST); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_GHOST); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_GHOST); + ASSUME(gSpeciesInfo[SPECIES_DUSCLOPS].types[0] == TYPE_GHOST); + ASSUME(gMovesInfo[MOVE_CURSE].zMove.effect == Z_EFFECT_CURSE); + PLAYER(species) { Item(ITEM_GHOSTIUM_Z); HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CURSE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + if (species == SPECIES_DUSCLOPS) { + HP_BAR(player); + NOT { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } + ANIMATION(ANIM_TYPE_MOVE, MOVE_CURSE, player); + HP_BAR(player); + } else { + NOT { HP_BAR(player); } + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CURSE, player); + NOT { HP_BAR(player); } + } + } THEN { + if (species == SPECIES_DUSCLOPS) { + EXPECT_MUL_EQ(player->maxHP, UQ_4_12(0.50), player->hp); // heal to full HP then cut by half + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } else { + EXPECT_EQ(player->hp, 1); + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); // +1 from Curse, +1 from Z-Effect + } + } +} + +// Specific Z-Move Interactions +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Mirror Move raises the user's attack by two stages and copies the last used non-status move as a Z-Move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_MIRROR_MOVE].type == TYPE_FLYING); + ASSUME(gMovesInfo[MOVE_MIRROR_MOVE].zMove.effect == Z_EFFECT_ATK_UP_2); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FLYINIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_MIRROR_MOVE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + // extra turn to make sure that everything resets properly + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Mirror Move raises the user's attack by two stages and copies the last used status move regularly") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_MIRROR_MOVE].type == TYPE_FLYING); + ASSUME(gMovesInfo[MOVE_MIRROR_MOVE].zMove.effect == Z_EFFECT_ATK_UP_2); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_FLYINIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SCREECH); MOVE(player, MOVE_MIRROR_MOVE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCREECH, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCREECH, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); // Z-Screech would cause an additional attack stat stage (reaching +3) + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Copycat raises the user's accuracy by one stage and copies the last used non-status move as a Z-Move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_COPYCAT].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_COPYCAT].zMove.effect == Z_EFFECT_ACC_UP_1); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_COPYCAT, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ACC], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Me First raises the user's speed by two stages and copies the last used non-status move as a Z-Move with boosted damage", s16 damage) +{ + u32 meFirst; + PARAMETRIZE { meFirst = TRUE; } + PARAMETRIZE { meFirst = FALSE; } + GIVEN { + ASSUME(gMovesInfo[MOVE_ME_FIRST].type == TYPE_NORMAL); + ASSUME(gMovesInfo[MOVE_ME_FIRST].zMove.effect == Z_EFFECT_SPD_UP_2); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (meFirst) + TURN { MOVE(player, MOVE_ME_FIRST, gimmick: GIMMICK_Z_MOVE); MOVE(opponent, MOVE_TACKLE); } + else + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + if (meFirst) + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } THEN { + if (meFirst) + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); + } FINALLY { + EXPECT_MUL_EQ(results[1].damage, UQ_4_12(1.50), results[0].damage); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Nature Power transforms into different Z-Moves based on the current terrain") +{ + u32 terrainMove = MOVE_NONE; + u32 zMove = MOVE_NONE; + PARAMETRIZE { terrainMove = MOVE_ELECTRIC_TERRAIN; zMove = gTypesInfo[TYPE_ELECTRIC].zMove; } + PARAMETRIZE { terrainMove = MOVE_PSYCHIC_TERRAIN; zMove = gTypesInfo[TYPE_PSYCHIC].zMove; } + PARAMETRIZE { terrainMove = MOVE_GRASSY_TERRAIN; zMove = gTypesInfo[TYPE_GRASS].zMove; } + PARAMETRIZE { terrainMove = MOVE_MISTY_TERRAIN; zMove = gTypesInfo[TYPE_FAIRY].zMove; } + GIVEN { + ASSUME(gMovesInfo[MOVE_NATURE_POWER].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, terrainMove); } + TURN { MOVE(player, MOVE_NATURE_POWER, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, terrainMove, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, zMove, player); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Hidden Power always transforms into Breakneck Blitz") +{ + u8 iv; + PARAMETRIZE { iv = 0; } // test different Hidden Power types + PARAMETRIZE { iv = 10; } + PARAMETRIZE { iv = 21; } + PARAMETRIZE { iv = 31; } + GIVEN { + ASSUME(gMovesInfo[MOVE_HIDDEN_POWER].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); AttackIV(iv); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Weather Ball transforms into different Z-Moves based on current weather") +{ + u32 weatherMove = MOVE_NONE; + u32 zMove = MOVE_NONE; + PARAMETRIZE { weatherMove = MOVE_RAIN_DANCE; zMove = gTypesInfo[TYPE_WATER].zMove; } + PARAMETRIZE { weatherMove = MOVE_SUNNY_DAY; zMove = gTypesInfo[TYPE_FIRE].zMove; } + PARAMETRIZE { weatherMove = MOVE_SANDSTORM; zMove = gTypesInfo[TYPE_ROCK].zMove; } + PARAMETRIZE { weatherMove = MOVE_HAIL; zMove = gTypesInfo[TYPE_ICE].zMove; } + GIVEN { + ASSUME(gMovesInfo[MOVE_WEATHER_BALL].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, weatherMove); } + TURN { MOVE(player, MOVE_WEATHER_BALL, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, weatherMove, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, zMove, player); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Sleep Talk transforms a used non-status move into a Z-Move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_SLEEP_TALK].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_ABSORB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SLEEP_TALK, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_SLEEP_TALK); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOM_DOOM, player); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Z-Sleep Talk turns Weather Ball into Breakneck Blitz even under rain") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_SLEEP_TALK].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); Status1(STATUS1_SLEEP); Moves(MOVE_SLEEP_TALK, MOVE_WEATHER_BALL); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_SLEEP_TALK, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAIN_DANCE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, player); + } +} + +// Miscellaneous Interactions +DOUBLE_BATTLE_TEST("(Z-MOVE) Instruct fails if the target last used a Z-Move") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, playerLeft); + MESSAGE("Wynaut used Instruct!"); + MESSAGE("But it failed!"); + } +} + +DOUBLE_BATTLE_TEST("(Z-MOVE) Dancer does not use a Z-Move if the battler has used a Z-Move the same turn") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TACKLE].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_DANCER); Item(ITEM_NORMALIUM_Z); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, gimmick: GIMMICK_Z_MOVE); + MOVE(playerRight, MOVE_FIERY_DANCE, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BREAKNECK_BLITZ, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FIERY_DANCE, playerRight); + ABILITY_POPUP(playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FIERY_DANCE, playerLeft); + } +} + +// Signature Z-Moves +SINGLE_BATTLE_TEST("(Z-MOVE) Light That Burns the Sky uses the battler's highest attacking stat", s16 damage) +{ + bool32 useSwordsDance; + PARAMETRIZE { useSwordsDance = FALSE; } + PARAMETRIZE { useSwordsDance = TRUE; } + GIVEN { + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1000); MaxHP(1000); }; // hits hard lol + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_ULTRA_BURST); } + if (useSwordsDance) + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_PHOTON_GEYSER, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ULTRA_BURST, player); // implicitly testing double gimmicks :^) + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_LIGHT_THAT_BURNS_THE_SKY, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) 10,000,000 Volt Thunderbolt has an increased critical hit ratio") +{ + PASSES_RANDOMLY(1, 2, RNG_CRITICAL_HIT); + GIVEN { + ASSUME(B_CRIT_CHANCE >= GEN_6); + ASSUME(gMovesInfo[MOVE_10_000_000_VOLT_THUNDERBOLT].criticalHitStage == 2); + PLAYER(SPECIES_PIKACHU_PARTNER_CAP) { Item(ITEM_PIKASHUNIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDERBOLT, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_10_000_000_VOLT_THUNDERBOLT, player); + MESSAGE("A critical hit!"); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Stoked Sparksurfer paralyzes the target") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_STOKED_SPARKSURFER].additionalEffects[0].moveEffect == MOVE_EFFECT_PARALYSIS); + PLAYER(SPECIES_RAICHU_ALOLA) { Item(ITEM_ALORAICHIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDERBOLT, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STOKED_SPARKSURFER, player); + STATUS_ICON(opponent, STATUS1_PARALYSIS); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Extreme Evoboost boosts all the user's stats by two stages") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_EXTREME_EVOBOOST].effect == EFFECT_EXTREME_EVOBOOST); + PLAYER(SPECIES_EEVEE) { Item(ITEM_EEVIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_LAST_RESORT, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EXTREME_EVOBOOST, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Genesis Supernova sets up psychic terrain") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_GENESIS_SUPERNOVA].effect == EFFECT_HIT_SET_REMOVE_TERRAIN); + PLAYER(SPECIES_MEW) { Item(ITEM_MEWNIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PSYCHIC, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GENESIS_SUPERNOVA, player); + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); } + MESSAGE("Mew cannot use Quick Attack!"); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Splintered Stormshards removes terrain") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_SPLINTERED_STORMSHARDS].effect == EFFECT_HIT_SET_REMOVE_TERRAIN); + PLAYER(SPECIES_LYCANROC_DUSK) { Item(ITEM_LYCANIUM_Z); } + OPPONENT(SPECIES_TAPU_LELE) { Ability(ABILITY_PSYCHIC_SURGE); HP(1000); MaxHP(1000); } + } WHEN { + TURN { MOVE(player, MOVE_STONE_EDGE, gimmick: GIMMICK_Z_MOVE); } + TURN { MOVE(player, MOVE_QUICK_ATTACK); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLINTERED_STORMSHARDS, player); + MESSAGE("The weirdness disappeared from the battlefield."); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Clangorous Soulblaze boosts all the user's stats by one stage") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_CLANGOROUS_SOULBLAZE].additionalEffects[0].moveEffect == MOVE_EFFECT_ALL_STATS_UP); + PLAYER(SPECIES_KOMMO_O) { Item(ITEM_KOMMONIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CLANGING_SCALES, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CLANGOROUS_SOULBLAZE, player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Guardian of Alola deals 75\% of the target's current HP") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_GUARDIAN_OF_ALOLA].effect == EFFECT_GUARDIAN_OF_ALOLA); + PLAYER(SPECIES_TAPU_FINI) { Item(ITEM_TAPUNIUM_Z); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_NATURES_MADNESS, gimmick: GIMMICK_Z_MOVE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GUARDIAN_OF_ALOLA, player); + } THEN { + EXPECT_MUL_EQ(opponent->maxHP, UQ_4_12(0.25), opponent->hp); + } +} + +SINGLE_BATTLE_TEST("(Z-MOVE) Searing Sunraze Smash ignores the target's abilities") +{ + GIVEN { + PLAYER(SPECIES_SOLGALEO) { Item(ITEM_SOLGANIUM_Z); } + OPPONENT(SPECIES_LAPRAS) { Ability(ABILITY_BATTLE_ARMOR); } + } WHEN { + TURN { MOVE(player, MOVE_SUNSTEEL_STRIKE, gimmick: GIMMICK_Z_MOVE, criticalHit: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ZMOVE_ACTIVATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SEARING_SUNRAZE_SMASH, player); + HP_BAR(opponent); + MESSAGE("A critical hit!"); + } +} diff --git a/test/battle/hold_effect/covert_cloak.c b/test/battle/hold_effect/covert_cloak.c index 58c4486fd62e..e15bca3b9f42 100644 --- a/test/battle/hold_effect/covert_cloak.c +++ b/test/battle/hold_effect/covert_cloak.c @@ -99,7 +99,7 @@ SINGLE_BATTLE_TEST("Covert Cloak does not block self-targeting effects, primary GIVEN { ASSUME(MoveHasAdditionalEffectSelf(MOVE_POWER_UP_PUNCH, MOVE_EFFECT_ATK_PLUS_1) == TRUE); ASSUME(MoveHasAdditionalEffectSelf(MOVE_RAPID_SPIN, MOVE_EFFECT_RAPID_SPIN) == TRUE); - ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_TWO_DOWN) == TRUE); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_LEAF_STORM, MOVE_EFFECT_SP_ATK_MINUS_2) == TRUE); ASSUME(MoveHasAdditionalEffectSelf(MOVE_METEOR_ASSAULT, MOVE_EFFECT_RECHARGE) == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_COVERT_CLOAK); } diff --git a/test/battle/hold_effect/cure_status.c b/test/battle/hold_effect/cure_status.c index 79ab1b4e3ca1..d00d891e26f7 100644 --- a/test/battle/hold_effect/cure_status.c +++ b/test/battle/hold_effect/cure_status.c @@ -249,7 +249,7 @@ SINGLE_BATTLE_TEST("Player Pokemon can be further poisoned with Toxic spikes aft ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, opponent); MESSAGE("Poison Spikes were scattered all around your team's feet!"); // 1st switch-in - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); STATUS_ICON(player, poison: TRUE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); @@ -260,7 +260,7 @@ SINGLE_BATTLE_TEST("Player Pokemon can be further poisoned with Toxic spikes aft } STATUS_ICON(player, poison: FALSE); // 2nd switch-in - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); STATUS_ICON(player, poison: TRUE); } diff --git a/test/battle/hold_effect/eject_pack.c b/test/battle/hold_effect/eject_pack.c index 76402920790e..8d85a77062ae 100644 --- a/test/battle/hold_effect/eject_pack.c +++ b/test/battle/hold_effect/eject_pack.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Eject Pack does not cause the new Pokémon to lose HP due to ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet is switched out with the Eject Pack!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); NOT MESSAGE("Wynaut was hurt by its Life Orb!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); } @@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Eject Pack is triggered by self-inflicting stat decreases") NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Wobbuffet is switched out with the Eject Pack!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); } } diff --git a/test/battle/hold_effect/red_card.c b/test/battle/hold_effect/red_card.c index 8d7e175ceae9..138e3a3692a9 100644 --- a/test/battle/hold_effect/red_card.c +++ b/test/battle/hold_effect/red_card.c @@ -394,7 +394,7 @@ SINGLE_BATTLE_TEST("Red Card activates before Emergency Exit") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); MESSAGE("Golisopod held up its Red Card against Foe Wobbuffet!"); ABILITY_POPUP(player, ABILITY_EMERGENCY_EXIT); - MESSAGE("Go! Wimpod!"); + SEND_IN_MESSAGE("Wimpod"); } } diff --git a/test/battle/hold_effect/safety_goggles.c b/test/battle/hold_effect/safety_goggles.c index b20f19e0a583..4c5c6a29653b 100644 --- a/test/battle/hold_effect/safety_goggles.c +++ b/test/battle/hold_effect/safety_goggles.c @@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") TURN { MOVE(player, MOVE_STUN_SPORE); } } SCENE { NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); - MESSAGE("Foe Abra is not affected thanks to its SafetyGoggles!"); + MESSAGE("Foe Abra is not affected thanks to its Safety Goggles!"); } } diff --git a/test/battle/item_effect/increase_stat.c b/test/battle/item_effect/increase_stat.c index df36b8ff338c..4eba548961f5 100644 --- a/test/battle/item_effect/increase_stat.c +++ b/test/battle/item_effect/increase_stat.c @@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("X Sp. Atk sharply raises battler's Sp. Attack stat", s16 dam if (useItem) TURN { USE_ITEM(player, ITEM_X_SP_ATK); } TURN { MOVE(player, MOVE_DISARMING_VOICE); } } SCENE { - MESSAGE("Wobbuffet used DisrmngVoice!"); + MESSAGE("Wobbuffet used Disarming Voice!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { if (B_X_ITEMS_BUFF >= GEN_7) @@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("X Sp. Def sharply raises battler's Sp. Defense stat", s16 da if (useItem) TURN { USE_ITEM(player, ITEM_X_SP_DEF); } TURN { MOVE(opponent, MOVE_DISARMING_VOICE); } } SCENE { - MESSAGE("Foe Wobbuffet used DisrmngVoice!"); + MESSAGE("Foe Wobbuffet used Disarming Voice!"); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { if (B_X_ITEMS_BUFF >= GEN_7) @@ -205,7 +205,7 @@ SINGLE_BATTLE_TEST("Max Mushrooms raises battler's Sp. Attack stat", s16 damage) if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } TURN { MOVE(player, MOVE_DISARMING_VOICE); } } SCENE { - MESSAGE("Wobbuffet used DisrmngVoice!"); + MESSAGE("Wobbuffet used Disarming Voice!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); @@ -225,7 +225,7 @@ SINGLE_BATTLE_TEST("Max Mushrooms battler's Sp. Defense stat", s16 damage) if (useItem) TURN { USE_ITEM(player, ITEM_MAX_MUSHROOMS); } TURN { MOVE(opponent, MOVE_DISARMING_VOICE); } } SCENE { - MESSAGE("Foe Wobbuffet used DisrmngVoice!"); + MESSAGE("Foe Wobbuffet used Disarming Voice!"); HP_BAR(player, captureDamage: &results[i].damage); } FINALLY { EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.66), results[1].damage); diff --git a/test/battle/move_effect/body_press.c b/test/battle/move_effect/body_press.c index d7dccf14283a..3a61c4d55dfc 100644 --- a/test/battle/move_effect/body_press.c +++ b/test/battle/move_effect/body_press.c @@ -4,6 +4,29 @@ ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_BODY_PRESS].effect == EFFECT_BODY_PRESS); + ASSUME(gMovesInfo[MOVE_BODY_PRESS].category == DAMAGE_CATEGORY_PHYSICAL); +} + +SINGLE_BATTLE_TEST("Body Press uses physical defense stat of target", s16 damage) +{ + u32 move; + + PARAMETRIZE { move = MOVE_DRILL_PECK; } + PARAMETRIZE { move = MOVE_BODY_PRESS; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_DRILL_PECK].power == gMovesInfo[MOVE_BODY_PRESS].power); + ASSUME(gMovesInfo[MOVE_CHARM].effect == EFFECT_ATTACK_DOWN_2); + PLAYER(SPECIES_MEW); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(opponent, MOVE_CHARM); MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } } SINGLE_BATTLE_TEST("Body Press's damage depends on the user's base Defense instead of its base Attack", s16 damage) diff --git a/test/battle/move_effect/chilly_reception.c b/test/battle/move_effect/chilly_reception.c index e3ce16c49653..f2c50b8444b4 100644 --- a/test/battle/move_effect/chilly_reception.c +++ b/test/battle/move_effect/chilly_reception.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); MESSAGE("It started to snow!"); MESSAGE("Slowking went back to 1"); - MESSAGE("Go! Slowpoke!"); + SEND_IN_MESSAGE("Slowpoke"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SNOW_CONTINUES); } } @@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Chilly Reception switches the user out, even if the weather 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!"); + SEND_IN_MESSAGE("Slowpoke"); MESSAGE("Rain continues to fall."); } } diff --git a/test/battle/move_effect/corrosive_gas.c b/test/battle/move_effect/corrosive_gas.c index c2c921cf742f..714702703a09 100644 --- a/test/battle/move_effect/corrosive_gas.c +++ b/test/battle/move_effect/corrosive_gas.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Corrosive Gas destroys the target's item or fails if the tar } WHEN { TURN { MOVE(player, MOVE_CORROSIVE_GAS); } } SCENE { - MESSAGE("Wobbuffet used CorrosiveGas!"); + MESSAGE("Wobbuffet used Corrosive Gas!"); if (item == ITEM_POTION) { ANIMATION(ANIM_TYPE_MOVE, MOVE_CORROSIVE_GAS, player); MESSAGE("Wobbuffet corroded Foe Wobbuffet's Potion!"); @@ -40,11 +40,11 @@ SINGLE_BATTLE_TEST("Corrosive Gas doesn't destroy the item of a Pokemon with the } WHEN { TURN { MOVE(player, MOVE_CORROSIVE_GAS); } } SCENE { - MESSAGE("Wobbuffet used CorrosiveGas!"); + MESSAGE("Wobbuffet used Corrosive Gas!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CORROSIVE_GAS, player); NOT MESSAGE("Wobbuffet corroded Foe Wobbuffet's Potion!"); ABILITY_POPUP(opponent, ABILITY_STICKY_HOLD); - MESSAGE("Foe Muk's Sticky Hold made CorrosiveGas ineffective!"); + MESSAGE("Foe Muk's Sticky Hold made Corrosive Gas ineffective!"); } THEN { EXPECT_EQ(opponent->item, ITEM_POISON_BARB); } @@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Items lost to Corrosive Gas cannot be restored by Recycle") } WHEN { TURN { MOVE(player, MOVE_CORROSIVE_GAS); MOVE(opponent, MOVE_RECYCLE); } } SCENE { - MESSAGE("Wobbuffet used CorrosiveGas!"); + MESSAGE("Wobbuffet used Corrosive Gas!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_CORROSIVE_GAS, player); MESSAGE("Wobbuffet corroded Foe Wobbuffet's Oran Berry!"); MESSAGE("Foe Wobbuffet used Recycle!"); @@ -93,7 +93,7 @@ DOUBLE_BATTLE_TEST("Corrosive Gas destroys foes and ally's items if they have on } WHEN { TURN { MOVE(playerRight, MOVE_CORROSIVE_GAS); } } SCENE { - MESSAGE("Wynaut used CorrosiveGas!"); + MESSAGE("Wynaut used Corrosive Gas!"); if (itemPlayerLeft == ITEM_CHERI_BERRY) { MESSAGE("Wynaut corroded Wobbuffet's Cheri Berry!"); } else { diff --git a/test/battle/move_effect/court_change.c b/test/battle/move_effect/court_change.c index 2986a3ec6eea..a5e3e05619d6 100644 --- a/test/battle/move_effect/court_change.c +++ b/test/battle/move_effect/court_change.c @@ -27,7 +27,7 @@ DOUBLE_BATTLE_TEST("Court Change swaps entry hazards used by the opponent") MESSAGE("Foe Wobbuffet used Toxic Spikes!"); MESSAGE("Wynaut used Court Change!"); MESSAGE("Wynaut swapped the battle effects affecting each side!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); NONE_OF { MESSAGE("Wynaut is hurt by spikes!"); MESSAGE("Pointed stones dug into Wynaut!"); @@ -63,7 +63,7 @@ DOUBLE_BATTLE_TEST("Court Change swaps entry hazards used by the player") MESSAGE("Wobbuffet used Toxic Spikes!"); MESSAGE("Foe Wynaut used Court Change!"); MESSAGE("Foe Wynaut swapped the battle effects affecting each side!"); - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); MESSAGE("Wobbuffet is hurt by spikes!"); MESSAGE("Pointed stones dug into Wobbuffet!"); MESSAGE("Wobbuffet was poisoned!"); diff --git a/test/battle/move_effect/curse.c b/test/battle/move_effect/curse.c new file mode 100644 index 000000000000..5fe17d356101 --- /dev/null +++ b/test/battle/move_effect/curse.c @@ -0,0 +1,36 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_CURSE].effect == EFFECT_CURSE); +} + +SINGLE_BATTLE_TEST("Curse lowers Speed, raises Attack, and raises Defense when used by non-Ghost-types") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CURSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CURSE, player); + MESSAGE("Wobbuffet's Speed fell!"); + MESSAGE("Wobbuffet's Attack rose!"); + MESSAGE("Wobbuffet's Defense rose!"); + } +} + +SINGLE_BATTLE_TEST("Curse cuts the user's HP in half when used by Ghost-types") +{ + GIVEN { + PLAYER(SPECIES_MISDREAVUS); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CURSE); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CURSE, player); + HP_BAR(player, hp: maxHP / 2); + } +} diff --git a/test/battle/move_effect/defog.c b/test/battle/move_effect/defog.c index 2fe20405f645..418d28d97bed 100644 --- a/test/battle/move_effect/defog.c +++ b/test/battle/move_effect/defog.c @@ -158,8 +158,8 @@ DOUBLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Stealth Rock and S MESSAGE("The sticky web has disappeared from the ground around your team!"); } // Switch happens - MESSAGE("Wobbuffet, that's enough! Come back!"); - MESSAGE("Go! Wobbuffet!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); if (move != MOVE_DEFOG) { HP_BAR(playerLeft); MESSAGE("Pointed stones dug into Wobbuffet!"); @@ -201,8 +201,8 @@ SINGLE_BATTLE_TEST("Defog lowers evasiveness by 1 and removes Spikes from player MESSAGE("The spikes disappeared from the ground around your team!"); } // Switch happens - MESSAGE("Wobbuffet, that's enough! Come back!"); - MESSAGE("Go! Wobbuffet!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); + SEND_IN_MESSAGE("Wobbuffet"); if (move != MOVE_DEFOG) { HP_BAR(player); MESSAGE("Wobbuffet is hurt by spikes!"); diff --git a/test/battle/move_effect/dragon_darts.c b/test/battle/move_effect/dragon_darts.c new file mode 100644 index 000000000000..8190f0f4bd5f --- /dev/null +++ b/test/battle/move_effect/dragon_darts.c @@ -0,0 +1,189 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_DRAGON_DARTS].effect == EFFECT_DRAGON_DARTS); + ASSUME(gSpeciesInfo[SPECIES_CLEFAIRY].types[0] == TYPE_FAIRY || gSpeciesInfo[SPECIES_CLEFAIRY].types[1] == TYPE_FAIRY); +} + +SINGLE_BATTLE_TEST("Dragon Darts strikes twice") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_DRAGON_DARTS); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, player); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes each opponent once in a double battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes the ally twice if the target protects") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_PROTECT); MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes the right ally twice if the target is a fairy type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CLEFAIRY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes the left ally twice if the target is a fairy type") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CLEFAIRY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes the ally twice if the target is in a semi-invulnerable turn") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_FLY].effect == EFFECT_SEMI_INVULNERABLE); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_FLY, target: playerLeft); MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLY, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts is not effected by Wide Guard") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_WIDE_GUARD); MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WIDE_GUARD, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes hit the ally if the target fainted") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_SONIC_BOOM, target: opponentLeft); MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SONIC_BOOM, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes left ally twice if one strike misses") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); }; + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentRight, hit: FALSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentLeft); + MESSAGE("Hit 2 time(s)!"); + } +} + +DOUBLE_BATTLE_TEST("Dragon Darts strikes right ally twice if one strike misses") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_DARTS, target: opponentLeft, hit: FALSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DARTS, playerLeft); + HP_BAR(opponentRight); + MESSAGE("Hit 2 time(s)!"); + } +} diff --git a/test/battle/move_effect/embargo.c b/test/battle/move_effect/embargo.c index a9b1b4523d1b..11e4069d80f2 100644 --- a/test/battle/move_effect/embargo.c +++ b/test/battle/move_effect/embargo.c @@ -220,7 +220,7 @@ SINGLE_BATTLE_TEST("Baton Pass passes Embargo's effect") // Turn 2 MESSAGE("Wobbuffet used Baton Pass!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, player); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); // Turn 3 MESSAGE("Wynaut used Fling!"); MESSAGE("But it failed!"); @@ -342,7 +342,7 @@ SINGLE_BATTLE_TEST("Embargo doesn't prevent Mega Evolution") } WHEN { TURN { MOVE(player, MOVE_EMBARGO); } TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } - TURN { MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); } } SCENE { // Turn 1 MESSAGE("Wobbuffet used Embargo!"); @@ -352,7 +352,7 @@ SINGLE_BATTLE_TEST("Embargo doesn't prevent Mega Evolution") 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!"); + MESSAGE("Foe Charizard's Charizardite Y 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!"); } diff --git a/test/battle/move_effect/fling.c b/test/battle/move_effect/fling.c index f6b83215a1c5..b4b25484b330 100644 --- a/test/battle/move_effect/fling.c +++ b/test/battle/move_effect/fling.c @@ -114,7 +114,7 @@ SINGLE_BATTLE_TEST("Fling - Item is lost even when there is no target") TURN { MOVE(opponent, MOVE_SELF_DESTRUCT); MOVE(player, MOVE_FLING); SEND_OUT(opponent, 1); } TURN { MOVE(player, MOVE_FLING); } } SCENE { - MESSAGE("Foe Wobbuffet used SelfDestruct!"); + MESSAGE("Foe Wobbuffet used Self-Destruct!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SELF_DESTRUCT, opponent); HP_BAR(player); MESSAGE("Foe Wobbuffet fainted!"); diff --git a/test/battle/move_effect/focus_punch.c b/test/battle/move_effect/focus_punch.c index 5bfb606b0ffe..355c071a948a 100644 --- a/test/battle/move_effect/focus_punch.c +++ b/test/battle/move_effect/focus_punch.c @@ -74,3 +74,28 @@ DOUBLE_BATTLE_TEST("Focus Punch activation is based on Speed") MESSAGE("Foe Wobbuffet lost its focus and couldn't move!"); } } + +AI_SINGLE_BATTLE_TEST("AI won't use Focus Punch if it predicts a damaging move") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_MAGNEZONE) { Moves(MOVE_THUNDER_WAVE, MOVE_FLASH_CANNON, MOVE_DISCHARGE, MOVE_TRI_ATTACK); } + OPPONENT(SPECIES_BRELOOM) { Moves(MOVE_FOCUS_PUNCH, MOVE_SEED_BOMB); } + } WHEN { + TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_FOCUS_PUNCH); } + TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_SEED_BOMB); } + } +} + +AI_SINGLE_BATTLE_TEST("AI will Incapacitate -> Substitute -> Focus Punch if able") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_MAGNEZONE) { Moves(MOVE_THUNDER_WAVE, MOVE_FLASH_CANNON, MOVE_DISCHARGE, MOVE_TRI_ATTACK); } + OPPONENT(SPECIES_BRELOOM) { Moves(MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_SUBSTITUTE, MOVE_SEED_BOMB); } + } WHEN { + TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_SPORE); } + TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_SUBSTITUTE); } + TURN { MOVE(player, MOVE_DISCHARGE); EXPECT_MOVE(opponent, MOVE_FOCUS_PUNCH); } + } +} diff --git a/test/battle/move_effect/foul_play.c b/test/battle/move_effect/foul_play.c new file mode 100644 index 000000000000..cc853b48de45 --- /dev/null +++ b/test/battle/move_effect/foul_play.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_FOUL_PLAY].effect == EFFECT_FOUL_PLAY); +} + +SINGLE_BATTLE_TEST("Foul Play uses physical attack stat of target", s16 damage) +{ + u32 move; + + PARAMETRIZE { move = MOVE_HIGH_HORSEPOWER; } + PARAMETRIZE { move = MOVE_FOUL_PLAY; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_HIGH_HORSEPOWER].power == gMovesInfo[MOVE_FOUL_PLAY].power); + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + PLAYER(SPECIES_SHELLDER); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} diff --git a/test/battle/move_effect/gastro_acid.c b/test/battle/move_effect/gastro_acid.c index b76cef8dc68b..e4f1aa535475 100644 --- a/test/battle/move_effect/gastro_acid.c +++ b/test/battle/move_effect/gastro_acid.c @@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Gastro Acid fails if target has a banned ability") PARAMETRIZE { species = SPECIES_CRAMORANT; ability = ABILITY_GULP_MISSILE; } PARAMETRIZE { species = SPECIES_PALAFIN_ZERO; ability = ABILITY_ZERO_TO_HERO; } PARAMETRIZE { species = SPECIES_TATSUGIRI; ability = ABILITY_COMMANDER; } - // Needs confirmation since those abilities can be surpressed by Neutralizing Gas + // Needs confirmation since those abilities can be suppressed by Neutralizing Gas // PARAMETRIZE { species = SPECIES_IRON_MOTH; ability = ABILITY_QUARK_DRIVE; } // PARAMETRIZE { species = SPECIES_WALKING_WAKE; ability = ABILITY_PROTOSYNTHESIS; } PARAMETRIZE { species = SPECIES_CALYREX_SHADOW_RIDER; ability = ABILITY_AS_ONE_SHADOW_RIDER; } diff --git a/test/battle/move_effect/heal_bell.c b/test/battle/move_effect/heal_bell.c new file mode 100644 index 000000000000..8bd6c1f45679 --- /dev/null +++ b/test/battle/move_effect/heal_bell.c @@ -0,0 +1,102 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_HEAL_BELL].effect == EFFECT_HEAL_BELL); + ASSUME(gMovesInfo[MOVE_AROMATHERAPY].effect == EFFECT_HEAL_BELL); +} + +DOUBLE_BATTLE_TEST("Heal Bell cures the entire party") +{ + u32 move; + + PARAMETRIZE { move = MOVE_HEAL_BELL; } + PARAMETRIZE { move = MOVE_AROMATHERAPY; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, move, target: playerLeft); } + TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); } + } SCENE { + int i; + + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + NOT MESSAGE("Wobbuffet is hurt by poison!"); + for (i = 0; i < 6; i++) + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_STATUS), STATUS1_NONE); + } +} + +DOUBLE_BATTLE_TEST("Heal Bell does not cure soundproof partners") +{ + u32 ability; + + PARAMETRIZE { ability = ABILITY_SCRAPPY; } + PARAMETRIZE { ability = ABILITY_SOUNDPROOF; } + + ASSUME(B_HEAL_BELL_SOUNDPROOF != GEN_5); + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_HEAL_BELL, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, playerLeft); + if (ability == ABILITY_SOUNDPROOF) { + MESSAGE("Exploud is hurt by poison!"); + } else { + NOT MESSAGE("Exploud is hurt by poison!"); + } + } +} + +SINGLE_BATTLE_TEST("Heal Bell cures inactive soundproof Pokemon") +{ + u32 ability; + + PARAMETRIZE { ability = ABILITY_SCRAPPY; } + PARAMETRIZE { ability = ABILITY_SOUNDPROOF; } + + ASSUME(B_HEAL_BELL_SOUNDPROOF >= GEN_5); + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_HEAL_BELL, target: player); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, player); + SEND_IN_MESSAGE("Exploud"); + NOT MESSAGE("Exploud is hurt by poison!"); + } +} + + +SINGLE_BATTLE_TEST("Heal Bell cures a soundproof user") +{ + ASSUME(B_HEAL_BELL_SOUNDPROOF == GEN_5 || B_HEAL_BELL_SOUNDPROOF >= GEN_8); + + GIVEN { + PLAYER(SPECIES_EXPLOUD) { Ability(ABILITY_SOUNDPROOF); Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_HEAL_BELL, target: player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, player); + NOT MESSAGE("Exploud is hurt by poison!"); + } +} diff --git a/test/battle/move_effect/hidden_power.c b/test/battle/move_effect/hidden_power.c new file mode 100644 index 000000000000..8ec63c21a7ec --- /dev/null +++ b/test/battle/move_effect/hidden_power.c @@ -0,0 +1,106 @@ +#include "global.h" +#include "test/battle.h" + +// IV combinations sourced from https://www.smogon.com/forums/threads/hidden-power-iv-combinations.78083/ +SINGLE_BATTLE_TEST("Hidden Power's type is determined by IVs") +{ + u32 type, j, foeType, foeSpecies; + u32 hp, atk, def, spAtk, spDef, speed; + bool32 hidden; + + PARAMETRIZE { type = TYPE_NONE; hidden = FALSE; } + PARAMETRIZE { type = TYPE_NORMAL; hidden = FALSE; } + PARAMETRIZE { type = TYPE_FIGHTING; hidden = TRUE; foeType = TYPE_PSYCHIC; foeSpecies = SPECIES_WOBBUFFET; hp = 30; atk = 2; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FIGHTING; hidden = TRUE; foeType = TYPE_PSYCHIC; foeSpecies = SPECIES_WOBBUFFET; hp = 31; atk = 15; def = 30; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FIGHTING; hidden = TRUE; foeType = TYPE_PSYCHIC; foeSpecies = SPECIES_WOBBUFFET; hp = 30; atk = 22; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FIGHTING; hidden = TRUE; foeType = TYPE_PSYCHIC; foeSpecies = SPECIES_WOBBUFFET; hp = 31; atk = 31; def = 30; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FLYING; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_REGISTEEL; hp = 31; atk = 2; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FLYING; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_REGISTEEL; hp = 31; atk = 15; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FLYING; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_REGISTEEL; hp = 31; atk = 22; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_FLYING; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_REGISTEEL; hp = 31; atk = 31; def = 31; spAtk = 30; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_POISON; hidden = TRUE; foeType = TYPE_POISON; foeSpecies = SPECIES_ARBOK; hp = 30; atk = 2; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_POISON; hidden = TRUE; foeType = TYPE_POISON; foeSpecies = SPECIES_ARBOK; hp = 31; atk = 15; def = 30; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_POISON; hidden = TRUE; foeType = TYPE_POISON; foeSpecies = SPECIES_ARBOK; hp = 30; atk = 22; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_POISON; hidden = TRUE; foeType = TYPE_POISON; foeSpecies = SPECIES_ARBOK; hp = 31; atk = 31; def = 30; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GROUND; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 2; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GROUND; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 15; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GROUND; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 22; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GROUND; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 31; def = 31; spAtk = 30; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_ROCK; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 2; def = 30; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_ROCK; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 15; def = 30; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_ROCK; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 22; def = 30; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_ROCK; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 31; def = 30; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_BUG; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 2; def = 31; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_BUG; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 15; def = 31; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_BUG; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 22; def = 31; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_BUG; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 31; def = 31; spAtk = 31; spDef = 30; speed = 30; } + PARAMETRIZE { type = TYPE_GHOST; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 2; def = 31; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GHOST; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 15; def = 30; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GHOST; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 22; def = 31; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_GHOST; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 31; def = 30; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_STEEL; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 2; def = 30; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_STEEL; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 15; def = 31; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_STEEL; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 22; def = 30; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_STEEL; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 31; def = 31; spAtk = 31; spDef = 30; speed = 31; } + PARAMETRIZE { type = TYPE_FIRE; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 2; def = 31; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_FIRE; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 15; def = 30; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_FIRE; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 22; def = 31; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_FIRE; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 31; def = 30; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_WATER; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 2; def = 30; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_WATER; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 15; def = 31; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_WATER; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 22; def = 30; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_WATER; hidden = TRUE; foeType = TYPE_WATER; foeSpecies = SPECIES_BLASTOISE; hp = 31; atk = 31; def = 31; spAtk = 30; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_GRASS; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 2; def = 31; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_GRASS; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 15; def = 31; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_GRASS; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 22; def = 31; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_GRASS; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 31; def = 31; spAtk = 30; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_ELECTRIC; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 2; def = 30; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_ELECTRIC; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 30; atk = 15; def = 30; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_ELECTRIC; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 31; atk = 22; def = 30; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_ELECTRIC; hidden = TRUE; foeType = TYPE_GRASS; foeSpecies = SPECIES_TANGELA; hp = 30; atk = 31; def = 30; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_PSYCHIC; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 2; def = 31; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_PSYCHIC; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 15; def = 31; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_PSYCHIC; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 31; atk = 22; def = 31; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_PSYCHIC; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 31; def = 31; spAtk = 31; spDef = 31; speed = 30; } + PARAMETRIZE { type = TYPE_ICE; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 2; def = 30; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_ICE; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 15; def = 30; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_ICE; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 22; def = 30; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_ICE; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 31; def = 30; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_MYSTERY; hidden = FALSE; } + PARAMETRIZE { type = TYPE_DRAGON; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 2; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DRAGON; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 15; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DRAGON; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 22; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DRAGON; hidden = TRUE; foeType = TYPE_STEEL; foeSpecies = SPECIES_KLINK; hp = 30; atk = 31; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DARK; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 3; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DARK; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 15; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DARK; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 23; def = 31; spAtk = 31; spDef = 31; speed = 31; } + PARAMETRIZE { type = TYPE_DARK; hidden = TRUE; foeType = TYPE_DARK; foeSpecies = SPECIES_UMBREON; hp = 31; atk = 31; def = 31; spAtk = 31; spDef = 31; speed = 31; } + + // Any type after Dark shouldn't be part of Hidden Power officially. + for (j = TYPE_DARK + 1; j < NUMBER_OF_MON_TYPES; j++) { + PARAMETRIZE { type = j; hidden = FALSE; } + } + + GIVEN { + if (hidden) { + ASSUME(gTypeEffectivenessTable[type][foeType] == UQ_4_12(0.5)); // Foe's Type resists + ASSUME(gSpeciesInfo[foeSpecies].types[0] == gSpeciesInfo[foeSpecies].types[1]); // Foe's pure type + ASSUME(gSpeciesInfo[foeSpecies].types[0] == foeType); // Foe is the resisted type + PLAYER(SPECIES_DUNSPARCE) { HPIV(hp); AttackIV(atk); DefenseIV(def); SpAttackIV(spAtk); SpDefenseIV(spDef); SpeedIV(speed); } + } else { + PLAYER(SPECIES_DUNSPARCE); + } + OPPONENT(foeSpecies); + } WHEN { + TURN { MOVE(player, MOVE_HIDDEN_POWER); } + } SCENE { + // Only test valid Hidden Power types + if (hidden) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HIDDEN_POWER, player); + HP_BAR(opponent); + MESSAGE("It's not very effective…"); + } + } +} + +TO_DO_BATTLE_TEST("Hidden Power's power is determined by IVs before Gen6"); diff --git a/test/battle/move_effect/hit_escape.c b/test/battle/move_effect/hit_escape.c index 86763c412778..0c96bd4e7568 100644 --- a/test/battle/move_effect/hit_escape.c +++ b/test/battle/move_effect/hit_escape.c @@ -17,7 +17,7 @@ SINGLE_BATTLE_TEST("U-turn switches the user out") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); HP_BAR(opponent); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } @@ -91,7 +91,7 @@ SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate") ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player); HP_BAR(opponent); NOT ABILITY_POPUP(opponent); - MESSAGE("Go for it, Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } @@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("U-turn switches the user out after Ice Face activates") HP_BAR(opponent); ABILITY_POPUP(opponent, ABILITY_ICE_FACE); MESSAGE("Foe Eiscue transformed!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } diff --git a/test/battle/move_effect/knock_off.c b/test/battle/move_effect/knock_off.c index 883f313f3b15..ba6f9b6fe7c6 100644 --- a/test/battle/move_effect/knock_off.c +++ b/test/battle/move_effect/knock_off.c @@ -21,6 +21,8 @@ SINGLE_BATTLE_TEST("Knock Off knocks a healing berry before it has the chance to } ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Sitrus Berry!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); } } @@ -41,14 +43,154 @@ SINGLE_BATTLE_TEST("Knock Off activates after Rocky Helmet and Weakness Policy") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); if (item == ITEM_WEAKNESS_POLICY) { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE); - MESSAGE("Using WeaknssPolicy, the Attack of Foe Wobbuffet sharply rose!"); - MESSAGE("Using WeaknssPolicy, the Sp. Atk of Foe Wobbuffet sharply rose!"); + MESSAGE("Using Weakness Policy, the Attack of Foe Wobbuffet sharply rose!"); + MESSAGE("Using Weakness Policy, the Sp. Atk of Foe Wobbuffet sharply rose!"); } else if (item == ITEM_ROCKY_HELMET) { HP_BAR(player); MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Rocky Helmet!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Rocky Helmet!"); } + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Knock Off deals additional damage to opponents holding an item in Gen 6+", s16 damage) +{ + u16 item = 0; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_LEFTOVERS; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(item); }; + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + if (item != ITEM_NONE) + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + } FINALLY { + if (B_KNOCK_OFF_DMG >= GEN_6) + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(1.5), results[1].damage); + else + EXPECT_EQ(results[0].damage, results[1].damage); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + + +SINGLE_BATTLE_TEST("Knock Off does not remove items through Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); }; + } WHEN { + TURN { MOVE(opponent, MOVE_SUBSTITUTE); + MOVE(player, MOVE_KNOCK_OFF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + NOT { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); } + } THEN { + EXPECT(opponent->item == ITEM_LEFTOVERS); + } +} + +SINGLE_BATTLE_TEST("Recycle cannot recover an item removed by Knock Off") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); + MOVE(opponent, MOVE_RECYCLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + + MESSAGE("Foe Wobbuffet used Recycle!"); + MESSAGE("But it failed!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("Knock Off does not prevent targets from receiving another item in Gen 5+") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_BESTOW); } + } SCENE { + // turn 1 + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + // turn 2 + if (B_KNOCK_OFF_REMOVAL >= GEN_5) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BESTOW, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT); + MESSAGE("Foe Wobbuffet's Leftovers restored its HP a little!"); + } else { + NOT { ANIMATION(ANIM_TYPE_MOVE, MOVE_BESTOW, player); } + MESSAGE("But it failed!"); + } + } THEN { + if (B_KNOCK_OFF_REMOVAL >= GEN_5) + EXPECT(opponent->item == ITEM_LEFTOVERS); + else + EXPECT(opponent->item == ITEM_NONE); + } +} + +// Knock Off triggers Unburden regardless of whether the item is fully removed (Gen 5+) or not. +SINGLE_BATTLE_TEST("Knock Off triggers Unburden") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(60); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_UNBURDEN); Item(ITEM_LEFTOVERS); Speed(50); } + } WHEN { + TURN { MOVE(player, MOVE_KNOCK_OFF); } + TURN { MOVE(player, MOVE_CELEBRATE); } + } SCENE { + // turn 1 + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Wobbuffet knocked off Foe Wobbuffet's Leftovers!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Celebrate!"); + } THEN { + EXPECT(opponent->item == ITEM_NONE); + } +} + +DOUBLE_BATTLE_TEST("Knock Off does not trigger the opposing ally's Symbiosis") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LEFTOVERS); } + PLAYER(SPECIES_FLORGES) { Item(ITEM_LEFTOVERS); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_KNOCK_OFF, target: playerLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponentLeft); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF); + MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Leftovers!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT); + MESSAGE("Wobbuffet's Leftovers restored health!"); + } + } THEN { + EXPECT(playerLeft->item == ITEM_NONE); } } diff --git a/test/battle/move_effect/metronome.c b/test/battle/move_effect/metronome.c index d4efcaafff5f..22e3390cb2b9 100644 --- a/test/battle/move_effect/metronome.c +++ b/test/battle/move_effect/metronome.c @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Metronome's called powder move fails against Grass Types") } SCENE { MESSAGE("Wobbuffet used Metronome!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_METRONOME, player); - MESSAGE("Wobbuffet used PoisonPowder!"); + MESSAGE("Wobbuffet used Poison Powder!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_POISON_POWDER, player); MESSAGE("It doesn't affect Foe Tangela…"); NOT STATUS_ICON(opponent, poison: TRUE); diff --git a/test/battle/move_effect/photon_geyser.c b/test/battle/move_effect/photon_geyser.c index 3f46547ee127..986d3865aa5a 100644 --- a/test/battle/move_effect/photon_geyser.c +++ b/test/battle/move_effect/photon_geyser.c @@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Photon Geyser can be mirror coated if it is a special move") } } -SINGLE_BATTLE_TEST("Photon Geyser can be countered if it is a physcal move") +SINGLE_BATTLE_TEST("Photon Geyser can be countered if it is a physical move") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Attack(110); SpAttack(100); } diff --git a/test/battle/move_effect/plasma_fists.c b/test/battle/move_effect/plasma_fists.c index 1252de7b54f0..bdd3ed4f419c 100644 --- a/test/battle/move_effect/plasma_fists.c +++ b/test/battle/move_effect/plasma_fists.c @@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Plasma Fists turns normal type dynamax-moves into electric t PLAYER(SPECIES_KRABBY) { Speed(100); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { - TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE, gimmick: GIMMICK_DYNAMAX); } } SCENE { MESSAGE("Krabby used Plasma Fists!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index 53d4704987b6..973033bc333b 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -152,7 +152,7 @@ SINGLE_BATTLE_TEST("Spiky Shield does 1/8 dmg of max hp of attackers making cont HP_BAR(player, maxHp / 8); if (hp == 1) { MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); } } } diff --git a/test/battle/move_effect/pursuit.c b/test/battle/move_effect/pursuit.c index ec2345dbddb4..7c34e914d1bc 100644 --- a/test/battle/move_effect/pursuit.c +++ b/test/battle/move_effect/pursuit.c @@ -16,12 +16,12 @@ SINGLE_BATTLE_TEST("Pursuited mon correctly switches out after it got hit and ac } WHEN { TURN { SWITCH(player, 1); MOVE(opponent, MOVE_PURSUIT); } } SCENE { - MESSAGE("Dugtrio, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Dugtrio"); ANIMATION(ANIM_TYPE_MOVE, MOVE_PURSUIT, opponent); ABILITY_POPUP(player, ABILITY_TANGLING_HAIR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); MESSAGE("Foe Wynaut's Speed fell!"); - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); } } diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c index 109713b64d82..52859cefc17f 100644 --- a/test/battle/move_effect/rage_fist.c +++ b/test/battle/move_effect/rage_fist.c @@ -167,9 +167,9 @@ SINGLE_BATTLE_TEST("Rage Fist base power is not lost if user switches out") } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[0]); - MESSAGE("Wobbuffet, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Wobbuffet"); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); - MESSAGE("Wynaut, that's enough! Come back!"); + SWITCH_OUT_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); HP_BAR(opponent, captureDamage: ×GotHit[1]); } THEN { diff --git a/test/battle/move_effect/recoil_if_miss.c b/test/battle/move_effect/recoil_if_miss.c index 49c78a229e2d..b6083e9d190e 100644 --- a/test/battle/move_effect/recoil_if_miss.c +++ b/test/battle/move_effect/recoil_if_miss.c @@ -83,7 +83,7 @@ SINGLE_BATTLE_TEST("Jump Kick's recoil happens after Spiky Shield damage and Pok MESSAGE("Wobbuffet was hurt by Foe Wobbuffet's Spiky Shield!"); if (faintOnSpiky){ MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); NONE_OF { MESSAGE("Wobbuffet kept going and crashed!"); HP_BAR(player); @@ -93,7 +93,7 @@ SINGLE_BATTLE_TEST("Jump Kick's recoil happens after Spiky Shield damage and Pok HP_BAR(player); if (faintOnJumpKick) { MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } } diff --git a/test/battle/move_effect/reflect_type.c b/test/battle/move_effect/reflect_type.c index e873516034ee..b75ffc0b0d58 100644 --- a/test/battle/move_effect/reflect_type.c +++ b/test/battle/move_effect/reflect_type.c @@ -171,7 +171,7 @@ SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's type1 an HP_BAR(player); MESSAGE("Foe Arcanine burned itself out!"); // Turn 2 - MESSAGE("Wobbuffet used Forest'sCurs!"); + MESSAGE("Wobbuffet used Forest's Curse!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_FORESTS_CURSE, player); MESSAGE("Grass type was added to Foe Arcanine!"); // Turn 3 diff --git a/test/battle/move_effect/revival_blessing.c b/test/battle/move_effect/revival_blessing.c index 397e01e73aee..d44e9110d50c 100644 --- a/test/battle/move_effect/revival_blessing.c +++ b/test/battle/move_effect/revival_blessing.c @@ -5,12 +5,6 @@ // behaviors. These have been tested in-game, in double, in multi, and in link battles. AI will always // revive their first fainted party member in order. -#if B_EXPANDED_MOVE_NAMES -#define REVIVAL_BLESSING "Revival Blessing" -#else -#define REVIVAL_BLESSING "RevivlBlesng" -#endif - ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_REVIVAL_BLESSING].effect == EFFECT_REVIVAL_BLESSING); @@ -26,7 +20,7 @@ SINGLE_BATTLE_TEST("Revival Blessing revives a chosen fainted party member for t } WHEN { TURN { MOVE(player, MOVE_REVIVAL_BLESSING); SEND_OUT(player, 2); } } SCENE { - MESSAGE("Wobbuffet used " REVIVAL_BLESSING "!"); + MESSAGE("Wobbuffet used Revival Blessing!"); MESSAGE("Wynaut was revived and is ready to fight again!"); } } @@ -41,7 +35,7 @@ SINGLE_BATTLE_TEST("Revival Blessing revives a fainted party member for an oppon } WHEN { TURN { MOVE(opponent, MOVE_REVIVAL_BLESSING); SEND_OUT(opponent, 1); } } SCENE { - MESSAGE("Foe Raichu used " REVIVAL_BLESSING "!"); + MESSAGE("Foe Raichu used Revival Blessing!"); MESSAGE("Pichu was revived and is ready to fight again!"); } } @@ -54,7 +48,7 @@ SINGLE_BATTLE_TEST("Revival Blessing fails if no party members are fainted") } WHEN { TURN { MOVE(player, MOVE_REVIVAL_BLESSING); } } SCENE { - MESSAGE("Wobbuffet used " REVIVAL_BLESSING "!"); + MESSAGE("Wobbuffet used Revival Blessing!"); MESSAGE("But it failed!"); } } @@ -82,10 +76,10 @@ TO_DO_BATTLE_TEST("Revival Blessing cannot revive a partner's party member"); // TURN { MOVE(user, MOVE_REVIVAL_BLESSING); } // } SCENE { // if (user == opponentLeft) { -// MESSAGE("Foe Wobbuffet used " REVIVAL_BLESSING "!"); +// MESSAGE("Foe Wobbuffet used Revival Blessing!"); // MESSAGE("But it failed!"); // } else { -// MESSAGE("Foe Wynaut used " REVIVAL_BLESSING "!"); +// MESSAGE("Foe Wynaut used Revival Blessing!"); // MESSAGE("Wynaut was revived and is ready to fight again!"); // } // } @@ -108,7 +102,7 @@ TO_DO_BATTLE_TEST("Revived battlers still lose their turn"); // } SCENE { // MESSAGE("Wobbuffet used Tackle!"); // MESSAGE("Foe Wynaut fainted!"); -// MESSAGE("Foe Wobbuffet used " REVIVAL_BLESSING "!"); +// MESSAGE("Foe Wobbuffet used Revival Blessing!"); // MESSAGE("Wynaut was revived and is ready to fight again!"); // NOT { MESSAGE("Wynaut used Celebrate!"); } // } diff --git a/test/battle/move_effect/semi_invulnerable.c b/test/battle/move_effect/semi_invulnerable.c index 97760225d132..3ba4889005e5 100644 --- a/test/battle/move_effect/semi_invulnerable.c +++ b/test/battle/move_effect/semi_invulnerable.c @@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Semi-invulnerable moves make the user semi-invulnerable turn break; case MOVE_PHANTOM_FORCE: NOT MESSAGE("Wobbuffet vanished instantly!"); - MESSAGE("Wobbuffet used PhantomForce!"); + MESSAGE("Wobbuffet used Phantom Force!"); break; case MOVE_SHADOW_FORCE: NOT MESSAGE("Wobbuffet vanished instantly!"); @@ -112,7 +112,7 @@ SINGLE_BATTLE_TEST("Semi-invulnerable moves make the user semi-invulnerable turn MESSAGE("Wobbuffet used Dive!"); break; case MOVE_PHANTOM_FORCE: - MESSAGE("Wobbuffet used PhantomForce!"); + MESSAGE("Wobbuffet used Phantom Force!"); break; case MOVE_SHADOW_FORCE: MESSAGE("Wobbuffet used Shadow Force!"); @@ -163,7 +163,7 @@ SINGLE_BATTLE_TEST("Semi-invulnerable moves don't need to charge with Power Herb break; case MOVE_PHANTOM_FORCE: NOT MESSAGE("Wobbuffet vanished instantly!"); - MESSAGE("Wobbuffet used PhantomForce!"); + MESSAGE("Wobbuffet used Phantom Force!"); break; case MOVE_SHADOW_FORCE: NOT MESSAGE("Wobbuffet vanished instantly!"); @@ -215,7 +215,7 @@ SINGLE_BATTLE_TEST("Semi-invulnerable moves don't need to charge with Power Herb MESSAGE("Wobbuffet used Dive!"); break; case MOVE_PHANTOM_FORCE: - MESSAGE("Wobbuffet used PhantomForce!"); + MESSAGE("Wobbuffet used Phantom Force!"); break; case MOVE_SHADOW_FORCE: MESSAGE("Wobbuffet used Shadow Force!"); diff --git a/test/battle/move_effect/shed_tail.c b/test/battle/move_effect/shed_tail.c index 6f12d22eee64..55a8950d00c9 100644 --- a/test/battle/move_effect/shed_tail.c +++ b/test/battle/move_effect/shed_tail.c @@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Shed Tail creates a Substitute at the cost of 1/2 users maxi ANIMATION(ANIM_TYPE_MOVE, MOVE_SHED_TAIL, player); HP_BAR(player, captureDamage: &costHP); MESSAGE("Wobbuffet shed its tail to create a decoy!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); }THEN { EXPECT_EQ(maxHP / 2, costHP); } @@ -53,7 +53,7 @@ SINGLE_BATTLE_TEST("Shed Tail's HP cost can trigger a berry before the user swit } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SHED_TAIL, player); MESSAGE("Wobbuffet's Sitrus Berry restored health!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); } } diff --git a/test/battle/move_effect/shell_side_arm.c b/test/battle/move_effect/shell_side_arm.c index f0b3dd74dc22..13458e39aec1 100644 --- a/test/battle/move_effect/shell_side_arm.c +++ b/test/battle/move_effect/shell_side_arm.c @@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Shell Side Arm can be mirror coated if it is special") } } -SINGLE_BATTLE_TEST("Shell Side Arm does not change catogory mid-turn") +SINGLE_BATTLE_TEST("Shell Side Arm does not change category mid-turn") { s16 damage[3]; @@ -56,7 +56,7 @@ SINGLE_BATTLE_TEST("Shell Side Arm does not change catogory mid-turn") } } -DOUBLE_BATTLE_TEST("Shell Side Arm is choosing it's type for each battler on the field") +DOUBLE_BATTLE_TEST("Shell Side Arm chooses its category for each battler on the field") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Speed(10); Moves(MOVE_SHELL_SIDE_ARM); } diff --git a/test/battle/move_effect/shell_trap.c b/test/battle/move_effect/shell_trap.c index 15b3f41e5ec5..cd63be237689 100644 --- a/test/battle/move_effect/shell_trap.c +++ b/test/battle/move_effect/shell_trap.c @@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Shell Trap does not activate if battler faints before being MESSAGE("Wobbuffet set a shell trap!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); NONE_OF { MESSAGE("Wobbuffet used Shell Trap!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_TRAP, player); diff --git a/test/battle/move_effect/spicy_extract.c b/test/battle/move_effect/spicy_extract.c new file mode 100644 index 000000000000..8a66003ec785 --- /dev/null +++ b/test/battle/move_effect/spicy_extract.c @@ -0,0 +1,208 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_SPICY_EXTRACT].effect == EFFECT_SPICY_EXTRACT); +} + +SINGLE_BATTLE_TEST("Spicy Extract raises target's Attack by 2 stages and lowers target's Defense by 2 stages") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense harshly fell!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE - 2); + } +} + +SINGLE_BATTLE_TEST("Spicy Extract is prevented by target's ability if it's Attack stat is maxed out") +{ + u16 ability; + + PARAMETRIZE { ability = ABILITY_CLEAR_BODY; } + PARAMETRIZE { ability = ABILITY_LIGHT_METAL; } + + GIVEN { + ASSUME(gMovesInfo[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_BELDUM) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); } + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); } + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Wobbuffet used Spicy Extract!"); + if (ability == ABILITY_CLEAR_BODY) { + ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } + } +} + +SINGLE_BATTLE_TEST("Spicy Extract Defense loss is prevented by Big Pecks") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); } + } WHEN { + TURN { MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + MESSAGE("Wobbuffet used Spicy Extract!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Pidgey's Attack sharply rose!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense harshly fell!"); + } + ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); + MESSAGE("Foe Pidgey's Big Pecks prevents Defense loss!"); + } +} + +SINGLE_BATTLE_TEST("Spicy Extract bypasses accuracy checks") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHTPOWDER); } + } WHEN { + TURN { MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + MESSAGE("Wobbuffet used Spicy Extract!"); + NOT MESSAGE("Wobbuffet's attack missed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense harshly fell!"); + } +} + +SINGLE_BATTLE_TEST("Spicy Extract will fail if target is in a semi-invulnerability state") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHTPOWDER); } + } WHEN { + TURN { MOVE(opponent, MOVE_DIVE); MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + MESSAGE("Foe Wobbuffet used Dive!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_DIVE, opponent); + MESSAGE("Wobbuffet used Spicy Extract!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + MESSAGE("Wobbuffet's attack missed!"); + } +} + +SINGLE_BATTLE_TEST("Spicy Extract stat changes will be inverted by Contrary") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNIVY) { Ability(ABILITY_CONTRARY); } + } WHEN { + TURN { MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + MESSAGE("Wobbuffet used Spicy Extract!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Snivy's Attack harshly fell!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Snivy's Defense sharply rose!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 2); + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Spicy Extract against Clear Amulet and Contrary raises Defense only") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SNIVY) { Ability(ABILITY_CONTRARY); Item(ITEM_CLEAR_AMULET); } + } WHEN { + TURN { MOVE(player, MOVE_SPICY_EXTRACT); } + } SCENE { + MESSAGE("Wobbuffet used Spicy Extract!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPICY_EXTRACT, player); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Snivy's Attack harshly fell!"); + } + MESSAGE("Foe Snivy's Clear Amulet prevents its stats from being lowered!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Snivy's Defense sharply rose!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2); + } +} + +AI_DOUBLE_BATTLE_TEST("Spicy Extract user will use it if partner holds Clear Amulet and a physical move") +{ + u32 move; + + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_SWIFT;} + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(20); Item(ITEM_CLEAR_AMULET); Moves(move); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_TACKLE, MOVE_SPICY_EXTRACT); } + } WHEN { + TURN { + if (move == MOVE_TACKLE) + EXPECT_MOVE(opponentRight, MOVE_SPICY_EXTRACT); + else + EXPECT_MOVE(opponentRight, MOVE_TACKLE); + } + } +} + +AI_DOUBLE_BATTLE_TEST("Spicy Extract user will not choose the move if it does not benefit partner") +{ + u32 species; + u32 ability; + + PARAMETRIZE { species = SPECIES_GHOLDENGO; ability = ABILITY_GOOD_AS_GOLD; } + PARAMETRIZE { species = SPECIES_SNIVY; ability = ABILITY_CONTRARY; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + OPPONENT(species) { Speed(20); Ability(ability); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(40); Moves(MOVE_TACKLE, MOVE_SPICY_EXTRACT); } + } WHEN { + TURN { + EXPECT_MOVE(opponentRight, MOVE_TACKLE); + } + } +} diff --git a/test/battle/move_effect/stealth_rock.c b/test/battle/move_effect/stealth_rock.c index f8c7a6369eaa..9a38f17a5ee5 100644 --- a/test/battle/move_effect/stealth_rock.c +++ b/test/battle/move_effect/stealth_rock.c @@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Stealth Rock damages the correct pokemon when Eject Button i ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); - MESSAGE("Go! Metapod!"); + SEND_IN_MESSAGE("Metapod"); HP_BAR(player); } THEN { EXPECT_EQ(opponent->hp, opponent->maxHP); @@ -67,7 +67,7 @@ DOUBLE_BATTLE_TEST("Stealth Rock damages the correct pokemon when Eject Button i ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentLeft); ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft); - MESSAGE("Go! Metapod!"); + SEND_IN_MESSAGE("Metapod"); HP_BAR(playerLeft); } THEN { EXPECT_EQ(opponentLeft->hp, opponentLeft->maxHP); diff --git a/test/battle/move_effect/sticky_web.c b/test/battle/move_effect/sticky_web.c index 37f5fce077c5..035568dd75d1 100644 --- a/test/battle/move_effect/sticky_web.c +++ b/test/battle/move_effect/sticky_web.c @@ -123,14 +123,20 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - the ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, BATTLER_PLAYER); MESSAGE("A sticky web spreads out on the ground around the opposing team!"); - MESSAGE("Go! Corviknigh!"); - MESSAGE("Corviknigh was caught in a Sticky Web!"); + SEND_IN_MESSAGE("Corviknight"); + MESSAGE("Corviknight was caught in a Sticky Web!"); ABILITY_POPUP(playerRight, ABILITY_MIRROR_ARMOR); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, BATTLER_OPPONENT); if (opponentSetUpper == 0) { MESSAGE("Foe Caterpie's Speed fell!"); + NONE_OF { + MESSAGE("Foe Caterpie was caught in a Sticky Web!"); + } } else { MESSAGE("Foe Weedle's Speed fell!"); + NONE_OF { + MESSAGE("Foe Weedle was caught in a Sticky Web!"); + } } } } @@ -170,8 +176,8 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - no o MESSAGE("A sticky web spreads out on the ground around the opposing team!"); } - MESSAGE("Go! Corviknigh!"); - MESSAGE("Corviknigh was caught in a Sticky Web!"); + SEND_IN_MESSAGE("Corviknight"); + MESSAGE("Corviknight was caught in a Sticky Web!"); ABILITY_POPUP(playerRight, ABILITY_MIRROR_ARMOR); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); } THEN { @@ -219,8 +225,8 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - no o MESSAGE("2 sent out Pidgey!"); } - MESSAGE("Go! Corviknigh!"); - MESSAGE("Corviknigh was caught in a Sticky Web!"); + SEND_IN_MESSAGE("Corviknight"); + MESSAGE("Corviknight was caught in a Sticky Web!"); ABILITY_POPUP(playerRight, ABILITY_MIRROR_ARMOR); NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); } THEN { diff --git a/test/battle/move_effect/strength_sap.c b/test/battle/move_effect/strength_sap.c index 0b055edb12e1..474707427042 100644 --- a/test/battle/move_effect/strength_sap.c +++ b/test/battle/move_effect/strength_sap.c @@ -190,7 +190,7 @@ SINGLE_BATTLE_TEST("Strength Sap makes attacker lose HP if target's ability is L MESSAGE("It sucked up the liquid ooze!"); if (atkStat >= 490) { MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wobbuffet!"); + SEND_IN_MESSAGE("Wobbuffet"); } } THEN { EXPECT_EQ(lostHp, atkStat); diff --git a/test/battle/move_effect/super_effective_on_arg.c b/test/battle/move_effect/super_effective_on_arg.c new file mode 100644 index 000000000000..d10b8a2231aa --- /dev/null +++ b/test/battle/move_effect/super_effective_on_arg.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_FREEZE_DRY].effect == EFFECT_SUPER_EFFECTIVE_ON_ARG); +} + +SINGLE_BATTLE_TEST("Freeze Dry is super effective on water types") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SHELLDER); + } WHEN { + TURN { MOVE(player, MOVE_FREEZE_DRY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FREEZE_DRY, player); + HP_BAR(opponent); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/move_effect/tera_blast.c b/test/battle/move_effect/tera_blast.c new file mode 100644 index 000000000000..4fcb52be3a85 --- /dev/null +++ b/test/battle/move_effect/tera_blast.c @@ -0,0 +1,188 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_TERA_BLAST].effect == EFFECT_TERA_BLAST); +} + +SINGLE_BATTLE_TEST("Tera Blast changes from Normal-type to the user's Tera Type") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TERA_BLAST].type == TYPE_NORMAL); + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_DARK); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Tera Blast has correct effectiveness for every Tera Type") +{ + u32 species; + u32 type; + + PARAMETRIZE { species = SPECIES_CHIKORITA; type = TYPE_FLYING; } + PARAMETRIZE { species = SPECIES_CHIKORITA; type = TYPE_POISON; } + PARAMETRIZE { species = SPECIES_CHIKORITA; type = TYPE_FIRE; } + PARAMETRIZE { species = SPECIES_CHIKORITA; type = TYPE_BUG; } + PARAMETRIZE { species = SPECIES_CHIKORITA; type = TYPE_ICE; } + PARAMETRIZE { species = SPECIES_CYNDAQUIL; type = TYPE_GROUND; } + PARAMETRIZE { species = SPECIES_CYNDAQUIL; type = TYPE_ROCK; } + PARAMETRIZE { species = SPECIES_CYNDAQUIL; type = TYPE_WATER; } + PARAMETRIZE { species = SPECIES_GASTLY; type = TYPE_NORMAL; } + PARAMETRIZE { species = SPECIES_GASTLY; type = TYPE_GHOST; } + PARAMETRIZE { species = SPECIES_GASTLY; type = TYPE_PSYCHIC; } + PARAMETRIZE { species = SPECIES_TOTODILE; type = TYPE_GRASS; } + PARAMETRIZE { species = SPECIES_TOTODILE; type = TYPE_ELECTRIC; } + PARAMETRIZE { species = SPECIES_DRATINI; type = TYPE_DRAGON; } + PARAMETRIZE { species = SPECIES_DRATINI; type = TYPE_FAIRY; } + PARAMETRIZE { species = SPECIES_SNEASEL; type = TYPE_FIGHTING; } + PARAMETRIZE { species = SPECIES_SNEASEL; type = TYPE_STEEL; } + PARAMETRIZE { species = SPECIES_ABRA; type = TYPE_DARK; } + + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_CHIKORITA].types[0] == TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_CHIKORITA].types[1] == TYPE_GRASS); + ASSUME(gSpeciesInfo[SPECIES_CYNDAQUIL].types[0] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_CYNDAQUIL].types[1] == TYPE_FIRE); + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[0] == TYPE_GHOST); + ASSUME(gSpeciesInfo[SPECIES_GASTLY].types[1] == TYPE_POISON); + ASSUME(gSpeciesInfo[SPECIES_TOTODILE].types[0] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_TOTODILE].types[1] == TYPE_WATER); + ASSUME(gSpeciesInfo[SPECIES_DRATINI].types[0] == TYPE_DRAGON); + ASSUME(gSpeciesInfo[SPECIES_DRATINI].types[1] == TYPE_DRAGON); + ASSUME(gSpeciesInfo[SPECIES_SNEASEL].types[0] == TYPE_DARK); + ASSUME(gSpeciesInfo[SPECIES_SNEASEL].types[1] == TYPE_ICE); + ASSUME(gSpeciesInfo[SPECIES_ABRA].types[0] == TYPE_PSYCHIC); + ASSUME(gSpeciesInfo[SPECIES_ABRA].types[1] == TYPE_PSYCHIC); + PLAYER(SPECIES_WOBBUFFET) { TeraType(type); } + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); } + } SCENE { + if (species == SPECIES_GASTLY && type == TYPE_NORMAL) + MESSAGE("It doesn't affect Foe Gastly…"); + else + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Tera Blast becomes a physical move if the user is Terastallized and has a higher Attack stat", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_NORMAL); Attack(100); SpAttack(50); } + OPPONENT(SPECIES_WOBBUFFET) { Defense(200); SpDefense(200); } + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: tera); } + } SCENE { + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + // Since Wobbuffett has equal defenses, Tera Blast should do 1.5x more damage + // from gaining STAB and an additional 2.0x damage from using its highest + // attacking stat. + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(3.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Stellar-type Tera Blast lowers both offensive stats") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack fell!"); + MESSAGE("Wobbuffet's Sp. Atk fell!"); + } +} + + +SINGLE_BATTLE_TEST("Stellar-type Tera Blast has 100 BP and a one-time 1.2x boost") +{ + s16 damage[3]; + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST); MOVE(opponent, MOVE_RECOVER); } + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); } + TURN { MOVE(player, MOVE_WORK_UP); } + TURN { MOVE(player, MOVE_TERA_BLAST); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + HP_BAR(opponent, captureDamage: &damage[0]); + // turn 2 + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + HP_BAR(opponent, captureDamage: &damage[1]); + // turn 4 + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + HP_BAR(opponent, captureDamage: &damage[2]); + } THEN { + // 80 BP to 120 BP (100 * 1.2) boost upon Terastallizing + EXPECT_MUL_EQ(damage[0], UQ_4_12(1.50), damage[1]); + // 120 BP to 100 BP after Stellar boost expended + EXPECT_MUL_EQ(damage[2], UQ_4_12(1.20), damage[1]); + } +} + +SINGLE_BATTLE_TEST("Stellar-type Tera Blast is super-effective on Stellar-type Pokemon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Stellar-type Tera Blast activates a Stellar-type Pokemon's Weakness Policy") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_WEAKNESS_POLICY); TeraType(TYPE_NORMAL); } + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + MESSAGE("It's super effective!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + } +} + +SINGLE_BATTLE_TEST("Flying-type Tera Blast does not have its priority boosted by Gale Wings") +{ + GIVEN { + PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); TeraType(TYPE_FLYING); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TERA_BLAST, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_QUICK_ATTACK); } + } SCENE { + MESSAGE("Foe Wobbuffet used Quick Attack!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent); + MESSAGE("Talonflame used Tera Blast!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_BLAST, player); + } +} diff --git a/test/battle/move_effect/tera_starstorm.c b/test/battle/move_effect/tera_starstorm.c new file mode 100644 index 000000000000..8b1ff41c75b0 --- /dev/null +++ b/test/battle/move_effect/tera_starstorm.c @@ -0,0 +1,76 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gMovesInfo[MOVE_TERA_STARSTORM].effect == EFFECT_TERA_STARSTORM); +} + +SINGLE_BATTLE_TEST("Tera Starstorm changes from Normal-type to Stellar-type if used by Terapagos-Stellar") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TERA_STARSTORM].type == TYPE_NORMAL); + PLAYER(SPECIES_TERAPAGOS_STELLAR); + OPPONENT(SPECIES_MISDREAVUS); + } WHEN { + TURN { MOVE(player, MOVE_TERA_STARSTORM); } + } SCENE { + MESSAGE("Terapagos used Tera Starstorm!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_STARSTORM, player); + HP_BAR(opponent); + NOT { MESSAGE("It doesn't affect Foe Misdreavus…"); } + } +} + +DOUBLE_BATTLE_TEST("Tera Starstorm targets both opponents in a double battle if used by Terapagos-Stellar") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TERA_STARSTORM].target == MOVE_TARGET_SELECTED); + PLAYER(SPECIES_TERAPAGOS_STELLAR); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TERA_STARSTORM, target:opponentLeft); } + } SCENE { + MESSAGE("Terapagos used Tera Starstorm!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_STARSTORM, playerLeft); + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + } +} + +SINGLE_BATTLE_TEST("Tera Starstorm becomes a physical move if the user is Terapagos-Stellar, is Terastallized, and has a higher Attack stat", s16 damage) +{ + bool32 tera; + PARAMETRIZE { tera = GIMMICK_NONE; } + PARAMETRIZE { tera = GIMMICK_TERA; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TERA_STARSTORM].category == DAMAGE_CATEGORY_SPECIAL); + PLAYER(SPECIES_TERAPAGOS_STELLAR) { Attack(100); SpAttack(50); } + OPPONENT(SPECIES_WOBBUFFET) { Defense(200); SpDefense(200); } + } WHEN { + TURN { MOVE(player, MOVE_TERA_STARSTORM, gimmick: tera); } + } SCENE { + MESSAGE("Terapagos used Tera Starstorm!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TERA_STARSTORM, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.5), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Tera Starstorm remains Normal-type if used by Pokemon other than Terapagos") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_TERA_STARSTORM].type == TYPE_NORMAL); + ASSUME(gSpeciesInfo[SPECIES_MISDREAVUS].types[0] == TYPE_GHOST); + PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); } + OPPONENT(SPECIES_MISDREAVUS); + } WHEN { + TURN { MOVE(player, MOVE_TERA_STARSTORM, gimmick: GIMMICK_TERA); } + } SCENE { + MESSAGE("Wobbuffet used Tera Starstorm!"); + MESSAGE("It doesn't affect Foe Misdreavus…"); + } +} diff --git a/test/battle/move_effect/thousand_arrows.c b/test/battle/move_effect/thousand_arrows.c index ff1b041cba05..8deea06fbe8d 100644 --- a/test/battle/move_effect/thousand_arrows.c +++ b/test/battle/move_effect/thousand_arrows.c @@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Thousand Arrows does neutral damage to non-grounded Flying t } ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); MESSAGE("Congratulations, 1!"); - MESSAGE("Wobbuffet used ThousndArrws!"); + MESSAGE("Wobbuffet used Thousand Arrows!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_THOUSAND_ARROWS, player); if (pokemon == SPECIES_SKARMORY) { diff --git a/test/battle/move_effect/tidy_up.c b/test/battle/move_effect/tidy_up.c index 463fb65af8b9..338ba90dc026 100644 --- a/test/battle/move_effect/tidy_up.c +++ b/test/battle/move_effect/tidy_up.c @@ -74,13 +74,14 @@ SINGLE_BATTLE_TEST("Tidy Up removes Substitute") } } -AI_SINGLE_BATTLE_TEST("AI prefers to keep it's substitute over removing hazards if target is slower") +AI_SINGLE_BATTLE_TEST("AI prefers to keep its substitute over removing hazards if target is slower") { GIVEN { AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); PLAYER(SPECIES_WOBBUFFET) { Speed(50); Status1(STATUS1_PARALYSIS); Moves(MOVE_SLEEP_POWDER, MOVE_STEALTH_ROCK, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_BITE, MOVE_TACKLE, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } } WHEN { + TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_TIDY_UP); } TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_SUBSTITUTE); } TURN { EXPECT_MOVE(opponent, MOVE_BITE); } } @@ -93,6 +94,7 @@ AI_SINGLE_BATTLE_TEST("AI will try to remove hazards if slower then target even PLAYER(SPECIES_WOBBUFFET) { Speed(100); Status1(STATUS1_BURN); Moves(MOVE_SLEEP_POWDER, MOVE_STEALTH_ROCK, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET) { Speed(50); Moves(MOVE_BITE, MOVE_TACKLE, MOVE_SUBSTITUTE, MOVE_TIDY_UP); } } WHEN { + TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_TIDY_UP); } TURN { MOVE(player, MOVE_STEALTH_ROCK); EXPECT_MOVE(opponent, MOVE_SUBSTITUTE); } TURN { EXPECT_MOVE(opponent, MOVE_TIDY_UP); } } diff --git a/test/battle/move_effect/toxic_spikes.c b/test/battle/move_effect/toxic_spikes.c index 517a1b261e29..6bf2e0d2a38f 100644 --- a/test/battle/move_effect/toxic_spikes.c +++ b/test/battle/move_effect/toxic_spikes.c @@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes inflicts poison on switch in after Primal Rever ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, opponent); MESSAGE("Poison Spikes were scattered all around your team's feet!"); // Switch in - MESSAGE("Go! Groudon!"); + SEND_IN_MESSAGE("Groudon"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); STATUS_ICON(player, poison: TRUE); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); @@ -235,7 +235,7 @@ SINGLE_BATTLE_TEST("Toxic Spikes inflicts poison on switch in after Primal Rever MESSAGE("Groudon used Memento!"); MESSAGE("Groudon fainted!"); // 2nd switch-in - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player); STATUS_ICON(player, poison: TRUE); } diff --git a/test/battle/move_effect_secondary/psychic_noise.c b/test/battle/move_effect_secondary/psychic_noise.c index 7846157b77d5..e8d50dc961ac 100644 --- a/test/battle/move_effect_secondary/psychic_noise.c +++ b/test/battle/move_effect_secondary/psychic_noise.c @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Psychic Noise is blocked by Soundproof") TURN { MOVE(player, MOVE_PSYCHIC_NOISE); MOVE(opponent, MOVE_RECOVER); } } SCENE { ABILITY_POPUP(opponent, ABILITY_SOUNDPROOF); - MESSAGE("Foe Voltorb's Soundproof blocks PsychicNoise!"); + MESSAGE("Foe Voltorb's Soundproof blocks Psychic Noise!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_RECOVER, opponent); } } diff --git a/test/battle/move_effect_secondary/sp_atk_two_down.c b/test/battle/move_effect_secondary/sp_atk_minus_2.c similarity index 98% rename from test/battle/move_effect_secondary/sp_atk_two_down.c rename to test/battle/move_effect_secondary/sp_atk_minus_2.c index ff88e2d332dd..ff144770540a 100644 --- a/test/battle/move_effect_secondary/sp_atk_two_down.c +++ b/test/battle/move_effect_secondary/sp_atk_minus_2.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_TWO_DOWN)); + ASSUME(MoveHasAdditionalEffectSelf(MOVE_OVERHEAT, MOVE_EFFECT_SP_ATK_MINUS_2)); } SINGLE_BATTLE_TEST("Overheat drops Sp. Atk by 2 stages - singles") diff --git a/test/battle/move_effect_secondary/syrup_bomb.c b/test/battle/move_effect_secondary/syrup_bomb.c index 1e6d61372140..0fc55c3d604c 100644 --- a/test/battle/move_effect_secondary/syrup_bomb.c +++ b/test/battle/move_effect_secondary/syrup_bomb.c @@ -210,7 +210,7 @@ SINGLE_BATTLE_TEST("Sticky Syrup is removed when the user faints") ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); HP_BAR(player); MESSAGE("Wobbuffet fainted!"); - MESSAGE("Go! Wynaut!"); + SEND_IN_MESSAGE("Wynaut"); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); MESSAGE("Foe Wobbuffet's Speed fell!"); diff --git a/test/battle/terrain/electric.c b/test/battle/terrain/electric.c index c6fda3fb3e81..2227afdcd9e8 100644 --- a/test/battle/terrain/electric.c +++ b/test/battle/terrain/electric.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Electric Terrain protects grounded battlers from falling asl TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); MOVE(opponent, MOVE_SPORE); } TURN { MOVE(player, MOVE_SPORE); } } SCENE { - MESSAGE("Wobbuffet used ElctrcTrrain!"); + MESSAGE("Wobbuffet used Electric Terrain!"); MESSAGE("Foe Claydol used Spore!"); MESSAGE("Wobbuffet surrounds itself with electrified terrain!"); MESSAGE("Wobbuffet used Spore!"); @@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Electric Terrain activates Electric Seed and Mimicry") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Electric Seed, the Defense of Wobbuffet rose!"); ABILITY_POPUP(opponent); - MESSAGE("Foe Stunfisk's type changed to Electr!"); + MESSAGE("Foe Stunfisk's type changed to Electric!"); } THEN { EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_ELECTRIC); } @@ -51,7 +51,7 @@ SINGLE_BATTLE_TEST("Electric Terrain increases power of Electric-type moves by 3 TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } TURN { MOVE(player, MOVE_THUNDER_SHOCK); } } SCENE { - MESSAGE("Wobbuffet used ThunderShock!"); + MESSAGE("Wobbuffet used Thunder Shock!"); HP_BAR(opponent, captureDamage: &results[i].damage); } FINALLY { if (B_TERRAIN_TYPE_BOOST >= GEN_8) diff --git a/test/battle/terrain/misty.c b/test/battle/terrain/misty.c index c76689ce7957..cd89b2d9abfd 100644 --- a/test/battle/terrain/misty.c +++ b/test/battle/terrain/misty.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Misty Terrain protects grounded battlers from non-volatile s TURN { MOVE(player, MOVE_MISTY_TERRAIN); MOVE(opponent, MOVE_TOXIC); } TURN { MOVE(player, MOVE_TOXIC); } } SCENE { - MESSAGE("Wobbuffet used MistyTerrain!"); + MESSAGE("Wobbuffet used Misty Terrain!"); MESSAGE("Foe Claydol used Toxic!"); MESSAGE("Wobbuffet surrounds itself with a protective mist!"); NOT { STATUS_ICON(opponent, badPoison: TRUE); } diff --git a/test/battle/terrain/psychic.c b/test/battle/terrain/psychic.c index 20f7deef6e9c..0c13122fa65e 100644 --- a/test/battle/terrain/psychic.c +++ b/test/battle/terrain/psychic.c @@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain protects grounded battlers from priority mov TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(player, MOVE_QUICK_ATTACK); MOVE(opponent, MOVE_QUICK_ATTACK); } } SCENE { - MESSAGE("Claydol used PsychcTrrain!"); + MESSAGE("Claydol used Psychic Terrain!"); MESSAGE("Claydol cannot use Quick Attack!"); NOT { HP_BAR(opponent); } MESSAGE("Foe Wobbuffet used Quick Attack!"); @@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain activates Psychic Seed and Mimicry") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); MESSAGE("Using Psychic Seed, the Sp. Def of Wobbuffet rose!"); ABILITY_POPUP(opponent); - MESSAGE("Foe Stunfisk's type changed to Psychc!"); + MESSAGE("Foe Stunfisk's type changed to Psychic!"); } THEN { EXPECT_EQ(gBattleMons[B_POSITION_OPPONENT_LEFT].type1, TYPE_PSYCHIC); } @@ -69,7 +69,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target the TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(player, MOVE_RECOVER); } } SCENE { - MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Psychic Terrain!"); MESSAGE("Sableye used Recover!"); HP_BAR(player); } @@ -84,7 +84,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target all TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(player, MOVE_HAZE); } } SCENE { - MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Psychic Terrain!"); MESSAGE("Sableye used Haze!"); } } @@ -98,7 +98,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target all TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(player, MOVE_SPIKES); } } SCENE { - MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Psychic Terrain!"); MESSAGE("Sableye used Spikes!"); } } @@ -114,7 +114,7 @@ DOUBLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves that target all TURN { MOVE(playerLeft, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(playerLeft, MOVE_HEAL_PULSE, target: playerRight); } } SCENE { - MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Psychic Terrain!"); MESSAGE("Sableye used Heal Pulse!"); } } @@ -128,7 +128,7 @@ SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority field moves") TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); } TURN { MOVE(player, MOVE_SUNNY_DAY); } } SCENE { - MESSAGE("Sableye used PsychcTrrain!"); + MESSAGE("Sableye used Psychic Terrain!"); MESSAGE("Sableye used Sunny Day!"); } } diff --git a/test/battle/test_runner_features.c b/test/battle/test_runner_features.c new file mode 100644 index 000000000000..6b84c4fc2d66 --- /dev/null +++ b/test/battle/test_runner_features.c @@ -0,0 +1,27 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS { + int i; + for (i = 0; i < NUM_ABILITY_SLOTS; i++) { + ASSUME(gSpeciesInfo[SPECIES_KADABRA].abilities[i] != ABILITY_QUARK_DRIVE); + ASSUME(gSpeciesInfo[SPECIES_ALAKAZAM].abilities[i] != ABILITY_ELECTRIC_SURGE); + } +} + +SINGLE_BATTLE_TEST("Forced abilities activate on switch-in") +{ + GIVEN { + PLAYER(SPECIES_ALAKAZAM); + PLAYER(SPECIES_KADABRA) { Ability(ABILITY_QUARK_DRIVE); SpAttack(400);} + OPPONENT(SPECIES_ARON); + OPPONENT(SPECIES_ALAKAZAM) { Ability(ABILITY_ELECTRIC_SURGE); }; + } WHEN { + TURN { SWITCH(player, 1); SWITCH(opponent, 1);} + } SCENE { + ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); + ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); + MESSAGE("The Electric Terrain activated Kadabra's Quark Drive!"); + MESSAGE("Kadabra's Sp. Atk was heightened!"); + } +} diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index d5bc1479f020..e31d281efe4c 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -11,47 +11,16 @@ #include "constants/trainers.h" #include "constants/battle.h" - -static const struct TrainerMon sTestParty1[] = -{ - { - .species = SPECIES_WOBBUFFET, - .ball = ITEM_MASTER_BALL, - .ability = ABILITY_TELEPATHY, - .friendship = 42, - .gender = TRAINER_MON_FEMALE, - .heldItem = ITEM_ASSAULT_VEST, - .isShiny = TRUE, - .iv = TRAINER_PARTY_IVS(25,26,27,28,29,30), - .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), - .lvl = 67, - .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, - .nature = NATURE_HASTY, - .nickname = COMPOUND_STRING("Bubbles"), - .dynamaxLevel = 5, - }, - { - .species = SPECIES_WOBBUFFET, - .ability = ABILITY_SHADOW_TAG, - .lvl = 5, - }, - { - .species = SPECIES_WYNAUT, - .lvl = 5, - }, -}; - -static const struct Trainer sTestTrainer1 = +static const struct Trainer sTestTrainers[] = { - .trainerName = _("Test1"), - .party = TRAINER_PARTY(sTestParty1), +#include "trainer_control.h" }; TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") { struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); u8 nickBuffer[20]; - CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer1, TRUE, BATTLE_TYPE_TRAINER); + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[0], TRUE, BATTLE_TYPE_TRAINER); EXPECT(IsMonShiny(&testParty[0])); EXPECT(!IsMonShiny(&testParty[1])); @@ -118,7 +87,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") EXPECT(GetNature(&testParty[1]) == NATURE_HARDY); EXPECT_EQ(GetMonData(&testParty[0], MON_DATA_DYNAMAX_LEVEL), 5); - EXPECT_EQ(GetMonData(&testParty[1], MON_DATA_DYNAMAX_LEVEL), 0); + EXPECT_EQ(GetMonData(&testParty[1], MON_DATA_DYNAMAX_LEVEL), 10); Free(testParty); } @@ -126,7 +95,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") TEST("CreateNPCTrainerPartyForTrainer generates different personalities for different mons") { struct Pokemon *testParty = Alloc(6 * sizeof(struct Pokemon)); - CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainer1, TRUE, BATTLE_TYPE_TRAINER); + CreateNPCTrainerPartyFromTrainer(testParty, &sTestTrainers[0], TRUE, BATTLE_TYPE_TRAINER); EXPECT(testParty[0].box.personality != testParty[1].box.personality); Free(testParty); } diff --git a/test/battle/trainer_control.h b/test/battle/trainer_control.h new file mode 100644 index 000000000000..72db458de77d --- /dev/null +++ b/test/battle/trainer_control.h @@ -0,0 +1,89 @@ +// +// DO NOT MODIFY THIS FILE! It is auto-generated from test/battle/trainer_control.party +// +// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE +// in include/config/general.h and remove this notice. +// Use sed -i '/^#line/d' 'test/battle/trainer_control.h' to remove #line markers. +// + +#line 1 "test/battle/trainer_control.party" + +#line 1 + [0] = + { +#line 2 + .trainerName = _("Test1"), +#line 3 + .trainerClass = TRAINER_CLASS_PKMN_TRAINER_1, +#line 4 + .trainerPic = TRAINER_PIC_RED, + .encounterMusic_gender = +#line 6 + TRAINER_ENCOUNTER_MUSIC_MALE, +#line 7 + .doubleBattle = FALSE, + .partySize = 3, + .party = (const struct TrainerMon[]) + { + { +#line 9 + .nickname = COMPOUND_STRING("Bubbles"), +#line 9 + .species = SPECIES_WOBBUFFET, +#line 9 + .gender = TRAINER_MON_FEMALE, +#line 9 + .heldItem = ITEM_ASSAULT_VEST, +#line 14 + .ev = TRAINER_PARTY_EVS(252, 0, 0, 252, 4, 0), +#line 13 + .iv = TRAINER_PARTY_IVS(25, 26, 27, 28, 29, 30), +#line 12 + .ability = ABILITY_TELEPATHY, +#line 11 + .lvl = 67, +#line 17 + .ball = ITEM_MASTER_BALL, +#line 15 + .friendship = 42, +#line 10 + .nature = NATURE_HASTY, +#line 16 + .isShiny = TRUE, +#line 18 + .dynamaxLevel = 5, + .shouldUseDynamax = TRUE, + .moves = { +#line 19 + MOVE_AIR_SLASH, + MOVE_BARRIER, + MOVE_SOLAR_BEAM, + MOVE_EXPLOSION, + }, + }, + { +#line 24 + .species = SPECIES_WOBBUFFET, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 27 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 26 + .ability = ABILITY_SHADOW_TAG, +#line 25 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + { +#line 29 + .species = SPECIES_WYNAUT, + .gender = TRAINER_MON_RANDOM_GENDER, +#line 31 + .iv = TRAINER_PARTY_IVS(0, 0, 0, 0, 0, 0), +#line 30 + .lvl = 5, + .nature = NATURE_HARDY, + .dynamaxLevel = MAX_DYNAMAX_LEVEL, + }, + }, + }, diff --git a/test/battle/trainer_control.party b/test/battle/trainer_control.party new file mode 100644 index 000000000000..8ebfc0e66481 --- /dev/null +++ b/test/battle/trainer_control.party @@ -0,0 +1,31 @@ +=== 0 === +Name: Test1 +Class: Pkmn Trainer 1 +Pic: Red +Gender: Male +Music: Male +Double Battle: No + +Bubbles (Wobbuffet) (F) @ Assault Vest +Hasty Nature +Level: 67 +Ability: Telepathy +IVs: 25 HP / 26 Atk / 27 Def / 29 SpA / 30 SpD / 28 Spe +EVs: 252 HP / 4 SpA / 252 Spe +Happiness: 42 +Shiny: Yes +Ball: Master Ball +Dynamax Level: 5 +- Air Slash +- Barrier +- Solar Beam +- Explosion + +Wobbuffet +Level: 5 +Ability: Shadow Tag +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe + +Wynaut +Level: 5 +IVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe diff --git a/test/battle/weather/hail.c b/test/battle/weather/hail.c index 8908e17a79ec..5caeb8489151 100644 --- a/test/battle/weather/hail.c +++ b/test/battle/weather/hail.c @@ -29,3 +29,44 @@ SINGLE_BATTLE_TEST("Hail damage does not affect Ice-type Pokémon") NOT MESSAGE("Foe Glalie is pelted by HAIL!"); } } + +SINGLE_BATTLE_TEST("Hail fails if Desolate Land or Primordial Sea are active") +{ + u32 species; + u32 item; + + PARAMETRIZE { species = SPECIES_WOBBUFFET; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_GROUDON; item = ITEM_RED_ORB; } + PARAMETRIZE { species = SPECIES_KYOGRE; item = ITEM_BLUE_ORB; } + + GIVEN { + PLAYER(species) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_HAIL); } + } SCENE { + if (item == ITEM_RED_ORB || item == ITEM_BLUE_ORB) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HAIL, opponent); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HAIL, opponent); + } + } +} + +DOUBLE_BATTLE_TEST("Hail deals damage based on turn order") +{ + GIVEN { + PLAYER(SPECIES_GLALIE); + PLAYER(SPECIES_WYNAUT) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WYNAUT) { Speed(3); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_HAIL); } + } SCENE { + NOT HP_BAR(playerLeft); + HP_BAR(opponentRight); + HP_BAR(opponentLeft); + HP_BAR(playerRight); + } +} diff --git a/test/battle/weather/rain.c b/test/battle/weather/rain.c index ce05870290df..3359d25a818d 100644 --- a/test/battle/weather/rain.c +++ b/test/battle/weather/rain.c @@ -45,3 +45,25 @@ SINGLE_BATTLE_TEST("Rain multiplies the power of Water-type moves by 1.5x", s16 EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } + +SINGLE_BATTLE_TEST("Drizzle fails if Desolate Land is active") +{ + u32 item; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_RED_ORB; } + + GIVEN { + PLAYER(SPECIES_GROUDON) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); } + } SCENE { + if (item == ITEM_RED_ORB) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_RAIN_DANCE, opponent); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAIN_DANCE, opponent); + } + } +} diff --git a/test/battle/weather/sandstorm.c b/test/battle/weather/sandstorm.c index 2f3f4e7ca266..63b24afd7e41 100644 --- a/test/battle/weather/sandstorm.c +++ b/test/battle/weather/sandstorm.c @@ -65,3 +65,20 @@ SINGLE_BATTLE_TEST("Sandstorm damage does not hurt Ground, Rock, and Steel-type } } } + +DOUBLE_BATTLE_TEST("Sandstorm deals damage based on turn order") +{ + GIVEN { + PLAYER(SPECIES_PHANPY); + PLAYER(SPECIES_WYNAUT) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(2); } + OPPONENT(SPECIES_WYNAUT) { Speed(3); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SANDSTORM); } + } SCENE { + NOT HP_BAR(playerLeft); + HP_BAR(opponentRight); + HP_BAR(opponentLeft); + HP_BAR(playerRight); + } +} diff --git a/test/battle/weather/snow.c b/test/battle/weather/snow.c index 6ce3e1e0f2fb..6c084f6b7a05 100644 --- a/test/battle/weather/snow.c +++ b/test/battle/weather/snow.c @@ -27,3 +27,27 @@ SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damag EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); } } + +SINGLE_BATTLE_TEST("Snowscape fails if Desolate Land or Primordial Sea are active") +{ + u32 species; + u32 item; + + PARAMETRIZE { species = SPECIES_WOBBUFFET; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_GROUDON; item = ITEM_RED_ORB; } + PARAMETRIZE { species = SPECIES_KYOGRE; item = ITEM_BLUE_ORB; } + + GIVEN { + PLAYER(species) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); } + } SCENE { + if (item == ITEM_RED_ORB || item == ITEM_BLUE_ORB) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, opponent); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, opponent); + } + } +} diff --git a/test/battle/weather/sunlight.c b/test/battle/weather/sunlight.c index 4c8ea5cb1957..6cf6348987b6 100644 --- a/test/battle/weather/sunlight.c +++ b/test/battle/weather/sunlight.c @@ -45,3 +45,25 @@ SINGLE_BATTLE_TEST("Sunlight multiplies the power of Water-type moves by 0.5x", EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage); } } + +SINGLE_BATTLE_TEST("Sunny Day fails if Primordial Sea is active") +{ + u32 item; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_BLUE_ORB; } + + GIVEN { + PLAYER(SPECIES_KYOGRE) { Item(item); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SUNNY_DAY); } + } SCENE { + if (item == ITEM_BLUE_ORB) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); + } + } +} diff --git a/test/pokemon.c b/test/pokemon.c index 1ae655ab3cd3..8419b9c7e16f 100644 --- a/test/pokemon.c +++ b/test/pokemon.c @@ -33,11 +33,11 @@ TEST("Terastallization type defaults to primary or secondary type") || teraType == gSpeciesInfo[SPECIES_PIDGEY].types[1]); } -TEST("Terastallization type can be set to any type") +TEST("Terastallization type can be set to any type except TYPE_NONE") { u32 i, teraType; struct Pokemon mon; - for (i = 0; i < NUMBER_OF_MON_TYPES; i++) + for (i = 1; i < NUMBER_OF_MON_TYPES; i++) { PARAMETRIZE { teraType = i; } } @@ -46,6 +46,23 @@ TEST("Terastallization type can be set to any type") EXPECT_EQ(teraType, GetMonData(&mon, MON_DATA_TERA_TYPE)); } +TEST("Terastallization type is reset to the default types when setting Tera Type back to TYPE_NONE") +{ + u32 i, teraType, typeNone; + struct Pokemon mon; + for (i = 1; i < NUMBER_OF_MON_TYPES; i++) + { + PARAMETRIZE { teraType = i; typeNone = TYPE_NONE; } + } + CreateMon(&mon, SPECIES_PIDGEY, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + SetMonData(&mon, MON_DATA_TERA_TYPE, &teraType); + EXPECT_EQ(teraType, GetMonData(&mon, MON_DATA_TERA_TYPE)); + SetMonData(&mon, MON_DATA_TERA_TYPE, &typeNone); + typeNone = GetMonData(&mon, MON_DATA_TERA_TYPE); + EXPECT(typeNone == gSpeciesInfo[SPECIES_PIDGEY].types[0] + || typeNone == gSpeciesInfo[SPECIES_PIDGEY].types[1]); +} + TEST("Shininess independent from PID and OTID") { u32 pid, otId, data; @@ -307,3 +324,34 @@ TEST("givemon [vars]") EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR), TRUE); EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_TERA_TYPE), TYPE_FIRE); } + +TEST("checkteratype/setteratype work") +{ + CreateMon(&gPlayerParty[0], SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + + RUN_OVERWORLD_SCRIPT( + checkteratype 0; + ); + EXPECT(VarGet(VAR_RESULT) == TYPE_PSYCHIC); + + RUN_OVERWORLD_SCRIPT( + setteratype TYPE_FIRE, 0; + checkteratype 0; + ); + EXPECT(VarGet(VAR_RESULT) == TYPE_FIRE); +} + +TEST("createmon [simple]") +{ + ZeroPlayerPartyMons(); + + RUN_OVERWORLD_SCRIPT( + createmon 1, 0, SPECIES_WOBBUFFET, 100; + createmon 1, 1, SPECIES_WYNAUT, 10; + ); + + EXPECT_EQ(GetMonData(&gEnemyParty[0], MON_DATA_SPECIES), SPECIES_WOBBUFFET); + EXPECT_EQ(GetMonData(&gEnemyParty[0], MON_DATA_LEVEL), 100); + EXPECT_EQ(GetMonData(&gEnemyParty[1], MON_DATA_SPECIES), SPECIES_WYNAUT); + EXPECT_EQ(GetMonData(&gEnemyParty[1], MON_DATA_LEVEL), 10); +} diff --git a/test/species.c b/test/species.c index 709985544381..2d702b6c453b 100644 --- a/test/species.c +++ b/test/species.c @@ -11,7 +11,10 @@ TEST("Form species ID tables are shared between all forms") for (i = 0; i < NUM_SPECIES; i++) { - if (gSpeciesInfo[i].formSpeciesIdTable) PARAMETRIZE { species = i; } + if (gSpeciesInfo[i].formSpeciesIdTable) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } } formSpeciesIdTable = gSpeciesInfo[species].formSpeciesIdTable; @@ -31,7 +34,10 @@ TEST("Form change tables contain only forms in the form species ID table") for (i = 0; i < NUM_SPECIES; i++) { - if (gSpeciesInfo[i].formChangeTable) PARAMETRIZE { species = i; } + if (gSpeciesInfo[i].formChangeTable) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } } formChangeTable = gSpeciesInfo[species].formChangeTable; @@ -61,7 +67,10 @@ TEST("Form change targets have the appropriate species flags") for (i = 0; i < NUM_SPECIES; i++) { - if (gSpeciesInfo[i].formChangeTable) PARAMETRIZE { species = i; } + if (gSpeciesInfo[i].formChangeTable) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } } formChangeTable = gSpeciesInfo[species].formChangeTable; @@ -106,18 +115,13 @@ TEST("No species has two evolutions that use the evolution tracker") for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - if (evolutions[i].method == EVO_LEVEL_MOVE_TWENTY_TIMES - #ifdef EVO_DEFEAT_WITH_ITEM - || evolutions[i].method == EVO_DEFEAT_WITH_ITEM - #endif //EVO_DEFEAT_WITH_ITEM - #ifdef EVO_OVERWORLD_STEPS - || evolutions[i].method == EVO_OVERWORLD_STEPS - #endif //EVO_OVERWORLD_STEPS + if (evolutions[i].method == EVO_USE_MOVE_TWENTY_TIMES + || evolutions[i].method == EVO_DEFEAT_THREE_WITH_ITEM ) evolutionTrackerEvolutions++; - if (evolutions[i].method == EVO_LEVEL_RECOIL_DAMAGE_MALE - || evolutions[i].method == EVO_LEVEL_RECOIL_DAMAGE_FEMALE) + if (evolutions[i].method == EVO_RECOIL_DAMAGE_MALE + || evolutions[i].method == EVO_RECOIL_DAMAGE_FEMALE) { // Special handling for these since they can be combined as the evolution tracker field is used for the same purpose if (!hasGenderBasedRecoil) diff --git a/test/test_runner.c b/test/test_runner.c index 169d2e40619d..3e8ef696d836 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -124,6 +124,8 @@ void CB2_TestRunner(void) gIntrTable[7] = Intr_Timer2; + gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SET; + // The current test restarted the ROM (e.g. by jumping to NULL). if (sCurrentTest.address != 0) { @@ -178,8 +180,8 @@ void CB2_TestRunner(void) break; } - MgbaPrintf_(":N%s", gTestRunnerState.test->name); - MgbaPrintf_(":L%s:%d", gTestRunnerState.test->filename); + Test_MgbaPrintf(":N%s", gTestRunnerState.test->name); + Test_MgbaPrintf(":L%s:%d", gTestRunnerState.test->filename); gTestRunnerState.result = TEST_RESULT_PASS; gTestRunnerState.expectedResult = TEST_RESULT_PASS; gTestRunnerState.expectLeaks = FALSE; @@ -217,7 +219,7 @@ void CB2_TestRunner(void) // NOTE: Assumes that the compiler interns __FILE__. if (gTestRunnerState.skipFilename == gTestRunnerState.test->filename) // Assumption fails for tests in this file. { - MgbaPrintf_(":L%s:%d", gTestRunnerState.test->filename, gTestRunnerState.failedAssumptionsBlockLine); + Test_MgbaPrintf(":L%s:%d", gTestRunnerState.test->filename, gTestRunnerState.failedAssumptionsBlockLine); gTestRunnerState.result = TEST_RESULT_ASSUMPTION_FAIL; return; } @@ -249,7 +251,7 @@ void CB2_TestRunner(void) || !(EWRAM_START <= (uintptr_t)block->next && (uintptr_t)block->next < EWRAM_END) || (block->next <= block && block->next != head)) { - MgbaPrintf_("gHeap corrupted block at 0x%p", block); + Test_MgbaPrintf("gHeap corrupted block at 0x%p", block); gTestRunnerState.result = TEST_RESULT_ERROR; break; } @@ -258,9 +260,9 @@ void CB2_TestRunner(void) { const char *location = MemBlockLocation(block); if (location) - MgbaPrintf_("%s: %d bytes not freed", location, block->size); + Test_MgbaPrintf("%s: %d bytes not freed", location, block->size); else - MgbaPrintf_(": %d bytes not freed", block->size); + Test_MgbaPrintf(": %d bytes not freed", block->size); gTestRunnerState.result = TEST_RESULT_FAIL; } block = block->next; @@ -283,7 +285,7 @@ void CB2_TestRunner(void) if (gTestRunnerState.result == gTestRunnerState.expectedResult) { color = "\e[32m"; - MgbaPrintf_(":N%s", gTestRunnerState.test->name); + Test_MgbaPrintf(":N%s", gTestRunnerState.test->name); } else if (gTestRunnerState.result != TEST_RESULT_ASSUMPTION_FAIL || gTestRunnerSkipIsFail) { @@ -342,18 +344,18 @@ void CB2_TestRunner(void) if (gTestRunnerState.result == TEST_RESULT_PASS) { if (gTestRunnerState.result != gTestRunnerState.expectedResult) - MgbaPrintf_(":U%s%s\e[0m", color, result); + Test_MgbaPrintf(":U%s%s\e[0m", color, result); else - MgbaPrintf_(":P%s%s\e[0m", color, result); + Test_MgbaPrintf(":P%s%s\e[0m", color, result); } else if (gTestRunnerState.result == TEST_RESULT_ASSUMPTION_FAIL) - MgbaPrintf_(":A%s%s\e[0m", color, result); + Test_MgbaPrintf(":A%s%s\e[0m", color, result); else if (gTestRunnerState.result == TEST_RESULT_TODO) - MgbaPrintf_(":T%s%s\e[0m", color, result); + Test_MgbaPrintf(":T%s%s\e[0m", color, result); else if (gTestRunnerState.expectedResult == gTestRunnerState.result) - MgbaPrintf_(":K%s%s\e[0m", color, result); + Test_MgbaPrintf(":K%s%s\e[0m", color, result); else - MgbaPrintf_(":F%s%s\e[0m", color, result); + Test_MgbaPrintf(":F%s%s\e[0m", color, result); } break; @@ -395,7 +397,7 @@ static void FunctionTest_Run(void *data) do { if (gFunctionTestRunnerState->parameters) - MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters); + Test_MgbaPrintf(":N%s %d/%d", gTestRunnerState.test->name, gFunctionTestRunnerState->runParameter + 1, gFunctionTestRunnerState->parameters); gFunctionTestRunnerState->parameters = 0; function(); } while (++gFunctionTestRunnerState->runParameter < gFunctionTestRunnerState->parameters); @@ -518,7 +520,7 @@ static void MgbaExit_(u8 exitCode) asm("swi 0x3" :: "r" (_exitCode)); } -s32 MgbaPrintf_(const char *fmt, ...) +s32 Test_MgbaPrintf(const char *fmt, ...) { va_list va; va_start(va, fmt); diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index 2930c7dd6158..11432bd12ba3 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -3,6 +3,8 @@ #include "battle_ai_util.h" #include "battle_anim.h" #include "battle_controllers.h" +#include "battle_gimmick.h" +#include "battle_z_move.h" #include "characters.h" #include "event_data.h" #include "fieldmap.h" @@ -193,20 +195,20 @@ static void PrintTestName(void) if (STATE->trials && STATE->parameters) { if (STATE->trials == 1) - MgbaPrintf_(":N%s %d/%d (%d/?)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1); + Test_MgbaPrintf(":N%s %d/%d (%d/?)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1); else - MgbaPrintf_(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); + Test_MgbaPrintf(":N%s %d/%d (%d/%d)", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters, STATE->runTrial + 1, STATE->trials); } else if (STATE->trials) { if (STATE->trials == 1) - MgbaPrintf_(":N%s (%d/?)", gTestRunnerState.test->name, STATE->runTrial + 1); + Test_MgbaPrintf(":N%s (%d/?)", gTestRunnerState.test->name, STATE->runTrial + 1); else - MgbaPrintf_(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); + Test_MgbaPrintf(":N%s (%d/%d)", gTestRunnerState.test->name, STATE->runTrial + 1, STATE->trials); } else if (STATE->parameters) { - MgbaPrintf_(":N%s %d/%d", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters); + Test_MgbaPrintf(":N%s %d/%d", gTestRunnerState.test->name, STATE->runParameter + 1, STATE->parameters); } } @@ -941,7 +943,7 @@ static void PrintAiMoveLog(u32 battlerId, u32 moveSlot, u32 moveId, s32 totalSco if (DATA.aiLogPrintedForMove[battlerId] & gBitTable[moveSlot]) return; DATA.aiLogPrintedForMove[battlerId] |= gBitTable[moveSlot]; - MgbaPrintf_("Score Log for move %S:\n", GetMoveName(moveId)); + Test_MgbaPrintf("Score Log for move %S:\n", GetMoveName(moveId)); for (i = 0; i < MAX_AI_LOG_LINES; i++) { struct AILogLine *log = &DATA.aiLogLines[battlerId][moveSlot][i]; @@ -950,17 +952,17 @@ static void PrintAiMoveLog(u32 battlerId, u32 moveSlot, u32 moveId, s32 totalSco if (log->set) { scoreFromLogs = log->score; - MgbaPrintf_("%s:%d: = %d\n", log->file, log->line, log->score); + Test_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); + Test_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); + Test_MgbaPrintf("%s:%d: %d\n", log->file, log->line, log->score); } } else @@ -972,7 +974,7 @@ static void PrintAiMoveLog(u32 battlerId, u32 moveSlot, u32 moveId, s32 totalSco { Test_ExitWithResult(TEST_RESULT_ERROR, SourceLine(0), ":LWarning! 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); + Test_MgbaPrintf("Total: %d\n", totalScore); } static void ClearAiLog(u32 battlerId) @@ -1148,7 +1150,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. + // Test_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) @@ -1622,6 +1624,7 @@ void Ability_(u32 sourceLine, u32 ability) u32 species; const struct SpeciesInfo *info; INVALID_IF(!DATA.currentMon, "Ability outside of PLAYER/OPPONENT"); + INVALID_IF(ability >= ABILITIES_COUNT, "Illegal ability id: %d", ability); species = GetMonData(DATA.currentMon, MON_DATA_SPECIES); info = &gSpeciesInfo[species]; for (i = 0; i < NUM_ABILITY_SLOTS; i++) @@ -1702,6 +1705,48 @@ void Speed_(u32 sourceLine, u32 speed) DATA.explicitSpeeds[DATA.currentSide] |= 1 << DATA.currentPartyIndex; } +void HPIV_(u32 sourceLine, u32 hpIV) +{ + INVALID_IF(!DATA.currentMon, "HP IV outside of PLAYER/OPPONENT"); + INVALID_IF(hpIV > MAX_PER_STAT_IVS, "Illegal HP IV: %d", hpIV); + SetMonData(DATA.currentMon, MON_DATA_HP_IV, &hpIV); +} + +void AttackIV_(u32 sourceLine, u32 attackIV) +{ + INVALID_IF(!DATA.currentMon, "Attack IV outside of PLAYER/OPPONENT"); + INVALID_IF(attackIV > MAX_PER_STAT_IVS, "Illegal attack IV: %d", attackIV); + SetMonData(DATA.currentMon, MON_DATA_ATK_IV, &attackIV); +} + +void DefenseIV_(u32 sourceLine, u32 defenseIV) +{ + INVALID_IF(!DATA.currentMon, "Defense IV outside of PLAYER/OPPONENT"); + INVALID_IF(defenseIV > MAX_PER_STAT_IVS, "Illegal defense IV: %d", defenseIV); + SetMonData(DATA.currentMon, MON_DATA_DEF_IV, &defenseIV); +} + +void SpAttackIV_(u32 sourceLine, u32 spAttackIV) +{ + INVALID_IF(!DATA.currentMon, "SpAttack IV outside of PLAYER/OPPONENT"); + INVALID_IF(spAttackIV > MAX_PER_STAT_IVS, "Illegal special attack IV: %d", spAttackIV); + SetMonData(DATA.currentMon, MON_DATA_SPATK_IV, &spAttackIV); +} + +void SpDefenseIV_(u32 sourceLine, u32 spDefenseIV) +{ + INVALID_IF(!DATA.currentMon, "SpDefense IV outside of PLAYER/OPPONENT"); + INVALID_IF(spDefenseIV > MAX_PER_STAT_IVS, "Illegal special defense IV: %d", spDefenseIV); + SetMonData(DATA.currentMon, MON_DATA_SPDEF_IV, &spDefenseIV); +} + +void SpeedIV_(u32 sourceLine, u32 speedIV) +{ + INVALID_IF(!DATA.currentMon, "Speed IV outside of PLAYER/OPPONENT"); + INVALID_IF(speedIV > MAX_PER_STAT_IVS, "Illegal speed IV: %d", speedIV); + SetMonData(DATA.currentMon, MON_DATA_SPEED_IV, &speedIV); +} + void Item_(u32 sourceLine, u32 item) { INVALID_IF(!DATA.currentMon, "Item outside of PLAYER/OPPONENT"); @@ -2044,14 +2089,31 @@ void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 * INVALID("No move or moveSlot"); } - if (ctx->explicitMegaEvolve && ctx->megaEvolve) - *moveSlot |= RET_MEGA_EVOLUTION; + if (ctx->explicitGimmick && ctx->gimmick != GIMMICK_NONE) + { + u32 item = GetMonData(mon, MON_DATA_HELD_ITEM); + u32 holdEffect = ItemId_GetHoldEffect(item); + u32 species = GetMonData(mon, MON_DATA_SPECIES); + u32 side = GetBattlerSide(battlerId); + + // Check invalid item usage. + INVALID_IF(ctx->gimmick == GIMMICK_MEGA && holdEffect != HOLD_EFFECT_MEGA_STONE && species != SPECIES_RAYQUAZA, "Cannot Mega Evolve without a Mega Stone"); + INVALID_IF(ctx->gimmick == GIMMICK_Z_MOVE && holdEffect != HOLD_EFFECT_Z_CRYSTAL, "Cannot use a Z-Move without a Z-Crystal"); + INVALID_IF(ctx->gimmick == GIMMICK_Z_MOVE && ItemId_GetSecondaryId(item) != gMovesInfo[*moveId].type + && GetSignatureZMove(*moveId, species, item) == MOVE_NONE + && *moveId != MOVE_PHOTON_GEYSER, // exception because test won't recognize Ultra Necrozma pre-Burst + "Cannot turn %S into a Z-Move with %S", GetMoveName(ctx->move), ItemId_GetName(item)); + INVALID_IF(ctx->gimmick != GIMMICK_MEGA && holdEffect == HOLD_EFFECT_MEGA_STONE, "Cannot use another gimmick while holding a Mega Stone"); + INVALID_IF(ctx->gimmick != GIMMICK_Z_MOVE && ctx->gimmick != GIMMICK_ULTRA_BURST && holdEffect == HOLD_EFFECT_Z_CRYSTAL, "Cannot use another gimmick while holding a Z-Crystal"); - if (ctx->explicitUltraBurst && ctx->ultraBurst) - *moveSlot |= RET_ULTRA_BURST; + // Check multiple gimmick use. + INVALID_IF(DATA.chosenGimmick[side][DATA.currentMonIndexes[battlerId]] != GIMMICK_NONE + && !(DATA.chosenGimmick[side][DATA.currentMonIndexes[battlerId]] == GIMMICK_ULTRA_BURST + && ctx->gimmick == GIMMICK_Z_MOVE), "Cannot use multiple gimmicks on the same battler"); - if (ctx->explicitDynamax && ctx->dynamax) - *moveSlot |= RET_DYNAMAX; + DATA.chosenGimmick[side][DATA.currentMonIndexes[battlerId]] = ctx->gimmick; + *moveSlot |= RET_GIMMICK; + } } void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) @@ -2615,6 +2677,11 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex) return DATA.forcedAbilities[side][partyIndex]; } +u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex) +{ + return DATA.chosenGimmick[side][partyIndex]; +} + // TODO: Consider storing the last successful i and searching from i+1 // to improve performance. struct AILogLine *GetLogLine(u32 battlerId, u32 moveIndex) diff --git a/test/text.c b/test/text.c new file mode 100644 index 000000000000..0e6900edadfc --- /dev/null +++ b/test/text.c @@ -0,0 +1,569 @@ +#include "global.h" +#include "test/test.h" +#include "battle_main.h" +#include "item.h" +#include "text.h" +#include "constants/abilities.h" +#include "constants/items.h" +#include "constants/moves.h" + +TEST("Move names fit on Pokemon Summary Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 72; + u32 move = MOVE_NONE; + for (i = 1; i < MOVES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gMovesInfo[i].name) { move = i; } + } + EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); +} + +TEST("Move names fit on Battle Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 64; + u32 move = MOVE_NONE; + for (i = 1; i < MOVES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gMovesInfo[i].name) { move = i; } + } + EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); +} + +TEST("Move names fit on Contest Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 61; + u32 move = MOVE_NONE; + for (i = 1; i < MOVES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gMovesInfo[i].name) { move = i; } + } + // All moves explicitly listed here are too big to fit. + switch (move) + { + case MOVE_NATURES_MADNESS: + EXPECT_GT(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); + break; + default: + EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); + break; + } +} + +TEST("Move names fit on TMs & HMs Bag Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 63; + u32 move = MOVE_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + if (gItemsInfo[i].pocket == POCKET_TM_HM) + { + PARAMETRIZE_LABEL("%S", gMovesInfo[gItemsInfo[i].secondaryId].name) { move = gItemsInfo[i].secondaryId; } + } + } + EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); +} + +TEST("Move names fit on Move Relearner Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 72; + u32 move = MOVE_NONE; + for (i = 1; i < MOVES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gMovesInfo[i].name) { move = i; } + } + EXPECT_LE(GetStringWidth(fontId, gMovesInfo[move].name, 0), widthPx); +} + +TEST("Item names fit on Bag Screen (list)") +{ + u32 i; + const u32 fontId = FONT_NARROWER; + const u32 tmHmBerryWidthPx = 71, restWidthPx = 88; + u32 item = ITEM_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + if (gItemsInfo[item].pocket == POCKET_TM_HM || gItemsInfo[item].pocket == POCKET_BERRIES) + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), tmHmBerryWidthPx); + else + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), restWidthPx); +} + +TEST("Item plural names fit on Bag Screen (left box)") +{ + u32 i; + // -6 for the question mark in FONT_NORMAL. + const u32 fontId = FONT_NARROWER, widthPx = 102 - 6; + u32 item = ITEM_NONE; + u8 pluralName[ITEM_NAME_PLURAL_LENGTH + 1]; + for (i = 1; i < ITEMS_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + CopyItemNameHandlePlural(item, pluralName, 2); + EXPECT_LE(GetStringWidth(fontId, pluralName, 0), widthPx); +} + +TEST("Item plural names fit on PC storage (left box)") +{ + u32 i; + // -6 for the question mark in FONT_NORMAL. + const u32 fontId = FONT_NARROWER, widthPx = 104 - 6; + u32 item = ITEM_NONE; + u8 pluralName[ITEM_NAME_PLURAL_LENGTH + 1]; + for (i = 1; i < ITEMS_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + CopyItemNameHandlePlural(item, pluralName, 2); + EXPECT_LE(GetStringWidth(fontId, pluralName, 0), widthPx); +} + +TEST("Item names fit on Pokemon Storage System") +{ + u32 i; + const u32 fontId = FONT_SMALL_NARROWER, widthPx = 50; + u32 item = ITEM_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + if (gItemsInfo[i].importance) continue; + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + // All items explicitly listed here are too big to fit. The ones + // with a hold effect are listed at the bottom in case you want to + // focus on making them fit (they are the most likely to appear on + // the storage system UI, along with anything that could be held + // in the wild). + switch (item) + { + case ITEM_ENERGY_POWDER: + case ITEM_PEWTER_CRUNCHIES: + case ITEM_RAGE_CANDY_BAR: + case ITEM_LUMIOSE_GALETTE: + case ITEM_HEALTH_FEATHER: + case ITEM_MUSCLE_FEATHER: + case ITEM_RESIST_FEATHER: + case ITEM_GENIUS_FEATHER: + case ITEM_CLEVER_FEATHER: + case ITEM_ABILITY_CAPSULE: + case ITEM_DYNAMAX_CANDY: + case ITEM_MAX_MUSHROOMS: + case ITEM_GOLD_BOTTLE_CAP: + case ITEM_PRETTY_FEATHER: + case ITEM_STRANGE_SOUVENIR: + case ITEM_FOSSILIZED_BIRD: + case ITEM_FOSSILIZED_FISH: + case ITEM_FOSSILIZED_DRAKE: + case ITEM_FOSSILIZED_DINO: + case ITEM_SURPRISE_MULCH: + case ITEM_YELLOW_APRICORN: + case ITEM_GREEN_APRICORN: + case ITEM_WHITE_APRICORN: + case ITEM_BLACK_APRICORN: + case ITEM_THUNDER_STONE: + case ITEM_GALARICA_WREATH: + case ITEM_STRAWBERRY_SWEET: + case ITEM_AUSPICIOUS_ARMOR: + case ITEM_BIG_BAMBOO_SHOOT: + case ITEM_GIMMIGHOUL_COIN: + case ITEM_LEADERS_CREST: + case ITEM_MALICIOUS_ARMOR: + case ITEM_TINY_BAMBOO_SHOOT: + case ITEM_BUG_TERA_SHARD: + case ITEM_DARK_TERA_SHARD: + case ITEM_DRAGON_TERA_SHARD: + case ITEM_ELECTRIC_TERA_SHARD: + case ITEM_FAIRY_TERA_SHARD: + case ITEM_FIGHTING_TERA_SHARD: + case ITEM_FIRE_TERA_SHARD: + case ITEM_FLYING_TERA_SHARD: + case ITEM_GHOST_TERA_SHARD: + case ITEM_GRASS_TERA_SHARD: + case ITEM_GROUND_TERA_SHARD: + case ITEM_ICE_TERA_SHARD: + case ITEM_NORMAL_TERA_SHARD: + case ITEM_POISON_TERA_SHARD: + case ITEM_PSYCHIC_TERA_SHARD: + case ITEM_ROCK_TERA_SHARD: + case ITEM_STEEL_TERA_SHARD: + case ITEM_WATER_TERA_SHARD: + case ITEM_BLACK_AUGURITE: + case ITEM_UNREMARKABLE_TEACUP: + case ITEM_MASTERPIECE_TEACUP: + case ITEM_FRESH_START_MOCHI: + case ITEM_STELLAR_TERA_SHARD: + case ITEM_JUBILIFE_MUFFIN: + case ITEM_SUPERB_REMEDY: + case ITEM_AUX_POWERGUARD: + case ITEM_CHOICE_DUMPLING: + case ITEM_TWICE_SPICED_RADISH: + // Items with hold effects: + case ITEM_ELECTRIC_MEMORY: + case ITEM_FIGHTING_MEMORY: + case ITEM_GROUND_MEMORY: + case ITEM_PSYCHIC_MEMORY: + case ITEM_DRAGON_MEMORY: + case ITEM_CHARIZARDITE_X: + case ITEM_CHARIZARDITE_Y: + case ITEM_ULTRANECROZIUM_Z: + case ITEM_DEEP_SEA_SCALE: + case ITEM_DEEP_SEA_TOOTH: + case ITEM_NEVER_MELT_ICE: + case ITEM_WEAKNESS_POLICY: + case ITEM_SAFETY_GOGGLES: + case ITEM_ADRENALINE_ORB: + case ITEM_TERRAIN_EXTENDER: + case ITEM_PROTECTIVE_PADS: + case ITEM_HEAVY_DUTY_BOOTS: + case ITEM_UTILITY_UMBRELLA: + case ITEM_MARANGA_BERRY: + case ITEM_PUNCHING_GLOVE: + case ITEM_BOOSTER_ENERGY: + case ITEM_ADAMANT_CRYSTAL: + case ITEM_LUSTROUS_GLOBE: + case ITEM_CORNERSTONE_MASK: + case ITEM_WELLSPRING_MASK: + case ITEM_HEARTHFLAME_MASK: + EXPECT_GT(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); + break; + default: + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); + break; + } +} + +TEST("Item names fit on Pokemon Summary Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 72; + u32 item = ITEM_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + if (gItemsInfo[i].importance) continue; + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + // All items explicitly listed here are too big to fit. + switch (item) + { + case ITEM_UNREMARKABLE_TEACUP: + EXPECT_GT(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); + break; + default: + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); + break; + } +} + +TEST("Item names fit on Shop Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 84; + u32 item = ITEM_NONE; + for (i = 1; i < ITEMS_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gItemsInfo[i].name) { item = i; } + } + EXPECT_LE(GetStringWidth(fontId, gItemsInfo[item].name, 0), widthPx); +} + +TEST("Species names fit on Battle Screen HP box") +{ + u32 i, genderWidthPx; + const u32 fontId = FONT_SMALL_NARROWER, widthPx = 55; + u32 species = SPECIES_NONE; + genderWidthPx = GetStringWidth(fontId, COMPOUND_STRING("♂"), 0); + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + if (gSpeciesInfo[i].genderRatio != MON_GENDERLESS) + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0) - genderWidthPx, widthPx); + else + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Party Screen") +{ + u32 i; + const u32 fontId = FONT_SMALL_NARROWER, widthPx = 50; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Pokemon Summary Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 63; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Pokedex Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 50; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Pokedex Screen - Cries") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 60; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Pokemon Storage System") +{ + u32 i; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(FONT_NARROWER, gSpeciesInfo[species].speciesName, 0), 66); + EXPECT_LE(GetStringWidth(FONT_SHORT_NARROW, gSpeciesInfo[species].speciesName, 0), 60); +} + +TEST("Species names fit on Contest Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 50; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Contest Screen - Rankings") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 49; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Battle Dome Screen") +{ + u32 i; + const u32 fontId = FONT_SHORT_NARROW, widthPx = 60; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Hall of Fame") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 66; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Naming Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 64; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on PokeNav Condition Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 57; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on PokeNav Condition Search Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 60; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on PokeNav Ribbon Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 60; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on PokeNav Ribbon List Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 60; + u32 species = SPECIES_NONE; + for (i = 1; i < NUM_SPECIES; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Species names fit on Battle Screen HP box for vanilla mons with the default font") +{ + u32 i, genderWidthPx; + const u32 fontId = FONT_SMALL, widthPx = 55; + u32 species = SPECIES_NONE; + genderWidthPx = GetStringWidth(fontId, COMPOUND_STRING("♂"), 0); + for (i = 1; i < SPECIES_TURTWIG; i++) + { + if (IsSpeciesEnabled(i)) + { + PARAMETRIZE_LABEL("%S", gSpeciesInfo[i].speciesName) { species = i; } + } + } + if (gSpeciesInfo[i].genderRatio != MON_GENDERLESS) + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0) - genderWidthPx, widthPx); + else + EXPECT_LE(GetStringWidth(fontId, gSpeciesInfo[species].speciesName, 0), widthPx); +} + +TEST("Ability names fit on Pokemon Summary Screen") +{ + u32 i; + const u32 fontId = FONT_NORMAL, widthPx = 144; + u32 ability = ABILITY_NONE; + for (i = 1; i < ABILITIES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gAbilitiesInfo[i].name) { ability = i; } + } + EXPECT_LE(GetStringWidth(fontId, gAbilitiesInfo[ability].name, 0), widthPx); +} + +TEST("Ability names fit on Ability Pop-Up") +{ + u32 i; + const u32 fontId = FONT_SMALL_NARROWER, widthPx = 76; + u32 ability = ABILITY_NONE; + for (i = 1; i < ABILITIES_COUNT; i++) + { + PARAMETRIZE_LABEL("%S", gAbilitiesInfo[i].name) { ability = i; } + } + EXPECT_LE(GetStringWidth(fontId, gAbilitiesInfo[ability].name, 0), widthPx); +} + +TEST("Type names fit on Battle Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 39; + u32 type = TYPE_NORMAL; + for (i = 0; i < NUMBER_OF_MON_TYPES; i++) + { + PARAMETRIZE_LABEL("%S", gTypesInfo[i].name) { type = i; } + } + EXPECT_LE(GetStringWidth(fontId, gTypesInfo[type].name, 0), widthPx); +} + +TEST("Type names fit on Pokedex Search Screen") +{ + u32 i; + const u32 fontId = FONT_NARROWER, widthPx = 38; + u32 type = TYPE_NORMAL; + for (i = 0; i < NUMBER_OF_MON_TYPES; i++) + { + PARAMETRIZE_LABEL("%S", gTypesInfo[i].name) { type = i; } + } + EXPECT_LE(GetStringWidth(fontId, gTypesInfo[type].name, 0), widthPx); +} diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp index 191ca4c152e6..4b40d18bc828 100644 --- a/tools/preproc/c_file.cpp +++ b/tools/preproc/c_file.cpp @@ -281,10 +281,10 @@ int ExtractData(const std::unique_ptr& buffer, int offset, int void CFile::TryConvertIncbin() { - std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" }; + std::string idents[8] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32", "DUMMY", "INCBIN_COMP"}; int incbinType = -1; - for (int i = 0; i < 6; i++) + for (int i = 0; i < 8; i++) { if (CheckIdentifier(idents[i])) { @@ -297,6 +297,8 @@ void CFile::TryConvertIncbin() return; int size = 1 << (incbinType / 2); + if (size > 4) + size = 4; bool isSigned = ((incbinType % 2) == 0); long oldPos = m_pos; @@ -349,6 +351,10 @@ void CFile::TryConvertIncbin() std::string path(&m_buffer[startPos], m_pos - startPos); + // INCBIN_COMP; include *compressed* version of file + if (incbinType == 7) + path = path.append(".lz"); + m_pos++; int fileSize; diff --git a/tools/preproc/string_parser.cpp b/tools/preproc/string_parser.cpp index dd5196a44489..9f39baa497e1 100644 --- a/tools/preproc/string_parser.cpp +++ b/tools/preproc/string_parser.cpp @@ -87,7 +87,7 @@ std::string StringParser::ReadCharOrEscape() if (isEscape) RaiseError("unknown escape '\\%c'", code); else - RaiseError("unknown character U+%X", code); + RaiseError("unknown character U+%X\nIf this character is intended to be used, it needs to be implemented", code); } return sequence; diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp index 595f366cbe38..e1d98acbd0fb 100644 --- a/tools/scaninc/c_file.cpp +++ b/tools/scaninc/c_file.cpp @@ -213,10 +213,10 @@ void CFile::CheckIncbin() return; } - std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" }; + std::string idents[7] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32", "INCBIN_COMP"}; int incbinType = -1; - for (int i = 0; i < 6; i++) + for (int i = 0; i < 7; i++) { if (CheckIdentifier(idents[i])) { @@ -250,6 +250,10 @@ void CFile::CheckIncbin() std::string path = ReadPath(); + // INCBIN_COMP; include *compressed* version of file + if (incbinType == 6) + path = path.append(".lz"); + SkipWhitespace(); m_incbins.emplace(path); diff --git a/tools/trainerproc/.gitignore b/tools/trainerproc/.gitignore new file mode 100644 index 000000000000..d0c3d3d01102 --- /dev/null +++ b/tools/trainerproc/.gitignore @@ -0,0 +1 @@ +trainerproc diff --git a/tools/trainerproc/Makefile b/tools/trainerproc/Makefile new file mode 100644 index 000000000000..4513a6ad79d5 --- /dev/null +++ b/tools/trainerproc/Makefile @@ -0,0 +1,20 @@ +.PHONY: all clean + +CFLAGS := -Wall -O2 + +SRCS := main.c + +ifeq ($(OS),Windows_NT) +EXE := .exe +else +EXE := +endif + +all: trainerproc$(EXE) + @: + +trainerproc$(EXE): $(SRCS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) + +clean: + $(RM) trainerproc$(EXE) diff --git a/tools/trainerproc/main.c b/tools/trainerproc/main.c new file mode 100644 index 000000000000..bd18995a2e12 --- /dev/null +++ b/tools/trainerproc/main.c @@ -0,0 +1,2006 @@ +/* trainerprpc + * Parses teams in the competitive format (as used by Showdown) and + * converts them into the internal team format. */ + +/* To add a new member to 'TrainerMon': + * 1. Add the same member to 'Pokemon'. + * 2. Parse that member in 'parse_trainer', probably in the 'parse_attribute' loop. + * 3. Format that member in 'fprint_trainers'. */ +#include +#include +#include +#include +#include +#include +#include + +#define MAX_TRAINER_AI_FLAGS 32 +#define MAX_TRAINER_ITEMS 4 +#define PARTY_SIZE 6 +#define MAX_MON_MOVES 4 + +struct String +{ + const unsigned char *string; + int string_n; +}; + +struct Stats +{ + int hp, attack, defense, special_attack, special_defense, speed; +}; + +enum Gender +{ + GENDER_ANY, + GENDER_MALE, + GENDER_FEMALE, +}; + +// TODO: Support Hidden Power. +struct Pokemon +{ + struct String nickname; + struct String species; + enum Gender gender; + struct String item; + int header_line; + + struct Stats evs; + int evs_line; + + struct Stats ivs; + int ivs_line; + + struct String ability; + int ability_line; + + int level; + int level_line; + + struct String ball; + int ball_line; + + int friendship; + int friendship_line; + + struct String nature; + int nature_line; + + bool shiny; + int shiny_line; + + int dynamax_level; + int dynamax_level_line; + + bool gigantamax_factor; + bool gigantamax_factor_line; + + struct String tera_type; + int tera_type_line; + + struct String moves[MAX_MON_MOVES]; + int moves_n; + int move1_line; +}; + +struct Trainer +{ + struct String id; + int id_line; + + struct String ai_flags[MAX_TRAINER_AI_FLAGS]; + int ai_flags_n; + int ai_flags_line; + + struct String items[MAX_TRAINER_ITEMS]; + int items_n; + int items_line; + + struct String class; + int class_line; + + struct String encounter_music; + int encounter_music_line; + + enum Gender gender; + int gender_line; + + struct String pic; + int pic_line; + + struct String name; + int name_line; + + bool double_battle; + int double_battle_line; + + struct Pokemon pokemon[PARTY_SIZE]; + int pokemon_n; + + struct String mugshot; + int mugshot_line; + + struct String starting_status; + int starting_status_line; +}; + +static bool is_empty_string(struct String s) +{ + return s.string_n == 0; +} + +static bool is_literal_string(struct String s1, const char *s2) +{ + for (int i = 0;; i++) + { + if (i == s1.string_n && s2[i] == '\0') + return true; + else if (i == s1.string_n || s2[i] == '\0') + return false; + else if (s1.string[i] != s2[i]) + return false; + } +} + +static bool starts_with(struct String s, const char *prefix) +{ + int n = strlen(prefix); + return strncmp((const char *)s.string, prefix, n) == 0; +} + +static bool ends_with(struct String s, const char *suffix) +{ + int n = strlen(suffix); + if (n > s.string_n) + { + return false; + } + else + { + for (int i = 0; i < n; i++) + { + if (s.string[s.string_n - i - 1] != suffix[n - i - 1]) + return false; + } + return true; + } +} + +static struct String literal_string(const char *s) +{ + return (struct String) { + .string = (const unsigned char *)s, + .string_n = strlen(s), + }; +} + +struct Source +{ + const char *path; + const unsigned char *buffer; + int buffer_n; +}; + +struct SourceLocation +{ + int line; + int column; +}; + +struct Token +{ + const struct Source *source; + struct SourceLocation location; + int begin; + int end; +}; + +static bool is_empty_token(const struct Token *t) +{ + return t->begin == t->end; +} + +// TODO: Make case-insensitive? +static bool is_literal_token(const struct Token *t, const char *s) +{ + int i = t->begin; + for (;;) + { + if (*s == '\0' && i == t->end) + return true; + else if (*s == '\0' || i == t->end) + return false; + else if (*s != t->source->buffer[i]) + return false; + i++; + s++; + } +} + +struct Parser +{ + struct Source *source; + struct SourceLocation location; + int offset; + struct SourceLocation error_location; + const char *error; + bool fatal_error; +}; + +struct Parsed +{ + const struct Source *source; + + struct Trainer *trainers; + int trainers_n; + + struct Stats default_ivs; + int default_ivs_line; + bool default_ivs_off; + + int default_level; + int default_level_line; + bool default_level_off; +}; + +static bool set_parse_error(struct Parser *p, struct SourceLocation location, const char *error) +{ + p->error = error; + p->error_location = location; + return false; +} + +static bool show_parse_error(struct Parser *p) +{ + // Print error message. + int n = fprintf(stderr, "%s:%d: ", p->source->path, p->error_location.line); + fprintf(stderr, "error: %s\n", p->error); + + // Seek to the line. + int line, begin, end; + for (line = 1, begin = 0; begin < p->source->buffer_n; begin++) + { + if (p->error_location.line == line) + break; + if (p->source->buffer[begin] == '\n') + line++; + } + for (end = begin; end < p->source->buffer_n; end++) + { + if (p->source->buffer[end] == '\n') + break; + } + + // Print the source line. + fprintf(stderr, "%s:%d: %.*s\n", p->source->path, p->error_location.line, end - begin, &p->source->buffer[begin]); + + // Print caret pointing at the column. + fprintf(stderr, "%*s", n, ""); + for (int column = 1; column < p->error_location.column && begin + column < end; column++) + { + unsigned char c = p->source->buffer[begin + column]; + fputc(c == '\t' ? c : ' ', stderr); + } + fprintf(stderr, "^\n"); + + p->error = NULL; + p->fatal_error = true; + + return false; +} + +static bool set_show_parse_error(struct Parser *p, struct SourceLocation location, const char *error) +{ + set_parse_error(p, location, error); + return show_parse_error(p); +} + +__attribute__((warn_unused_result)) +static bool peek_char(struct Parser *p, unsigned char *c) +{ + assert(p && c); + if (p->offset == p->source->buffer_n) + return false; + *c = p->source->buffer[p->offset]; + return true; +} + +__attribute__((warn_unused_result)) +static bool pop_char(struct Parser *p, unsigned char *c) +{ + assert(p && c); + if (p->offset == p->source->buffer_n) + return false; + *c = p->source->buffer[p->offset++]; + if (*c == '\n') + { + p->location.line++; + p->location.column = 1; + } + else + { + p->location.column++; + } + return true; +} + +static void skip_whitespace(struct Parser *p) +{ + assert(p); + unsigned char c; + for (;;) + { + if (!peek_char(p, &c)) + break; + if (c != ' ' && c != '\t') + break; + if (!pop_char(p, &c)) + assert(false); + } +} + +static void skip_line(struct Parser *p) +{ + assert(p); + unsigned char c; + for (;;) + { + if (!pop_char(p, &c)) + break; + if (c == '\n') + break; + } +} + +__attribute__((warn_unused_result)) +static bool match_eof(struct Parser *p) +{ + return p->offset == p->source->buffer_n; +} + +__attribute__((warn_unused_result)) +static bool match_exact(struct Parser *p, const char *s) +{ + assert(p && s); + struct Parser p_ = *p; + unsigned char c; + + for (; *s != '\0'; s++) + { + if (!pop_char(&p_, &c)) + return false; + if (*s != c) + return false; + } + + *p = p_; + return true; +} + +static void match_until_eol(struct Parser *p, struct Token *t) +{ + assert(p && t); + unsigned char c; + + skip_whitespace(p); + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(p, &c)) + break; + if (c == '\n') + break; + if (!pop_char(p, &c)) + assert(false); + if (c != ' ' && c != '\t') + t->end = p->offset; + } +} + +__attribute__((warn_unused_result)) +static bool match_eol(struct Parser *p) +{ + struct Parser p_ = *p; + unsigned char c; + + skip_whitespace(&p_); + for (;;) + { + if (!pop_char(&p_, &c)) + return false; + + if (c == '\n') + break; + else + return false; + } + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_empty_line(struct Parser *p) +{ + return match_eol(p); +} + +__attribute__((warn_unused_result)) +static bool match_int(struct Parser *p, int *i) +{ + assert(p && i); + struct Parser p_ = *p; + unsigned char c; + + *i = 0; + for (;;) + { + if (!peek_char(&p_, &c)) + break; + if (!('0' <= c && c <= '9')) + break; + *i = *i * 10 + (c - '0'); + if (!pop_char(&p_, &c)) + assert(false); + } + + if (p->offset == p_.offset) + return false; + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_') + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + } + + t->end = p_.offset; + if (t->begin == t->end) + return false; + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool match_human_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || c == '_' || c == '-' || c == ' ') + ; + else if (p_.offset > t->begin && ('0' <= c && c <= '9')) + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +// Like 'match_human_identifier' but parses ':', for 'Type: Null', among +// other exceptions. +__attribute__((warn_unused_result)) +static bool match_species_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ':' || c == '.' || c == '\'' || c >= 0x80) + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +// Like 'match_human_identifier' but parses '10,000,000 Volt Thunderbolt' +// among other exceptions. +__attribute__((warn_unused_result)) +static bool match_move_identifier(struct Parser *p, struct Token *t) +{ + assert(p && t); + struct Parser p_ = *p, q = *p; + unsigned char c; + + t->source = p->source; + t->location = p->location; + t->begin = p->offset; + t->end = p->offset; + + for (;;) + { + if (!peek_char(&p_, &c)) + break; + + if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9') || c == '_' || c == '-' || c == ' ' || c == ',') + ; + else + break; + + if (!pop_char(&p_, &c)) + assert(false); + + if (c != ' ') + q = p_; + } + + t->end = q.offset; + if (t->begin == t->end) + return false; + + *p = q; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_section(struct Parser *p, struct Token *section) +{ + assert(p && section); + struct Parser p_ = *p; + + if (!match_exact(&p_, "===")) + return false; + + skip_whitespace(&p_); + if (!match_identifier(&p_, section)) + return set_parse_error(p, p_.location, "expected identifier"); + + skip_whitespace(&p_); + if (!match_exact(&p_, "===")) + return set_parse_error(p, p_.location, "expected '==='"); + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in section"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_header(struct Parser *p, struct Token *nickname, struct Token *species, struct Token *gender, struct Token *item) +{ + assert(p && nickname && species && gender && item); + struct Parser p_ = *p; + struct Token first = {}, second = {}, third = {}; + + if (!match_species_identifier(&p_, &first)) + return false; + + skip_whitespace(&p_); + if (match_exact(&p_, "(")) + { + if (!match_species_identifier(&p_, &second)) + return set_parse_error(p, p_.location, "expected species or gender"); + if (!match_exact(&p_, ")")) + return set_parse_error(p, p_.location, "expected ')'"); + + skip_whitespace(&p_); + if (match_exact(&p_, "(")) + { + if (!match_human_identifier(&p_, &third)) + return set_parse_error(p, p_.location, "expected gender"); + if (!match_exact(&p_, ")")) + return set_parse_error(p, p_.location, "expected ')'"); + + *nickname = first; + *species = second; + *gender = third; + } + else + { + if (second.begin + 1 == second.end) // Single letter. + { + *nickname = (struct Token) {}; + *species = first; + *gender = second; + } + else + { + *nickname = first; + *species = second; + *gender = (struct Token) {}; + } + } + } + else + { + *nickname = (struct Token) {}; + *species = first; + *gender = (struct Token) {}; + } + + skip_whitespace(&p_); + if (match_exact(&p_, "@")) + { + skip_whitespace(&p_); + if (!match_human_identifier(&p_, item)) + return set_parse_error(p, p_.location, "expected item"); + } + else + { + *item = (struct Token) {}; + } + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in Pokemon header"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_nature(struct Parser *p, struct Token *nature) +{ + assert(p && nature); + struct Parser p_ = *p; + + if (!match_identifier(&p_, nature)) + return false; + + skip_whitespace(&p_); + if (!match_exact(&p_, "Nature")) + return false; + + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in nature"); + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_attribute(struct Parser *p, struct Token *key, struct Token *value) +{ + assert(p && key && value); + + if (parse_pokemon_nature(p, value)) + { + static const struct Source nature_source = { .path=NULL, .buffer=(unsigned char *)"Nature", .buffer_n=6 }; + key->source = &nature_source; + key->location = p->location; + key->begin = 0; + key->end = nature_source.buffer_n; + return true; + } + + struct Parser p_ = *p; + + if (!match_human_identifier(&p_, key)) + return false; + + skip_whitespace(&p_); + if (match_exact(&p_, ":")) + { + skip_whitespace(&p_); + match_until_eol(&p_, value); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in attribute"); + } + else + { + return set_parse_error(p, p_.location, "expected ':' or 'Nature'"); + } + + *p = p_; + return true; +} + +__attribute__((warn_unused_result)) +static bool parse_pokemon_move(struct Parser *p, struct Token *move) +{ + assert(p && move); + struct Parser p_ = *p; + + if (!match_exact(&p_, "-")) + return false; + skip_whitespace(&p_); + if (!match_move_identifier(&p_, move)) + return set_parse_error(p, p_.location, "expected move"); + skip_whitespace(&p_); + if (!match_eol(&p_)) + return set_parse_error(p, p_.location, "unexpected character in move"); + + *p = p_; + return true; +} + +static struct String token_string(const struct Token *t) +{ + if (t->source) + { + return (struct String) { + .string = &t->source->buffer[t->begin], + .string_n = t->end - t->begin, + }; + } + else + { + return (struct String) { + .string = NULL, + .string_n = 0, + }; + } +} + +static bool token_gender(struct Parser *p, const struct Token *t, enum Gender *g) +{ + if (is_empty_token(t)) + { + *g = GENDER_ANY; + return true; + } + else if (is_literal_token(t, "M") || is_literal_token(t, "Male")) + { + *g = GENDER_MALE; + return true; + } + else if (is_literal_token(t, "F") || is_literal_token(t, "Female")) + { + *g = GENDER_FEMALE; + return true; + } + else + { + return set_parse_error(p, t->location, "invalid gender"); + } +} + +static bool token_stats(struct Parser *p, const struct Token *t, struct Stats *stats, bool require_all) +{ + struct Source source = { + .path = p->source->path, + .buffer = p->source->buffer, + .buffer_n = t->end, + }; + struct Parser p_ = { + .source = &source, + .location = t->location, + .offset = t->begin, + }; + bool has_hp = false, has_atk = false, has_def = false, has_spa = false, has_spd = false, has_spe = false; + for (;;) + { + int value; + skip_whitespace(&p_); + if (!match_int(&p_, &value)) + return set_parse_error(p, p_.location, "expected integer"); + + struct Token stat; + skip_whitespace(&p_); + struct SourceLocation stat_location = p_.location; + if (!match_identifier(&p_, &stat)) + return set_parse_error(p, p_.location, "expected 'HP', 'Atk', 'Def', 'SpA', 'SpD', or 'Spe'"); + if (is_literal_token(&stat, "HP")) + { + stats->hp = value; + has_hp = true; + } + else if (is_literal_token(&stat, "Atk")) + { + stats->attack = value; + has_atk = true; + } + else if (is_literal_token(&stat, "Def")) + { + stats->defense = value; + has_def = true; + } + else if (is_literal_token(&stat, "SpA")) + { + stats->special_attack = value; + has_spa = true; + } + else if (is_literal_token(&stat, "SpD")) + { + stats->special_defense = value; + has_spd = true; + } + else if (is_literal_token(&stat, "Spe")) + { + stats->speed = value; + has_spe = true; + } + else + { + return set_parse_error(p, stat_location, "expected 'HP', 'Atk', 'Def', 'SpA', 'SpD', or 'Spe'"); + } + + skip_whitespace(&p_); + if (match_eof(&p_)) + break; + else if (!match_exact(&p_, "/")) + return set_parse_error(p, p_.location, "expected '/' or newline"); + } + if (require_all && !(has_hp && has_atk && has_def && has_spa && has_spd && has_spe)) + return set_parse_error(p, p_.location, "expected all of 'HP', 'Atk', 'Def', 'SpA', 'SpD', and 'Spe'"); + return true; +} + +// '/'-separated strings. +static bool token_human_identifiers(struct Parser *p, const struct Token *t, struct String *ids, int *ids_n, int max_ids_n) +{ + struct Source source = { + .path = p->source->path, + .buffer = p->source->buffer, + .buffer_n = t->end, + }; + struct Parser p_ = { + .source = &source, + .location = t->location, + .offset = t->begin, + }; + int n = 0; + while (*ids_n < max_ids_n) + { + skip_whitespace(&p_); + struct Token id; + if (!match_human_identifier(&p_, &id)) + return set_parse_error(p, p_.location, "expected identifier"); + ids[n++] = token_string(&id); + skip_whitespace(&p_); + if (match_eof(&p_)) + break; + else if (!match_exact(&p_, "/")) + return set_parse_error(p, p_.location, "expected '/' or newline"); + } + *ids_n = n; + return true; +} + +static bool token_int(struct Parser *p, const struct Token *t, int *i) +{ + char *end; + long l = strtol((const char *)&t->source->buffer[t->begin], &end, 10); + if ((unsigned char *)end != &t->source->buffer[t->end]) + return set_parse_error(p, t->location, "invalid integer"); + if (!(INT_MIN <= l && l <= INT_MAX)) + return set_parse_error(p, t->location, "integer too large"); + *i = l; + return true; +} + +static bool token_bool(struct Parser *p, const struct Token *t, bool *b) +{ + if (is_literal_token(t, "Yes")) + { + *b = true; + return true; + } + else if (is_literal_token(t, "No")) + { + *b = false; + return true; + } + else + { + return set_parse_error(p, t->location, "invalid boolean"); + } +} + +static bool parse_pragma(struct Parser *p, struct Parsed *parsed) +{ + assert(p && parsed); + struct Parser p_ = *p; + + if (!match_exact(&p_, "#pragma")) + return false; + + // TODO: Require _a_ space between #pragma and trainerproc. + struct Token id; + skip_whitespace(&p_); + if (!match_identifier(&p_, &id)) + return set_show_parse_error(p, p_.location, "expected 'trainerproc'"); + if (!is_literal_token(&id, "trainerproc")) + return set_show_parse_error(p, id.location, "expected 'trainerproc'"); + + skip_whitespace(&p_); + if (!match_identifier(&p_, &id)) + { + return set_show_parse_error(p, p_.location, "expected identifier"); + } + else if (is_literal_token(&id, "ivs")) + { + if (parsed->default_ivs_line) + return set_show_parse_error(p, p_.location, "duplicate #pragma trainerproc ivs"); + parsed->default_ivs_line = p_.location.line; + skip_whitespace(&p_); + struct Token t; + match_until_eol(&p_, &t); + if (is_literal_token(&t, "explicit")) + parsed->default_ivs_off = true; + else if (!token_stats(p, &t, &parsed->default_ivs, true)) + return show_parse_error(p); + } + else if (is_literal_token(&id, "level")) + { + if (parsed->default_level_line) + return set_show_parse_error(p, p_.location, "duplicate #pragma trainerproc level"); + parsed->default_level_line = p_.location.line; + skip_whitespace(&p_); + struct Token t; + match_until_eol(&p_, &t); + if (is_literal_token(&t, "explicit")) + parsed->default_level_off = true; + else if (!token_int(p, &t, &parsed->default_level)) + return show_parse_error(p); + } + else + { + return set_show_parse_error(p, id.location, "unknown pragma"); + } + + if (!match_eol(&p_)) + return set_show_parse_error(p, p_.location, "expected newline"); + + *p = p_; + return true; +} + +// Species that are selected based on the explicit gender. +// e.g. 'Nidoran (M)' becomes 'Nidoran-M'. +static const struct { + const char *species; + const char *male_species; + const char *female_species; +} gendered_species[] = { + { "Basculegion", "Basculegion-M", "Basculegion-F" }, + { "Indeedee", "Indeedee-M", "Indeedee-F" }, + { "Oinkologne", "Oinkologne-M", "Oinkologne-F" }, + { "Meowstic", "Meowstic-M", "Meowstic-F" }, + { "Nidoran", "Nidoran-M", "Nidoran-F" }, + { NULL, NULL, NULL } +}; + +// Items that are selected based on the explicit form. +// e.g. 'Arceus-Fire' becomes 'Arceus @ Flame Plate'. +static const struct { + const char *form; + const char *species; + const char *item; +} itemed_species[] = { + { "Arceus-Bug", "Arceus", "Insect Plate" }, + { "Arceus-Dark", "Arceus", "Dread Plate" }, + { "Arceus-Dragon", "Arceus", "Draco Plate" }, + { "Arceus-Electric", "Arceus", "Zap Plate" }, + { "Arceus-Fairy", "Arceus", "Pixie Plate" }, + { "Arceus-Fighting", "Arceus", "Fist Plate" }, + { "Arceus-Fire", "Arceus", "Flame Plate" }, + { "Arceus-Flying", "Arceus", "Sky Plate" }, + { "Arceus-Ghost", "Arceus", "Spooky Plate" }, + { "Arceus-Grass", "Arceus", "Meadow Plate" }, + { "Arceus-Ground", "Arceus", "Earth Plate" }, + { "Arceus-Ice", "Arceus", "Icicle Plate" }, + { "Arceus-Poison", "Arceus", "Toxic Plate" }, + { "Arceus-Psychic", "Arceus", "Mind Plate" }, + { "Arceus-Rock", "Arceus", "Stone Plate" }, + { "Arceus-Steel", "Arceus", "Iron Plate" }, + { "Arceus-Water", "Arceus", "Splash Plate" }, + { "Genesect-Burn", "Genesect", "Burn Drive" }, + { "Genesect-Chill", "Genesect", "Chill Drive" }, + { "Genesect-Douse", "Genesect", "Douse Drive" }, + { "Genesect-Shock", "Genesect", "Shock Drive" }, + { "Ogerpon-Cornerstone", "Ogerpon", "Cornerstone Mask" }, + { "Ogerpon-Hearthflame", "Ogerpon", "Hearthflame Mask" }, + { "Ogerpon-Wellspring", "Ogerpon", "Wellspring Mask" }, + { "Silvally-Bug", "Silvally", "Bug Memory" }, + { "Silvally-Dark", "Silvally", "Dark Memory" }, + { "Silvally-Dragon", "Silvally", "Dragon Memory" }, + { "Silvally-Electric", "Silvally", "Electric Memory" }, + { "Silvally-Fairy", "Silvally", "Fairy Memory" }, + { "Silvally-Fighting", "Silvally", "Fighting Memory" }, + { "Silvally-Fire", "Silvally", "Fire Memory" }, + { "Silvally-Flying", "Silvally", "Flying Memory" }, + { "Silvally-Ghost", "Silvally", "Ghost Memory" }, + { "Silvally-Grass", "Silvally", "Grass Memory" }, + { "Silvally-Ground", "Silvally", "Ground Memory" }, + { "Silvally-Ice", "Silvally", "Ice Memory" }, + { "Silvally-Poison", "Silvally", "Poison Memory" }, + { "Silvally-Psychic", "Silvally", "Psychic Memory" }, + { "Silvally-Rock", "Silvally", "Rock Memory" }, + { "Silvally-Steel", "Silvally", "Steel Memory" }, + { "Silvally-Water", "Silvally", "Water Memory" }, + { NULL, NULL, NULL } +}; + +static bool parse_trainer(struct Parser *p, const struct Parsed *parsed, struct Trainer *trainer) +{ + bool any_error = false; + *trainer = (struct Trainer) {}; + + while (match_empty_line(p)) {} + struct Token id; + struct Token nickname, species, gender, item; + if (!parse_section(p, &id)) + { + if (!p->error) + set_parse_error(p, p->location, "expected '==='"); + show_parse_error(p); + return false; + } + trainer->id = token_string(&id); + trainer->id_line = id.location.line; + + // Parse trainer attributes. + struct Token key, value; + while (parse_attribute(p, &key, &value)) + { + if (is_literal_token(&key, "AI")) + { + if (trainer->ai_flags_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'AI'"); + trainer->ai_flags_line = value.location.line; + if (!token_human_identifiers(p, &value, trainer->ai_flags, &trainer->ai_flags_n, MAX_TRAINER_AI_FLAGS)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Items")) + { + if (trainer->items_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Items'"); + trainer->items_line = value.location.line; + if (!token_human_identifiers(p, &value, trainer->items, &trainer->items_n, MAX_TRAINER_ITEMS)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Class")) + { + if (trainer->class_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Class'"); + trainer->class_line = value.location.line; + trainer->class = token_string(&value); + } + else if (is_literal_token(&key, "Music")) + { + if (trainer->encounter_music_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Music'"); + trainer->encounter_music_line = value.location.line; + trainer->encounter_music = token_string(&value); + } + else if (is_literal_token(&key, "Gender")) + { + if (trainer->gender_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Gender'"); + trainer->gender_line = value.location.line; + if (!token_gender(p, &value, &trainer->gender)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Pic")) + { + if (trainer->pic_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Pic'"); + trainer->pic_line = value.location.line; + trainer->pic = token_string(&value); + } + else if (is_literal_token(&key, "Name")) + { + if (trainer->name_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Name'"); + trainer->name_line = value.location.line; + trainer->name = token_string(&value); + } + else if (is_literal_token(&key, "Double Battle")) + { + if (trainer->double_battle_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Double Battle'"); + trainer->double_battle_line = value.location.line; + if (!token_bool(p, &value, &trainer->double_battle)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Mugshot")) + { + if (trainer->mugshot_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Mugshot'"); + trainer->mugshot_line = value.location.line; + trainer->mugshot = token_string(&value); + } + else if (is_literal_token(&key, "Starting Status")) + { + if (trainer->starting_status_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Starting Status'"); + trainer->starting_status_line = value.location.line; + trainer->starting_status = token_string(&value); + } + else + { + any_error = !set_show_parse_error(p, key.location, "expected one of 'Name', 'Class', 'Pic', 'Gender', 'Music', 'Items', 'Double Battle', or 'AI'"); + } + } + if (!trainer->pic_line) + any_error = !set_show_parse_error(p, p->location, "expected 'Pic' before Pokemon"); + if (!trainer->name_line) + any_error = !set_show_parse_error(p, p->location, "expected 'Name' before Pokemon"); + if (!match_empty_line(p)) + { + set_show_parse_error(p, p->location, "expected empty line"); + + // Continue if the line is the start of a new Pokemon. + struct Parser p_ = *p; + if (!parse_pokemon_header(&p_, &nickname, &species, &gender, &item)) + return false; + } + + for (int i = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *pokemon = &trainer->pokemon[i]; + + // Parse first line. + while (match_empty_line(p)) {} + if (!parse_pokemon_header(p, &nickname, &species, &gender, &item)) + { + if (i > 0 || ends_with(trainer->id, "_NONE")) + break; + if (!p->error) + set_parse_error(p, p->location, "expected nickname or species"); + show_parse_error(p); + + // TODO: Continue if a Pokemon starts before the next section. + // This is difficult to do, because 'Type: Null' is the name + // of a species, and so 'X: Y' is being parsed as a Pokemon + // header. + return false; + } + trainer->pokemon_n++; + + pokemon->nickname = token_string(&nickname); + pokemon->species = token_string(&species); + if (!token_gender(p, &gender, &pokemon->gender)) + any_error = !show_parse_error(p); + pokemon->item = token_string(&item); + pokemon->header_line = species.location.line; + + for (int i = 0; gendered_species[i].species; i++) + { + if (is_literal_string(pokemon->species, gendered_species[i].species)) + { + switch (pokemon->gender) + { + case GENDER_ANY: + break; + case GENDER_MALE: + pokemon->species = literal_string(gendered_species[i].male_species); + break; + case GENDER_FEMALE: + pokemon->species = literal_string(gendered_species[i].female_species); + break; + } + pokemon->gender = GENDER_ANY; + break; + } + } + + for (int i = 0; itemed_species[i].species; i++) + { + if (is_literal_string(pokemon->species, itemed_species[i].form) + && is_empty_string(pokemon->item)) + { + pokemon->species = literal_string(itemed_species[i].species); + pokemon->item = literal_string(itemed_species[i].item); + } + } + + // Parse Pokemon attributes. + while (parse_attribute(p, &key, &value)) + { + if (is_literal_token(&key, "EVs")) + { + if (pokemon->evs_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'EVs'"); + pokemon->evs_line = value.location.line; + if (!token_stats(p, &value, &pokemon->evs, false)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "IVs")) + { + if (pokemon->ivs_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'IVs'"); + pokemon->ivs_line = value.location.line; + pokemon->ivs = parsed->default_ivs; + if (!token_stats(p, &value, &pokemon->ivs, parsed->default_ivs_off)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Ability")) + { + if (pokemon->ability_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Ability'"); + pokemon->ability_line = value.location.line; + pokemon->ability = token_string(&value); + } + else if (is_literal_token(&key, "Level")) + { + if (pokemon->level_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Level'"); + pokemon->level_line = value.location.line; + if (!token_int(p, &value, &pokemon->level)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Ball")) + { + if (pokemon->ball_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Ball'"); + pokemon->ball_line = value.location.line; + pokemon->ball = token_string(&value); + } + else if (is_literal_token(&key, "Happiness")) + { + if (pokemon->friendship_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Happiness'"); + pokemon->friendship_line = value.location.line; + if (!token_int(p, &value, &pokemon->friendship)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Nature")) + { + if (pokemon->nature_line) + any_error = !set_show_parse_error(p, value.location, "duplicate 'Nature'"); + pokemon->nature_line = value.location.line; + pokemon->nature = token_string(&value); + } + else if (is_literal_token(&key, "Shiny")) + { + if (pokemon->shiny_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Shiny'"); + pokemon->shiny_line = value.location.line; + if (!token_bool(p, &value, &pokemon->shiny)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Dynamax Level")) + { + if (pokemon->dynamax_level_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Dynamax Level'"); + pokemon->dynamax_level_line = value.location.line; + if (!token_int(p, &value, &pokemon->dynamax_level)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Gigantamax")) + { + if (pokemon->gigantamax_factor_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Gigantamax'"); + pokemon->gigantamax_factor_line = value.location.line; + if (!token_bool(p, &value, &pokemon->gigantamax_factor)) + any_error = !show_parse_error(p); + } + else if (is_literal_token(&key, "Tera Type")) + { + if (pokemon->tera_type_line) + any_error = !set_show_parse_error(p, key.location, "duplicate 'Tera Type'"); + pokemon->tera_type_line = value.location.line; + pokemon->tera_type = token_string(&value); + } + else + { + any_error = !set_show_parse_error(p, key.location, "expected one of 'EVs', 'IVs', 'Ability', 'Level', 'Ball', 'Happiness', 'Nature', 'Shiny', 'Dynamax Level', 'Gigantamax', or 'Tera Type'"); + } + } + + if (!pokemon->level_line) + { + if (!parsed->default_level_off) + { + pokemon->level = parsed->default_level; + pokemon->level_line = p->location.line; + } + else + { + any_error = !set_show_parse_error(p, p->location, "expected 'Level' before moves"); + } + } + if (!pokemon->ivs_line) + { + if (!parsed->default_ivs_off) + { + pokemon->ivs = parsed->default_ivs; + pokemon->ivs_line = p->location.line; + } + else + { + any_error = !set_show_parse_error(p, p->location, "expected 'IVs' before moves"); + } + } + + // Parse moves. + for (int j = 0; j < MAX_MON_MOVES; j++) + { + struct Token move; + if (!parse_pokemon_move(p, &move)) + { + struct Parser p_ = *p; + if (match_eof(&p_) || match_empty_line(&p_)) + break; + } + else + { + if (pokemon->moves_n == 0) + pokemon->move1_line = move.location.line; + pokemon->moves[pokemon->moves_n] = token_string(&move); + pokemon->moves_n++; + } + } + + if (match_eof(p)) + break; + if (!match_empty_line(p)) + { + set_show_parse_error(p, p->location, "expected empty line"); + + // Continue if the line is the start of a new Pokemon. + struct Parser p_ = *p; + if (!parse_pokemon_header(&p_, &nickname, &species, &gender, &item)) + return false; + } + } + + return !any_error; +} + +static void parse(struct Parser *p, struct Parsed *parsed) +{ + parsed->source = p->source; + int trainers_c = 256; + parsed->trainers = malloc(sizeof(*parsed->trainers) * trainers_c); + parsed->trainers_n = 0; + assert(parsed->trainers); + for (;;) + { + while (match_empty_line(p)) {} + if (!parse_pragma(p, parsed)) + break; + } + for (;;) + { + if (parsed->trainers_n == trainers_c) + { + trainers_c *= 2; + struct Trainer *trainers_ = realloc(parsed->trainers, sizeof(*parsed->trainers) * trainers_c); + assert(trainers_); + parsed->trainers = trainers_; + } + struct Trainer *trainer = &parsed->trainers[parsed->trainers_n]; + while (match_empty_line(p)) {} + if (match_eof(p)) + break; + if (!parse_trainer(p, parsed, trainer)) + { + struct Token t; + // Skip to the next trainer. + for (;;) + { + struct Parser p_ = *p; + if (match_eof(&p_) || parse_section(&p_, &t)) + break; + skip_line(p); + } + } + else + { + parsed->trainers_n++; + } + } +} + +static void fprint_string(FILE *f, struct String s) +{ + fprintf(f, "%.*s", s.string_n, s.string); +} + +static void fprint_bool(FILE *f, bool b) +{ + fprintf(f, b ? "TRUE" : "FALSE"); +} + +static void fprint_stats(FILE *f, const char *macro, struct Stats stats) +{ + fprintf(f, "%s(%d, %d, %d, %d, %d, %d)", macro, stats.hp, stats.attack, stats.defense, stats.speed, stats.special_attack, stats.special_defense); +} + +static bool is_constant(struct String s, const char *prefix) +{ + for (int i = 0;; i++) + { + if (i == s.string_n) + return false; + else if (prefix[i] == '\0') + return s.string[i] == '_'; + else if (prefix[i] != s.string[i]) + return false; + } +} + +static void fprint_constant(FILE *f, const char *prefix, struct String s) +{ + if (!is_constant(s, prefix)) fprintf(f, "%s_", prefix); + if (s.string_n > 0) + { + for (int i = 0; i < s.string_n; i++) + { + unsigned char c = s.string[i]; + if (('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')) + fputc(c, f); + else if ('a' <= c && c <= 'z') + fputc(c - 'a' + 'A', f); + else + fputc('_', f); + } + } + else + { + fprintf(f, "NONE"); + } +} + +// This is a really stupid helper for 'fprint_species'. +static bool is_utf8_character(struct String s, int *i, const unsigned char *utf8) +{ + for (int j = *i;; j++, utf8++) + { + if (*utf8 == '\0') + { + *i = j - 1; // '- 1' because of the '++' in 'fprint_species'. + return true; + } + else if (j == s.string_n || s.string[j] != *utf8) + { + return false; + } + } +} + +static void fprint_species(FILE *f, const char *prefix, struct String s) +{ + if (!is_constant(s, prefix)) fprintf(f, "%s_", prefix); + + if (s.string_n == 0) + { + fprintf(f, "NONE"); + } + else + { + bool underscore = false; + static const unsigned char *male = (unsigned char *)u8"♂"; + static const unsigned char *female = (unsigned char *)u8"♀"; + static const unsigned char *e_diacritic = (unsigned char *)u8"é"; + for (int i = 0; i < s.string_n; i++) + { + unsigned char c = s.string[i]; + if (('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')) + { + if (underscore) + fputc('_', f); + underscore = false; + fputc(c, f); + } + else if ('a' <= c && c <= 'z') + { + if (underscore) + fputc('_', f); + underscore = false; + fputc(c - 'a' + 'A', f); + } + else if (c == '\'' || c == '%') + { + // Do nothing. + } + else if (is_utf8_character(s, &i, male)) + { + underscore = false; + fprintf(f, "_M"); + } + else if (is_utf8_character(s, &i, female)) + { + underscore = false; + fprintf(f, "_F"); + } + else if (is_utf8_character(s, &i, e_diacritic)) + { + if (underscore) + fputc('_', f); + underscore = false; + fputc('E', f); + } + else + { + underscore = true; + } + } + } +} + +static void fprint_trainers(const char *output_path, FILE *f, struct Parsed *parsed) +{ + fprintf(f, "//\n"); + fprintf(f, "// DO NOT MODIFY THIS FILE! It is auto-generated from %s\n", parsed->source->path); + fprintf(f, "//\n"); + fprintf(f, "// If you want to modify this file set COMPETITIVE_PARTY_SYNTAX to FALSE\n"); + fprintf(f, "// in include/config/general.h and remove this notice.\n"); + fprintf(f, "// Use sed -i '/^#line/d' '%s' to remove #line markers.\n", output_path); + fprintf(f, "//\n"); + fprintf(f, "\n"); + + fprintf(f, "#line 1 \"%s\"\n", parsed->source->path); + fprintf(f, "\n"); + + for (int i = 0; i < parsed->trainers_n; i++) + { + struct Trainer *trainer = &parsed->trainers[i]; + fprintf(f, "#line %d\n", trainer->id_line); + fprintf(f, " ["); + fprint_string(f, trainer->id); + fprintf(f, "] =\n"); + fprintf(f, " {\n"); + + if (!is_empty_string(trainer->name)) + { + fprintf(f, "#line %d\n", trainer->name_line); + fprintf(f, " .trainerName = _(\""); + fprint_string(f, trainer->name); + fprintf(f, "\"),\n"); + } + + if (!is_empty_string(trainer->class)) + { + fprintf(f, "#line %d\n", trainer->class_line); + fprintf(f, " .trainerClass = "); + fprint_constant(f, "TRAINER_CLASS", trainer->class); + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->pic)) + { + fprintf(f, "#line %d\n", trainer->pic_line); + fprintf(f, " .trainerPic = "); + if (starts_with(trainer->id, "PARTNER_")) + fprint_constant(f, "TRAINER_BACK_PIC", trainer->pic); + else + fprint_constant(f, "TRAINER_PIC", trainer->pic); + fprintf(f, ",\n"); + } + + fprintf(f, " .encounterMusic_gender = \n"); + if (trainer->gender == GENDER_FEMALE) + { + fprintf(f, "#line %d\n", trainer->gender_line); + fprintf(f, "F_TRAINER_FEMALE | \n"); + } + if (!is_empty_string(trainer->encounter_music)) + { + fprintf(f, "#line %d\n", trainer->encounter_music_line); + fprintf(f, " "); + fprint_constant(f, "TRAINER_ENCOUNTER_MUSIC", trainer->encounter_music); + } + else + { + fprintf(f, "0"); + } + fprintf(f, ",\n"); + + if (trainer->items_n > 0) + { + fprintf(f, "#line %d\n", trainer->items_line); + fprintf(f, " .items = { "); + for (int i = 0; i < trainer->items_n; i++) + { + if (i > 0) + fprintf(f, ", "); + fprint_constant(f, "ITEM", trainer->items[i]); + } + fprintf(f, " },\n"); + } + + if (trainer->double_battle_line) + { + fprintf(f, "#line %d\n", trainer->double_battle_line); + fprintf(f, " .doubleBattle = "); + fprint_bool(f, trainer->double_battle); + fprintf(f, ",\n"); + } + + if (trainer->ai_flags_n > 0) + { + fprintf(f, "#line %d\n", trainer->ai_flags_line); + fprintf(f, " .aiFlags = "); + for (int i = 0; i < trainer->ai_flags_n; i++) + { + if (i > 0) + fprintf(f, " | "); + fprint_constant(f, "AI_FLAG", trainer->ai_flags[i]); + } + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->mugshot)) + { + fprintf(f, "#line %d\n", trainer->mugshot_line); + fprintf(f, " .mugshotEnabled = TRUE,\n"); + fprintf(f, " .mugshotColor = "); + fprint_constant(f, "MUGSHOT_COLOR", trainer->mugshot); + fprintf(f, ",\n"); + } + + if (!is_empty_string(trainer->starting_status)) + { + fprintf(f, "#line %d\n", trainer->starting_status_line); + fprintf(f, " .startingStatus = "); + fprint_constant(f, "STARTING_STATUS", trainer->starting_status); + fprintf(f, ",\n"); + } + + fprintf(f, " .partySize = %d,\n", trainer->pokemon_n); + fprintf(f, " .party = (const struct TrainerMon[])\n"); + fprintf(f, " {\n"); + for (int j = 0; j < trainer->pokemon_n; j++) + { + struct Pokemon *pokemon = &trainer->pokemon[j]; + fprintf(f, " {\n"); + + if (!is_empty_string(pokemon->nickname)) + { + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .nickname = COMPOUND_STRING(\""); + fprint_string(f, pokemon->nickname); + fprintf(f, "\"),\n"); + } + + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .species = "); + fprint_species(f, "SPECIES", pokemon->species); + fprintf(f, ",\n"); + + switch (pokemon->gender) + { + case GENDER_ANY: + fprintf(f, " .gender = TRAINER_MON_RANDOM_GENDER,\n"); + break; + case GENDER_MALE: + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .gender = TRAINER_MON_MALE,\n"); + break; + case GENDER_FEMALE: + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .gender = TRAINER_MON_FEMALE,\n"); + break; + } + + if (!is_empty_string(pokemon->item)) + { + fprintf(f, "#line %d\n", pokemon->header_line); + fprintf(f, " .heldItem = "); + fprint_constant(f, "ITEM", pokemon->item); + fprintf(f, ",\n"); + } + + if (pokemon->evs_line) + { + fprintf(f, "#line %d\n", pokemon->evs_line); + fprintf(f, " .ev = "); + fprint_stats(f, "TRAINER_PARTY_EVS", pokemon->evs); + fprintf(f, ",\n"); + } + + if (pokemon->ivs_line) + { + fprintf(f, "#line %d\n", pokemon->ivs_line); + fprintf(f, " .iv = "); + fprint_stats(f, "TRAINER_PARTY_IVS", pokemon->ivs); + fprintf(f, ",\n"); + } + + if (pokemon->ability_line) + { + fprintf(f, "#line %d\n", pokemon->ability_line); + fprintf(f, " .ability = "); + fprint_constant(f, "ABILITY", pokemon->ability); + fprintf(f, ",\n"); + } + + if (pokemon->level_line) + { + fprintf(f, "#line %d\n", pokemon->level_line); + fprintf(f, " .lvl = %d,\n", pokemon->level); + } + + if (pokemon->ball_line) + { + fprintf(f, "#line %d\n", pokemon->ball_line); + fprintf(f, " .ball = "); + fprint_constant(f, "ITEM", pokemon->ball); + fprintf(f, ",\n"); + } + + if (pokemon->friendship_line) + { + fprintf(f, "#line %d\n", pokemon->friendship_line); + fprintf(f, " .friendship = %d,\n", pokemon->friendship); + } + + if (pokemon->nature_line) + { + fprintf(f, "#line %d\n", pokemon->nature_line); + fprintf(f, " .nature = "); + fprint_constant(f, "NATURE", pokemon->nature); + fprintf(f, ",\n"); + } + else + { + fprintf(f, " .nature = NATURE_HARDY,\n"); + } + + if (pokemon->shiny_line) + { + fprintf(f, "#line %d\n", pokemon->shiny_line); + fprintf(f, " .isShiny = "); + fprint_bool(f, pokemon->shiny); + fprintf(f, ",\n"); + } + + if (pokemon->dynamax_level_line) + { + fprintf(f, "#line %d\n", pokemon->dynamax_level_line); + fprintf(f, " .dynamaxLevel = %d,\n", pokemon->dynamax_level); + } + else + { + fprintf(f, " .dynamaxLevel = MAX_DYNAMAX_LEVEL,\n"); + } + + if (pokemon->gigantamax_factor_line) + { + fprintf(f, "#line %d\n", pokemon->gigantamax_factor_line); + fprintf(f, " .gigantamaxFactor = "); + fprint_bool(f, pokemon->gigantamax_factor); + fprintf(f, ",\n"); + } + + if (pokemon->dynamax_level_line || pokemon->gigantamax_factor_line) + { + fprintf(f, " .shouldUseDynamax = TRUE,\n"); + } + else if (pokemon->tera_type_line) + { + fprintf(f, "#line %d\n", pokemon->tera_type_line); + fprintf(f, " .teraType = "); + fprint_constant(f, "TYPE", pokemon->tera_type); + fprintf(f, ",\n"); + } + + if (pokemon->moves_n > 0) + { + fprintf(f, " .moves = {\n"); + fprintf(f, "#line %d\n", pokemon->move1_line); + for (int k = 0; k < pokemon->moves_n; k++) + { + fprintf(f, " "); + fprint_constant(f, "MOVE", pokemon->moves[k]); + fprintf(f, ",\n"); + } + fprintf(f, " },\n"); + } + + fprintf(f, " },\n"); + } + fprintf(f, " },\n"); + fprintf(f, " },\n"); + } +} + +static void usage(FILE *file, char *argv0) +{ + fprintf(file, "Usage: %s -o \n", argv0); +} + +int main(int argc, char *argv[]) +{ + int status = 1; + FILE *source_file = NULL; + FILE *output_file = NULL; + unsigned char *source_buffer = NULL; + struct Parsed parsed = { + .default_ivs = { 31, 31, 31, 31, 31, 31 }, + .default_level = 100, + }; + + const char *source_path = NULL; + const char *output_path = NULL; + const char *real_source_path = NULL; + + int opt; + while ((opt = getopt(argc, argv, "i:o:")) != -1) + { + switch (opt) + { + case 'i': + real_source_path = optarg; + break; + case 'o': + output_path = optarg; + break; + default: + fprintf(stderr, "unknown option '%c'\n", opt); + usage(stderr, argv[0]); + goto exit; + } + } + + if (!output_path) + { + usage(stderr, argv[0]); + goto exit; + } + + if (optind != argc - 1) + { + usage(stderr, argv[0]); + goto exit; + } + source_path = argv[optind++]; + + int source_buffer_n; + if (strcmp(source_path, "-") == 0) + { + source_file = stdin; + source_path = ""; + + int source_buffer_c = 4096; + source_buffer_n = 0; + for (;;) + { + if (!(source_buffer = realloc(source_buffer, source_buffer_c))) + { + fprintf(stderr, "could not allocate %d bytes\n", source_buffer_c); + goto exit; + } + + source_buffer_n += fread(&source_buffer[source_buffer_n], 1, source_buffer_c - source_buffer_n, source_file); + if (source_buffer_n < source_buffer_c) + break; + + source_buffer_c += source_buffer_n / 2; // 1.5x growth rate. + } + } + else + { + source_file = fopen(source_path, "r"); + if (source_file == NULL) + { + fprintf(stderr, "could not open '%s' for reading\n", source_path); + goto exit; + } + + fseek(source_file, 0, SEEK_END); + long source_buffer_n_ = ftell(source_file); + if (source_buffer_n_ > INT_MAX) + { + fprintf(stderr, "could not read '%s': too big\n", source_path); + goto exit; + } + + source_buffer_n = source_buffer_n_; + + if (!(source_buffer = malloc(source_buffer_n))) + { + fprintf(stderr, "could not allocate %d bytes\n", source_buffer_n); + goto exit; + } + rewind(source_file); + if (fread(source_buffer, 1, source_buffer_n, source_file) < source_buffer_n) + { + fprintf(stderr, "could not read '%s'\n", source_path); + goto exit; + } + } + + struct Source source = { + .path = real_source_path ? real_source_path : source_path, + .buffer = source_buffer, + .buffer_n = source_buffer_n, + }; + struct Parser parser = { + .source = &source, + .location = { .line = 1, .column = 1 }, + .offset = 0, + }; + parse(&parser, &parsed); + if (parser.fatal_error) + { + goto exit; + } + + if (strcmp(output_path, "-") == 0) + { + source_file = stdout; + output_path = ""; + } + else + { + output_file = fopen(output_path, "w"); + if (output_file == NULL) + { + fprintf(stderr, "could not open '%s' for writing\n", output_path); + goto exit; + } + } + fprint_trainers(output_path, output_file, &parsed); + + status = 0; + +exit: + if (output_file) fclose(output_file); + if (parsed.trainers) free(parsed.trainers); + if (source_buffer) free(source_buffer); + if (source_file) fclose(source_file); + return status; +}